Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/austingebauer/devise.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Gebauer <agebauer@hashicorp.com>2020-05-24 22:33:41 +0300
committerAustin Gebauer <agebauer@hashicorp.com>2020-05-24 22:33:41 +0300
commit00efb94853bf2b71d8c69eb47ee9ecad914935e7 (patch)
treeede7d9b716d6e75da625cb2cbda74f03ae27fa02
parent8f1b52d131d9da32f7d904049ee1bd92cb15a28b (diff)
chore: updates deps
-rw-r--r--node_modules/ajv/README.md47
-rw-r--r--node_modules/ajv/dist/ajv.min.js4
-rw-r--r--node_modules/ajv/dist/ajv.min.js.map2
-rw-r--r--node_modules/ajv/package.json22
-rw-r--r--node_modules/aws4/README.md437
-rw-r--r--node_modules/aws4/aws4.js22
-rw-r--r--node_modules/aws4/package.json72
-rw-r--r--node_modules/cliui/CHANGELOG.md50
-rw-r--r--node_modules/cliui/README.md13
-rw-r--r--node_modules/cliui/index.js12
-rw-r--r--node_modules/cliui/node_modules/ansi-regex/index.js14
-rw-r--r--node_modules/cliui/node_modules/ansi-regex/license9
-rw-r--r--node_modules/cliui/node_modules/ansi-regex/package.json85
-rw-r--r--node_modules/cliui/node_modules/ansi-regex/readme.md87
-rw-r--r--node_modules/cliui/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/cliui/node_modules/is-fullwidth-code-point/license (renamed from node_modules/lcid/license)0
-rw-r--r--node_modules/cliui/node_modules/is-fullwidth-code-point/package.json77
-rw-r--r--node_modules/cliui/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/cliui/node_modules/string-width/index.js39
-rw-r--r--node_modules/cliui/node_modules/string-width/license9
-rw-r--r--node_modules/cliui/node_modules/string-width/package.json88
-rw-r--r--node_modules/cliui/node_modules/string-width/readme.md45
-rw-r--r--node_modules/cliui/node_modules/strip-ansi/index.d.ts15
-rw-r--r--node_modules/cliui/node_modules/strip-ansi/index.js7
-rw-r--r--node_modules/cliui/node_modules/strip-ansi/license9
-rw-r--r--node_modules/cliui/node_modules/strip-ansi/package.json87
-rw-r--r--node_modules/cliui/node_modules/strip-ansi/readme.md61
-rw-r--r--node_modules/cliui/package.json53
-rw-r--r--node_modules/color-convert/CHANGELOG.md54
-rw-r--r--node_modules/color-convert/LICENSE21
-rw-r--r--node_modules/color-convert/README.md68
-rw-r--r--node_modules/color-convert/conversions.js868
-rw-r--r--node_modules/color-convert/index.js78
-rw-r--r--node_modules/color-convert/package.json81
-rw-r--r--node_modules/color-convert/route.js97
-rw-r--r--node_modules/color-name/.eslintrc.json43
-rw-r--r--node_modules/color-name/.npmignore107
-rw-r--r--node_modules/color-name/LICENSE8
-rw-r--r--node_modules/color-name/README.md11
-rw-r--r--node_modules/color-name/index.js152
-rw-r--r--node_modules/color-name/package.json53
-rw-r--r--node_modules/color-name/test.js7
-rw-r--r--node_modules/emoji-regex/LICENSE-MIT.txt20
-rw-r--r--node_modules/emoji-regex/README.md73
-rw-r--r--node_modules/emoji-regex/es2015/index.js6
-rw-r--r--node_modules/emoji-regex/es2015/text.js6
-rw-r--r--node_modules/emoji-regex/index.d.ts5
-rw-r--r--node_modules/emoji-regex/index.js6
-rw-r--r--node_modules/emoji-regex/package.json80
-rw-r--r--node_modules/emoji-regex/text.js6
-rw-r--r--node_modules/get-caller-file/README.md37
-rw-r--r--node_modules/get-caller-file/index.d.ts2
-rw-r--r--node_modules/get-caller-file/index.js32
-rw-r--r--node_modules/get-caller-file/index.js.map1
-rw-r--r--node_modules/get-caller-file/package.json37
-rw-r--r--node_modules/graceful-fs/graceful-fs.js30
-rw-r--r--node_modules/graceful-fs/package.json12
-rw-r--r--node_modules/in-publish/.npmignore32
-rw-r--r--node_modules/in-publish/README.md6
-rw-r--r--node_modules/in-publish/README.md~40
-rw-r--r--node_modules/in-publish/index.js10
-rw-r--r--node_modules/in-publish/package.json12
-rw-r--r--node_modules/invert-kv/index.js15
-rw-r--r--node_modules/invert-kv/package.json65
-rw-r--r--node_modules/invert-kv/readme.md25
-rw-r--r--node_modules/lcid/index.js22
-rw-r--r--node_modules/lcid/lcid.json203
-rw-r--r--node_modules/lcid/package.json78
-rw-r--r--node_modules/lcid/readme.md35
-rw-r--r--node_modules/locate-path/index.js24
-rw-r--r--node_modules/locate-path/license9
-rw-r--r--node_modules/locate-path/node_modules/path-exists/index.js17
-rw-r--r--node_modules/locate-path/node_modules/path-exists/license (renamed from node_modules/os-locale/license)0
-rw-r--r--node_modules/locate-path/node_modules/path-exists/package.json72
-rw-r--r--node_modules/locate-path/node_modules/path-exists/readme.md50
-rw-r--r--node_modules/locate-path/package.json76
-rw-r--r--node_modules/locate-path/readme.md99
-rw-r--r--node_modules/mime-db/HISTORY.md7
-rw-r--r--node_modules/mime-db/README.md6
-rw-r--r--node_modules/mime-db/db.json134
-rw-r--r--node_modules/mime-db/package.json37
-rw-r--r--node_modules/mime-types/HISTORY.md8
-rw-r--r--node_modules/mime-types/README.md20
-rw-r--r--node_modules/mime-types/package.json27
-rw-r--r--node_modules/mkdirp/.travis.yml8
-rw-r--r--node_modules/mkdirp/examples/pow.js6
-rw-r--r--node_modules/mkdirp/index.js5
-rw-r--r--node_modules/mkdirp/node_modules/minimist/.travis.yml4
-rw-r--r--node_modules/mkdirp/node_modules/minimist/example/parse.js2
-rw-r--r--node_modules/mkdirp/node_modules/minimist/index.js187
-rw-r--r--node_modules/mkdirp/node_modules/minimist/package.json71
-rw-r--r--node_modules/mkdirp/node_modules/minimist/readme.markdown73
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/dash.js24
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/default_bool.js20
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/dotted.js16
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/long.js31
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/parse.js318
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/parse_modified.js9
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/short.js67
-rw-r--r--node_modules/mkdirp/node_modules/minimist/test/whitespace.js8
-rw-r--r--node_modules/mkdirp/package.json25
-rw-r--r--node_modules/mkdirp/readme.markdown4
-rw-r--r--node_modules/mkdirp/test/chmod.js41
-rw-r--r--node_modules/mkdirp/test/clobber.js38
-rw-r--r--node_modules/mkdirp/test/mkdirp.js28
-rw-r--r--node_modules/mkdirp/test/opts_fs.js29
-rw-r--r--node_modules/mkdirp/test/opts_fs_sync.js27
-rw-r--r--node_modules/mkdirp/test/perm.js32
-rw-r--r--node_modules/mkdirp/test/perm_sync.js36
-rw-r--r--node_modules/mkdirp/test/race.js37
-rw-r--r--node_modules/mkdirp/test/rel.js32
-rw-r--r--node_modules/mkdirp/test/return.js25
-rw-r--r--node_modules/mkdirp/test/return_sync.js24
-rw-r--r--node_modules/mkdirp/test/root.js19
-rw-r--r--node_modules/mkdirp/test/sync.js32
-rw-r--r--node_modules/mkdirp/test/umask.js28
-rw-r--r--node_modules/mkdirp/test/umask_sync.js32
-rw-r--r--node_modules/nan/CHANGELOG.md6
-rw-r--r--node_modules/nan/README.md9
-rw-r--r--node_modules/nan/doc/errors.md12
-rw-r--r--node_modules/nan/doc/json.md6
-rw-r--r--node_modules/nan/doc/maybe_types.md70
-rw-r--r--node_modules/nan/doc/methods.md37
-rw-r--r--node_modules/nan/doc/new.md8
-rw-r--r--node_modules/nan/doc/object_wrappers.md2
-rw-r--r--node_modules/nan/doc/persistent.md12
-rw-r--r--node_modules/nan/doc/scopes.md2
-rw-r--r--node_modules/nan/doc/script.md2
-rw-r--r--node_modules/nan/doc/v8_internals.md28
-rw-r--r--node_modules/nan/doc/v8_misc.md8
-rw-r--r--node_modules/nan/nan.h27
-rw-r--r--node_modules/nan/nan_object_wrap.h2
-rw-r--r--node_modules/nan/nan_typedarray_contents.h8
-rw-r--r--node_modules/nan/package.json14
-rwxr-xr-xnode_modules/nan/tools/1to2.js2
-rw-r--r--node_modules/node-sass/CHANGELOG.md4
-rw-r--r--node_modules/node-sass/README.md1
-rw-r--r--node_modules/node-sass/lib/extensions.js1
-rw-r--r--node_modules/node-sass/package.json24
-rw-r--r--node_modules/node-sass/vendor/darwin-x64-64/binding.nodebin0 -> 3164056 bytes
-rw-r--r--node_modules/node-sass/vendor/darwin-x64-79/binding.nodebin3167984 -> 0 bytes
-rw-r--r--node_modules/os-locale/index.js127
-rw-r--r--node_modules/os-locale/package.json75
-rw-r--r--node_modules/os-locale/readme.md47
-rw-r--r--node_modules/p-limit/index.d.ts38
-rw-r--r--node_modules/p-limit/index.js57
-rw-r--r--node_modules/p-limit/license9
-rw-r--r--node_modules/p-limit/package.json84
-rw-r--r--node_modules/p-limit/readme.md101
-rw-r--r--node_modules/p-locate/index.js34
-rw-r--r--node_modules/p-locate/license9
-rw-r--r--node_modules/p-locate/package.json83
-rw-r--r--node_modules/p-locate/readme.md88
-rw-r--r--node_modules/p-try/index.d.ts39
-rw-r--r--node_modules/p-try/index.js9
-rw-r--r--node_modules/p-try/license9
-rw-r--r--node_modules/p-try/package.json74
-rw-r--r--node_modules/p-try/readme.md58
-rw-r--r--node_modules/psl/data/rules.json34
-rw-r--r--node_modules/psl/dist/psl.js34
-rw-r--r--node_modules/psl/dist/psl.min.js2
-rw-r--r--node_modules/psl/package.json20
-rw-r--r--node_modules/require-main-filename/.npmignore3
-rw-r--r--node_modules/require-main-filename/.travis.yml8
-rw-r--r--node_modules/require-main-filename/CHANGELOG.md26
-rw-r--r--node_modules/require-main-filename/package.json33
-rw-r--r--node_modules/require-main-filename/test.js36
-rw-r--r--node_modules/resolve/.editorconfig20
-rw-r--r--node_modules/resolve/lib/async.js28
-rw-r--r--node_modules/resolve/lib/core.json2
-rw-r--r--node_modules/resolve/lib/sync.js34
-rw-r--r--node_modules/resolve/package.json14
-rw-r--r--node_modules/resolve/readme.markdown22
-rw-r--r--node_modules/resolve/test/mock.js70
-rw-r--r--node_modules/resolve/test/mock_sync.js61
-rw-r--r--node_modules/sass-graph/package.json26
-rw-r--r--node_modules/signal-exit/CHANGELOG.md10
-rw-r--r--node_modules/signal-exit/README.md1
-rw-r--r--node_modules/signal-exit/index.js6
-rw-r--r--node_modules/signal-exit/package.json14
-rw-r--r--node_modules/spdx-correct/index.js21
-rw-r--r--node_modules/spdx-correct/package.json12
-rw-r--r--node_modules/spdx-exceptions/index.json6
-rw-r--r--node_modules/spdx-exceptions/package.json18
-rw-r--r--node_modules/spdx-expression-parse/README.md2
-rw-r--r--node_modules/spdx-expression-parse/package.json25
-rw-r--r--node_modules/spdx-expression-parse/parse.js4
-rw-r--r--node_modules/spdx-expression-parse/scan.js4
-rw-r--r--node_modules/which-module/CHANGELOG.md15
-rw-r--r--node_modules/which-module/package.json32
-rwxr-xr-xnode_modules/wrap-ansi/index.js230
-rw-r--r--node_modules/wrap-ansi/license20
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-regex/index.js14
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-regex/license9
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-regex/package.json85
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-regex/readme.md87
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-styles/index.js165
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-styles/license9
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-styles/package.json88
-rw-r--r--node_modules/wrap-ansi/node_modules/ansi-styles/readme.md147
-rw-r--r--node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license (renamed from node_modules/yargs/node_modules/camelcase/license)0
-rw-r--r--node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/package.json77
-rw-r--r--node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/wrap-ansi/node_modules/string-width/index.js39
-rw-r--r--node_modules/wrap-ansi/node_modules/string-width/license9
-rw-r--r--node_modules/wrap-ansi/node_modules/string-width/package.json88
-rw-r--r--node_modules/wrap-ansi/node_modules/string-width/readme.md45
-rw-r--r--node_modules/wrap-ansi/node_modules/strip-ansi/index.d.ts15
-rw-r--r--node_modules/wrap-ansi/node_modules/strip-ansi/index.js7
-rw-r--r--node_modules/wrap-ansi/node_modules/strip-ansi/license9
-rw-r--r--node_modules/wrap-ansi/node_modules/strip-ansi/package.json87
-rw-r--r--node_modules/wrap-ansi/node_modules/strip-ansi/readme.md61
-rw-r--r--node_modules/wrap-ansi/package.json70
-rw-r--r--node_modules/wrap-ansi/readme.md41
-rw-r--r--node_modules/y18n/CHANGELOG.md21
-rw-r--r--node_modules/y18n/README.md18
-rw-r--r--node_modules/y18n/index.js16
-rw-r--r--node_modules/y18n/package.json34
-rw-r--r--node_modules/yargs-parser/CHANGELOG.md300
-rw-r--r--node_modules/yargs-parser/README.md155
-rw-r--r--node_modules/yargs-parser/index.js311
-rw-r--r--node_modules/yargs-parser/lib/tokenize-arg-string.js14
-rw-r--r--node_modules/yargs-parser/node_modules/camelcase/index.d.ts63
-rw-r--r--node_modules/yargs-parser/node_modules/camelcase/index.js88
-rw-r--r--node_modules/yargs-parser/node_modules/camelcase/license20
-rw-r--r--node_modules/yargs-parser/node_modules/camelcase/package.json42
-rw-r--r--node_modules/yargs-parser/node_modules/camelcase/readme.md60
-rw-r--r--node_modules/yargs-parser/package.json42
-rw-r--r--node_modules/yargs/CHANGELOG.md418
-rw-r--r--node_modules/yargs/README.md2037
-rw-r--r--node_modules/yargs/completion.sh.hbs28
-rw-r--r--node_modules/yargs/index.js3
-rw-r--r--node_modules/yargs/lib/apply-extends.js48
-rw-r--r--node_modules/yargs/lib/argsert.js34
-rw-r--r--node_modules/yargs/lib/assign.js15
-rw-r--r--node_modules/yargs/lib/command.js341
-rw-r--r--node_modules/yargs/lib/completion-templates.js49
-rw-r--r--node_modules/yargs/lib/completion.js73
-rw-r--r--node_modules/yargs/lib/decamelize.js (renamed from node_modules/mkdirp/node_modules/minimist/LICENSE)16
-rw-r--r--node_modules/yargs/lib/is-promise.js3
-rw-r--r--node_modules/yargs/lib/levenshtein.js35
-rw-r--r--node_modules/yargs/lib/middleware.js65
-rw-r--r--node_modules/yargs/lib/obj-filter.js7
-rw-r--r--node_modules/yargs/lib/usage.js353
-rw-r--r--node_modules/yargs/lib/validation.js274
-rw-r--r--node_modules/yargs/lib/yerror.js1
-rw-r--r--node_modules/yargs/locales/de.json2
-rw-r--r--node_modules/yargs/locales/en.json6
-rw-r--r--node_modules/yargs/locales/fr.json2
-rw-r--r--node_modules/yargs/locales/hi.json5
-rw-r--r--node_modules/yargs/locales/id.json5
-rw-r--r--node_modules/yargs/locales/it.json2
-rw-r--r--node_modules/yargs/locales/ja.json5
-rw-r--r--node_modules/yargs/locales/ko.json5
-rw-r--r--node_modules/yargs/locales/nb.json2
-rw-r--r--node_modules/yargs/locales/nl.json35
-rw-r--r--node_modules/yargs/locales/nn.json39
-rw-r--r--node_modules/yargs/locales/pirate.json3
-rw-r--r--node_modules/yargs/locales/pl.json5
-rw-r--r--node_modules/yargs/locales/pt_BR.json6
-rw-r--r--node_modules/yargs/locales/tr.json4
-rw-r--r--node_modules/yargs/locales/zh_CN.json6
-rw-r--r--node_modules/yargs/node_modules/ansi-regex/index.js14
-rw-r--r--node_modules/yargs/node_modules/ansi-regex/license9
-rw-r--r--node_modules/yargs/node_modules/ansi-regex/package.json85
-rw-r--r--node_modules/yargs/node_modules/ansi-regex/readme.md87
-rw-r--r--node_modules/yargs/node_modules/camelcase/index.js56
-rw-r--r--node_modules/yargs/node_modules/camelcase/package.json71
-rw-r--r--node_modules/yargs/node_modules/camelcase/readme.md57
-rw-r--r--node_modules/yargs/node_modules/find-up/index.js46
-rw-r--r--node_modules/yargs/node_modules/find-up/license9
-rw-r--r--node_modules/yargs/node_modules/find-up/package.json82
-rw-r--r--node_modules/yargs/node_modules/find-up/readme.md87
-rw-r--r--node_modules/yargs/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/yargs/node_modules/is-fullwidth-code-point/license21
-rw-r--r--node_modules/yargs/node_modules/is-fullwidth-code-point/package.json77
-rw-r--r--node_modules/yargs/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/yargs/node_modules/string-width/index.js39
-rw-r--r--node_modules/yargs/node_modules/string-width/license9
-rw-r--r--node_modules/yargs/node_modules/string-width/package.json88
-rw-r--r--node_modules/yargs/node_modules/string-width/readme.md45
-rw-r--r--node_modules/yargs/node_modules/strip-ansi/index.d.ts15
-rw-r--r--node_modules/yargs/node_modules/strip-ansi/index.js7
-rw-r--r--node_modules/yargs/node_modules/strip-ansi/license9
-rw-r--r--node_modules/yargs/node_modules/strip-ansi/package.json86
-rw-r--r--node_modules/yargs/node_modules/strip-ansi/readme.md61
-rw-r--r--node_modules/yargs/package.json93
-rw-r--r--node_modules/yargs/yargs.js633
-rw-r--r--package-lock.json381
-rw-r--r--package.json2
291 files changed, 10090 insertions, 6555 deletions
diff --git a/node_modules/ajv/README.md b/node_modules/ajv/README.md
index 9bd1f57..e13fdec 100644
--- a/node_modules/ajv/README.md
+++ b/node_modules/ajv/README.md
@@ -8,8 +8,49 @@ The fastest JSON Schema validator for Node.js and browser. Supports draft-04/06/
[![npm](https://img.shields.io/npm/v/ajv.svg)](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/epoberezkin/ajv/badge.svg?branch=master&service=github)](https://coveralls.io/github/epoberezkin/ajv?branch=master)
-[![Greenkeeper badge](https://badges.greenkeeper.io/epoberezkin/ajv.svg)](https://greenkeeper.io/)
[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
+[![GitHub Sponsors](https://img.shields.io/badge/$-sponsors-brightgreen)](https://github.com/sponsors/epoberezkin)
+
+## Please [sponsor Ajv](https://github.com/sponsors/epoberezkin)
+
+Dear Ajv users! ❤️
+
+I ask you to support the development of Ajv with donations. 🙏
+
+Since 2015 Ajv has become widely used, thanks to your help and contributions:
+
+- **90** contributors 🏗
+- **5,000** dependent npm packages ⚙️
+- **7,000** github stars, from GitHub users [all over the world](https://www.google.com/maps/d/u/0/viewer?mid=1MGRV8ciFUGIbO1l0EKFWNJGYE7iSkDxP&ll=-3.81666561775622e-14%2C4.821737100000007&z=2) ⭐️
+- **5,000,000** dependent repositories on GitHub 🚀
+- **120,000,000** npm downloads per month! 💯
+
+Your donations will fund futher development - small and large improvements, support of the next versions of JSON Schema specification, and, possibly, the code should be migrated to TypeScript to make it more maintainable.
+
+I will greatly appreciate anything you can help with to make it happen:
+
+- a **personal** donation - from $2 ☕️
+- your **company** donation - from $10 🍔
+- a **sponsorship** to get promoted on Ajv or related packages - from $50 💰
+- an **introduction** to a sponsor who would benefit from the promotion on Ajv page 🤝
+
+| Please [make donations via my GitHub sponsors page](https://github.com/sponsors/epoberezkin)<br>‼️ **GitHub will DOUBLE them** ‼️ |
+|---|
+
+#### Open Collective sponsors
+
+<a href="https://opencollective.com/ajv"><img src="https://opencollective.com/ajv/individuals.svg?width=890"></a>
+
+<a href="https://opencollective.com/ajv/organization/0/website"><img src="https://opencollective.com/ajv/organization/0/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/1/website"><img src="https://opencollective.com/ajv/organization/1/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/2/website"><img src="https://opencollective.com/ajv/organization/2/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/3/website"><img src="https://opencollective.com/ajv/organization/3/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/4/website"><img src="https://opencollective.com/ajv/organization/4/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/5/website"><img src="https://opencollective.com/ajv/organization/5/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/6/website"><img src="https://opencollective.com/ajv/organization/6/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/7/website"><img src="https://opencollective.com/ajv/organization/7/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/8/website"><img src="https://opencollective.com/ajv/organization/8/avatar.svg"></a>
+<a href="https://opencollective.com/ajv/organization/9/website"><img src="https://opencollective.com/ajv/organization/9/avatar.svg"></a>
## Using version 6
@@ -273,7 +314,7 @@ The following formats are implemented for string validation with "format" keywor
__Please note__: JSON Schema draft-07 also defines formats `iri`, `iri-reference`, `idn-hostname` and `idn-email` for URLs, hostnames and emails with international characters. Ajv does not implement these formats. If you create Ajv plugin that implements them please make a PR to mention this plugin here.
-There are two modes of format validation: `fast` and `full`. This mode affects formats `date`, `time`, `date-time`, `uri`, `uri-reference`, `email`, and `hostname`. See [Options](#options) for details.
+There are two modes of format validation: `fast` and `full`. This mode affects formats `date`, `time`, `date-time`, `uri`, `uri-reference`, and `email`. See [Options](#options) for details.
You can add additional formats and replace any of the formats above using [addFormat](#api-addformat) method.
@@ -1340,7 +1381,7 @@ If you have published a useful plugin please submit a PR to add it to the next s
- [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) - plugin with custom validation keywords (select, typeof, etc.)
- [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) - plugin with keywords $merge and $patch
- [ajv-pack](https://github.com/epoberezkin/ajv-pack) - produces a compact module exporting validation functions
-
+- [ajv-formats-draft2019](https://github.com/luzlab/ajv-formats-draft2019) - format validators for draft2019 that aren't already included in ajv (ie. `idn-hostname`, `idn-email`, `iri`, `iri-reference` and `duration`).
## Some packages using Ajv
diff --git a/node_modules/ajv/dist/ajv.min.js b/node_modules/ajv/dist/ajv.min.js
index 157af21..1c72a75 100644
--- a/node_modules/ajv/dist/ajv.min.js
+++ b/node_modules/ajv/dist/ajv.min.js
@@ -1,3 +1,3 @@
-/* ajv 6.12.0: Another JSON Schema Validator */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function o(i,n,l){function c(r,e){if(!n[r]){if(!i[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(u)return u(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var s=n[r]={exports:{}};i[r][0].call(s.exports,function(e){return c(i[r][1][e]||e)},s,s.exports,o,i,n,l)}return n[r].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],2:[function(e,r,t){"use strict";var s=e("./error_classes").MissingRef;r.exports=function t(r,i,a){var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof i&&(a=i,i=void 0);var e=l(r).then(function(){var e=n._addSchema(r,void 0,i);return e.validate||c(e)});a&&e.then(function(e){a(null,e)},a);return e;function l(e){var r=e.$schema;return r&&!n.getSchema(r)?t.call(n,{$ref:r},!0):Promise.resolve()}function c(o){try{return n._compile(o)}catch(e){if(e instanceof s)return r(e);throw e}function r(e){var r=e.missingSchema;if(s(r))throw new Error("Schema "+r+" is loaded but "+e.missingRef+" cannot be resolved");var t=n._loadingSchemas[r];return t||(t=n._loadingSchemas[r]=n._opts.loadSchema(r)).then(a,a),t.then(function(e){if(!s(r))return l(e).then(function(){s(r)||n.addSchema(e,r,void 0,i)})}).then(function(){return c(o)});function a(){delete n._loadingSchemas[r]}function s(e){return n._refs[e]||n._schemas[e]}}}}},{"./error_classes":3}],3:[function(e,r,t){"use strict";var a=e("./resolve");function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=a.url(e,r),this.missingSchema=a.normalizeId(a.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e}r.exports={Validation:o(function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":6}],4:[function(e,r,t){"use strict";var a=e("./util"),o=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,i=[0,31,28,31,30,31,30,31,31,30,31,30,31],n=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,s=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,d=/^(?:\/(?:[^~/]|~0|~1)*)*$/,f=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,p=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return a.copy(m[e="full"==e?"full":"fast"])}function v(e){var r=e.match(o);if(!r)return!1;var t,a=+r[2],s=+r[3];return 1<=a&&a<=12&&1<=s&&s<=(2!=a||((t=+r[1])%4!=0||t%100==0&&t%400!=0)?i[a]:29)}function y(e,r){var t=e.match(n);if(!t)return!1;var a=t[1],s=t[2],o=t[3];return(a<=23&&s<=59&&o<=59||23==a&&59==s&&60==o)&&(!r||t[5])}(r.exports=m).fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p},m.full={date:v,time:y,"date-time":function(e){var r=e.split(g);return 2==r.length&&v(r[0])&&y(r[1],!0)},uri:function(e){return P.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p};var g=/t|\s/i;var P=/\/|:/;var E=/[^\\]\\Z/;function w(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},{"./util":10}],5:[function(e,r,t){"use strict";var j=e("./resolve"),O=e("./util"),I=e("./error_classes"),A=e("fast-json-stable-stringify"),C=e("../dotjs/validate"),k=O.ucs2length,L=e("fast-deep-equal"),z=I.Validation;function T(e,r,t){var a=s.call(this,e,r,t);return 0<=a?{index:a,compiling:!0}:{index:a=this._compilations.length,compiling:!(this._compilations[a]={schema:e,root:r,baseId:t})}}function q(e,r,t){var a=s.call(this,e,r,t);0<=a&&this._compilations.splice(a,1)}function s(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function N(e,r){return"var pattern"+e+" = new RegExp("+O.toQuotedString(r[e])+");"}function Q(e){return"var default"+e+" = defaults["+e+"];"}function U(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function V(e){return"var customRule"+e+" = customRules["+e+"];"}function H(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}r.exports=function c(e,u,h,r){var f=this,p=this._opts,d=[void 0],m={},v=[],t={},y=[],a={},g=[];u=u||{schema:e,refVal:d,refs:m};var s=T.call(this,e,u,r);var o=this._compilations[s.index];if(s.compiling)return o.callValidate=l;var P=this._formats;var E=this.RULES;try{var i=w(e,u,h,r);o.validate=i;var n=o.callValidate;return n&&(n.schema=i.schema,n.errors=null,n.refs=i.refs,n.refVal=i.refVal,n.root=i.root,n.$async=i.$async,p.sourceCode&&(n.source=i.source)),i}finally{q.call(this,e,u,r)}function l(){var e=o.validate,r=e.apply(this,arguments);return l.errors=e.errors,r}function w(e,r,t,a){var s=!r||r&&r.schema==e;if(r.schema!=u.schema)return c.call(f,e,r,t,a);var o,i=!0===e.$async,n=C({isTop:!0,schema:e,isRoot:s,baseId:a,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:I.MissingRef,RULES:E,validate:C,util:O,resolve:j,resolveRef:b,usePattern:$,useDefault:R,useCustomRule:D,opts:p,formats:P,logger:f.logger,self:f});n=H(d,U)+H(v,N)+H(y,Q)+H(g,V)+n,p.processCode&&(n=p.processCode(n));try{var l=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",n);o=l(f,E,P,u,d,y,g,L,k,z),d[0]=o}catch(e){throw f.logger.error("Error compiling schema, function code:",n),e}return o.schema=e,o.errors=null,o.refs=m,o.refVal=d,o.root=s?o:r,i&&(o.$async=!0),!0===p.sourceCode&&(o.source={code:n,patterns:v,defaults:y}),o}function b(e,r,t){r=j.url(e,r);var a,s,o=m[r];if(void 0!==o)return x(a=d[o],s="refVal["+o+"]");if(!t&&u.refs){var i=u.refs[r];if(void 0!==i)return s=S(r,a=u.refVal[i]),x(a,s)}s=S(r);var n=j.call(f,w,u,r);if(void 0===n){var l=h&&h[r];l&&(n=j.inlineRef(l,p.inlineRefs)?l:c.call(f,l,u,h,e))}if(void 0!==n)return F(r,n),x(n,s);_(r)}function S(e,r){var t=d.length;return d[t]=r,"refVal"+(m[e]=t)}function _(e){delete m[e]}function F(e,r){var t=m[e];d[t]=r}function x(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&!!e.$async}}function $(e){var r=t[e];return void 0===r&&(r=t[e]=v.length,v[r]=e),"pattern"+r}function R(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return O.toQuotedString(e);case"object":if(null===e)return"null";var r=A(e),t=a[r];return void 0===t&&(t=a[r]=y.length,y[t]=e),"default"+t}}function D(e,r,t,a){if(!1!==f._opts.validateSchema){var s=e.definition.dependencies;if(s&&!s.every(function(e){return Object.prototype.hasOwnProperty.call(t,e)}))throw new Error("parent schema must have all required keywords: "+s.join(","));var o=e.definition.validateSchema;if(o){var i=o(r);if(!i){var n="keyword schema is invalid: "+f.errorsText(o.errors);if("log"!=f._opts.validateSchema)throw new Error(n);f.logger.error(n)}}}var l,c=e.definition.compile,u=e.definition.inline,h=e.definition.macro;if(c)l=c.call(f,r,t,a);else if(h)l=h.call(f,r,t,a),!1!==p.validateSchema&&f.validateSchema(l,!0);else if(u)l=u.call(f,a,e.keyword,r,t);else if(!(l=e.definition.validate))return;if(void 0===l)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var d=g.length;return{code:"customRule"+d,validate:g[d]=l}}}},{"../dotjs/validate":38,"./error_classes":3,"./resolve":6,"./util":10,"fast-deep-equal":42,"fast-json-stable-stringify":43}],6:[function(e,r,t){"use strict";var m=e("uri-js"),v=e("fast-deep-equal"),y=e("./util"),l=e("./schema_obj"),a=e("json-schema-traverse");function c(e,r,t){var a=this._refs[t];if("string"==typeof a){if(!this._refs[a])return c.call(this,e,r,a);a=this._refs[a]}if((a=a||this._schemas[t])instanceof l)return d(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var s,o,i,n=u.call(this,r,t);return n&&(s=n.schema,r=n.root,i=n.baseId),s instanceof l?o=s.validate||e.call(this,s.schema,r,void 0,i):void 0!==s&&(o=d(s,this._opts.inlineRefs)?s:e.call(this,s,r,void 0,i)),o}function u(e,r){var t=m.parse(r),a=f(t),s=g(this._getId(e.schema));if(0===Object.keys(e.schema).length||a!==s){var o=P(a),i=this._refs[o];if("string"==typeof i)return function(e,r,t){var a=u.call(this,e,r);if(a){var s=a.schema,o=a.baseId;e=a.root;var i=this._getId(s);return i&&(o=p(o,i)),n.call(this,t,o,s,e)}}.call(this,e,i,t);if(i instanceof l)i.validate||this._compile(i),e=i;else{if(!((i=this._schemas[o])instanceof l))return;if(i.validate||this._compile(i),o==P(r))return{schema:i,root:e,baseId:s};e=i}if(!e.schema)return;s=g(this._getId(e.schema))}return n.call(this,t,s,e.schema,e)}(r.exports=c).normalizeId=P,c.fullPath=g,c.url=p,c.ids=function(e){var r=P(this._getId(e)),h={"":r},d={"":g(r,!1)},f={},p=this;return a(e,{allKeys:!0},function(e,r,t,a,s,o,i){if(""!==r){var n=p._getId(e),l=h[a],c=d[a]+"/"+s;if(void 0!==i&&(c+="/"+("number"==typeof i?i:y.escapeFragment(i))),"string"==typeof n){n=l=P(l?m.resolve(l,n):n);var u=p._refs[n];if("string"==typeof u&&(u=p._refs[u]),u&&u.schema){if(!v(e,u.schema))throw new Error('id "'+n+'" resolves to more than one schema')}else if(n!=P(c))if("#"==n[0]){if(f[n]&&!v(e,f[n]))throw new Error('id "'+n+'" resolves to more than one schema');f[n]=e}else p._refs[n]=c}h[r]=l,d[r]=c}}),f},c.inlineRef=d,c.schema=u;var h=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function n(e,r,t,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var s=e.fragment.split("/"),o=1;o<s.length;o++){var i=s[o];if(i){if(void 0===(t=t[i=y.unescapeFragment(i)]))break;var n;if(!h[i]&&((n=this._getId(t))&&(r=p(r,n)),t.$ref)){var l=p(r,t.$ref),c=u.call(this,a,l);c&&(t=c.schema,a=c.root,r=c.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}var i=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]);function d(e,r){return!1!==r&&(void 0===r||!0===r?function e(r){var t;if(Array.isArray(r)){for(var a=0;a<r.length;a++)if("object"==typeof(t=r[a])&&!e(t))return!1}else for(var s in r){if("$ref"==s)return!1;if("object"==typeof(t=r[s])&&!e(t))return!1}return!0}(e):r?function e(r){var t,a=0;if(Array.isArray(r)){for(var s=0;s<r.length;s++)if("object"==typeof(t=r[s])&&(a+=e(t)),a==1/0)return 1/0}else for(var o in r){if("$ref"==o)return 1/0;if(i[o])a++;else if("object"==typeof(t=r[o])&&(a+=e(t)+1),a==1/0)return 1/0}return a}(e)<=r:void 0)}function g(e,r){return!1!==r&&(e=P(e)),f(m.parse(e))}function f(e){return m.serialize(e).split("#")[0]+"#"}var s=/#\/?$/;function P(e){return e?e.replace(s,""):""}function p(e,r){return r=P(r),m.resolve(e,r)}},{"./schema_obj":8,"./util":10,"fast-deep-equal":42,"json-schema-traverse":44,"uri-js":45}],7:[function(e,r,t){"use strict";var o=e("../dotjs"),i=e("./util").toHash;r.exports=function(){var a=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],s=["type","$comment"];return a.all=i(s),a.types=i(["number","integer","string","array","object","boolean","null"]),a.forEach(function(e){e.rules=e.rules.map(function(e){var r;if("object"==typeof e){var t=Object.keys(e)[0];r=e[t],e=t,r.forEach(function(e){s.push(e),a.all[e]=!0})}return s.push(e),a.all[e]={keyword:e,code:o[e],implements:r}}),a.all.$comment={keyword:"$comment",code:o.$comment},e.type&&(a.types[e.type]=e)}),a.keywords=i(s.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),a.custom={},a}},{"../dotjs":27,"./util":10}],8:[function(e,r,t){"use strict";var a=e("./util");r.exports=function(e){a.copy(e,this)}},{"./util":10}],9:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,55296<=(r=e.charCodeAt(s++))&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],10:[function(e,r,t){"use strict";function o(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}r.exports={copy:function(e,r){for(var t in r=r||{},e)r[t]=e[t];return r},checkDataType:o,checkDataTypes:function(e,r){switch(e.length){case 1:return o(e[0],r,!0);default:var t="",a=n(e);for(var s in a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer,a)t+=(t?" && ":"")+o(s,r,!0);return t}},coerceToTypes:function(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];i[s]?t[t.length]=s:"array"===e&&"array"===s&&(t[t.length]=s)}if(t.length)return t}else{if(i[r])return[r];if("array"===e&&"array"===r)return["array"]}},toHash:n,getProperty:h,escapeQuotes:l,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:function(e,r){r+="[^0-9]";var t=e.match(new RegExp(r,"g"));return t?t.length:0},varReplace:function(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")},cleanUpCode:function(e){return e.replace(c,"").replace(u,"").replace(d,"if (!($1))")},finalCleanUpCode:function(e,r){var t=e.match(f);t&&2==t.length&&(e=r?e.replace(m,"").replace(g,P):e.replace(p,"").replace(v,y));return(t=e.match(E))&&3===t.length?e.replace(w,""):e},schemaHasRules:function(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0},schemaHasRulesExcept:function(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0},schemaUnknownRules:function(e,r){if("boolean"==typeof e)return;for(var t in e)if(!r[t])return t},toQuotedString:b,getPathExpr:function(e,r,t,a){return F(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")},getPath:function(e,r,t){var a=b(t?"/"+x(r):h(r));return F(e,a)},getData:function(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!S.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(_)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(r<=a)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(r<a)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,l=s.split("/"),c=0;c<l.length;c++){var u=l[c];u&&(o+=h($(u)),n+=" && "+o)}return n},unescapeFragment:function(e){return $(decodeURIComponent(e))},unescapeJsonPointer:$,escapeFragment:function(e){return encodeURIComponent(x(e))},escapeJsonPointer:x};var i=n(["string","number","integer","boolean","null"]);function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}var a=/^[a-z$_][a-z$_0-9]*$/i,s=/'|\\/g;function h(e){return"number"==typeof e?"["+e+"]":a.test(e)?"."+e:"['"+l(e)+"']"}function l(e){return e.replace(s,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}var c=/else\s*{\s*}/g,u=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,d=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;var f=/[^v.]errors/g,p=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,m=/var errors = 0;|var vErrors = null;/g,v="return errors === 0;",y="validate.errors = null; return true;",g=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,P="return data;",E=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,w=/if \(rootData === undefined\) rootData = data;/;function b(e){return"'"+l(e)+"'"}var S=/^\/(?:[^~]|~0|~1)*$/,_=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function F(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function x(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function $(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}},{"./ucs2length":9,"fast-deep-equal":42}],11:[function(e,r,t){"use strict";var l=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var a,s=r[t].split("/"),o=e;for(a=1;a<s.length;a++)o=o[s[a]];for(a=0;a<l.length;a++){var i=l[a],n=o[i];n&&(o[i]={anyOf:[n,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]})}}return e}},{}],12:[function(e,r,t){"use strict";var a=e("./refs/json-schema-draft-07.json");r.exports={$id:"https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:a.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:a.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},{"./refs/json-schema-draft-07.json":41}],13:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var d="maximum"==r,f=d?"exclusiveMaximum":"exclusiveMinimum",p=e.schema[f],m=e.opts.$data&&p&&p.$data,v=d?"<":">",y=d?">":"<",g=void 0;if(m){var P=e.util.getData(p.$data,o,e.dataPathArr),E="exclusive"+s,w="exclType"+s,b="exclIsNumber"+s,S="' + "+(x="op"+s)+" + '";a+=" var schemaExcl"+s+" = "+P+"; ";var _;g=f;(_=_||[]).push(a+=" var "+E+"; var "+w+" = typeof "+(P="schemaExcl"+s)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+w+" == 'number' ? ( ("+E+" = "+t+" === undefined || "+P+" "+v+"= "+t+") ? "+u+" "+y+"= "+P+" : "+u+" "+y+" "+t+" ) : ( ("+E+" = "+P+" === true) ? "+u+" "+y+"= "+t+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { var op"+s+" = "+E+" ? '"+v+"' : '"+v+"='; ",void 0===i&&(l=e.errSchemaPath+"/"+(g=f),t=P,h=m)}else{S=v;if((b="number"==typeof p)&&h){var x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" ( "+t+" === undefined || "+p+" "+v+"= "+t+" ? "+u+" "+y+"= "+p+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { "}else{b&&void 0===i?(E=!0,l=e.errSchemaPath+"/"+(g=f),t=p,y+="="):(b&&(t=Math[d?"min":"max"](p,i)),p===(!b||t)?(E=!0,l=e.errSchemaPath+"/"+(g=f),y+="="):(E=!1,S+="="));x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+u+" "+y+" "+t+" || "+u+" !== "+u+") { "}}g=g||r,(_=_||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+x+", limit: "+t+", exclusive: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be "+S+" ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;return a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" "+u+".length "+("maxItems"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxItems"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=!1===e.opts.unicode?" "+u+".length ":" ucs2length("+u+") ";var d=r,f=f||[];f.push(a+=" "+("maxLength"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be ",a+="maxLength"==r?"longer":"shorter",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" Object.keys("+u+").length "+("maxProperties"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxProperties"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c="valid"+n.level,u=n.baseId,h=!0,d=a;if(d)for(var f,p=-1,m=d.length-1;p<m;)f=d[p+=1],(e.opts.strictKeywords?"object"==typeof f&&0<Object.keys(f).length:e.util.schemaHasRules(f,e.RULES.all))&&(h=!1,n.schema=f,n.schemaPath=s+"["+p+"]",n.errSchemaPath=o+"/"+p,t+=" "+e.validate(n)+" ",n.baseId=u,i&&(t+=" if ("+c+") { ",l+="}"));return i&&(t+=h?" if (true) { ":" "+l.slice(0,-1)+" "),t=e.util.cleanUpCode(t)}},{}],18:[function(e,r,t){"use strict";r.exports=function(r,e){var t=" ",a=r.level,s=r.dataLevel,o=r.schema[e],i=r.schemaPath+r.util.getProperty(e),n=r.errSchemaPath+"/"+e,l=!r.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=r.util.copy(r),f="";d.level++;var p="valid"+d.level;if(o.every(function(e){return r.opts.strictKeywords?"object"==typeof e&&0<Object.keys(e).length:r.util.schemaHasRules(e,r.RULES.all)})){var m=d.baseId;t+=" var "+h+" = errors; var "+u+" = false; ";var v=r.compositeRule;r.compositeRule=d.compositeRule=!0;var y=o;if(y)for(var g,P=-1,E=y.length-1;P<E;)g=y[P+=1],d.schema=g,d.schemaPath=i+"["+P+"]",d.errSchemaPath=n+"/"+P,t+=" "+r.validate(d)+" ",d.baseId=m,t+=" "+u+" = "+u+" || "+p+"; if (!"+u+") { ",f+="}";r.compositeRule=d.compositeRule=v,t+=" "+f+" if (!"+u+") { var err = ",!1!==r.createErrors?(t+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+r.errorPath+" , schemaPath: "+r.util.toQuotedString(n)+" , params: {} ",!1!==r.opts.messages&&(t+=" , message: 'should match some schema in anyOf' "),r.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+r.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!r.compositeRule&&l&&(t+=r.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",r.opts.allErrors&&(t+=" } "),t=r.util.cleanUpCode(t)}else l&&(t+=" if (true) { ");return t}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.errSchemaPath+"/"+r,s=e.util.toQuotedString(e.schema[r]);return!0===e.opts.$comment?t+=" console.log("+s+");":"function"==typeof e.opts.$comment&&(t+=" self._opts.$comment("+s+", "+e.util.toQuotedString(a)+", validate.root.schema);"),t}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; "),h||(t+=" var schema"+a+" = validate.schema"+i+";");var d=d||[];d.push(t+="var "+u+" = equal("+c+", schema"+a+"); if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { allowedValue: schema"+a+" } ",!1!==e.opts.messages&&(t+=" , message: 'should be equal to constant' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var f=t;return t=d.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",l&&(t+=" else { "),t}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e);d.level++;var f="valid"+d.level,p="i"+a,m=d.dataLevel=e.dataLevel+1,v="data"+m,y=e.baseId,g=e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all);if(t+="var "+h+" = errors;var "+u+";",g){var P=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" var "+f+" = false; for (var "+p+" = 0; "+p+" < "+c+".length; "+p+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers,!0);var E=c+"["+p+"]";d.dataPathArr[m]=p;var w=e.validate(d);d.baseId=y,e.util.varOccurences(w,v)<2?t+=" "+e.util.varReplace(w,v,E)+" ":t+=" var "+v+" = "+E+"; "+w+" ",t+=" if ("+f+") break; } ",e.compositeRule=d.compositeRule=P,t+=" if (!"+f+") {"}else t+=" if ("+c+".length == 0) {";var b=b||[];b.push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should contain a valid item' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var S=t;return t=b.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ",g&&(t+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } "),e.opts.allErrors&&(t+=" } "),t=e.util.cleanUpCode(t)}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,h="data"+(i||""),d="valid"+o,f="errs__"+o,p=e.opts.$data&&n&&n.$data;a=p?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var m,v,y,g,P,E=this,w="definition"+o,b=E.definition,S="";if(p&&b.$data){var _=b.validateSchema;s+=" var "+w+" = RULES.custom['"+r+"'].definition; var "+(P="keywordValidate"+o)+" = "+w+".validate;"}else{if(!(g=e.useCustomRule(E,n,e.schema,e)))return;a="validate.schema"+l,P=g.code,m=b.compile,v=b.inline,y=b.macro}var F=P+".errors",x="i"+o,$="ruleErr"+o,R=b.async;if(R&&!e.async)throw new Error("async keyword in sync schema");if(v||y||(s+=F+" = null;"),s+="var "+f+" = errors;var "+d+";",p&&b.$data&&(S+="}",s+=" if ("+a+" === undefined) { "+d+" = true; } else { ",_&&(S+="}",s+=" "+d+" = "+w+".validateSchema("+a+"); if ("+d+") { ")),v)s+=b.statements?" "+g.validate+" ":" "+d+" = "+g.validate+"; ";else if(y){var D=e.util.copy(e);S="";D.level++;var j="valid"+D.level;D.schema=g.validate,D.schemaPath="";var O=e.compositeRule;e.compositeRule=D.compositeRule=!0;var I=e.validate(D).replace(/validate\.schema/g,P);e.compositeRule=D.compositeRule=O,s+=" "+I}else{(L=L||[]).push(s),s="",s+=" "+P+".call( ",s+=e.opts.passContext?"this":"self",s+=m||!1===b.schema?" , "+h+" ":" , "+a+" , "+h+" , validate.schema"+e.schemaPath+" ",s+=" , (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath);var A=i?"data"+(i-1||""):"parentData",C=i?e.dataPathArr[i]:"parentDataProperty",k=s+=" , "+A+" , "+C+" , rootData ) ";s=L.pop(),!1===b.errors?(s+=" "+d+" = ",R&&(s+="await "),s+=k+"; "):s+=R?" var "+(F="customErrors"+o)+" = null; try { "+d+" = await "+k+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+F+" = e.errors; else throw e; } ":" "+F+" = null; "+d+" = "+k+"; "}if(b.modifying&&(s+=" if ("+A+") "+h+" = "+A+"["+C+"];"),s+=""+S,b.valid)u&&(s+=" if (true) { ");else{var L;s+=" if ( ",void 0===b.valid?(s+=" !",s+=y?""+j:d):s+=" "+!b.valid+" ",t=E.keyword,(L=L||[]).push(s+=") { "),(L=L||[]).push(s=""),s="",!1!==e.createErrors?(s+=" { keyword: '"+(t||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(s+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var z=s;s=L.pop();var T=s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+z+"]); ":" validate.errors = ["+z+"]; return false; ":" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";s=L.pop(),v?b.errors?"full"!=b.errors&&(s+=" for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+$+" = vErrors["+x+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(s+=" "+$+".schema = "+a+"; "+$+".data = "+h+"; "),s+=" } "):!1===b.errors?s+=" "+T+" ":(s+=" if ("+f+" == errors) { "+T+" } else { for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+$+" = vErrors["+x+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(s+=" "+$+".schema = "+a+"; "+$+".data = "+h+"; "),s+=" } } "):y?(s+=" var err = ",!1!==e.createErrors?(s+=" { keyword: '"+(t||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(s+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(s+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===b.errors?s+=" "+T+" ":(s+=" if (Array.isArray("+F+")) { if (vErrors === null) vErrors = "+F+"; else vErrors = vErrors.concat("+F+"); errors = vErrors.length; for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+$+" = vErrors["+x+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; "+$+'.schemaPath = "'+c+'"; ',e.opts.verbose&&(s+=" "+$+".schema = "+a+"; "+$+".data = "+h+"; "),s+=" } } else { "+T+" } "),s+=" } ",u&&(s+=" else { ")}return s}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e),d="";h.level++;var f="valid"+h.level,p={},m={},v=e.opts.ownProperties;for(E in o){var y=o[E],g=Array.isArray(y)?m:p;g[E]=y}t+="var "+u+" = errors;";var P=e.errorPath;for(var E in t+="var missing"+a+";",m)if((g=m[E]).length){if(t+=" if ( "+c+e.util.getProperty(E)+" !== undefined ",v&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(E)+"') "),l){t+=" && ( ";var w=g;if(w)for(var b=-1,S=w.length-1;b<S;){D=w[b+=1],b&&(t+=" || "),t+=" ( ( "+(A=c+(I=e.util.getProperty(D)))+" === undefined ",v&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(D)+"') "),t+=") && (missing"+a+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:I)+") ) "}t+=")) { ";var _="missing"+a,F="' + "+_+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(P,_,!0):P+" + "+_);var x=x||[];x.push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { property: '"+e.util.escapeQuotes(E)+"', missingProperty: '"+F+"', depsCount: "+g.length+", deps: '"+e.util.escapeQuotes(1==g.length?g[0]:g.join(", "))+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should have ",t+=1==g.length?"property "+e.util.escapeQuotes(g[0]):"properties "+e.util.escapeQuotes(g.join(", ")),t+=" when property "+e.util.escapeQuotes(E)+" is present' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var $=t;t=x.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{t+=" ) { ";var R=g;if(R)for(var D,j=-1,O=R.length-1;j<O;){D=R[j+=1];var I=e.util.getProperty(D),A=(F=e.util.escapeQuotes(D),c+I);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(P,D,e.opts.jsonPointers)),t+=" if ( "+A+" === undefined ",v&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(D)+"') "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { property: '"+e.util.escapeQuotes(E)+"', missingProperty: '"+F+"', depsCount: "+g.length+", deps: '"+e.util.escapeQuotes(1==g.length?g[0]:g.join(", "))+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should have ",t+=1==g.length?"property "+e.util.escapeQuotes(g[0]):"properties "+e.util.escapeQuotes(g.join(", ")),t+=" when property "+e.util.escapeQuotes(E)+" is present' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}t+=" } ",l&&(d+="}",t+=" else { ")}e.errorPath=P;var C=h.baseId;for(var E in p){y=p[E];(e.opts.strictKeywords?"object"==typeof y&&0<Object.keys(y).length:e.util.schemaHasRules(y,e.RULES.all))&&(t+=" "+f+" = true; if ( "+c+e.util.getProperty(E)+" !== undefined ",v&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(E)+"') "),t+=") { ",h.schema=y,h.schemaPath=i+e.util.getProperty(E),h.errSchemaPath=n+"/"+e.util.escapeFragment(E),t+=" "+e.validate(h)+" ",h.baseId=C,t+=" } ",l&&(t+=" if ("+f+") { ",d+="}"))}return l&&(t+=" "+d+" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ");var d="i"+a,f="schema"+a;h||(t+=" var "+f+" = validate.schema"+i+";"),t+="var "+u+";",h&&(t+=" if (schema"+a+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+a+")) "+u+" = false; else {"),t+=u+" = false;for (var "+d+"=0; "+d+"<"+f+".length; "+d+"++) if (equal("+c+", "+f+"["+d+"])) { "+u+" = true; break; }",h&&(t+=" } ");var p=p||[];p.push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { allowedValues: schema"+a+" } ",!1!==e.opts.messages&&(t+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var m=t;return t=p.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",l&&(t+=" else { "),t}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||"");if(!1===e.opts.format)return c&&(a+=" if (true) { "),a;var h,d=e.opts.$data&&i&&i.$data;h=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var f=e.opts.unknownFormats,p=Array.isArray(f);if(d){a+=" var "+(m="format"+s)+" = formats["+h+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(y="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",d&&(a+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),a+=" (","ignore"!=f&&(a+=" ("+h+" && !"+m+" ",p&&(a+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),a+=") || "),a+=" ("+m+" && "+y+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? await "+m+"("+u+") : "+m+"("+u+")) ":" "+m+"("+u+") ",a+=" : "+m+".test("+u+"))))) {"}else{var m;if(!(m=e.formats[i])){if("ignore"==f)return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(a+=" if (true) { "),a;if(p&&0<=f.indexOf(i))return c&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,y=(v="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return c&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(P="formats"+e.util.getProperty(i)+".validate")+"("+u+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+u+") ":" "+P+".test("+u+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=d?""+h:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+h+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var w=a;return a=E.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+w+"]); ":" validate.errors = ["+w+"]; return false; ":" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e);d.level++;var f="valid"+d.level,p=e.schema.then,m=e.schema.else,v=void 0!==p&&(e.opts.strictKeywords?"object"==typeof p&&0<Object.keys(p).length:e.util.schemaHasRules(p,e.RULES.all)),y=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&0<Object.keys(m).length:e.util.schemaHasRules(m,e.RULES.all)),g=d.baseId;if(v||y){var P;d.createErrors=!1,d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" var "+h+" = errors; var "+u+" = true; ";var E=e.compositeRule;e.compositeRule=d.compositeRule=!0,t+=" "+e.validate(d)+" ",d.baseId=g,d.createErrors=!0,t+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.compositeRule=d.compositeRule=E,v?(t+=" if ("+f+") { ",d.schema=e.schema.then,d.schemaPath=e.schemaPath+".then",d.errSchemaPath=e.errSchemaPath+"/then",t+=" "+e.validate(d)+" ",d.baseId=g,t+=" "+u+" = "+f+"; ",v&&y?t+=" var "+(P="ifClause"+a)+" = 'then'; ":P="'then'",t+=" } ",y&&(t+=" else { ")):t+=" if (!"+f+") { ",y&&(d.schema=e.schema.else,d.schemaPath=e.schemaPath+".else",d.errSchemaPath=e.errSchemaPath+"/else",t+=" "+e.validate(d)+" ",d.baseId=g,t+=" "+u+" = "+f+"; ",v&&y?t+=" var "+(P="ifClause"+a)+" = 'else'; ":P="'else'",t+=" } "),t+=" if (!"+u+") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { failingKeyword: "+P+" } ",!1!==e.opts.messages&&(t+=" , message: 'should match \"' + "+P+" + '\" schema' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+=" } ",l&&(t+=" else { "),t=e.util.cleanUpCode(t)}else l&&(t+=" if (true) { ");return t}},{}],27:[function(e,r,t){"use strict";r.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":13,"./_limitItems":14,"./_limitLength":15,"./_limitProperties":16,"./allOf":17,"./anyOf":18,"./comment":19,"./const":20,"./contains":21,"./dependencies":23,"./enum":24,"./format":25,"./if":26,"./items":28,"./multipleOf":29,"./not":30,"./oneOf":31,"./pattern":32,"./properties":33,"./propertyNames":34,"./ref":35,"./required":36,"./uniqueItems":37,"./validate":38}],28:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m="i"+a,v=d.dataLevel=e.dataLevel+1,y="data"+v,g=e.baseId;if(t+="var "+h+" = errors;var "+u+";",Array.isArray(o)){var P=e.schema.additionalItems;if(!1===P){t+=" "+u+" = "+c+".length <= "+o.length+"; ";var E=n;n=e.errSchemaPath+"/additionalItems";var w=w||[];w.push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { limit: "+o.length+" } ",!1!==e.opts.messages&&(t+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var b=t;t=w.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",n=E,l&&(f+="}",t+=" else { ")}var S=o;if(S)for(var _,F=-1,x=S.length-1;F<x;)if(_=S[F+=1],e.opts.strictKeywords?"object"==typeof _&&0<Object.keys(_).length:e.util.schemaHasRules(_,e.RULES.all)){t+=" "+p+" = true; if ("+c+".length > "+F+") { ";var $=c+"["+F+"]";d.schema=_,d.schemaPath=i+"["+F+"]",d.errSchemaPath=n+"/"+F,d.errorPath=e.util.getPathExpr(e.errorPath,F,e.opts.jsonPointers,!0),d.dataPathArr[v]=F;var R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",t+=" } ",l&&(t+=" if ("+p+") { ",f+="}")}if("object"==typeof P&&(e.opts.strictKeywords?"object"==typeof P&&0<Object.keys(P).length:e.util.schemaHasRules(P,e.RULES.all))){d.schema=P,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",t+=" "+p+" = true; if ("+c+".length > "+o.length+") { for (var "+m+" = "+o.length+"; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);$=c+"["+m+"]";d.dataPathArr[v]=m;R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",l&&(t+=" if (!"+p+") break; "),t+=" } } ",l&&(t+=" if ("+p+") { ",f+="}")}}else if(e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);$=c+"["+m+"]";d.dataPathArr[v]=m;R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",l&&(t+=" if (!"+p+") break; "),t+=" }"}return l&&(t+=" "+f+" if ("+h+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="var division"+s+";if (",h&&(a+=" "+t+" !== undefined && ( typeof "+t+" != 'number' || "),a+=" (division"+s+" = "+u+" / "+t+", ",a+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+s+") - division"+s+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",h&&(a+=" ) ");var d=d||[];d.push(a+=" ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { multipleOf: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be multiple of ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var f=a;return a=d.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=i,h.errSchemaPath=n,t+=" var "+u+" = errors; ";var f,p=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.createErrors=!1,h.opts.allErrors&&(f=h.opts.allErrors,h.opts.allErrors=!1),t+=" "+e.validate(h)+" ",h.createErrors=!0,f&&(h.opts.allErrors=f),e.compositeRule=h.compositeRule=p;var m=m||[];m.push(t+=" if ("+d+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var v=t;t=m.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(t+=" } ")}else t+=" var err = ",!1!==e.createErrors?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(t+=" if (false) { ");return t}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m=d.baseId,v="prevValid"+a,y="passingSchemas"+a;t+="var "+h+" = errors , "+v+" = false , "+u+" = false , "+y+" = null; ";var g=e.compositeRule;e.compositeRule=d.compositeRule=!0;var P=o;if(P)for(var E,w=-1,b=P.length-1;w<b;)E=P[w+=1],(e.opts.strictKeywords?"object"==typeof E&&0<Object.keys(E).length:e.util.schemaHasRules(E,e.RULES.all))?(d.schema=E,d.schemaPath=i+"["+w+"]",d.errSchemaPath=n+"/"+w,t+=" "+e.validate(d)+" ",d.baseId=m):t+=" var "+p+" = true; ",w&&(t+=" if ("+p+" && "+v+") { "+u+" = false; "+y+" = ["+y+", "+w+"]; } else { ",f+="}"),t+=" if ("+p+") { "+u+" = "+v+" = true; "+y+" = "+w+"; }";return e.compositeRule=d.compositeRule=g,t+=f+"if (!"+u+") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(t+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+="} else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; }",e.opts.allErrors&&(t+=" } "),t}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var d=h?"(new RegExp("+t+"))":e.usePattern(i);a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'string') || ");var f=f||[];f.push(a+=" !"+d+".test("+u+") ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { pattern: ",a+=h?""+t:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match pattern \"",a+=h?"' + "+t+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e),d="";h.level++;var f="valid"+h.level,p="key"+a,m="idx"+a,v=h.dataLevel=e.dataLevel+1,y="data"+v,g="dataProperties"+a,P=Object.keys(o||{}),E=e.schema.patternProperties||{},w=Object.keys(E),b=e.schema.additionalProperties,S=P.length||w.length,_=!1===b,F="object"==typeof b&&Object.keys(b).length,x=e.opts.removeAdditional,$=_||F||x,R=e.opts.ownProperties,D=e.baseId,j=e.schema.required;if(j&&(!e.opts.$data||!j.$data)&&j.length<e.opts.loopRequired)var O=e.util.toHash(j);if(t+="var "+u+" = errors;var "+f+" = true;",R&&(t+=" var "+g+" = undefined;"),$){if(t+=R?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+g+".length; "+m+"++) { var "+p+" = "+g+"["+m+"]; ":" for (var "+p+" in "+c+") { ",S){if(t+=" var isAdditional"+a+" = !(false ",P.length)if(8<P.length)t+=" || validate.schema"+i+".hasOwnProperty("+p+") ";else{var I=P;if(I)for(var A=-1,C=I.length-1;A<C;)B=I[A+=1],t+=" || "+p+" == "+e.util.toQuotedString(B)+" "}if(w.length){var k=w;if(k)for(var L=-1,z=k.length-1;L<z;)ae=k[L+=1],t+=" || "+e.usePattern(ae)+".test("+p+") "}t+=" ); if (isAdditional"+a+") { "}if("all"==x)t+=" delete "+c+"["+p+"]; ";else{var T=e.errorPath,q="' + "+p+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers)),_)if(x)t+=" delete "+c+"["+p+"]; ";else{var N=n;n=e.errSchemaPath+"/additionalProperties",(ee=ee||[]).push(t+=" "+f+" = false; "),t="",!1!==e.createErrors?(t+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { additionalProperty: '"+q+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is an invalid additional property":"should NOT have additional properties",t+="' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var Q=t;t=ee.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+Q+"]); ":" validate.errors = ["+Q+"]; return false; ":" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n=N,l&&(t+=" break; ")}else if(F)if("failing"==x){t+=" var "+u+" = errors; ";var U=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.schema=b,h.schemaPath=e.schemaPath+".additionalProperties",h.errSchemaPath=e.errSchemaPath+"/additionalProperties",h.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);var V=c+"["+p+"]";h.dataPathArr[v]=p;var H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",t+=" if (!"+f+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+c+"["+p+"]; } ",e.compositeRule=h.compositeRule=U}else{h.schema=b,h.schemaPath=e.schemaPath+".additionalProperties",h.errSchemaPath=e.errSchemaPath+"/additionalProperties",h.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);V=c+"["+p+"]";h.dataPathArr[v]=p;H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",l&&(t+=" if (!"+f+") break; ")}e.errorPath=T}S&&(t+=" } "),t+=" } ",l&&(t+=" if ("+f+") { ",d+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(P.length){var M=P;if(M)for(var B,J=-1,Z=M.length-1;J<Z;){var G=o[B=M[J+=1]];if(e.opts.strictKeywords?"object"==typeof G&&0<Object.keys(G).length:e.util.schemaHasRules(G,e.RULES.all)){var Y=e.util.getProperty(B),W=(V=c+Y,K&&void 0!==G.default);h.schema=G,h.schemaPath=i+Y,h.errSchemaPath=n+"/"+e.util.escapeFragment(B),h.errorPath=e.util.getPath(e.errorPath,B,e.opts.jsonPointers),h.dataPathArr[v]=e.util.toQuotedString(B);H=e.validate(h);if(h.baseId=D,e.util.varOccurences(H,y)<2){H=e.util.varReplace(H,y,V);var X=V}else{X=y;t+=" var "+y+" = "+V+"; "}if(W)t+=" "+H+" ";else{if(O&&O[B]){t+=" if ( "+X+" === undefined ",R&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=") { "+f+" = false; ";T=e.errorPath,N=n;var ee,re=e.util.escapeQuotes(B);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(T,B,e.opts.jsonPointers)),n=e.errSchemaPath+"/required",(ee=ee||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+re+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";Q=t;t=ee.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+Q+"]); ":" validate.errors = ["+Q+"]; return false; ":" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n=N,e.errorPath=T,t+=" } else { "}else l?(t+=" if ( "+X+" === undefined ",R&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=") { "+f+" = true; } else { "):(t+=" if ("+X+" !== undefined ",R&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=" ) { ");t+=" "+H+" } "}}l&&(t+=" if ("+f+") { ",d+="}")}}if(w.length){var te=w;if(te)for(var ae,se=-1,oe=te.length-1;se<oe;){G=E[ae=te[se+=1]];if(e.opts.strictKeywords?"object"==typeof G&&0<Object.keys(G).length:e.util.schemaHasRules(G,e.RULES.all)){h.schema=G,h.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),h.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),t+=R?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+g+".length; "+m+"++) { var "+p+" = "+g+"["+m+"]; ":" for (var "+p+" in "+c+") { ",t+=" if ("+e.usePattern(ae)+".test("+p+")) { ",h.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);V=c+"["+p+"]";h.dataPathArr[v]=p;H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",l&&(t+=" if (!"+f+") break; "),t+=" } ",l&&(t+=" else "+f+" = true; "),t+=" } ",l&&(t+=" if ("+f+") { ",d+="}")}}}return l&&(t+=" "+d+" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(t+="var "+u+" = errors;",e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=i,h.errSchemaPath=n;var f="key"+a,p="idx"+a,m="i"+a,v="' + "+f+" + '",y="data"+(h.dataLevel=e.dataLevel+1),g="dataProperties"+a,P=e.opts.ownProperties,E=e.baseId;P&&(t+=" var "+g+" = undefined; "),t+=P?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+p+"=0; "+p+"<"+g+".length; "+p+"++) { var "+f+" = "+g+"["+p+"]; ":" for (var "+f+" in "+c+") { ",t+=" var startErrs"+a+" = errors; ";var w=f,b=e.compositeRule;e.compositeRule=h.compositeRule=!0;var S=e.validate(h);h.baseId=E,e.util.varOccurences(S,y)<2?t+=" "+e.util.varReplace(S,y,w)+" ":t+=" var "+y+" = "+w+"; "+S+" ",e.compositeRule=h.compositeRule=b,t+=" if (!"+d+") { for (var "+m+"=startErrs"+a+"; "+m+"<errors; "+m+"++) { vErrors["+m+"].propertyName = "+f+"; } var err = ",!1!==e.createErrors?(t+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { propertyName: '"+v+"' } ",!1!==e.opts.messages&&(t+=" , message: 'property name \\'"+v+"\\' is invalid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),l&&(t+=" break; "),t+=" } }"}return l&&(t+=" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.dataLevel,i=e.schema[r],n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(o||""),u="valid"+e.level;if("#"==i||"#/"==i)a=e.isRoot?(t=e.async,"validate"):(t=!0===e.root.schema.$async,"root.refVal[0]");else{var h=e.resolveRef(e.baseId,i,e.isRoot);if(void 0===h){var d=e.MissingRefError.message(e.baseId,i);if("fail"==e.opts.missingRefs){e.logger.error(d),(v=v||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { ref: '"+e.util.escapeQuotes(i)+"' } ",!1!==e.opts.messages&&(s+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(i)+"' "),e.opts.verbose&&(s+=" , schema: "+e.util.toQuotedString(i)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var f=s;s=v.pop(),s+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(s+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,i,d);e.logger.warn(d),l&&(s+=" if (true) { ")}}else if(h.inline){var p=e.util.copy(e);p.level++;var m="valid"+p.level;p.schema=h.schema,p.schemaPath="",p.errSchemaPath=i,s+=" "+e.validate(p).replace(/validate\.schema/g,h.code)+" ",l&&(s+=" if ("+m+") { ")}else t=!0===h.$async||e.async&&!1!==h.$async,a=h.code}if(a){var v;(v=v||[]).push(s),s="",s+=e.opts.passContext?" "+a+".call(this, ":" "+a+"( ",s+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath);var y=s+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(s=v.pop(),t){if(!e.async)throw new Error("async schema referenced by sync schema");l&&(s+=" var "+u+"; "),s+=" try { await "+y+"; ",l&&(s+=" "+u+" = true; "),s+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",l&&(s+=" "+u+" = false; "),s+=" } ",l&&(s+=" if ("+u+") { ")}else s+=" if (!"+y+") { if (vErrors === null) vErrors = "+a+".errors; else vErrors = vErrors.concat("+a+".errors); errors = vErrors.length; } ",l&&(s+=" else { ")}return s}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ");var d="schema"+a;if(!h)if(o.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var f=[],p=o;if(p)for(var m,v=-1,y=p.length-1;v<y;){m=p[v+=1];var g=e.schema.properties[m];g&&(e.opts.strictKeywords?"object"==typeof g&&0<Object.keys(g).length:e.util.schemaHasRules(g,e.RULES.all))||(f[f.length]=m)}}else f=o;if(h||f.length){var P=e.errorPath,E=h||e.opts.loopRequired<=f.length,w=e.opts.ownProperties;if(l)if(t+=" var missing"+a+"; ",E){h||(t+=" var "+d+" = validate.schema"+i+"; ");var b="' + "+(R="schema"+a+"["+(F="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,R,e.opts.jsonPointers)),t+=" var "+u+" = true; ",h&&(t+=" if (schema"+a+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+a+")) "+u+" = false; else {"),t+=" for (var "+F+" = 0; "+F+" < "+d+".length; "+F+"++) { "+u+" = "+c+"["+d+"["+F+"]] !== undefined ",w&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", "+d+"["+F+"]) "),t+="; if (!"+u+") break; } ",h&&(t+=" } "),($=$||[]).push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var S=t;t=$.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else{t+=" if ( ";var _=f;if(_)for(var F=-1,x=_.length-1;F<x;){j=_[F+=1],F&&(t+=" || "),t+=" ( ( "+(C=c+(A=e.util.getProperty(j)))+" === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),t+=") && (missing"+a+" = "+e.util.toQuotedString(e.opts.jsonPointers?j:A)+") ) "}t+=") { ";var $;b="' + "+(R="missing"+a)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(P,R,!0):P+" + "+R),($=$||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";S=t;t=$.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else if(E){h||(t+=" var "+d+" = validate.schema"+i+"; ");var R;b="' + "+(R="schema"+a+"["+(F="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,R,e.opts.jsonPointers)),h&&(t+=" if ("+d+" && !Array.isArray("+d+")) { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+d+" !== undefined) { "),t+=" for (var "+F+" = 0; "+F+" < "+d+".length; "+F+"++) { if ("+c+"["+d+"["+F+"]] === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", "+d+"["+F+"]) "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",h&&(t+=" } ")}else{var D=f;if(D)for(var j,O=-1,I=D.length-1;O<I;){j=D[O+=1];var A=e.util.getProperty(j),C=(b=e.util.escapeQuotes(j),c+A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(P,j,e.opts.jsonPointers)),t+=" if ( "+C+" === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=P}else l&&(t+=" if (true) {");return t}},{}],37:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;if(t=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,(i||d)&&!1!==e.opts.uniqueItems){d&&(a+=" var "+h+"; if ("+t+" === false || "+t+" === undefined) "+h+" = true; else if (typeof "+t+" != 'boolean') "+h+" = false; else { "),a+=" var i = "+u+".length , "+h+" = true , j; if (i > 1) { ";var f=e.schema.items&&e.schema.items.type,p=Array.isArray(f);if(!f||"object"==f||"array"==f||p&&(0<=f.indexOf("object")||0<=f.indexOf("array")))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+u+"[i], "+u+"[j])) { "+h+" = false; break outer; } } } ";else a+=" var itemIndices = {}, item; for (;i--;) { var item = "+u+"[i]; ",a+=" if ("+e.util["checkDataType"+(p?"s":"")](f,"item",!0)+") continue; ",p&&(a+=" if (typeof item == 'string') item = '\"' + item; "),a+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ";a+=" } ",d&&(a+=" } ");var m=m||[];m.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var v=a;a=m.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { ")}else c&&(a+=" if (true) { ");return a}},{}],38:[function(e,r,t){"use strict";r.exports=function(a,e){var r="",t=!0===a.schema.$async,s=a.util.schemaHasRulesExcept(a.schema,a.RULES.all,"$ref"),o=a.self._getId(a.schema);if(a.opts.strictKeywords){var i=a.util.schemaUnknownRules(a.schema,a.RULES.keywords);if(i){var n="unknown keyword: "+i;if("log"!==a.opts.strictKeywords)throw new Error(n);a.logger.warn(n)}}if(a.isTop&&(r+=" var validate = ",t&&(a.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(a.opts.sourceCode||a.opts.processCode)&&(r+=" /*# sourceURL="+o+" */ ")),"boolean"==typeof a.schema||!s&&!a.schema.$ref){var l=a.level,c=a.dataLevel,u=a.schema[e="false schema"],h=a.schemaPath+a.util.getProperty(e),d=a.errSchemaPath+"/"+e,f=!a.opts.allErrors,p="data"+(c||""),m="valid"+l;if(!1===a.schema){a.isTop?f=!0:r+=" var "+m+" = false; ",(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: {} ",!1!==a.opts.messages&&(r+=" , message: 'boolean schema is false' "),a.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";var v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else r+=a.isTop?t?" return data; ":" validate.errors = null; return true; ":" var "+m+" = true; ";return a.isTop&&(r+=" }; return validate; "),r}if(a.isTop){var y=a.isTop;l=a.level=0,c=a.dataLevel=0,p="data";if(a.rootId=a.resolve.fullPath(a.self._getId(a.root.schema)),a.baseId=a.baseId||a.rootId,delete a.isTop,a.dataPathArr=[void 0],void 0!==a.schema.default&&a.opts.useDefaults&&a.opts.strictDefaults){var g="default is ignored in the schema root";if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{l=a.level,p="data"+((c=a.dataLevel)||"");if(o&&(a.baseId=a.resolve.url(a.baseId,o)),t&&!a.async)throw new Error("async schema in sync schema");r+=" var errs_"+l+" = errors;"}m="valid"+l,f=!a.opts.allErrors;var P="",E="",w=a.schema.type,b=Array.isArray(w);if(w&&a.opts.nullable&&!0===a.schema.nullable&&(b?-1==w.indexOf("null")&&(w=w.concat("null")):"null"!=w&&(w=[w,"null"],b=!0)),b&&1==w.length&&(w=w[0],b=!1),a.schema.$ref&&s){if("fail"==a.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+a.errSchemaPath+'" (see option extendRefs)');!0!==a.opts.extendRefs&&(s=!1,a.logger.warn('$ref: keywords ignored in schema at path "'+a.errSchemaPath+'"'))}if(a.schema.$comment&&a.opts.$comment&&(r+=" "+a.RULES.all.$comment.code(a,"$comment")),w){if(a.opts.coerceTypes)var S=a.util.coerceToTypes(a.opts.coerceTypes,w);var _=a.RULES.types[w];if(S||b||!0===_||_&&!G(_)){h=a.schemaPath+".type",d=a.errSchemaPath+"/type",h=a.schemaPath+".type",d=a.errSchemaPath+"/type";if(r+=" if ("+a.util[b?"checkDataTypes":"checkDataType"](w,p,!0)+") { ",S){var F="dataType"+l,x="coerced"+l;r+=" var "+F+" = typeof "+p+"; ","array"==a.opts.coerceTypes&&(r+=" if ("+F+" == 'object' && Array.isArray("+p+")) "+F+" = 'array'; "),r+=" var "+x+" = undefined; ";var $="",R=S;if(R)for(var D,j=-1,O=R.length-1;j<O;)D=R[j+=1],j&&(r+=" if ("+x+" === undefined) { ",$+="}"),"array"==a.opts.coerceTypes&&"array"!=D&&(r+=" if ("+F+" == 'array' && "+p+".length == 1) { "+x+" = "+p+" = "+p+"[0]; "+F+" = typeof "+p+"; } "),"string"==D?r+=" if ("+F+" == 'number' || "+F+" == 'boolean') "+x+" = '' + "+p+"; else if ("+p+" === null) "+x+" = ''; ":"number"==D||"integer"==D?(r+=" if ("+F+" == 'boolean' || "+p+" === null || ("+F+" == 'string' && "+p+" && "+p+" == +"+p+" ","integer"==D&&(r+=" && !("+p+" % 1)"),r+=")) "+x+" = +"+p+"; "):"boolean"==D?r+=" if ("+p+" === 'false' || "+p+" === 0 || "+p+" === null) "+x+" = false; else if ("+p+" === 'true' || "+p+" === 1) "+x+" = true; ":"null"==D?r+=" if ("+p+" === '' || "+p+" === 0 || "+p+" === false) "+x+" = null; ":"array"==a.opts.coerceTypes&&"array"==D&&(r+=" if ("+F+" == 'string' || "+F+" == 'number' || "+F+" == 'boolean' || "+p+" == null) "+x+" = ["+p+"]; ");(Z=Z||[]).push(r+=" "+$+" if ("+x+" === undefined) { "),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ";var I=c?"data"+(c-1||""):"parentData";r+=" "+p+" = "+x+"; ",c||(r+="if ("+I+" !== undefined)"),r+=" "+I+"["+(c?a.dataPathArr[c]:"parentDataProperty")+"] = "+x+"; } "}else{(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}r+=" } "}}if(a.schema.$ref&&!s)r+=" "+a.RULES.all.$ref.code(a,"$ref")+" ",f&&(r+=" } if (errors === ",r+=y?"0":"errs_"+l,r+=") { ",E+="}");else{var A=a.RULES;if(A)for(var C=-1,k=A.length-1;C<k;)if(G(_=A[C+=1])){if(_.type&&(r+=" if ("+a.util.checkDataType(_.type,p)+") { "),a.opts.useDefaults)if("object"==_.type&&a.schema.properties){u=a.schema.properties;var L=Object.keys(u);if(L)for(var z,T=-1,q=L.length-1;T<q;){if(void 0!==(U=u[z=L[T+=1]]).default){var N=p+a.util.getProperty(z);if(a.compositeRule){if(a.opts.strictDefaults){g="default is ignored for: "+N;if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}}else r+=" if ("+N+" === undefined ","empty"==a.opts.useDefaults&&(r+=" || "+N+" === null || "+N+" === '' "),r+=" ) "+N+" = ",r+="shared"==a.opts.useDefaults?" "+a.useDefault(U.default)+" ":" "+JSON.stringify(U.default)+" ",r+="; "}}}else if("array"==_.type&&Array.isArray(a.schema.items)){var Q=a.schema.items;if(Q){j=-1;for(var U,V=Q.length-1;j<V;)if(void 0!==(U=Q[j+=1]).default){N=p+"["+j+"]";if(a.compositeRule){if(a.opts.strictDefaults){g="default is ignored for: "+N;if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}}else r+=" if ("+N+" === undefined ","empty"==a.opts.useDefaults&&(r+=" || "+N+" === null || "+N+" === '' "),r+=" ) "+N+" = ",r+="shared"==a.opts.useDefaults?" "+a.useDefault(U.default)+" ":" "+JSON.stringify(U.default)+" ",r+="; "}}}var H=_.rules;if(H)for(var K,M=-1,B=H.length-1;M<B;)if(Y(K=H[M+=1])){var J=K.code(a,K.keyword,_.type);J&&(r+=" "+J+" ",f&&(P+="}"))}if(f&&(r+=" "+P+" ",P=""),_.type&&(r+=" } ",w&&w===_.type&&!S)){var Z;h=a.schemaPath+".type",d=a.errSchemaPath+"/type";(Z=Z||[]).push(r+=" else { "),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } "}f&&(r+=" if (errors === ",r+=y?"0":"errs_"+l,r+=") { ",E+="}")}}function G(e){for(var r=e.rules,t=0;t<r.length;t++)if(Y(r[t]))return 1}function Y(e){return void 0!==a.schema[e.keyword]||e.implements&&function(e){for(var r=e.implements,t=0;t<r.length;t++)if(void 0!==a.schema[r[t]])return!0}(e)}return f&&(r+=" "+E+" "),y?(t?(r+=" if (errors === 0) return data; ",r+=" else throw new ValidationError(vErrors); "):(r+=" validate.errors = vErrors; ",r+=" return errors === 0; "),r+=" }; return validate;"):r+=" var "+m+" = errors === errs_"+l+";",r=a.util.cleanUpCode(r),y&&(r=a.util.finalCleanUpCode(r,t)),r}},{}],39:[function(e,r,t){"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,l=e("./dotjs/custom"),s=e("./definition_schema");r.exports={add:function(e,r){var n=this.RULES;if(n.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){this.validateKeyword(r,!0);var t=r.type;if(Array.isArray(t))for(var a=0;a<t.length;a++)o(e,t[a],r);else o(e,t,r);var s=r.metaSchema;s&&(r.$data&&this._opts.$data&&(s={anyOf:[s,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]}),r.validateSchema=this.compile(s,!0))}function o(e,r,t){for(var a,s=0;s<n.length;s++){var o=n[s];if(o.type==r){a=o;break}}a||n.push(a={type:r,rules:[]});var i={keyword:e,definition:t,custom:!0,code:l,implements:t.implements};a.rules.push(i),n.custom[e]=i}return n.keywords[e]=n.all[e]=!0,this},get:function(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1},remove:function(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}return this},validate:function e(r,t){e.errors=null;var a=this._validateKeyword=this._validateKeyword||this.compile(s,!0);if(a(r))return!0;e.errors=a.errors;{if(t)throw new Error("custom keyword definition is invalid: "+this.errorsText(a.errors));return!1}}}},{"./definition_schema":12,"./dotjs/custom":22}],40:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],41:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}},{}],42:[function(e,r,t){"use strict";r.exports=function e(r,t){if(r===t)return!0;if(r&&t&&"object"==typeof r&&"object"==typeof t){if(r.constructor!==t.constructor)return!1;var a,s,o;if(Array.isArray(r)){if((a=r.length)!=t.length)return!1;for(s=a;0!=s--;)if(!e(r[s],t[s]))return!1;return!0}if(r.constructor===RegExp)return r.source===t.source&&r.flags===t.flags;if(r.valueOf!==Object.prototype.valueOf)return r.valueOf()===t.valueOf();if(r.toString!==Object.prototype.toString)return r.toString()===t.toString();if((a=(o=Object.keys(r)).length)!==Object.keys(t).length)return!1;for(s=a;0!=s--;)if(!Object.prototype.hasOwnProperty.call(t,o[s]))return!1;for(s=a;0!=s--;){var i=o[s];if(!e(r[i],t[i]))return!1}return!0}return r!=r&&t!=t}},{}],43:[function(e,r,t){"use strict";r.exports=function(e,r){"function"==typeof(r=r||{})&&(r={cmp:r});var a,l="boolean"==typeof r.cycles&&r.cycles,c=r.cmp&&(a=r.cmp,function(t){return function(e,r){return a({key:e,value:t[e]},{key:r,value:t[r]})}}),u=[];return function e(r){if(r&&r.toJSON&&"function"==typeof r.toJSON&&(r=r.toJSON()),void 0!==r){if("number"==typeof r)return isFinite(r)?""+r:"null";if("object"!=typeof r)return JSON.stringify(r);var t,a;if(Array.isArray(r)){for(a="[",t=0;t<r.length;t++)t&&(a+=","),a+=e(r[t])||"null";return a+"]"}if(null===r)return"null";if(-1!==u.indexOf(r)){if(l)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=u.push(r)-1,o=Object.keys(r).sort(c&&c(r));for(a="",t=0;t<o.length;t++){var i=o[t],n=e(r[i]);n&&(a&&(a+=","),a+=JSON.stringify(i)+":"+n)}return u.splice(s,1),"{"+a+"}"}}(e)}},{}],44:[function(e,r,t){"use strict";var m=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),function e(r,t,a,s,o,i,n,l,c,u){if(s&&"object"==typeof s&&!Array.isArray(s)){for(var h in t(s,o,i,n,l,c,u),s){var d=s[h];if(Array.isArray(d)){if(h in m.arrayKeywords)for(var f=0;f<d.length;f++)e(r,t,a,d[f],o+"/"+h+"/"+f,i,o,h,s,f)}else if(h in m.propsKeywords){if(d&&"object"==typeof d)for(var p in d)e(r,t,a,d[p],o+"/"+h+"/"+p.replace(/~/g,"~0").replace(/\//g,"~1"),i,o,h,s,p)}else(h in m.keywords||r.allKeys&&!(h in m.skipKeywords))&&e(r,t,a,d,o+"/"+h,i,o,h,s)}a(s,o,i,n,l,c,u)}}(r,"function"==typeof(t=r.cb||t)?t:t.pre||function(){},t.post||function(){},e,"",e)};m.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},m.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},m.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},m.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],45:[function(e,r,t){var a;a=this,function(e){"use strict";function J(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];if(1<r.length){r[0]=r[0].slice(0,-1);for(var a=r.length-1,s=1;s<a;++s)r[s]=r[s].slice(1,-1);return r[a]=r[a].slice(1),r.join("")}return r[0]}function Z(e){return"(?:"+e+")"}function a(e){return void 0===e?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function p(e){return e.toUpperCase()}function r(e){var r="[A-Za-z]",t="[0-9]",a=J(t,"[A-Fa-f]"),s=Z(Z("%[EFef]"+a+"%"+a+a+"%"+a+a)+"|"+Z("%[89A-Fa-f]"+a+"%"+a+a)+"|"+Z("%"+a+a)),o="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=J("[\\:\\/\\?\\#\\[\\]\\@]",o),n=e?"[\\uE000-\\uF8FF]":"[]",l=J(r,t,"[\\-\\.\\_\\~]",e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]"),c=Z(r+J(r,t,"[\\+\\-\\.]")+"*"),u=Z(Z(s+"|"+J(l,o,"[\\:]"))+"*"),h=(Z("(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:[1-9][0-9])|"+t),Z("(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:0?[1-9][0-9])|0?0?"+t)),d=Z(h+"\\."+h+"\\."+h+"\\."+h),f=Z(a+"{1,4}"),p=Z(Z(f+"\\:"+f)+"|"+d),m=Z(Z(f+"\\:")+"{6}"+p),v=Z("\\:\\:"+Z(f+"\\:")+"{5}"+p),y=Z(Z(f)+"?\\:\\:"+Z(f+"\\:")+"{4}"+p),g=Z(Z(Z(f+"\\:")+"{0,1}"+f)+"?\\:\\:"+Z(f+"\\:")+"{3}"+p),P=Z(Z(Z(f+"\\:")+"{0,2}"+f)+"?\\:\\:"+Z(f+"\\:")+"{2}"+p),E=Z(Z(Z(f+"\\:")+"{0,3}"+f)+"?\\:\\:"+f+"\\:"+p),w=Z(Z(Z(f+"\\:")+"{0,4}"+f)+"?\\:\\:"+p),b=Z(Z(Z(f+"\\:")+"{0,5}"+f)+"?\\:\\:"+f),S=Z(Z(Z(f+"\\:")+"{0,6}"+f)+"?\\:\\:"),_=Z([m,v,y,g,P,E,w,b,S].join("|")),F=Z(Z(l+"|"+s)+"+"),x=(Z(_+"\\%25"+F),Z(_+Z("\\%25|\\%(?!"+a+"{2})")+F)),$=Z("[vV]"+a+"+\\."+J(l,o,"[\\:]")+"+"),R=Z("\\["+Z(x+"|"+_+"|"+$)+"\\]"),D=Z(Z(s+"|"+J(l,o))+"*"),j=Z(R+"|"+d+"(?!"+D+")|"+D),O=Z(t+"*"),I=Z(Z(u+"@")+"?"+j+Z("\\:"+O)+"?"),A=Z(s+"|"+J(l,o,"[\\:\\@]")),C=Z(A+"*"),k=Z(A+"+"),L=Z(Z(s+"|"+J(l,o,"[\\@]"))+"+"),z=Z(Z("\\/"+C)+"*"),T=Z("\\/"+Z(k+z)+"?"),q=Z(L+z),N=Z(k+z),Q="(?!"+A+")",U=(Z(z+"|"+T+"|"+q+"|"+N+"|"+Q),Z(Z(A+"|"+J("[\\/\\?]",n))+"*")),V=Z(Z(A+"|[\\/\\?]")+"*"),H=Z(Z("\\/\\/"+I+z)+"|"+T+"|"+N+"|"+Q),K=Z(c+"\\:"+H+Z("\\?"+U)+"?"+Z("\\#"+V)+"?"),M=Z(Z("\\/\\/"+I+z)+"|"+T+"|"+q+"|"+Q),B=Z(M+Z("\\?"+U)+"?"+Z("\\#"+V)+"?");Z(K+"|"+B),Z(c+"\\:"+H+Z("\\?"+U)+"?"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+N+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+q+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+N+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z("("+u+")@"),Z("\\:("+O+")");return{NOT_SCHEME:new RegExp(J("[^]",r,t,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(J("[^\\%\\:]",l,o),"g"),NOT_HOST:new RegExp(J("[^\\%\\[\\]\\:]",l,o),"g"),NOT_PATH:new RegExp(J("[^\\%\\/\\:\\@]",l,o),"g"),NOT_PATH_NOSCHEME:new RegExp(J("[^\\%\\/\\@]",l,o),"g"),NOT_QUERY:new RegExp(J("[^\\%]",l,o,"[\\:\\@\\/\\?]",n),"g"),NOT_FRAGMENT:new RegExp(J("[^\\%]",l,o,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(J("[^]",l,o),"g"),UNRESERVED:new RegExp(l,"g"),OTHER_CHARS:new RegExp(J("[^\\%]",l,i),"g"),PCT_ENCODED:new RegExp(s,"g"),IPV4ADDRESS:new RegExp("^("+d+")$"),IPV6ADDRESS:new RegExp("^\\[?("+_+")"+Z(Z("\\%25|\\%(?!"+a+"{2})")+"("+F+")")+"?\\]?$")}}var u=r(!1),h=r(!0),w=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,r){var t=[],a=!0,s=!1,o=void 0;try{for(var i,n=e[Symbol.iterator]();!(a=(i=n.next()).done)&&(t.push(i.value),!r||t.length!==r);a=!0);}catch(e){s=!0,o=e}finally{try{!a&&n.return&&n.return()}finally{if(s)throw o}}return t}(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")},A=2147483647,t=/^xn--/,s=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,i={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=Math.floor,k=String.fromCharCode;function L(e){throw new RangeError(i[e])}function n(e,r){var t=e.split("@"),a="";return 1<t.length&&(a=t[0]+"@",e=t[1]),a+function(e,r){for(var t=[],a=e.length;a--;)t[a]=r(e[a]);return t}((e=e.replace(o,".")).split("."),r).join(".")}function z(e){for(var r=[],t=0,a=e.length;t<a;){var s=e.charCodeAt(t++);if(55296<=s&&s<=56319&&t<a){var o=e.charCodeAt(t++);56320==(64512&o)?r.push(((1023&s)<<10)+(1023&o)+65536):(r.push(s),t--)}else r.push(s)}return r}function T(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function q(e,r,t){var a=0;for(e=t?C(e/700):e>>1,e+=C(e/r);455<e;a+=36)e=C(e/35);return C(a+36*e/(e+38))}function l(e){var r,t=[],a=e.length,s=0,o=128,i=72,n=e.lastIndexOf("-");n<0&&(n=0);for(var l=0;l<n;++l)128<=e.charCodeAt(l)&&L("not-basic"),t.push(e.charCodeAt(l));for(var c=0<n?n+1:0;c<a;){for(var u=s,h=1,d=36;;d+=36){a<=c&&L("invalid-input");var f=(r=e.charCodeAt(c++))-48<10?r-22:r-65<26?r-65:r-97<26?r-97:36;(36<=f||f>C((A-s)/h))&&L("overflow"),s+=f*h;var p=d<=i?1:i+26<=d?26:d-i;if(f<p)break;var m=36-p;h>C(A/m)&&L("overflow"),h*=m}var v=t.length+1;i=q(s-u,v,0==u),C(s/v)>A-o&&L("overflow"),o+=C(s/v),s%=v,t.splice(s++,0,o)}return String.fromCodePoint.apply(String,t)}function c(e){var r=[],t=(e=z(e)).length,a=128,s=0,o=72,i=!0,n=!1,l=void 0;try{for(var c,u=e[Symbol.iterator]();!(i=(c=u.next()).done);i=!0){var h=c.value;h<128&&r.push(k(h))}}catch(e){n=!0,l=e}finally{try{!i&&u.return&&u.return()}finally{if(n)throw l}}var d=r.length,f=d;for(d&&r.push("-");f<t;){var p=A,m=!0,v=!1,y=void 0;try{for(var g,P=e[Symbol.iterator]();!(m=(g=P.next()).done);m=!0){var E=g.value;a<=E&&E<p&&(p=E)}}catch(e){v=!0,y=e}finally{try{!m&&P.return&&P.return()}finally{if(v)throw y}}var w=f+1;p-a>C((A-s)/w)&&L("overflow"),s+=(p-a)*w,a=p;var b=!0,S=!1,_=void 0;try{for(var F,x=e[Symbol.iterator]();!(b=(F=x.next()).done);b=!0){var $=F.value;if($<a&&++s>A&&L("overflow"),$==a){for(var R=s,D=36;;D+=36){var j=D<=o?1:o+26<=D?26:D-o;if(R<j)break;var O=R-j,I=36-j;r.push(k(T(j+O%I,0))),R=C(O/I)}r.push(k(T(R,0))),o=q(s,w,f==d),s=0,++f}}}catch(e){S=!0,_=e}finally{try{!b&&x.return&&x.return()}finally{if(S)throw _}}++s,++a}return r.join("")}var v={version:"2.1.0",ucs2:{decode:z,encode:function(e){return String.fromCodePoint.apply(String,function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}return Array.from(e)}(e))}},decode:l,encode:c,toASCII:function(e){return n(e,function(e){return s.test(e)?"xn--"+c(e):e})},toUnicode:function(e){return n(e,function(e){return t.test(e)?l(e.slice(4).toLowerCase()):e})}},d={};function m(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function f(e){for(var r="",t=0,a=e.length;t<a;){var s=parseInt(e.substr(t+1,2),16);if(s<128)r+=String.fromCharCode(s),t+=3;else if(194<=s&&s<224){if(6<=a-t){var o=parseInt(e.substr(t+4,2),16);r+=String.fromCharCode((31&s)<<6|63&o)}else r+=e.substr(t,6);t+=6}else if(224<=s){if(9<=a-t){var i=parseInt(e.substr(t+4,2),16),n=parseInt(e.substr(t+7,2),16);r+=String.fromCharCode((15&s)<<12|(63&i)<<6|63&n)}else r+=e.substr(t,9);t+=9}else r+=e.substr(t,3),t+=3}return r}function y(e,t){function r(e){var r=f(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,m).replace(t.PCT_ENCODED,p)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,m).replace(t.PCT_ENCODED,p)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,m).replace(t.PCT_ENCODED,p)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,m).replace(t.PCT_ENCODED,p)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,m).replace(t.PCT_ENCODED,p)),e}function b(e){return e.replace(/^0*(.*)/,"$1")||"0"}function S(e,r){var t=e.match(r.IPV4ADDRESS)||[],a=w(t,2)[1];return a?a.split(".").map(b).join("."):e}function g(e,r){var t=e.match(r.IPV6ADDRESS)||[],a=w(t,3),s=a[1],o=a[2];if(s){for(var i=s.toLowerCase().split("::").reverse(),n=w(i,2),l=n[0],c=n[1],u=c?c.split(":").map(b):[],h=l.split(":").map(b),d=r.IPV4ADDRESS.test(h[h.length-1]),f=d?7:8,p=h.length-f,m=Array(f),v=0;v<f;++v)m[v]=u[v]||h[p+v]||"";d&&(m[f-1]=S(m[f-1],r));var y=m.reduce(function(e,r,t){if(!r||"0"===r){var a=e[e.length-1];a&&a.index+a.length===t?a.length++:e.push({index:t,length:1})}return e},[]).sort(function(e,r){return r.length-e.length})[0],g=void 0;if(y&&1<y.length){var P=m.slice(0,y.index),E=m.slice(y.index+y.length);g=P.join(":")+"::"+E.join(":")}else g=m.join(":");return o&&(g+="%"+o),g}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,E=void 0==="".match(/(){0}/)[1];function _(e){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t={},a=!1!==r.iri?h:u;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var s=e.match(P);if(s){E?(t.scheme=s[1],t.userinfo=s[3],t.host=s[4],t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=s[7],t.fragment=s[8],isNaN(t.port)&&(t.port=s[5])):(t.scheme=s[1]||void 0,t.userinfo=-1!==e.indexOf("@")?s[3]:void 0,t.host=-1!==e.indexOf("//")?s[4]:void 0,t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=-1!==e.indexOf("?")?s[7]:void 0,t.fragment=-1!==e.indexOf("#")?s[8]:void 0,isNaN(t.port)&&(t.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?s[4]:void 0)),t.host&&(t.host=g(S(t.host,a),a)),t.reference=void 0!==t.scheme||void 0!==t.userinfo||void 0!==t.host||void 0!==t.port||t.path||void 0!==t.query?void 0===t.scheme?"relative":void 0===t.fragment?"absolute":"uri":"same-document",r.reference&&"suffix"!==r.reference&&r.reference!==t.reference&&(t.error=t.error||"URI is not a "+r.reference+" reference.");var o=d[(r.scheme||t.scheme||"").toLowerCase()];if(r.unicodeSupport||o&&o.unicodeSupport)y(t,a);else{if(t.host&&(r.domainHost||o&&o.domainHost))try{t.host=v.toASCII(t.host.replace(a.PCT_ENCODED,f).toLowerCase())}catch(e){t.error=t.error||"Host's domain name can not be converted to ASCII via punycode: "+e}y(t,u)}o&&o.parse&&o.parse(t,r)}else t.error=t.error||"URI can not be parsed.";return t}var F=/^\.\.?\//,x=/^\/\.(\/|$)/,$=/^\/\.\.(\/|$)/,R=/^\/?(?:.|\n)*?(?=\/|$)/;function D(e){for(var r=[];e.length;)if(e.match(F))e=e.replace(F,"");else if(e.match(x))e=e.replace(x,"/");else if(e.match($))e=e.replace($,"/"),r.pop();else if("."===e||".."===e)e="";else{var t=e.match(R);if(!t)throw new Error("Unexpected dot segment condition");var a=t[0];e=e.slice(a.length),r.push(a)}return r.join("")}function j(r){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.iri?h:u,a=[],s=d[(t.scheme||r.scheme||"").toLowerCase()];if(s&&s.serialize&&s.serialize(r,t),r.host&&!e.IPV6ADDRESS.test(r.host)&&(t.domainHost||s&&s.domainHost))try{r.host=t.iri?v.toUnicode(r.host):v.toASCII(r.host.replace(e.PCT_ENCODED,f).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+e}y(r,e),"suffix"!==t.reference&&r.scheme&&(a.push(r.scheme),a.push(":"));var o,i,n,l=(i=!1!==t.iri?h:u,n=[],void 0!==(o=r).userinfo&&(n.push(o.userinfo),n.push("@")),void 0!==o.host&&n.push(g(S(String(o.host),i),i).replace(i.IPV6ADDRESS,function(e,r,t){return"["+r+(t?"%25"+t:"")+"]"})),"number"==typeof o.port&&(n.push(":"),n.push(o.port.toString(10))),n.length?n.join(""):void 0);if(void 0!==l&&("suffix"!==t.reference&&a.push("//"),a.push(l),r.path&&"/"!==r.path.charAt(0)&&a.push("/")),void 0!==r.path){var c=r.path;t.absolutePath||s&&s.absolutePath||(c=D(c)),void 0===l&&(c=c.replace(/^\/\//,"/%2F")),a.push(c)}return void 0!==r.query&&(a.push("?"),a.push(r.query)),void 0!==r.fragment&&(a.push("#"),a.push(r.fragment)),a.join("")}function O(e,r){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a={};return arguments[3]||(e=_(j(e,t),t),r=_(j(r,t),t)),!(t=t||{}).tolerant&&r.scheme?(a.scheme=r.scheme,a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(void 0!==r.userinfo||void 0!==r.host||void 0!==r.port?(a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(r.path?("/"===r.path.charAt(0)?a.path=D(r.path):(a.path=void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:r.path:"/"+r.path,a.path=D(a.path)),a.query=r.query):(a.path=e.path,a.query=void 0!==r.query?r.query:e.query),a.userinfo=e.userinfo,a.host=e.host,a.port=e.port),a.scheme=e.scheme),a.fragment=r.fragment,a}function I(e,r){return e&&e.toString().replace(r&&r.iri?h.PCT_ENCODED:u.PCT_ENCODED,f)}var N={scheme:"http",domainHost:!0,parse:function(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},Q={scheme:"https",domainHost:N.domainHost,parse:N.parse,serialize:N.serialize},U={},V="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",H="[0-9A-Fa-f]",K=(Z(Z("%[EFef]"+H+"%"+H+H+"%"+H+H)+"|"+Z("%[89A-Fa-f]"+H+"%"+H+H)+"|"+Z("%"+H+H)),J("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]')),M=new RegExp(V,"g"),B=new RegExp("(?:(?:%[EFef][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[89A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[0-9A-Fa-f][0-9A-Fa-f]))","g"),G=new RegExp(J("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',K),"g"),Y=new RegExp(J("[^]",V,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),W=Y;function X(e){var r=f(e);return r.match(M)?r:e}var ee={scheme:"mailto",parse:function(e,r){var t=e,a=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var s=!1,o={},i=t.query.split("&"),n=0,l=i.length;n<l;++n){var c=i[n].split("=");switch(c[0]){case"to":for(var u=c[1].split(","),h=0,d=u.length;h<d;++h)a.push(u[h]);break;case"subject":t.subject=I(c[1],r);break;case"body":t.body=I(c[1],r);break;default:s=!0,o[I(c[0],r)]=I(c[1],r)}}s&&(t.headers=o)}t.query=void 0;for(var f=0,p=a.length;f<p;++f){var m=a[f].split("@");if(m[0]=I(m[0]),r.unicodeSupport)m[1]=I(m[1],r).toLowerCase();else try{m[1]=v.toASCII(I(m[1],r).toLowerCase())}catch(e){t.error=t.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}a[f]=m.join("@")}return t},serialize:function(e,r){var t,a=e,s=null!=(t=e.to)?t instanceof Array?t:"number"!=typeof t.length||t.split||t.setInterval||t.call?[t]:Array.prototype.slice.call(t):[];if(s){for(var o=0,i=s.length;o<i;++o){var n=String(s[o]),l=n.lastIndexOf("@"),c=n.slice(0,l).replace(B,X).replace(B,p).replace(G,m),u=n.slice(l+1);try{u=r.iri?v.toUnicode(u):v.toASCII(I(u,r).toLowerCase())}catch(e){a.error=a.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+e}s[o]=c+"@"+u}a.path=s.join(",")}var h=e.headers=e.headers||{};e.subject&&(h.subject=e.subject),e.body&&(h.body=e.body);var d=[];for(var f in h)h[f]!==U[f]&&d.push(f.replace(B,X).replace(B,p).replace(Y,m)+"="+h[f].replace(B,X).replace(B,p).replace(W,m));return d.length&&(a.query=d.join("&")),a}},re=/^([^\:]+)\:(.*)/,te={scheme:"urn",parse:function(e,r){var t=e.path&&e.path.match(re),a=e;if(t){var s=r.scheme||a.scheme||"urn",o=t[1].toLowerCase(),i=t[2],n=d[s+":"+(r.nid||o)];a.nid=o,a.nss=i,a.path=void 0,n&&(a=n.parse(a,r))}else a.error=a.error||"URN can not be parsed.";return a},serialize:function(e,r){var t=e.nid,a=d[(r.scheme||e.scheme||"urn")+":"+(r.nid||t)];a&&(e=a.serialize(e,r));var s=e;return s.path=(t||r.nid)+":"+e.nss,s}},ae=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,se={scheme:"urn:uuid",parse:function(e,r){var t=e;return t.uuid=t.nss,t.nss=void 0,r.tolerant||t.uuid&&t.uuid.match(ae)||(t.error=t.error||"UUID is not valid."),t},serialize:function(e){var r=e;return r.nss=(e.uuid||"").toLowerCase(),r}};d[N.scheme]=N,d[Q.scheme]=Q,d[ee.scheme]=ee,d[te.scheme]=te,d[se.scheme]=se,e.SCHEMES=d,e.pctEncChar=m,e.pctDecChars=f,e.parse=_,e.removeDotSegments=D,e.serialize=j,e.resolveComponents=O,e.resolve=function(e,r,t){var a=function(e,r){var t=e;if(r)for(var a in r)t[a]=r[a];return t}({scheme:"null"},t);return j(O(_(e,a),_(r,a),a,!0),a)},e.normalize=function(e,r){return"string"==typeof e?e=j(_(e,r),r):"object"===a(e)&&(e=_(j(e,r),r)),e},e.equal=function(e,r,t){return"string"==typeof e?e=j(_(e,t),t):"object"===a(e)&&(e=j(e,t)),"string"==typeof r?r=j(_(r,t),t):"object"===a(r)&&(r=j(r,t)),e===r},e.escapeComponent=function(e,r){return e&&e.toString().replace(r&&r.iri?h.ESCAPE:u.ESCAPE,m)},e.unescapeComponent=I,Object.defineProperty(e,"__esModule",{value:!0})}("object"==typeof t&&void 0!==r?t:a.URI=a.URI||{})},{}],ajv:[function(a,e,r){"use strict";var n=a("./compile"),d=a("./compile/resolve"),t=a("./cache"),f=a("./compile/schema_obj"),s=a("fast-json-stable-stringify"),o=a("./compile/formats"),i=a("./compile/rules"),l=a("./data"),c=a("./compile/util");(e.exports=y).prototype.validate=function(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);!0!==t.$async&&(this.errors=t.errors);return s},y.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},y.prototype.addSchema=function(e,r,t,a){if(Array.isArray(e)){for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);return this}var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");return S(this,r=d.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0),this},y.prototype.addMetaSchema=function(e,r,t){return this.addSchema(e,r,t,!0),this},y.prototype.validateSchema=function(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||function(e){var r=e._opts.meta;return e._opts.defaultMeta="object"==typeof r?e._getId(r)||r:e.getSchema(p)?p:void 0,e._opts.defaultMeta}(this)))return this.logger.warn("meta-schema not available"),!(this.errors=null);var a=this.validate(t,e);if(!a&&r){var s="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(s);this.logger.error(s)}return a},y.prototype.getSchema=function(e){var r=g(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return function(e,r){var t=d.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=n.call(e,a,s,void 0,o);return e._fragments[r]=new f({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}(this,e)}},y.prototype.removeSchema=function(e){if(e instanceof RegExp)return P(this,this._schemas,e),P(this,this._refs,e),this;switch(typeof e){case"undefined":return P(this,this._schemas),P(this,this._refs),this._cache.clear(),this;case"string":var r=g(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],delete this._refs[e],this;case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=d.normalizeId(s),delete this._schemas[s],delete this._refs[s])}return this},y.prototype.addFormat=function(e,r){"string"==typeof r&&(r=new RegExp(r));return this._formats[e]=r,this},y.prototype.errorsText=function(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)},y.prototype._addSchema=function(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=d.normalizeId(this._getId(e));n&&a&&S(this,n);var l,c=!1!==this._opts.validateSchema&&!r;c&&!(l=n&&n==d.normalizeId(e.$schema))&&this.validateSchema(e,!0);var u=d.ids.call(this,e),h=new f({id:n,schema:e,localRefs:u,cacheKey:o,meta:t});"#"!=n[0]&&a&&(this._refs[n]=h);this._cache.put(o,h),c&&l&&this.validateSchema(e,!0);return h},y.prototype._compile=function(t,e){if(t.compiling)return(t.validate=s).schema=t.schema,s.errors=null,s.root=e||s,!0===t.schema.$async&&(s.$async=!0),s;var r,a;t.compiling=!0,t.meta&&(r=this._opts,this._opts=this._metaOpts);try{a=n.call(this,t.schema,e,t.localRefs)}catch(e){throw delete t.validate,e}finally{t.compiling=!1,t.meta&&(this._opts=r)}return t.validate=a,t.refs=a.refs,t.refVal=a.refVal,t.root=a.root,a;function s(){var e=t.validate,r=e.apply(this,arguments);return s.errors=e.errors,r}},y.prototype.compileAsync=a("./compile/async");var u=a("./keyword");y.prototype.addKeyword=u.add,y.prototype.getKeyword=u.get,y.prototype.removeKeyword=u.remove,y.prototype.validateKeyword=u.validate;var h=a("./compile/error_classes");y.ValidationError=h.Validation,y.MissingRefError=h.MissingRef,y.$dataMetaSchema=l;var p="http://json-schema.org/draft-07/schema",m=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],v=["/properties"];function y(e){if(!(this instanceof y))return new y(e);e=this._opts=c.copy(e)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:_,warn:_,error:_};else{if(void 0===r&&(r=console),!("object"==typeof r&&r.log&&r.warn&&r.error))throw new Error("logger must implement log, warn and error methods");e.logger=r}}(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(e.format),this._cache=e.cache||new t,this._loadingSchemas={},this._compilations=[],this.RULES=i(),this._getId=function(e){switch(e.schemaId){case"auto":return b;case"id":return E;default:return w}}(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=s),this._metaOpts=function(e){for(var r=c.copy(e._opts),t=0;t<m.length;t++)delete r[m[t]];return r}(this),e.formats&&function(e){for(var r in e._opts.formats){e.addFormat(r,e._opts.formats[r])}}(this),e.keywords&&function(e){for(var r in e._opts.keywords){e.addKeyword(r,e._opts.keywords[r])}}(this),function(e){var r;e._opts.$data&&(r=a("./refs/data.json"),e.addMetaSchema(r,r.$id,!0));if(!1===e._opts.meta)return;var t=a("./refs/json-schema-draft-07.json");e._opts.$data&&(t=l(t,v));e.addMetaSchema(t,p,!0),e._refs["http://json-schema.org/schema"]=p}(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),e.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),function(e){var r=e._opts.schemas;if(!r)return;if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}(this)}function g(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function P(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function E(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function w(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function b(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function S(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function _(){}},{"./cache":1,"./compile":5,"./compile/async":2,"./compile/error_classes":3,"./compile/formats":4,"./compile/resolve":6,"./compile/rules":7,"./compile/schema_obj":8,"./compile/util":10,"./data":11,"./keyword":39,"./refs/data.json":40,"./refs/json-schema-draft-07.json":41,"fast-json-stable-stringify":43}]},{},[])("ajv")});
+/* ajv 6.12.2: Another JSON Schema Validator */
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function o(i,n,l){function c(r,e){if(!n[r]){if(!i[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(u)return u(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var s=n[r]={exports:{}};i[r][0].call(s.exports,function(e){return c(i[r][1][e]||e)},s,s.exports,o,i,n,l)}return n[r].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],2:[function(e,r,t){"use strict";var a=e("./error_classes").MissingRef;function s(r,n,t){var l=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof n&&(t=n,n=void 0);var e=c(r).then(function(){var e=l._addSchema(r,void 0,n);return e.validate||function o(i){try{return l._compile(i)}catch(e){if(e instanceof a)return r(e);throw e}function r(e){var r=e.missingSchema;if(s(r))throw new Error("Schema "+r+" is loaded but "+e.missingRef+" cannot be resolved");var t=l._loadingSchemas[r];return t||(t=l._loadingSchemas[r]=l._opts.loadSchema(r)).then(a,a),t.then(function(e){if(!s(r))return c(e).then(function(){s(r)||l.addSchema(e,r,void 0,n)})}).then(function(){return o(i)});function a(){delete l._loadingSchemas[r]}function s(e){return l._refs[e]||l._schemas[e]}}}(e)});return t&&e.then(function(e){t(null,e)},t),e;function c(e){var r=e.$schema;return r&&!l.getSchema(r)?s.call(l,{$ref:r},!0):Promise.resolve()}}r.exports=s},{"./error_classes":3}],3:[function(e,r,t){"use strict";var a=e("./resolve");function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=a.url(e,r),this.missingSchema=a.normalizeId(a.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e}r.exports={Validation:o(function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":6}],4:[function(e,r,t){"use strict";var a=e("./util"),o=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,i=[0,31,28,31,30,31,30,31,31,30,31,30,31],n=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,s=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,d=/^(?:\/(?:[^~/]|~0|~1)*)*$/,f=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,p=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return a.copy(m[e="full"==e?"full":"fast"])}function v(e){var r=e.match(o);if(!r)return!1;var t,a=+r[2],s=+r[3];return 1<=a&&a<=12&&1<=s&&s<=(2!=a||((t=+r[1])%4!=0||t%100==0&&t%400!=0)?i[a]:29)}function y(e,r){var t=e.match(n);if(!t)return!1;var a=t[1],s=t[2],o=t[3];return(a<=23&&s<=59&&o<=59||23==a&&59==s&&60==o)&&(!r||t[5])}(r.exports=m).fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p},m.full={date:v,time:y,"date-time":function(e){var r=e.split(g);return 2==r.length&&v(r[0])&&y(r[1],!0)},uri:function(e){return P.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p};var g=/t|\s/i;var P=/\/|:/;var E=/[^\\]\\Z/;function w(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},{"./util":10}],5:[function(e,r,t){"use strict";var $=e("./resolve"),R=e("./util"),D=e("./error_classes"),j=e("fast-json-stable-stringify"),O=e("../dotjs/validate"),I=R.ucs2length,A=e("fast-deep-equal"),C=D.Validation;function k(e,c,u,r){var d=this,f=this._opts,h=[void 0],p={},l=[],t={},m=[],a={},v=[],s=function(e,r,t){var a=L.call(this,e,r,t);return 0<=a?{index:a,compiling:!0}:{index:a=this._compilations.length,compiling:!(this._compilations[a]={schema:e,root:r,baseId:t})}}.call(this,e,c=c||{schema:e,refVal:h,refs:p},r),o=this._compilations[s.index];if(s.compiling)return o.callValidate=P;var y=this._formats,g=this.RULES;try{var i=E(e,c,u,r);o.validate=i;var n=o.callValidate;return n&&(n.schema=i.schema,n.errors=null,n.refs=i.refs,n.refVal=i.refVal,n.root=i.root,n.$async=i.$async,f.sourceCode&&(n.source=i.source)),i}finally{(function(e,r,t){var a=L.call(this,e,r,t);0<=a&&this._compilations.splice(a,1)}).call(this,e,c,r)}function P(){var e=o.validate,r=e.apply(this,arguments);return P.errors=e.errors,r}function E(e,r,t,a){var s=!r||r&&r.schema==e;if(r.schema!=c.schema)return k.call(d,e,r,t,a);var o,i=!0===e.$async,n=O({isTop:!0,schema:e,isRoot:s,baseId:a,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:D.MissingRef,RULES:g,validate:O,util:R,resolve:$,resolveRef:w,usePattern:_,useDefault:F,useCustomRule:x,opts:f,formats:y,logger:d.logger,self:d});n=Q(h,q)+Q(l,z)+Q(m,T)+Q(v,N)+n,f.processCode&&(n=f.processCode(n));try{o=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",n)(d,g,y,c,h,m,v,A,I,C),h[0]=o}catch(e){throw d.logger.error("Error compiling schema, function code:",n),e}return o.schema=e,o.errors=null,o.refs=p,o.refVal=h,o.root=s?o:r,i&&(o.$async=!0),!0===f.sourceCode&&(o.source={code:n,patterns:l,defaults:m}),o}function w(e,r,t){r=$.url(e,r);var a,s,o=p[r];if(void 0!==o)return S(a=h[o],s="refVal["+o+"]");if(!t&&c.refs){var i=c.refs[r];if(void 0!==i)return S(a=c.refVal[i],s=b(r,a))}s=b(r);var n=$.call(d,E,c,r);if(void 0===n){var l=u&&u[r];l&&(n=$.inlineRef(l,f.inlineRefs)?l:k.call(d,l,c,u,e))}if(void 0!==n)return h[p[r]]=n,S(n,s);delete p[r]}function b(e,r){var t=h.length;return h[t]=r,"refVal"+(p[e]=t)}function S(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&!!e.$async}}function _(e){var r=t[e];return void 0===r&&(r=t[e]=l.length,l[r]=e),"pattern"+r}function F(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return R.toQuotedString(e);case"object":if(null===e)return"null";var r=j(e),t=a[r];return void 0===t&&(t=a[r]=m.length,m[t]=e),"default"+t}}function x(e,r,t,a){if(!1!==d._opts.validateSchema){var s=e.definition.dependencies;if(s&&!s.every(function(e){return Object.prototype.hasOwnProperty.call(t,e)}))throw new Error("parent schema must have all required keywords: "+s.join(","));var o=e.definition.validateSchema;if(o)if(!o(r)){var i="keyword schema is invalid: "+d.errorsText(o.errors);if("log"!=d._opts.validateSchema)throw new Error(i);d.logger.error(i)}}var n,l=e.definition.compile,c=e.definition.inline,u=e.definition.macro;if(l)n=l.call(d,r,t,a);else if(u)n=u.call(d,r,t,a),!1!==f.validateSchema&&d.validateSchema(n,!0);else if(c)n=c.call(d,a,e.keyword,r,t);else if(!(n=e.definition.validate))return;if(void 0===n)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var h=v.length;return{code:"customRule"+h,validate:v[h]=n}}}function L(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function z(e,r){return"var pattern"+e+" = new RegExp("+R.toQuotedString(r[e])+");"}function T(e){return"var default"+e+" = defaults["+e+"];"}function q(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function N(e){return"var customRule"+e+" = customRules["+e+"];"}function Q(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}r.exports=k},{"../dotjs/validate":38,"./error_classes":3,"./resolve":6,"./util":10,"fast-deep-equal":42,"fast-json-stable-stringify":43}],6:[function(e,r,t){"use strict";var m=e("uri-js"),v=e("fast-deep-equal"),y=e("./util"),l=e("./schema_obj"),a=e("json-schema-traverse");function c(e,r,t){var a=this._refs[t];if("string"==typeof a){if(!this._refs[a])return c.call(this,e,r,a);a=this._refs[a]}if((a=a||this._schemas[t])instanceof l)return d(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var s,o,i,n=u.call(this,r,t);return n&&(s=n.schema,r=n.root,i=n.baseId),s instanceof l?o=s.validate||e.call(this,s.schema,r,void 0,i):void 0!==s&&(o=d(s,this._opts.inlineRefs)?s:e.call(this,s,r,void 0,i)),o}function u(e,r){var t=m.parse(r),a=f(t),s=g(this._getId(e.schema));if(0===Object.keys(e.schema).length||a!==s){var o=P(a),i=this._refs[o];if("string"==typeof i)return function(e,r,t){var a=u.call(this,e,r);if(a){var s=a.schema,o=a.baseId;e=a.root;var i=this._getId(s);return i&&(o=p(o,i)),n.call(this,t,o,s,e)}}.call(this,e,i,t);if(i instanceof l)i.validate||this._compile(i),e=i;else{if(!((i=this._schemas[o])instanceof l))return;if(i.validate||this._compile(i),o==P(r))return{schema:i,root:e,baseId:s};e=i}if(!e.schema)return;s=g(this._getId(e.schema))}return n.call(this,t,s,e.schema,e)}(r.exports=c).normalizeId=P,c.fullPath=g,c.url=p,c.ids=function(e){var r=P(this._getId(e)),h={"":r},d={"":g(r,!1)},f={},p=this;return a(e,{allKeys:!0},function(e,r,t,a,s,o,i){if(""!==r){var n=p._getId(e),l=h[a],c=d[a]+"/"+s;if(void 0!==i&&(c+="/"+("number"==typeof i?i:y.escapeFragment(i))),"string"==typeof n){n=l=P(l?m.resolve(l,n):n);var u=p._refs[n];if("string"==typeof u&&(u=p._refs[u]),u&&u.schema){if(!v(e,u.schema))throw new Error('id "'+n+'" resolves to more than one schema')}else if(n!=P(c))if("#"==n[0]){if(f[n]&&!v(e,f[n]))throw new Error('id "'+n+'" resolves to more than one schema');f[n]=e}else p._refs[n]=c}h[r]=l,d[r]=c}}),f},c.inlineRef=d,c.schema=u;var h=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function n(e,r,t,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var s=e.fragment.split("/"),o=1;o<s.length;o++){var i=s[o];if(i){if(void 0===(t=t[i=y.unescapeFragment(i)]))break;var n;if(!h[i]&&((n=this._getId(t))&&(r=p(r,n)),t.$ref)){var l=p(r,t.$ref),c=u.call(this,a,l);c&&(t=c.schema,a=c.root,r=c.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}var i=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]);function d(e,r){return!1!==r&&(void 0===r||!0===r?function e(r){var t;if(Array.isArray(r)){for(var a=0;a<r.length;a++)if("object"==typeof(t=r[a])&&!e(t))return!1}else for(var s in r){if("$ref"==s)return!1;if("object"==typeof(t=r[s])&&!e(t))return!1}return!0}(e):r?function e(r){var t,a=0;if(Array.isArray(r)){for(var s=0;s<r.length;s++)if("object"==typeof(t=r[s])&&(a+=e(t)),a==1/0)return 1/0}else for(var o in r){if("$ref"==o)return 1/0;if(i[o])a++;else if("object"==typeof(t=r[o])&&(a+=e(t)+1),a==1/0)return 1/0}return a}(e)<=r:void 0)}function g(e,r){return!1!==r&&(e=P(e)),f(m.parse(e))}function f(e){return m.serialize(e).split("#")[0]+"#"}var s=/#\/?$/;function P(e){return e?e.replace(s,""):""}function p(e,r){return r=P(r),m.resolve(e,r)}},{"./schema_obj":8,"./util":10,"fast-deep-equal":42,"json-schema-traverse":44,"uri-js":45}],7:[function(e,r,t){"use strict";var o=e("../dotjs"),i=e("./util").toHash;r.exports=function(){var a=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],s=["type","$comment"];return a.all=i(s),a.types=i(["number","integer","string","array","object","boolean","null"]),a.forEach(function(e){e.rules=e.rules.map(function(e){var r;if("object"==typeof e){var t=Object.keys(e)[0];r=e[t],e=t,r.forEach(function(e){s.push(e),a.all[e]=!0})}return s.push(e),a.all[e]={keyword:e,code:o[e],implements:r}}),a.all.$comment={keyword:"$comment",code:o.$comment},e.type&&(a.types[e.type]=e)}),a.keywords=i(s.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),a.custom={},a}},{"../dotjs":27,"./util":10}],8:[function(e,r,t){"use strict";var a=e("./util");r.exports=function(e){a.copy(e,this)}},{"./util":10}],9:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,55296<=(r=e.charCodeAt(s++))&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],10:[function(e,r,t){"use strict";function o(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}r.exports={copy:function(e,r){for(var t in r=r||{},e)r[t]=e[t];return r},checkDataType:o,checkDataTypes:function(e,r){switch(e.length){case 1:return o(e[0],r,!0);default:var t="",a=n(e);for(var s in a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer,a)t+=(t?" && ":"")+o(s,r,!0);return t}},coerceToTypes:function(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];(i[s]||"array"===e&&"array"===s)&&(t[t.length]=s)}if(t.length)return t}else{if(i[r])return[r];if("array"===e&&"array"===r)return["array"]}},toHash:n,getProperty:h,escapeQuotes:l,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:function(e,r){r+="[^0-9]";var t=e.match(new RegExp(r,"g"));return t?t.length:0},varReplace:function(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")},cleanUpCode:function(e){return e.replace(c,"").replace(u,"").replace(d,"if (!($1))")},finalCleanUpCode:function(e,r){var t=e.match(f);t&&2==t.length&&(e=r?e.replace(m,"").replace(g,P):e.replace(p,"").replace(v,y));return(t=e.match(E))&&3===t.length?e.replace(w,""):e},schemaHasRules:function(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0},schemaHasRulesExcept:function(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0},schemaUnknownRules:function(e,r){if("boolean"==typeof e)return;for(var t in e)if(!r[t])return t},toQuotedString:b,getPathExpr:function(e,r,t,a){return F(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")},getPath:function(e,r,t){var a=b(t?"/"+x(r):h(r));return F(e,a)},getData:function(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!S.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(_)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(r<=a)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(r<a)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,l=s.split("/"),c=0;c<l.length;c++){var u=l[c];u&&(o+=h($(u)),n+=" && "+o)}return n},unescapeFragment:function(e){return $(decodeURIComponent(e))},unescapeJsonPointer:$,escapeFragment:function(e){return encodeURIComponent(x(e))},escapeJsonPointer:x};var i=n(["string","number","integer","boolean","null"]);function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}var a=/^[a-z$_][a-z$_0-9]*$/i,s=/'|\\/g;function h(e){return"number"==typeof e?"["+e+"]":a.test(e)?"."+e:"['"+l(e)+"']"}function l(e){return e.replace(s,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}var c=/else\s*{\s*}/g,u=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,d=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;var f=/[^v.]errors/g,p=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,m=/var errors = 0;|var vErrors = null;/g,v="return errors === 0;",y="validate.errors = null; return true;",g=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,P="return data;",E=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,w=/if \(rootData === undefined\) rootData = data;/;function b(e){return"'"+l(e)+"'"}var S=/^\/(?:[^~]|~0|~1)*$/,_=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function F(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function x(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function $(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}},{"./ucs2length":9,"fast-deep-equal":42}],11:[function(e,r,t){"use strict";var l=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var a,s=r[t].split("/"),o=e;for(a=1;a<s.length;a++)o=o[s[a]];for(a=0;a<l.length;a++){var i=l[a],n=o[i];n&&(o[i]={anyOf:[n,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]})}}return e}},{}],12:[function(e,r,t){"use strict";var a=e("./refs/json-schema-draft-07.json");r.exports={$id:"https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:a.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:a.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},{"./refs/json-schema-draft-07.json":41}],13:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var d="maximum"==r,f=d?"exclusiveMaximum":"exclusiveMinimum",p=e.schema[f],m=e.opts.$data&&p&&p.$data,v=d?"<":">",y=d?">":"<",g=void 0;if(m){var P=e.util.getData(p.$data,o,e.dataPathArr),E="exclusive"+s,w="exclType"+s,b="exclIsNumber"+s,S="' + "+(x="op"+s)+" + '";a+=" var schemaExcl"+s+" = "+P+"; ";var _;g=f;(_=_||[]).push(a+=" var "+E+"; var "+w+" = typeof "+(P="schemaExcl"+s)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+w+" == 'number' ? ( ("+E+" = "+t+" === undefined || "+P+" "+v+"= "+t+") ? "+u+" "+y+"= "+P+" : "+u+" "+y+" "+t+" ) : ( ("+E+" = "+P+" === true) ? "+u+" "+y+"= "+t+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { var op"+s+" = "+E+" ? '"+v+"' : '"+v+"='; ",void 0===i&&(l=e.errSchemaPath+"/"+(g=f),t=P,h=m)}else{S=v;if((b="number"==typeof p)&&h){var x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" ( "+t+" === undefined || "+p+" "+v+"= "+t+" ? "+u+" "+y+"= "+p+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { "}else{b&&void 0===i?(E=!0,l=e.errSchemaPath+"/"+(g=f),t=p,y+="="):(b&&(t=Math[d?"min":"max"](p,i)),p===(!b||t)?(E=!0,l=e.errSchemaPath+"/"+(g=f),y+="="):(E=!1,S+="="));x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+u+" "+y+" "+t+" || "+u+" !== "+u+") { "}}g=g||r,(_=_||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+x+", limit: "+t+", exclusive: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be "+S+" ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;return a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" "+u+".length "+("maxItems"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxItems"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=!1===e.opts.unicode?" "+u+".length ":" ucs2length("+u+") ";var d=r,f=f||[];f.push(a+=" "+("maxLength"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be ",a+="maxLength"==r?"longer":"shorter",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" Object.keys("+u+").length "+("maxProperties"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxProperties"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c="valid"+n.level,u=n.baseId,h=!0,d=a;if(d)for(var f,p=-1,m=d.length-1;p<m;)f=d[p+=1],(e.opts.strictKeywords?"object"==typeof f&&0<Object.keys(f).length:e.util.schemaHasRules(f,e.RULES.all))&&(h=!1,n.schema=f,n.schemaPath=s+"["+p+"]",n.errSchemaPath=o+"/"+p,t+=" "+e.validate(n)+" ",n.baseId=u,i&&(t+=" if ("+c+") { ",l+="}"));return i&&(t+=h?" if (true) { ":" "+l.slice(0,-1)+" "),t=e.util.cleanUpCode(t)}},{}],18:[function(e,r,t){"use strict";r.exports=function(r,e){var t=" ",a=r.level,s=r.dataLevel,o=r.schema[e],i=r.schemaPath+r.util.getProperty(e),n=r.errSchemaPath+"/"+e,l=!r.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=r.util.copy(r),f="";d.level++;var p="valid"+d.level;if(o.every(function(e){return r.opts.strictKeywords?"object"==typeof e&&0<Object.keys(e).length:r.util.schemaHasRules(e,r.RULES.all)})){var m=d.baseId;t+=" var "+h+" = errors; var "+u+" = false; ";var v=r.compositeRule;r.compositeRule=d.compositeRule=!0;var y=o;if(y)for(var g,P=-1,E=y.length-1;P<E;)g=y[P+=1],d.schema=g,d.schemaPath=i+"["+P+"]",d.errSchemaPath=n+"/"+P,t+=" "+r.validate(d)+" ",d.baseId=m,t+=" "+u+" = "+u+" || "+p+"; if (!"+u+") { ",f+="}";r.compositeRule=d.compositeRule=v,t+=" "+f+" if (!"+u+") { var err = ",!1!==r.createErrors?(t+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+r.errorPath+" , schemaPath: "+r.util.toQuotedString(n)+" , params: {} ",!1!==r.opts.messages&&(t+=" , message: 'should match some schema in anyOf' "),r.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+r.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!r.compositeRule&&l&&(t+=r.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",r.opts.allErrors&&(t+=" } "),t=r.util.cleanUpCode(t)}else l&&(t+=" if (true) { ");return t}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.errSchemaPath+"/"+r,s=e.util.toQuotedString(e.schema[r]);return!0===e.opts.$comment?t+=" console.log("+s+");":"function"==typeof e.opts.$comment&&(t+=" self._opts.$comment("+s+", "+e.util.toQuotedString(a)+", validate.root.schema);"),t}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; "),h||(t+=" var schema"+a+" = validate.schema"+i+";");var d=d||[];d.push(t+="var "+u+" = equal("+c+", schema"+a+"); if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { allowedValue: schema"+a+" } ",!1!==e.opts.messages&&(t+=" , message: 'should be equal to constant' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var f=t;return t=d.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",l&&(t+=" else { "),t}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e);d.level++;var f="valid"+d.level,p="i"+a,m=d.dataLevel=e.dataLevel+1,v="data"+m,y=e.baseId,g=e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all);if(t+="var "+h+" = errors;var "+u+";",g){var P=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" var "+f+" = false; for (var "+p+" = 0; "+p+" < "+c+".length; "+p+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers,!0);var E=c+"["+p+"]";d.dataPathArr[m]=p;var w=e.validate(d);d.baseId=y,e.util.varOccurences(w,v)<2?t+=" "+e.util.varReplace(w,v,E)+" ":t+=" var "+v+" = "+E+"; "+w+" ",t+=" if ("+f+") break; } ",e.compositeRule=d.compositeRule=P,t+=" if (!"+f+") {"}else t+=" if ("+c+".length == 0) {";var b=b||[];b.push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should contain a valid item' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var S=t;return t=b.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ",g&&(t+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } "),e.opts.allErrors&&(t+=" } "),t=e.util.cleanUpCode(t)}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,h="data"+(i||""),d="valid"+o,f="errs__"+o,p=e.opts.$data&&n&&n.$data;a=p?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var m,v,y,g,P,E=this,w="definition"+o,b=E.definition,S="";if(p&&b.$data){var _=b.validateSchema;s+=" var "+w+" = RULES.custom['"+r+"'].definition; var "+(P="keywordValidate"+o)+" = "+w+".validate;"}else{if(!(g=e.useCustomRule(E,n,e.schema,e)))return;a="validate.schema"+l,P=g.code,m=b.compile,v=b.inline,y=b.macro}var F=P+".errors",x="i"+o,$="ruleErr"+o,R=b.async;if(R&&!e.async)throw new Error("async keyword in sync schema");if(v||y||(s+=F+" = null;"),s+="var "+f+" = errors;var "+d+";",p&&b.$data&&(S+="}",s+=" if ("+a+" === undefined) { "+d+" = true; } else { ",_&&(S+="}",s+=" "+d+" = "+w+".validateSchema("+a+"); if ("+d+") { ")),v)s+=b.statements?" "+g.validate+" ":" "+d+" = "+g.validate+"; ";else if(y){var D=e.util.copy(e);S="";D.level++;var j="valid"+D.level;D.schema=g.validate,D.schemaPath="";var O=e.compositeRule;e.compositeRule=D.compositeRule=!0;var I=e.validate(D).replace(/validate\.schema/g,P);e.compositeRule=D.compositeRule=O,s+=" "+I}else{(L=L||[]).push(s),s="",s+=" "+P+".call( ",s+=e.opts.passContext?"this":"self",s+=m||!1===b.schema?" , "+h+" ":" , "+a+" , "+h+" , validate.schema"+e.schemaPath+" ",s+=" , (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath);var A=i?"data"+(i-1||""):"parentData",C=i?e.dataPathArr[i]:"parentDataProperty",k=s+=" , "+A+" , "+C+" , rootData ) ";s=L.pop(),!1===b.errors?(s+=" "+d+" = ",R&&(s+="await "),s+=k+"; "):s+=R?" var "+(F="customErrors"+o)+" = null; try { "+d+" = await "+k+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+F+" = e.errors; else throw e; } ":" "+F+" = null; "+d+" = "+k+"; "}if(b.modifying&&(s+=" if ("+A+") "+h+" = "+A+"["+C+"];"),s+=""+S,b.valid)u&&(s+=" if (true) { ");else{var L;s+=" if ( ",void 0===b.valid?(s+=" !",s+=y?""+j:d):s+=" "+!b.valid+" ",t=E.keyword,(L=L||[]).push(s+=") { "),(L=L||[]).push(s=""),s="",!1!==e.createErrors?(s+=" { keyword: '"+(t||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(s+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var z=s;s=L.pop();var T=s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+z+"]); ":" validate.errors = ["+z+"]; return false; ":" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";s=L.pop(),v?b.errors?"full"!=b.errors&&(s+=" for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+$+" = vErrors["+x+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(s+=" "+$+".schema = "+a+"; "+$+".data = "+h+"; "),s+=" } "):!1===b.errors?s+=" "+T+" ":(s+=" if ("+f+" == errors) { "+T+" } else { for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+$+" = vErrors["+x+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(s+=" "+$+".schema = "+a+"; "+$+".data = "+h+"; "),s+=" } } "):y?(s+=" var err = ",!1!==e.createErrors?(s+=" { keyword: '"+(t||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(s+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(s+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===b.errors?s+=" "+T+" ":(s+=" if (Array.isArray("+F+")) { if (vErrors === null) vErrors = "+F+"; else vErrors = vErrors.concat("+F+"); errors = vErrors.length; for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+$+" = vErrors["+x+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; "+$+'.schemaPath = "'+c+'"; ',e.opts.verbose&&(s+=" "+$+".schema = "+a+"; "+$+".data = "+h+"; "),s+=" } } else { "+T+" } "),s+=" } ",u&&(s+=" else { ")}return s}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e),d="";h.level++;var f="valid"+h.level,p={},m={},v=e.opts.ownProperties;for(E in o){var y=o[E],g=Array.isArray(y)?m:p;g[E]=y}t+="var "+u+" = errors;";var P=e.errorPath;for(var E in t+="var missing"+a+";",m)if((g=m[E]).length){if(t+=" if ( "+c+e.util.getProperty(E)+" !== undefined ",v&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(E)+"') "),l){t+=" && ( ";var w=g;if(w)for(var b=-1,S=w.length-1;b<S;){D=w[b+=1],b&&(t+=" || "),t+=" ( ( "+(A=c+(I=e.util.getProperty(D)))+" === undefined ",v&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(D)+"') "),t+=") && (missing"+a+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:I)+") ) "}t+=")) { ";var _="missing"+a,F="' + "+_+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(P,_,!0):P+" + "+_);var x=x||[];x.push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { property: '"+e.util.escapeQuotes(E)+"', missingProperty: '"+F+"', depsCount: "+g.length+", deps: '"+e.util.escapeQuotes(1==g.length?g[0]:g.join(", "))+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should have ",t+=1==g.length?"property "+e.util.escapeQuotes(g[0]):"properties "+e.util.escapeQuotes(g.join(", ")),t+=" when property "+e.util.escapeQuotes(E)+" is present' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var $=t;t=x.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{t+=" ) { ";var R=g;if(R)for(var D,j=-1,O=R.length-1;j<O;){D=R[j+=1];var I=e.util.getProperty(D),A=(F=e.util.escapeQuotes(D),c+I);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(P,D,e.opts.jsonPointers)),t+=" if ( "+A+" === undefined ",v&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(D)+"') "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { property: '"+e.util.escapeQuotes(E)+"', missingProperty: '"+F+"', depsCount: "+g.length+", deps: '"+e.util.escapeQuotes(1==g.length?g[0]:g.join(", "))+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should have ",t+=1==g.length?"property "+e.util.escapeQuotes(g[0]):"properties "+e.util.escapeQuotes(g.join(", ")),t+=" when property "+e.util.escapeQuotes(E)+" is present' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}t+=" } ",l&&(d+="}",t+=" else { ")}e.errorPath=P;var C=h.baseId;for(var E in p){y=p[E];(e.opts.strictKeywords?"object"==typeof y&&0<Object.keys(y).length:e.util.schemaHasRules(y,e.RULES.all))&&(t+=" "+f+" = true; if ( "+c+e.util.getProperty(E)+" !== undefined ",v&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(E)+"') "),t+=") { ",h.schema=y,h.schemaPath=i+e.util.getProperty(E),h.errSchemaPath=n+"/"+e.util.escapeFragment(E),t+=" "+e.validate(h)+" ",h.baseId=C,t+=" } ",l&&(t+=" if ("+f+") { ",d+="}"))}return l&&(t+=" "+d+" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ");var d="i"+a,f="schema"+a;h||(t+=" var "+f+" = validate.schema"+i+";"),t+="var "+u+";",h&&(t+=" if (schema"+a+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+a+")) "+u+" = false; else {"),t+=u+" = false;for (var "+d+"=0; "+d+"<"+f+".length; "+d+"++) if (equal("+c+", "+f+"["+d+"])) { "+u+" = true; break; }",h&&(t+=" } ");var p=p||[];p.push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { allowedValues: schema"+a+" } ",!1!==e.opts.messages&&(t+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var m=t;return t=p.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",l&&(t+=" else { "),t}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||"");if(!1===e.opts.format)return c&&(a+=" if (true) { "),a;var h,d=e.opts.$data&&i&&i.$data;h=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var f=e.opts.unknownFormats,p=Array.isArray(f);if(d){a+=" var "+(m="format"+s)+" = formats["+h+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(y="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",d&&(a+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),a+=" (","ignore"!=f&&(a+=" ("+h+" && !"+m+" ",p&&(a+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),a+=") || "),a+=" ("+m+" && "+y+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? await "+m+"("+u+") : "+m+"("+u+")) ":" "+m+"("+u+") ",a+=" : "+m+".test("+u+"))))) {"}else{var m;if(!(m=e.formats[i])){if("ignore"==f)return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(a+=" if (true) { "),a;if(p&&0<=f.indexOf(i))return c&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,y=(v="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return c&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(P="formats"+e.util.getProperty(i)+".validate")+"("+u+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+u+") ":" "+P+".test("+u+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=d?""+h:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+h+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var w=a;return a=E.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+w+"]); ":" validate.errors = ["+w+"]; return false; ":" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e);d.level++;var f="valid"+d.level,p=e.schema.then,m=e.schema.else,v=void 0!==p&&(e.opts.strictKeywords?"object"==typeof p&&0<Object.keys(p).length:e.util.schemaHasRules(p,e.RULES.all)),y=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&0<Object.keys(m).length:e.util.schemaHasRules(m,e.RULES.all)),g=d.baseId;if(v||y){var P;d.createErrors=!1,d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" var "+h+" = errors; var "+u+" = true; ";var E=e.compositeRule;e.compositeRule=d.compositeRule=!0,t+=" "+e.validate(d)+" ",d.baseId=g,d.createErrors=!0,t+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.compositeRule=d.compositeRule=E,v?(t+=" if ("+f+") { ",d.schema=e.schema.then,d.schemaPath=e.schemaPath+".then",d.errSchemaPath=e.errSchemaPath+"/then",t+=" "+e.validate(d)+" ",d.baseId=g,t+=" "+u+" = "+f+"; ",v&&y?t+=" var "+(P="ifClause"+a)+" = 'then'; ":P="'then'",t+=" } ",y&&(t+=" else { ")):t+=" if (!"+f+") { ",y&&(d.schema=e.schema.else,d.schemaPath=e.schemaPath+".else",d.errSchemaPath=e.errSchemaPath+"/else",t+=" "+e.validate(d)+" ",d.baseId=g,t+=" "+u+" = "+f+"; ",v&&y?t+=" var "+(P="ifClause"+a)+" = 'else'; ":P="'else'",t+=" } "),t+=" if (!"+u+") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { failingKeyword: "+P+" } ",!1!==e.opts.messages&&(t+=" , message: 'should match \"' + "+P+" + '\" schema' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+=" } ",l&&(t+=" else { "),t=e.util.cleanUpCode(t)}else l&&(t+=" if (true) { ");return t}},{}],27:[function(e,r,t){"use strict";r.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":13,"./_limitItems":14,"./_limitLength":15,"./_limitProperties":16,"./allOf":17,"./anyOf":18,"./comment":19,"./const":20,"./contains":21,"./dependencies":23,"./enum":24,"./format":25,"./if":26,"./items":28,"./multipleOf":29,"./not":30,"./oneOf":31,"./pattern":32,"./properties":33,"./propertyNames":34,"./ref":35,"./required":36,"./uniqueItems":37,"./validate":38}],28:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m="i"+a,v=d.dataLevel=e.dataLevel+1,y="data"+v,g=e.baseId;if(t+="var "+h+" = errors;var "+u+";",Array.isArray(o)){var P=e.schema.additionalItems;if(!1===P){t+=" "+u+" = "+c+".length <= "+o.length+"; ";var E=n;n=e.errSchemaPath+"/additionalItems";var w=w||[];w.push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { limit: "+o.length+" } ",!1!==e.opts.messages&&(t+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var b=t;t=w.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",n=E,l&&(f+="}",t+=" else { ")}var S=o;if(S)for(var _,F=-1,x=S.length-1;F<x;)if(_=S[F+=1],e.opts.strictKeywords?"object"==typeof _&&0<Object.keys(_).length:e.util.schemaHasRules(_,e.RULES.all)){t+=" "+p+" = true; if ("+c+".length > "+F+") { ";var $=c+"["+F+"]";d.schema=_,d.schemaPath=i+"["+F+"]",d.errSchemaPath=n+"/"+F,d.errorPath=e.util.getPathExpr(e.errorPath,F,e.opts.jsonPointers,!0),d.dataPathArr[v]=F;var R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",t+=" } ",l&&(t+=" if ("+p+") { ",f+="}")}if("object"==typeof P&&(e.opts.strictKeywords?"object"==typeof P&&0<Object.keys(P).length:e.util.schemaHasRules(P,e.RULES.all))){d.schema=P,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",t+=" "+p+" = true; if ("+c+".length > "+o.length+") { for (var "+m+" = "+o.length+"; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);$=c+"["+m+"]";d.dataPathArr[v]=m;R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",l&&(t+=" if (!"+p+") break; "),t+=" } } ",l&&(t+=" if ("+p+") { ",f+="}")}}else if(e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);$=c+"["+m+"]";d.dataPathArr[v]=m;R=e.validate(d);d.baseId=g,e.util.varOccurences(R,y)<2?t+=" "+e.util.varReplace(R,y,$)+" ":t+=" var "+y+" = "+$+"; "+R+" ",l&&(t+=" if (!"+p+") break; "),t+=" }"}return l&&(t+=" "+f+" if ("+h+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="var division"+s+";if (",h&&(a+=" "+t+" !== undefined && ( typeof "+t+" != 'number' || "),a+=" (division"+s+" = "+u+" / "+t+", ",a+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+s+") - division"+s+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",h&&(a+=" ) ");var d=d||[];d.push(a+=" ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { multipleOf: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be multiple of ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var f=a;return a=d.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=i,h.errSchemaPath=n,t+=" var "+u+" = errors; ";var f,p=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.createErrors=!1,h.opts.allErrors&&(f=h.opts.allErrors,h.opts.allErrors=!1),t+=" "+e.validate(h)+" ",h.createErrors=!0,f&&(h.opts.allErrors=f),e.compositeRule=h.compositeRule=p;var m=m||[];m.push(t+=" if ("+d+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var v=t;t=m.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(t+=" } ")}else t+=" var err = ",!1!==e.createErrors?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(t+=" if (false) { ");return t}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m=d.baseId,v="prevValid"+a,y="passingSchemas"+a;t+="var "+h+" = errors , "+v+" = false , "+u+" = false , "+y+" = null; ";var g=e.compositeRule;e.compositeRule=d.compositeRule=!0;var P=o;if(P)for(var E,w=-1,b=P.length-1;w<b;)E=P[w+=1],(e.opts.strictKeywords?"object"==typeof E&&0<Object.keys(E).length:e.util.schemaHasRules(E,e.RULES.all))?(d.schema=E,d.schemaPath=i+"["+w+"]",d.errSchemaPath=n+"/"+w,t+=" "+e.validate(d)+" ",d.baseId=m):t+=" var "+p+" = true; ",w&&(t+=" if ("+p+" && "+v+") { "+u+" = false; "+y+" = ["+y+", "+w+"]; } else { ",f+="}"),t+=" if ("+p+") { "+u+" = "+v+" = true; "+y+" = "+w+"; }";return e.compositeRule=d.compositeRule=g,t+=f+"if (!"+u+") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(t+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+="} else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; }",e.opts.allErrors&&(t+=" } "),t}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var d=h?"(new RegExp("+t+"))":e.usePattern(i);a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'string') || ");var f=f||[];f.push(a+=" !"+d+".test("+u+") ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { pattern: ",a+=h?""+t:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match pattern \"",a+=h?"' + "+t+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e),d="";h.level++;var f="valid"+h.level,p="key"+a,m="idx"+a,v=h.dataLevel=e.dataLevel+1,y="data"+v,g="dataProperties"+a,P=Object.keys(o||{}),E=e.schema.patternProperties||{},w=Object.keys(E),b=e.schema.additionalProperties,S=P.length||w.length,_=!1===b,F="object"==typeof b&&Object.keys(b).length,x=e.opts.removeAdditional,$=_||F||x,R=e.opts.ownProperties,D=e.baseId,j=e.schema.required;if(j&&(!e.opts.$data||!j.$data)&&j.length<e.opts.loopRequired)var O=e.util.toHash(j);if(t+="var "+u+" = errors;var "+f+" = true;",R&&(t+=" var "+g+" = undefined;"),$){if(t+=R?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+g+".length; "+m+"++) { var "+p+" = "+g+"["+m+"]; ":" for (var "+p+" in "+c+") { ",S){if(t+=" var isAdditional"+a+" = !(false ",P.length)if(8<P.length)t+=" || validate.schema"+i+".hasOwnProperty("+p+") ";else{var I=P;if(I)for(var A=-1,C=I.length-1;A<C;)B=I[A+=1],t+=" || "+p+" == "+e.util.toQuotedString(B)+" "}if(w.length){var k=w;if(k)for(var L=-1,z=k.length-1;L<z;)ae=k[L+=1],t+=" || "+e.usePattern(ae)+".test("+p+") "}t+=" ); if (isAdditional"+a+") { "}if("all"==x)t+=" delete "+c+"["+p+"]; ";else{var T=e.errorPath,q="' + "+p+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers)),_)if(x)t+=" delete "+c+"["+p+"]; ";else{var N=n;n=e.errSchemaPath+"/additionalProperties",(ee=ee||[]).push(t+=" "+f+" = false; "),t="",!1!==e.createErrors?(t+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { additionalProperty: '"+q+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is an invalid additional property":"should NOT have additional properties",t+="' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var Q=t;t=ee.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+Q+"]); ":" validate.errors = ["+Q+"]; return false; ":" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n=N,l&&(t+=" break; ")}else if(F)if("failing"==x){t+=" var "+u+" = errors; ";var U=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.schema=b,h.schemaPath=e.schemaPath+".additionalProperties",h.errSchemaPath=e.errSchemaPath+"/additionalProperties",h.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);var V=c+"["+p+"]";h.dataPathArr[v]=p;var H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",t+=" if (!"+f+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+c+"["+p+"]; } ",e.compositeRule=h.compositeRule=U}else{h.schema=b,h.schemaPath=e.schemaPath+".additionalProperties",h.errSchemaPath=e.errSchemaPath+"/additionalProperties",h.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);V=c+"["+p+"]";h.dataPathArr[v]=p;H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",l&&(t+=" if (!"+f+") break; ")}e.errorPath=T}S&&(t+=" } "),t+=" } ",l&&(t+=" if ("+f+") { ",d+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(P.length){var M=P;if(M)for(var B,J=-1,Z=M.length-1;J<Z;){var G=o[B=M[J+=1]];if(e.opts.strictKeywords?"object"==typeof G&&0<Object.keys(G).length:e.util.schemaHasRules(G,e.RULES.all)){var Y=e.util.getProperty(B),W=(V=c+Y,K&&void 0!==G.default);h.schema=G,h.schemaPath=i+Y,h.errSchemaPath=n+"/"+e.util.escapeFragment(B),h.errorPath=e.util.getPath(e.errorPath,B,e.opts.jsonPointers),h.dataPathArr[v]=e.util.toQuotedString(B);H=e.validate(h);if(h.baseId=D,e.util.varOccurences(H,y)<2){H=e.util.varReplace(H,y,V);var X=V}else{X=y;t+=" var "+y+" = "+V+"; "}if(W)t+=" "+H+" ";else{if(O&&O[B]){t+=" if ( "+X+" === undefined ",R&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=") { "+f+" = false; ";T=e.errorPath,N=n;var ee,re=e.util.escapeQuotes(B);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(T,B,e.opts.jsonPointers)),n=e.errSchemaPath+"/required",(ee=ee||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+re+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";Q=t;t=ee.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+Q+"]); ":" validate.errors = ["+Q+"]; return false; ":" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n=N,e.errorPath=T,t+=" } else { "}else l?(t+=" if ( "+X+" === undefined ",R&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=") { "+f+" = true; } else { "):(t+=" if ("+X+" !== undefined ",R&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=" ) { ");t+=" "+H+" } "}}l&&(t+=" if ("+f+") { ",d+="}")}}if(w.length){var te=w;if(te)for(var ae,se=-1,oe=te.length-1;se<oe;){G=E[ae=te[se+=1]];if(e.opts.strictKeywords?"object"==typeof G&&0<Object.keys(G).length:e.util.schemaHasRules(G,e.RULES.all)){h.schema=G,h.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),h.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),t+=R?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+g+".length; "+m+"++) { var "+p+" = "+g+"["+m+"]; ":" for (var "+p+" in "+c+") { ",t+=" if ("+e.usePattern(ae)+".test("+p+")) { ",h.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);V=c+"["+p+"]";h.dataPathArr[v]=p;H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",l&&(t+=" if (!"+f+") break; "),t+=" } ",l&&(t+=" else "+f+" = true; "),t+=" } ",l&&(t+=" if ("+f+") { ",d+="}")}}}return l&&(t+=" "+d+" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(t+="var "+u+" = errors;",e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=i,h.errSchemaPath=n;var f="key"+a,p="idx"+a,m="i"+a,v="' + "+f+" + '",y="data"+(h.dataLevel=e.dataLevel+1),g="dataProperties"+a,P=e.opts.ownProperties,E=e.baseId;P&&(t+=" var "+g+" = undefined; "),t+=P?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+p+"=0; "+p+"<"+g+".length; "+p+"++) { var "+f+" = "+g+"["+p+"]; ":" for (var "+f+" in "+c+") { ",t+=" var startErrs"+a+" = errors; ";var w=f,b=e.compositeRule;e.compositeRule=h.compositeRule=!0;var S=e.validate(h);h.baseId=E,e.util.varOccurences(S,y)<2?t+=" "+e.util.varReplace(S,y,w)+" ":t+=" var "+y+" = "+w+"; "+S+" ",e.compositeRule=h.compositeRule=b,t+=" if (!"+d+") { for (var "+m+"=startErrs"+a+"; "+m+"<errors; "+m+"++) { vErrors["+m+"].propertyName = "+f+"; } var err = ",!1!==e.createErrors?(t+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { propertyName: '"+v+"' } ",!1!==e.opts.messages&&(t+=" , message: 'property name \\'"+v+"\\' is invalid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),l&&(t+=" break; "),t+=" } }"}return l&&(t+=" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.dataLevel,i=e.schema[r],n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(o||""),u="valid"+e.level;if("#"==i||"#/"==i)a=e.isRoot?(t=e.async,"validate"):(t=!0===e.root.schema.$async,"root.refVal[0]");else{var h=e.resolveRef(e.baseId,i,e.isRoot);if(void 0===h){var d=e.MissingRefError.message(e.baseId,i);if("fail"==e.opts.missingRefs){e.logger.error(d),(v=v||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { ref: '"+e.util.escapeQuotes(i)+"' } ",!1!==e.opts.messages&&(s+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(i)+"' "),e.opts.verbose&&(s+=" , schema: "+e.util.toQuotedString(i)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var f=s;s=v.pop(),s+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(s+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,i,d);e.logger.warn(d),l&&(s+=" if (true) { ")}}else if(h.inline){var p=e.util.copy(e);p.level++;var m="valid"+p.level;p.schema=h.schema,p.schemaPath="",p.errSchemaPath=i,s+=" "+e.validate(p).replace(/validate\.schema/g,h.code)+" ",l&&(s+=" if ("+m+") { ")}else t=!0===h.$async||e.async&&!1!==h.$async,a=h.code}if(a){var v;(v=v||[]).push(s),s="",s+=e.opts.passContext?" "+a+".call(this, ":" "+a+"( ",s+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath);var y=s+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(s=v.pop(),t){if(!e.async)throw new Error("async schema referenced by sync schema");l&&(s+=" var "+u+"; "),s+=" try { await "+y+"; ",l&&(s+=" "+u+" = true; "),s+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",l&&(s+=" "+u+" = false; "),s+=" } ",l&&(s+=" if ("+u+") { ")}else s+=" if (!"+y+") { if (vErrors === null) vErrors = "+a+".errors; else vErrors = vErrors.concat("+a+".errors); errors = vErrors.length; } ",l&&(s+=" else { ")}return s}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ");var d="schema"+a;if(!h)if(o.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var f=[],p=o;if(p)for(var m,v=-1,y=p.length-1;v<y;){m=p[v+=1];var g=e.schema.properties[m];g&&(e.opts.strictKeywords?"object"==typeof g&&0<Object.keys(g).length:e.util.schemaHasRules(g,e.RULES.all))||(f[f.length]=m)}}else f=o;if(h||f.length){var P=e.errorPath,E=h||e.opts.loopRequired<=f.length,w=e.opts.ownProperties;if(l)if(t+=" var missing"+a+"; ",E){h||(t+=" var "+d+" = validate.schema"+i+"; ");var b="' + "+(R="schema"+a+"["+(F="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,R,e.opts.jsonPointers)),t+=" var "+u+" = true; ",h&&(t+=" if (schema"+a+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+a+")) "+u+" = false; else {"),t+=" for (var "+F+" = 0; "+F+" < "+d+".length; "+F+"++) { "+u+" = "+c+"["+d+"["+F+"]] !== undefined ",w&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", "+d+"["+F+"]) "),t+="; if (!"+u+") break; } ",h&&(t+=" } "),($=$||[]).push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var S=t;t=$.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else{t+=" if ( ";var _=f;if(_)for(var F=-1,x=_.length-1;F<x;){j=_[F+=1],F&&(t+=" || "),t+=" ( ( "+(C=c+(A=e.util.getProperty(j)))+" === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),t+=") && (missing"+a+" = "+e.util.toQuotedString(e.opts.jsonPointers?j:A)+") ) "}t+=") { ";var $;b="' + "+(R="missing"+a)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(P,R,!0):P+" + "+R),($=$||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";S=t;t=$.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else if(E){h||(t+=" var "+d+" = validate.schema"+i+"; ");var R;b="' + "+(R="schema"+a+"["+(F="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,R,e.opts.jsonPointers)),h&&(t+=" if ("+d+" && !Array.isArray("+d+")) { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+d+" !== undefined) { "),t+=" for (var "+F+" = 0; "+F+" < "+d+".length; "+F+"++) { if ("+c+"["+d+"["+F+"]] === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", "+d+"["+F+"]) "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",h&&(t+=" } ")}else{var D=f;if(D)for(var j,O=-1,I=D.length-1;O<I;){j=D[O+=1];var A=e.util.getProperty(j),C=(b=e.util.escapeQuotes(j),c+A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(P,j,e.opts.jsonPointers)),t+=" if ( "+C+" === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=P}else l&&(t+=" if (true) {");return t}},{}],37:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;if(t=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,(i||d)&&!1!==e.opts.uniqueItems){d&&(a+=" var "+h+"; if ("+t+" === false || "+t+" === undefined) "+h+" = true; else if (typeof "+t+" != 'boolean') "+h+" = false; else { "),a+=" var i = "+u+".length , "+h+" = true , j; if (i > 1) { ";var f=e.schema.items&&e.schema.items.type,p=Array.isArray(f);if(!f||"object"==f||"array"==f||p&&(0<=f.indexOf("object")||0<=f.indexOf("array")))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+u+"[i], "+u+"[j])) { "+h+" = false; break outer; } } } ";else a+=" var itemIndices = {}, item; for (;i--;) { var item = "+u+"[i]; ",a+=" if ("+e.util["checkDataType"+(p?"s":"")](f,"item",!0)+") continue; ",p&&(a+=" if (typeof item == 'string') item = '\"' + item; "),a+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ";a+=" } ",d&&(a+=" } ");var m=m||[];m.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var v=a;a=m.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { ")}else c&&(a+=" if (true) { ");return a}},{}],38:[function(e,r,t){"use strict";r.exports=function(a,e){var r="",t=!0===a.schema.$async,s=a.util.schemaHasRulesExcept(a.schema,a.RULES.all,"$ref"),o=a.self._getId(a.schema);if(a.opts.strictKeywords){var i=a.util.schemaUnknownRules(a.schema,a.RULES.keywords);if(i){var n="unknown keyword: "+i;if("log"!==a.opts.strictKeywords)throw new Error(n);a.logger.warn(n)}}if(a.isTop&&(r+=" var validate = ",t&&(a.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(a.opts.sourceCode||a.opts.processCode)&&(r+=" /*# sourceURL="+o+" */ ")),"boolean"==typeof a.schema||!s&&!a.schema.$ref){var l=a.level,c=a.dataLevel,u=a.schema[e="false schema"],h=a.schemaPath+a.util.getProperty(e),d=a.errSchemaPath+"/"+e,f=!a.opts.allErrors,p="data"+(c||""),m="valid"+l;if(!1===a.schema){a.isTop?f=!0:r+=" var "+m+" = false; ",(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: {} ",!1!==a.opts.messages&&(r+=" , message: 'boolean schema is false' "),a.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";var v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else r+=a.isTop?t?" return data; ":" validate.errors = null; return true; ":" var "+m+" = true; ";return a.isTop&&(r+=" }; return validate; "),r}if(a.isTop){var y=a.isTop;l=a.level=0,c=a.dataLevel=0,p="data";if(a.rootId=a.resolve.fullPath(a.self._getId(a.root.schema)),a.baseId=a.baseId||a.rootId,delete a.isTop,a.dataPathArr=[void 0],void 0!==a.schema.default&&a.opts.useDefaults&&a.opts.strictDefaults){var g="default is ignored in the schema root";if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{l=a.level,p="data"+((c=a.dataLevel)||"");if(o&&(a.baseId=a.resolve.url(a.baseId,o)),t&&!a.async)throw new Error("async schema in sync schema");r+=" var errs_"+l+" = errors;"}m="valid"+l,f=!a.opts.allErrors;var P="",E="",w=a.schema.type,b=Array.isArray(w);if(w&&a.opts.nullable&&!0===a.schema.nullable&&(b?-1==w.indexOf("null")&&(w=w.concat("null")):"null"!=w&&(w=[w,"null"],b=!0)),b&&1==w.length&&(w=w[0],b=!1),a.schema.$ref&&s){if("fail"==a.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+a.errSchemaPath+'" (see option extendRefs)');!0!==a.opts.extendRefs&&(s=!1,a.logger.warn('$ref: keywords ignored in schema at path "'+a.errSchemaPath+'"'))}if(a.schema.$comment&&a.opts.$comment&&(r+=" "+a.RULES.all.$comment.code(a,"$comment")),w){if(a.opts.coerceTypes)var S=a.util.coerceToTypes(a.opts.coerceTypes,w);var _=a.RULES.types[w];if(S||b||!0===_||_&&!G(_)){h=a.schemaPath+".type",d=a.errSchemaPath+"/type",h=a.schemaPath+".type",d=a.errSchemaPath+"/type";if(r+=" if ("+a.util[b?"checkDataTypes":"checkDataType"](w,p,!0)+") { ",S){var F="dataType"+l,x="coerced"+l;r+=" var "+F+" = typeof "+p+"; ","array"==a.opts.coerceTypes&&(r+=" if ("+F+" == 'object' && Array.isArray("+p+")) "+F+" = 'array'; "),r+=" var "+x+" = undefined; ";var $="",R=S;if(R)for(var D,j=-1,O=R.length-1;j<O;)D=R[j+=1],j&&(r+=" if ("+x+" === undefined) { ",$+="}"),"array"==a.opts.coerceTypes&&"array"!=D&&(r+=" if ("+F+" == 'array' && "+p+".length == 1) { "+x+" = "+p+" = "+p+"[0]; "+F+" = typeof "+p+"; } "),"string"==D?r+=" if ("+F+" == 'number' || "+F+" == 'boolean') "+x+" = '' + "+p+"; else if ("+p+" === null) "+x+" = ''; ":"number"==D||"integer"==D?(r+=" if ("+F+" == 'boolean' || "+p+" === null || ("+F+" == 'string' && "+p+" && "+p+" == +"+p+" ","integer"==D&&(r+=" && !("+p+" % 1)"),r+=")) "+x+" = +"+p+"; "):"boolean"==D?r+=" if ("+p+" === 'false' || "+p+" === 0 || "+p+" === null) "+x+" = false; else if ("+p+" === 'true' || "+p+" === 1) "+x+" = true; ":"null"==D?r+=" if ("+p+" === '' || "+p+" === 0 || "+p+" === false) "+x+" = null; ":"array"==a.opts.coerceTypes&&"array"==D&&(r+=" if ("+F+" == 'string' || "+F+" == 'number' || "+F+" == 'boolean' || "+p+" == null) "+x+" = ["+p+"]; ");(Z=Z||[]).push(r+=" "+$+" if ("+x+" === undefined) { "),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ";var I=c?"data"+(c-1||""):"parentData";r+=" "+p+" = "+x+"; ",c||(r+="if ("+I+" !== undefined)"),r+=" "+I+"["+(c?a.dataPathArr[c]:"parentDataProperty")+"] = "+x+"; } "}else{(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}r+=" } "}}if(a.schema.$ref&&!s)r+=" "+a.RULES.all.$ref.code(a,"$ref")+" ",f&&(r+=" } if (errors === ",r+=y?"0":"errs_"+l,r+=") { ",E+="}");else{var A=a.RULES;if(A)for(var C=-1,k=A.length-1;C<k;)if(G(_=A[C+=1])){if(_.type&&(r+=" if ("+a.util.checkDataType(_.type,p)+") { "),a.opts.useDefaults)if("object"==_.type&&a.schema.properties){u=a.schema.properties;var L=Object.keys(u);if(L)for(var z,T=-1,q=L.length-1;T<q;){if(void 0!==(U=u[z=L[T+=1]]).default){var N=p+a.util.getProperty(z);if(a.compositeRule){if(a.opts.strictDefaults){g="default is ignored for: "+N;if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}}else r+=" if ("+N+" === undefined ","empty"==a.opts.useDefaults&&(r+=" || "+N+" === null || "+N+" === '' "),r+=" ) "+N+" = ",r+="shared"==a.opts.useDefaults?" "+a.useDefault(U.default)+" ":" "+JSON.stringify(U.default)+" ",r+="; "}}}else if("array"==_.type&&Array.isArray(a.schema.items)){var Q=a.schema.items;if(Q){j=-1;for(var U,V=Q.length-1;j<V;)if(void 0!==(U=Q[j+=1]).default){N=p+"["+j+"]";if(a.compositeRule){if(a.opts.strictDefaults){g="default is ignored for: "+N;if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}}else r+=" if ("+N+" === undefined ","empty"==a.opts.useDefaults&&(r+=" || "+N+" === null || "+N+" === '' "),r+=" ) "+N+" = ",r+="shared"==a.opts.useDefaults?" "+a.useDefault(U.default)+" ":" "+JSON.stringify(U.default)+" ",r+="; "}}}var H=_.rules;if(H)for(var K,M=-1,B=H.length-1;M<B;)if(Y(K=H[M+=1])){var J=K.code(a,K.keyword,_.type);J&&(r+=" "+J+" ",f&&(P+="}"))}if(f&&(r+=" "+P+" ",P=""),_.type&&(r+=" } ",w&&w===_.type&&!S)){var Z;h=a.schemaPath+".type",d=a.errSchemaPath+"/type";(Z=Z||[]).push(r+=" else { "),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } "}f&&(r+=" if (errors === ",r+=y?"0":"errs_"+l,r+=") { ",E+="}")}}function G(e){for(var r=e.rules,t=0;t<r.length;t++)if(Y(r[t]))return 1}function Y(e){return void 0!==a.schema[e.keyword]||e.implements&&function(e){for(var r=e.implements,t=0;t<r.length;t++)if(void 0!==a.schema[r[t]])return!0}(e)}return f&&(r+=" "+E+" "),y?(t?(r+=" if (errors === 0) return data; ",r+=" else throw new ValidationError(vErrors); "):(r+=" validate.errors = vErrors; ",r+=" return errors === 0; "),r+=" }; return validate;"):r+=" var "+m+" = errors === errs_"+l+";",r=a.util.cleanUpCode(r),y&&(r=a.util.finalCleanUpCode(r,t)),r}},{}],39:[function(e,r,t){"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,l=e("./dotjs/custom"),a=e("./definition_schema");function s(e,r){s.errors=null;var t=this._validateKeyword=this._validateKeyword||this.compile(a,!0);if(t(e))return!0;if(s.errors=t.errors,r)throw new Error("custom keyword definition is invalid: "+this.errorsText(t.errors));return!1}r.exports={add:function(e,r){var n=this.RULES;if(n.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){this.validateKeyword(r,!0);var t=r.type;if(Array.isArray(t))for(var a=0;a<t.length;a++)o(e,t[a],r);else o(e,t,r);var s=r.metaSchema;s&&(r.$data&&this._opts.$data&&(s={anyOf:[s,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]}),r.validateSchema=this.compile(s,!0))}function o(e,r,t){for(var a,s=0;s<n.length;s++){var o=n[s];if(o.type==r){a=o;break}}a||n.push(a={type:r,rules:[]});var i={keyword:e,definition:t,custom:!0,code:l,implements:t.implements};a.rules.push(i),n.custom[e]=i}return n.keywords[e]=n.all[e]=!0,this},get:function(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1},remove:function(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}return this},validate:s}},{"./definition_schema":12,"./dotjs/custom":22}],40:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],41:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}},{}],42:[function(e,r,t){"use strict";r.exports=function e(r,t){if(r===t)return!0;if(r&&t&&"object"==typeof r&&"object"==typeof t){if(r.constructor!==t.constructor)return!1;var a,s,o;if(Array.isArray(r)){if((a=r.length)!=t.length)return!1;for(s=a;0!=s--;)if(!e(r[s],t[s]))return!1;return!0}if(r.constructor===RegExp)return r.source===t.source&&r.flags===t.flags;if(r.valueOf!==Object.prototype.valueOf)return r.valueOf()===t.valueOf();if(r.toString!==Object.prototype.toString)return r.toString()===t.toString();if((a=(o=Object.keys(r)).length)!==Object.keys(t).length)return!1;for(s=a;0!=s--;)if(!Object.prototype.hasOwnProperty.call(t,o[s]))return!1;for(s=a;0!=s--;){var i=o[s];if(!e(r[i],t[i]))return!1}return!0}return r!=r&&t!=t}},{}],43:[function(e,r,t){"use strict";r.exports=function(e,r){"function"==typeof(r=r||{})&&(r={cmp:r});var a,l="boolean"==typeof r.cycles&&r.cycles,c=r.cmp&&(a=r.cmp,function(t){return function(e,r){return a({key:e,value:t[e]},{key:r,value:t[r]})}}),u=[];return function e(r){if(r&&r.toJSON&&"function"==typeof r.toJSON&&(r=r.toJSON()),void 0!==r){if("number"==typeof r)return isFinite(r)?""+r:"null";if("object"!=typeof r)return JSON.stringify(r);var t,a;if(Array.isArray(r)){for(a="[",t=0;t<r.length;t++)t&&(a+=","),a+=e(r[t])||"null";return a+"]"}if(null===r)return"null";if(-1!==u.indexOf(r)){if(l)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=u.push(r)-1,o=Object.keys(r).sort(c&&c(r));for(a="",t=0;t<o.length;t++){var i=o[t],n=e(r[i]);n&&(a&&(a+=","),a+=JSON.stringify(i)+":"+n)}return u.splice(s,1),"{"+a+"}"}}(e)}},{}],44:[function(e,r,t){"use strict";var m=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),function e(r,t,a,s,o,i,n,l,c,u){if(s&&"object"==typeof s&&!Array.isArray(s)){for(var h in t(s,o,i,n,l,c,u),s){var d=s[h];if(Array.isArray(d)){if(h in m.arrayKeywords)for(var f=0;f<d.length;f++)e(r,t,a,d[f],o+"/"+h+"/"+f,i,o,h,s,f)}else if(h in m.propsKeywords){if(d&&"object"==typeof d)for(var p in d)e(r,t,a,d[p],o+"/"+h+"/"+p.replace(/~/g,"~0").replace(/\//g,"~1"),i,o,h,s,p)}else(h in m.keywords||r.allKeys&&!(h in m.skipKeywords))&&e(r,t,a,d,o+"/"+h,i,o,h,s)}a(s,o,i,n,l,c,u)}}(r,"function"==typeof(t=r.cb||t)?t:t.pre||function(){},t.post||function(){},e,"",e)};m.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},m.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},m.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},m.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],45:[function(e,r,t){var a;a=this,function(e){"use strict";function J(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];if(1<r.length){r[0]=r[0].slice(0,-1);for(var a=r.length-1,s=1;s<a;++s)r[s]=r[s].slice(1,-1);return r[a]=r[a].slice(1),r.join("")}return r[0]}function Z(e){return"(?:"+e+")"}function a(e){return void 0===e?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function p(e){return e.toUpperCase()}function r(e){var r="[A-Za-z]",t="[0-9]",a=J(t,"[A-Fa-f]"),s=Z(Z("%[EFef]"+a+"%"+a+a+"%"+a+a)+"|"+Z("%[89A-Fa-f]"+a+"%"+a+a)+"|"+Z("%"+a+a)),o="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=J("[\\:\\/\\?\\#\\[\\]\\@]",o),n=e?"[\\uE000-\\uF8FF]":"[]",l=J(r,t,"[\\-\\.\\_\\~]",e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]"),c=Z(r+J(r,t,"[\\+\\-\\.]")+"*"),u=Z(Z(s+"|"+J(l,o,"[\\:]"))+"*"),h=(Z("(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:[1-9][0-9])|"+t),Z("(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:0?[1-9][0-9])|0?0?"+t)),d=Z(h+"\\."+h+"\\."+h+"\\."+h),f=Z(a+"{1,4}"),p=Z(Z(f+"\\:"+f)+"|"+d),m=Z(Z(f+"\\:")+"{6}"+p),v=Z("\\:\\:"+Z(f+"\\:")+"{5}"+p),y=Z(Z(f)+"?\\:\\:"+Z(f+"\\:")+"{4}"+p),g=Z(Z(Z(f+"\\:")+"{0,1}"+f)+"?\\:\\:"+Z(f+"\\:")+"{3}"+p),P=Z(Z(Z(f+"\\:")+"{0,2}"+f)+"?\\:\\:"+Z(f+"\\:")+"{2}"+p),E=Z(Z(Z(f+"\\:")+"{0,3}"+f)+"?\\:\\:"+f+"\\:"+p),w=Z(Z(Z(f+"\\:")+"{0,4}"+f)+"?\\:\\:"+p),b=Z(Z(Z(f+"\\:")+"{0,5}"+f)+"?\\:\\:"+f),S=Z(Z(Z(f+"\\:")+"{0,6}"+f)+"?\\:\\:"),_=Z([m,v,y,g,P,E,w,b,S].join("|")),F=Z(Z(l+"|"+s)+"+"),x=(Z(_+"\\%25"+F),Z(_+Z("\\%25|\\%(?!"+a+"{2})")+F)),$=Z("[vV]"+a+"+\\."+J(l,o,"[\\:]")+"+"),R=Z("\\["+Z(x+"|"+_+"|"+$)+"\\]"),D=Z(Z(s+"|"+J(l,o))+"*"),j=Z(R+"|"+d+"(?!"+D+")|"+D),O=Z(t+"*"),I=Z(Z(u+"@")+"?"+j+Z("\\:"+O)+"?"),A=Z(s+"|"+J(l,o,"[\\:\\@]")),C=Z(A+"*"),k=Z(A+"+"),L=Z(Z(s+"|"+J(l,o,"[\\@]"))+"+"),z=Z(Z("\\/"+C)+"*"),T=Z("\\/"+Z(k+z)+"?"),q=Z(L+z),N=Z(k+z),Q="(?!"+A+")",U=(Z(z+"|"+T+"|"+q+"|"+N+"|"+Q),Z(Z(A+"|"+J("[\\/\\?]",n))+"*")),V=Z(Z(A+"|[\\/\\?]")+"*"),H=Z(Z("\\/\\/"+I+z)+"|"+T+"|"+N+"|"+Q),K=Z(c+"\\:"+H+Z("\\?"+U)+"?"+Z("\\#"+V)+"?"),M=Z(Z("\\/\\/"+I+z)+"|"+T+"|"+q+"|"+Q),B=Z(M+Z("\\?"+U)+"?"+Z("\\#"+V)+"?");Z(K+"|"+B),Z(c+"\\:"+H+Z("\\?"+U)+"?"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+N+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+q+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+N+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z("("+u+")@"),Z("\\:("+O+")");return{NOT_SCHEME:new RegExp(J("[^]",r,t,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(J("[^\\%\\:]",l,o),"g"),NOT_HOST:new RegExp(J("[^\\%\\[\\]\\:]",l,o),"g"),NOT_PATH:new RegExp(J("[^\\%\\/\\:\\@]",l,o),"g"),NOT_PATH_NOSCHEME:new RegExp(J("[^\\%\\/\\@]",l,o),"g"),NOT_QUERY:new RegExp(J("[^\\%]",l,o,"[\\:\\@\\/\\?]",n),"g"),NOT_FRAGMENT:new RegExp(J("[^\\%]",l,o,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(J("[^]",l,o),"g"),UNRESERVED:new RegExp(l,"g"),OTHER_CHARS:new RegExp(J("[^\\%]",l,i),"g"),PCT_ENCODED:new RegExp(s,"g"),IPV4ADDRESS:new RegExp("^("+d+")$"),IPV6ADDRESS:new RegExp("^\\[?("+_+")"+Z(Z("\\%25|\\%(?!"+a+"{2})")+"("+F+")")+"?\\]?$")}}var u=r(!1),h=r(!0),w=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,r){var t=[],a=!0,s=!1,o=void 0;try{for(var i,n=e[Symbol.iterator]();!(a=(i=n.next()).done)&&(t.push(i.value),!r||t.length!==r);a=!0);}catch(e){s=!0,o=e}finally{try{!a&&n.return&&n.return()}finally{if(s)throw o}}return t}(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")},A=2147483647,t=/^xn--/,s=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,i={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=Math.floor,k=String.fromCharCode;function L(e){throw new RangeError(i[e])}function n(e,r){var t=e.split("@"),a="";return 1<t.length&&(a=t[0]+"@",e=t[1]),a+function(e,r){for(var t=[],a=e.length;a--;)t[a]=r(e[a]);return t}((e=e.replace(o,".")).split("."),r).join(".")}function z(e){for(var r=[],t=0,a=e.length;t<a;){var s=e.charCodeAt(t++);if(55296<=s&&s<=56319&&t<a){var o=e.charCodeAt(t++);56320==(64512&o)?r.push(((1023&s)<<10)+(1023&o)+65536):(r.push(s),t--)}else r.push(s)}return r}function T(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function q(e,r,t){var a=0;for(e=t?C(e/700):e>>1,e+=C(e/r);455<e;a+=36)e=C(e/35);return C(a+36*e/(e+38))}function l(e){var r,t=[],a=e.length,s=0,o=128,i=72,n=e.lastIndexOf("-");n<0&&(n=0);for(var l=0;l<n;++l)128<=e.charCodeAt(l)&&L("not-basic"),t.push(e.charCodeAt(l));for(var c=0<n?n+1:0;c<a;){for(var u=s,h=1,d=36;;d+=36){a<=c&&L("invalid-input");var f=(r=e.charCodeAt(c++))-48<10?r-22:r-65<26?r-65:r-97<26?r-97:36;(36<=f||f>C((A-s)/h))&&L("overflow"),s+=f*h;var p=d<=i?1:i+26<=d?26:d-i;if(f<p)break;var m=36-p;h>C(A/m)&&L("overflow"),h*=m}var v=t.length+1;i=q(s-u,v,0==u),C(s/v)>A-o&&L("overflow"),o+=C(s/v),s%=v,t.splice(s++,0,o)}return String.fromCodePoint.apply(String,t)}function c(e){var r=[],t=(e=z(e)).length,a=128,s=0,o=72,i=!0,n=!1,l=void 0;try{for(var c,u=e[Symbol.iterator]();!(i=(c=u.next()).done);i=!0){var h=c.value;h<128&&r.push(k(h))}}catch(e){n=!0,l=e}finally{try{!i&&u.return&&u.return()}finally{if(n)throw l}}var d=r.length,f=d;for(d&&r.push("-");f<t;){var p=A,m=!0,v=!1,y=void 0;try{for(var g,P=e[Symbol.iterator]();!(m=(g=P.next()).done);m=!0){var E=g.value;a<=E&&E<p&&(p=E)}}catch(e){v=!0,y=e}finally{try{!m&&P.return&&P.return()}finally{if(v)throw y}}var w=f+1;p-a>C((A-s)/w)&&L("overflow"),s+=(p-a)*w,a=p;var b=!0,S=!1,_=void 0;try{for(var F,x=e[Symbol.iterator]();!(b=(F=x.next()).done);b=!0){var $=F.value;if($<a&&++s>A&&L("overflow"),$==a){for(var R=s,D=36;;D+=36){var j=D<=o?1:o+26<=D?26:D-o;if(R<j)break;var O=R-j,I=36-j;r.push(k(T(j+O%I,0))),R=C(O/I)}r.push(k(T(R,0))),o=q(s,w,f==d),s=0,++f}}}catch(e){S=!0,_=e}finally{try{!b&&x.return&&x.return()}finally{if(S)throw _}}++s,++a}return r.join("")}var v={version:"2.1.0",ucs2:{decode:z,encode:function(e){return String.fromCodePoint.apply(String,function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}return Array.from(e)}(e))}},decode:l,encode:c,toASCII:function(e){return n(e,function(e){return s.test(e)?"xn--"+c(e):e})},toUnicode:function(e){return n(e,function(e){return t.test(e)?l(e.slice(4).toLowerCase()):e})}},d={};function m(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function f(e){for(var r="",t=0,a=e.length;t<a;){var s=parseInt(e.substr(t+1,2),16);if(s<128)r+=String.fromCharCode(s),t+=3;else if(194<=s&&s<224){if(6<=a-t){var o=parseInt(e.substr(t+4,2),16);r+=String.fromCharCode((31&s)<<6|63&o)}else r+=e.substr(t,6);t+=6}else if(224<=s){if(9<=a-t){var i=parseInt(e.substr(t+4,2),16),n=parseInt(e.substr(t+7,2),16);r+=String.fromCharCode((15&s)<<12|(63&i)<<6|63&n)}else r+=e.substr(t,9);t+=9}else r+=e.substr(t,3),t+=3}return r}function y(e,t){function r(e){var r=f(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,m).replace(t.PCT_ENCODED,p)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,m).replace(t.PCT_ENCODED,p)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,m).replace(t.PCT_ENCODED,p)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,m).replace(t.PCT_ENCODED,p)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,m).replace(t.PCT_ENCODED,p)),e}function b(e){return e.replace(/^0*(.*)/,"$1")||"0"}function S(e,r){var t=e.match(r.IPV4ADDRESS)||[],a=w(t,2)[1];return a?a.split(".").map(b).join("."):e}function g(e,r){var t=e.match(r.IPV6ADDRESS)||[],a=w(t,3),s=a[1],o=a[2];if(s){for(var i=s.toLowerCase().split("::").reverse(),n=w(i,2),l=n[0],c=n[1],u=c?c.split(":").map(b):[],h=l.split(":").map(b),d=r.IPV4ADDRESS.test(h[h.length-1]),f=d?7:8,p=h.length-f,m=Array(f),v=0;v<f;++v)m[v]=u[v]||h[p+v]||"";d&&(m[f-1]=S(m[f-1],r));var y=m.reduce(function(e,r,t){if(!r||"0"===r){var a=e[e.length-1];a&&a.index+a.length===t?a.length++:e.push({index:t,length:1})}return e},[]).sort(function(e,r){return r.length-e.length})[0],g=void 0;if(y&&1<y.length){var P=m.slice(0,y.index),E=m.slice(y.index+y.length);g=P.join(":")+"::"+E.join(":")}else g=m.join(":");return o&&(g+="%"+o),g}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,E=void 0==="".match(/(){0}/)[1];function _(e){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t={},a=!1!==r.iri?h:u;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var s=e.match(P);if(s){E?(t.scheme=s[1],t.userinfo=s[3],t.host=s[4],t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=s[7],t.fragment=s[8],isNaN(t.port)&&(t.port=s[5])):(t.scheme=s[1]||void 0,t.userinfo=-1!==e.indexOf("@")?s[3]:void 0,t.host=-1!==e.indexOf("//")?s[4]:void 0,t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=-1!==e.indexOf("?")?s[7]:void 0,t.fragment=-1!==e.indexOf("#")?s[8]:void 0,isNaN(t.port)&&(t.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?s[4]:void 0)),t.host&&(t.host=g(S(t.host,a),a)),t.reference=void 0!==t.scheme||void 0!==t.userinfo||void 0!==t.host||void 0!==t.port||t.path||void 0!==t.query?void 0===t.scheme?"relative":void 0===t.fragment?"absolute":"uri":"same-document",r.reference&&"suffix"!==r.reference&&r.reference!==t.reference&&(t.error=t.error||"URI is not a "+r.reference+" reference.");var o=d[(r.scheme||t.scheme||"").toLowerCase()];if(r.unicodeSupport||o&&o.unicodeSupport)y(t,a);else{if(t.host&&(r.domainHost||o&&o.domainHost))try{t.host=v.toASCII(t.host.replace(a.PCT_ENCODED,f).toLowerCase())}catch(e){t.error=t.error||"Host's domain name can not be converted to ASCII via punycode: "+e}y(t,u)}o&&o.parse&&o.parse(t,r)}else t.error=t.error||"URI can not be parsed.";return t}var F=/^\.\.?\//,x=/^\/\.(\/|$)/,$=/^\/\.\.(\/|$)/,R=/^\/?(?:.|\n)*?(?=\/|$)/;function D(e){for(var r=[];e.length;)if(e.match(F))e=e.replace(F,"");else if(e.match(x))e=e.replace(x,"/");else if(e.match($))e=e.replace($,"/"),r.pop();else if("."===e||".."===e)e="";else{var t=e.match(R);if(!t)throw new Error("Unexpected dot segment condition");var a=t[0];e=e.slice(a.length),r.push(a)}return r.join("")}function j(r){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.iri?h:u,a=[],s=d[(t.scheme||r.scheme||"").toLowerCase()];if(s&&s.serialize&&s.serialize(r,t),r.host&&!e.IPV6ADDRESS.test(r.host)&&(t.domainHost||s&&s.domainHost))try{r.host=t.iri?v.toUnicode(r.host):v.toASCII(r.host.replace(e.PCT_ENCODED,f).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+e}y(r,e),"suffix"!==t.reference&&r.scheme&&(a.push(r.scheme),a.push(":"));var o,i,n,l=(i=!1!==t.iri?h:u,n=[],void 0!==(o=r).userinfo&&(n.push(o.userinfo),n.push("@")),void 0!==o.host&&n.push(g(S(String(o.host),i),i).replace(i.IPV6ADDRESS,function(e,r,t){return"["+r+(t?"%25"+t:"")+"]"})),"number"==typeof o.port&&(n.push(":"),n.push(o.port.toString(10))),n.length?n.join(""):void 0);if(void 0!==l&&("suffix"!==t.reference&&a.push("//"),a.push(l),r.path&&"/"!==r.path.charAt(0)&&a.push("/")),void 0!==r.path){var c=r.path;t.absolutePath||s&&s.absolutePath||(c=D(c)),void 0===l&&(c=c.replace(/^\/\//,"/%2F")),a.push(c)}return void 0!==r.query&&(a.push("?"),a.push(r.query)),void 0!==r.fragment&&(a.push("#"),a.push(r.fragment)),a.join("")}function O(e,r){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a={};return arguments[3]||(e=_(j(e,t),t),r=_(j(r,t),t)),!(t=t||{}).tolerant&&r.scheme?(a.scheme=r.scheme,a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(void 0!==r.userinfo||void 0!==r.host||void 0!==r.port?(a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(r.path?("/"===r.path.charAt(0)?a.path=D(r.path):(a.path=void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:r.path:"/"+r.path,a.path=D(a.path)),a.query=r.query):(a.path=e.path,a.query=void 0!==r.query?r.query:e.query),a.userinfo=e.userinfo,a.host=e.host,a.port=e.port),a.scheme=e.scheme),a.fragment=r.fragment,a}function I(e,r){return e&&e.toString().replace(r&&r.iri?h.PCT_ENCODED:u.PCT_ENCODED,f)}var N={scheme:"http",domainHost:!0,parse:function(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},Q={scheme:"https",domainHost:N.domainHost,parse:N.parse,serialize:N.serialize},U={},V="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",H="[0-9A-Fa-f]",K=(Z(Z("%[EFef]"+H+"%"+H+H+"%"+H+H)+"|"+Z("%[89A-Fa-f]"+H+"%"+H+H)+"|"+Z("%"+H+H)),J("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]')),M=new RegExp(V,"g"),B=new RegExp("(?:(?:%[EFef][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[89A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[0-9A-Fa-f][0-9A-Fa-f]))","g"),G=new RegExp(J("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',K),"g"),Y=new RegExp(J("[^]",V,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),W=Y;function X(e){var r=f(e);return r.match(M)?r:e}var ee={scheme:"mailto",parse:function(e,r){var t=e,a=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var s=!1,o={},i=t.query.split("&"),n=0,l=i.length;n<l;++n){var c=i[n].split("=");switch(c[0]){case"to":for(var u=c[1].split(","),h=0,d=u.length;h<d;++h)a.push(u[h]);break;case"subject":t.subject=I(c[1],r);break;case"body":t.body=I(c[1],r);break;default:s=!0,o[I(c[0],r)]=I(c[1],r)}}s&&(t.headers=o)}t.query=void 0;for(var f=0,p=a.length;f<p;++f){var m=a[f].split("@");if(m[0]=I(m[0]),r.unicodeSupport)m[1]=I(m[1],r).toLowerCase();else try{m[1]=v.toASCII(I(m[1],r).toLowerCase())}catch(e){t.error=t.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}a[f]=m.join("@")}return t},serialize:function(e,r){var t,a=e,s=null!=(t=e.to)?t instanceof Array?t:"number"!=typeof t.length||t.split||t.setInterval||t.call?[t]:Array.prototype.slice.call(t):[];if(s){for(var o=0,i=s.length;o<i;++o){var n=String(s[o]),l=n.lastIndexOf("@"),c=n.slice(0,l).replace(B,X).replace(B,p).replace(G,m),u=n.slice(l+1);try{u=r.iri?v.toUnicode(u):v.toASCII(I(u,r).toLowerCase())}catch(e){a.error=a.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+e}s[o]=c+"@"+u}a.path=s.join(",")}var h=e.headers=e.headers||{};e.subject&&(h.subject=e.subject),e.body&&(h.body=e.body);var d=[];for(var f in h)h[f]!==U[f]&&d.push(f.replace(B,X).replace(B,p).replace(Y,m)+"="+h[f].replace(B,X).replace(B,p).replace(W,m));return d.length&&(a.query=d.join("&")),a}},re=/^([^\:]+)\:(.*)/,te={scheme:"urn",parse:function(e,r){var t=e.path&&e.path.match(re),a=e;if(t){var s=r.scheme||a.scheme||"urn",o=t[1].toLowerCase(),i=t[2],n=d[s+":"+(r.nid||o)];a.nid=o,a.nss=i,a.path=void 0,n&&(a=n.parse(a,r))}else a.error=a.error||"URN can not be parsed.";return a},serialize:function(e,r){var t=e.nid,a=d[(r.scheme||e.scheme||"urn")+":"+(r.nid||t)];a&&(e=a.serialize(e,r));var s=e;return s.path=(t||r.nid)+":"+e.nss,s}},ae=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,se={scheme:"urn:uuid",parse:function(e,r){var t=e;return t.uuid=t.nss,t.nss=void 0,r.tolerant||t.uuid&&t.uuid.match(ae)||(t.error=t.error||"UUID is not valid."),t},serialize:function(e){var r=e;return r.nss=(e.uuid||"").toLowerCase(),r}};d[N.scheme]=N,d[Q.scheme]=Q,d[ee.scheme]=ee,d[te.scheme]=te,d[se.scheme]=se,e.SCHEMES=d,e.pctEncChar=m,e.pctDecChars=f,e.parse=_,e.removeDotSegments=D,e.serialize=j,e.resolveComponents=O,e.resolve=function(e,r,t){var a=function(e,r){var t=e;if(r)for(var a in r)t[a]=r[a];return t}({scheme:"null"},t);return j(O(_(e,a),_(r,a),a,!0),a)},e.normalize=function(e,r){return"string"==typeof e?e=j(_(e,r),r):"object"===a(e)&&(e=_(j(e,r),r)),e},e.equal=function(e,r,t){return"string"==typeof e?e=j(_(e,t),t):"object"===a(e)&&(e=j(e,t)),"string"==typeof r?r=j(_(r,t),t):"object"===a(r)&&(r=j(r,t)),e===r},e.escapeComponent=function(e,r){return e&&e.toString().replace(r&&r.iri?h.ESCAPE:u.ESCAPE,m)},e.unescapeComponent=I,Object.defineProperty(e,"__esModule",{value:!0})}("object"==typeof t&&void 0!==r?t:a.URI=a.URI||{})},{}],ajv:[function(a,e,r){"use strict";var n=a("./compile"),d=a("./compile/resolve"),t=a("./cache"),f=a("./compile/schema_obj"),s=a("fast-json-stable-stringify"),o=a("./compile/formats"),i=a("./compile/rules"),l=a("./data"),c=a("./compile/util");(e.exports=y).prototype.validate=function(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);!0!==t.$async&&(this.errors=t.errors);return s},y.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},y.prototype.addSchema=function(e,r,t,a){if(Array.isArray(e)){for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);return this}var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");return S(this,r=d.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0),this},y.prototype.addMetaSchema=function(e,r,t){return this.addSchema(e,r,t,!0),this},y.prototype.validateSchema=function(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||function(e){var r=e._opts.meta;return e._opts.defaultMeta="object"==typeof r?e._getId(r)||r:e.getSchema(p)?p:void 0,e._opts.defaultMeta}(this)))return this.logger.warn("meta-schema not available"),!(this.errors=null);var a=this.validate(t,e);if(!a&&r){var s="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(s);this.logger.error(s)}return a},y.prototype.getSchema=function(e){var r=g(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return function(e,r){var t=d.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=n.call(e,a,s,void 0,o);return e._fragments[r]=new f({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}(this,e)}},y.prototype.removeSchema=function(e){if(e instanceof RegExp)return P(this,this._schemas,e),P(this,this._refs,e),this;switch(typeof e){case"undefined":return P(this,this._schemas),P(this,this._refs),this._cache.clear(),this;case"string":var r=g(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],delete this._refs[e],this;case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=d.normalizeId(s),delete this._schemas[s],delete this._refs[s])}return this},y.prototype.addFormat=function(e,r){"string"==typeof r&&(r=new RegExp(r));return this._formats[e]=r,this},y.prototype.errorsText=function(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)},y.prototype._addSchema=function(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=d.normalizeId(this._getId(e));n&&a&&S(this,n);var l,c=!1!==this._opts.validateSchema&&!r;c&&!(l=n&&n==d.normalizeId(e.$schema))&&this.validateSchema(e,!0);var u=d.ids.call(this,e),h=new f({id:n,schema:e,localRefs:u,cacheKey:o,meta:t});"#"!=n[0]&&a&&(this._refs[n]=h);this._cache.put(o,h),c&&l&&this.validateSchema(e,!0);return h},y.prototype._compile=function(t,e){if(t.compiling)return(t.validate=s).schema=t.schema,s.errors=null,s.root=e||s,!0===t.schema.$async&&(s.$async=!0),s;var r,a;t.compiling=!0,t.meta&&(r=this._opts,this._opts=this._metaOpts);try{a=n.call(this,t.schema,e,t.localRefs)}catch(e){throw delete t.validate,e}finally{t.compiling=!1,t.meta&&(this._opts=r)}return t.validate=a,t.refs=a.refs,t.refVal=a.refVal,t.root=a.root,a;function s(){var e=t.validate,r=e.apply(this,arguments);return s.errors=e.errors,r}},y.prototype.compileAsync=a("./compile/async");var u=a("./keyword");y.prototype.addKeyword=u.add,y.prototype.getKeyword=u.get,y.prototype.removeKeyword=u.remove,y.prototype.validateKeyword=u.validate;var h=a("./compile/error_classes");y.ValidationError=h.Validation,y.MissingRefError=h.MissingRef,y.$dataMetaSchema=l;var p="http://json-schema.org/draft-07/schema",m=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],v=["/properties"];function y(e){if(!(this instanceof y))return new y(e);e=this._opts=c.copy(e)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:_,warn:_,error:_};else{if(void 0===r&&(r=console),!("object"==typeof r&&r.log&&r.warn&&r.error))throw new Error("logger must implement log, warn and error methods");e.logger=r}}(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(e.format),this._cache=e.cache||new t,this._loadingSchemas={},this._compilations=[],this.RULES=i(),this._getId=function(e){switch(e.schemaId){case"auto":return b;case"id":return E;default:return w}}(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=s),this._metaOpts=function(e){for(var r=c.copy(e._opts),t=0;t<m.length;t++)delete r[m[t]];return r}(this),e.formats&&function(e){for(var r in e._opts.formats){e.addFormat(r,e._opts.formats[r])}}(this),e.keywords&&function(e){for(var r in e._opts.keywords){e.addKeyword(r,e._opts.keywords[r])}}(this),function(e){var r;e._opts.$data&&(r=a("./refs/data.json"),e.addMetaSchema(r,r.$id,!0));if(!1===e._opts.meta)return;var t=a("./refs/json-schema-draft-07.json");e._opts.$data&&(t=l(t,v));e.addMetaSchema(t,p,!0),e._refs["http://json-schema.org/schema"]=p}(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),e.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),function(e){var r=e._opts.schemas;if(!r)return;if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}(this)}function g(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function P(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function E(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function w(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function b(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function S(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function _(){}},{"./cache":1,"./compile":5,"./compile/async":2,"./compile/error_classes":3,"./compile/formats":4,"./compile/resolve":6,"./compile/rules":7,"./compile/schema_obj":8,"./compile/util":10,"./data":11,"./keyword":39,"./refs/data.json":40,"./refs/json-schema-draft-07.json":41,"fast-json-stable-stringify":43}]},{},[])("ajv")});
//# sourceMappingURL=ajv.min.js.map \ No newline at end of file
diff --git a/node_modules/ajv/dist/ajv.min.js.map b/node_modules/ajv/dist/ajv.min.js.map
index 8b5fe56..2bbcc42 100644
--- a/node_modules/ajv/dist/ajv.min.js.map
+++ b/node_modules/ajv/dist/ajv.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Cache","_cache","prototype","put","key","value","get","del","clear","2","MissingRefError","MissingRef","compileAsync","schema","meta","callback","_opts","loadSchema","undefined","loadMetaSchemaOf","then","schemaObj","_addSchema","validate","_compileAsync","v","sch","$schema","getSchema","$ref","Promise","resolve","_compile","loadMissingSchema","ref","missingSchema","added","missingRef","schemaPromise","_loadingSchemas","removePromise","addSchema","_refs","_schemas","./error_classes","3","baseId","message","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","errors","ajv","validation","./resolve","4","util","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","formats","mode","copy","date","str","matches","match","year","month","day","time","full","hour","minute","second","fast","date-time","uri","uri-reference","uri-template","email","hostname","ipv4","ipv6","regex","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","test","Z_ANCHOR","RegExp","./util","5","errorClasses","stableStringify","validateGenerator","ucs2length","equal","ValidationError","checkCompiling","root","index","compIndex","compiling","_compilations","endCompiling","splice","patternCode","patterns","toQuotedString","defaultCode","refValCode","refVal","customRuleCode","vars","arr","statement","compile","localRefs","opts","refs","patternsHash","defaults","defaultsHash","customRules","compilation","callValidate","_formats","RULES","localCompile","cv","$async","sourceCode","source","result","apply","arguments","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","logger","processCode","makeValidate","Function","error","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","removeLocalRef","refId","inline","regexStr","valueStr","rule","parentSchema","it","validateSchema","deps","definition","dependencies","every","keyword","hasOwnProperty","join","valid","errorsText","macro","../dotjs/validate","fast-deep-equal","fast-json-stable-stringify","6","SchemaObject","traverse","res","resolveSchema","parse","refPath","_getFullPath","getFullPath","_getId","keys","id","parsedRef","resolveUrl","getJsonPointer","ids","schemaId","baseIds","","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","fragment","slice","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","item","Array","isArray","countKeys","count","Infinity","normalize","serialize","TRAILING_SLASH_HASH","replace","./schema_obj","json-schema-traverse","uri-js","7","ruleModules","type","rules","maximum","minimum","properties","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","keywords","concat","custom","../dotjs","8","obj","9","len","pos","charCodeAt","10","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","path","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","b","./ucs2length","11","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","stringify","j","anyOf","12","$id","definitions","simpleTypes","statements","not","required","items","modifying","const","./refs/json-schema-draft-07.json","13","$keyword","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","14","15","unicode","16","17","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","18","$valid","$errs","$wasComposite","19","20","21","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","22","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","23","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","arr2","i2","l2","24","$vSchema","25","$ruleType","format","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","26","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","27","allOf","contains","enum","if","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","28","$additionalItems","additionalItems","$currErrSchemaPath","29","multipleOfPrecision","30","$allErrorsOption","31","$prevValid","$passingSchemas","32","$regexp","33","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","34","$invalidName","35","$refCode","$refVal","$message","missingRefs","__callValidate","36","$propertySch","$loopRequired","37","$itemType","$typeIsArray","38","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","nullable","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$bracesCoercion","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","39","definitionSchema","add","validateKeyword","_addRule","ruleGroup","rg","remove","throwError","_validateKeyword","./definition_schema","./dotjs/custom","40","description","41","title","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","42","flags","valueOf","toString","43","cmp","cycles","node","seen","toJSON","isFinite","TypeError","seenIndex","sort","44","cb","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","45","merge","_len","sets","_key","xl","x","subexp","typeOf","shift","toLowerCase","toUpperCase","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","sliceIterator","maxInt","regexPunycode","regexNonASCII","regexSeparators","overflow","not-basic","invalid-input","floor","stringFromCharCode","String","fromCharCode","error$1","RangeError","mapDomain","string","fn","ucs2decode","output","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","decode","input","codePoint","inputLength","bias","basic","lastIndexOf","oldi","w","baseMinusT","fromCodePoint","encode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","m","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","q","qMinusT","punycode","version","ucs2","from","toConsumableArray","toASCII","toUnicode","SCHEMES","pctEncChar","chr","pctDecChars","newStr","il","parseInt","substr","c2","_c","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","scheme","userinfo","host","query","_stripLeadingZeros","_normalizeIPv4","address","_normalizeIPv6","_matches2","zone","_address$toLowerCase$","reverse","_address$toLowerCase$2","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","longestZeroFields","reduce","acc","field","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","options","iri","reference","port","isNaN","schemeHandler","unicodeSupport","domainHost","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","uriTokens","authority","_","$1","$2","charAt","absolutePath","resolveComponents","relative","target","tolerant","unescapeComponent","handler","handler$1","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$2","mailtoComponents","unknownHeaders","headers","hfields","hfield","toAddrs","_x","_xl","subject","body","_x2","_xl2","addr","setInterval","toAddr","atIdx","localPart","domain","name","URN_PARSE","handler$3","urnComponents","nid","nss","uriComponents","handler$4","uuidComponents","baseURI","relativeURI","schemelessOptions","assign","uriA","uriB","escapeComponent","defineProperty","factory","compileSchema","$dataMetaSchema","schemaKeyRef","_meta","_skipValidation","checkUnique","addMetaSchema","skipValidation","throwOrLogError","defaultMeta","META_SCHEMA_ID","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","cacheKey","addFormat","separator","text","dataPath","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","currentOpts","_metaOpts","_validate","customKeyword","addKeyword","getKeyword","removeKeyword","META_IGNORE_OPTIONS","META_SUPPORT_DATA","log","noop","console","setLogger","cache","_get$IdOrId","_get$Id","chooseGetId","errorDataPath","metaOpts","getMetaSchemaOptions","addInitialFormats","addInitialKeywords","$dataSchema","addDefaultMetaSchema","optsSchemas","schemas","addInitialSchemas","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json"],"mappings":"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","file":"ajv.min.js"} \ No newline at end of file
+{"version":3,"file":"ajv.min.js","sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Cache","_cache","prototype","put","key","value","get","del","clear","2","MissingRefError","MissingRef","compileAsync","schema","meta","callback","_opts","loadSchema","undefined","loadMetaSchemaOf","then","schemaObj","_addSchema","validate","_compileAsync","_compile","loadMissingSchema","ref","missingSchema","added","missingRef","schemaPromise","_loadingSchemas","removePromise","sch","addSchema","_refs","_schemas","v","$schema","getSchema","$ref","Promise","resolve","./error_classes","3","baseId","message","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","errors","ajv","validation","./resolve","4","util","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","formats","mode","copy","date","str","matches","match","year","month","day","time","full","hour","minute","second","fast","date-time","uri","uri-reference","uri-template","email","hostname","ipv4","ipv6","regex","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","test","Z_ANCHOR","RegExp","./util","5","errorClasses","stableStringify","validateGenerator","ucs2length","equal","ValidationError","compile","root","localRefs","opts","refVal","refs","patterns","patternsHash","defaults","defaultsHash","customRules","index","compIndex","compiling","_compilations","compilation","callValidate","_formats","RULES","localCompile","cv","$async","sourceCode","source","splice","result","apply","arguments","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","logger","vars","refValCode","patternCode","defaultCode","customRuleCode","processCode","Function","makeValidate","error","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","inline","regexStr","toQuotedString","valueStr","rule","parentSchema","it","validateSchema","deps","definition","dependencies","every","keyword","hasOwnProperty","join","errorsText","macro","arr","statement","../dotjs/validate","fast-deep-equal","fast-json-stable-stringify","6","SchemaObject","traverse","res","resolveSchema","parse","refPath","_getFullPath","getFullPath","_getId","keys","id","parsedRef","resolveUrl","getJsonPointer","ids","schemaId","baseIds","","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","fragment","slice","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","item","Array","isArray","countKeys","count","Infinity","normalize","serialize","TRAILING_SLASH_HASH","replace","./schema_obj","json-schema-traverse","uri-js","7","ruleModules","type","rules","maximum","minimum","properties","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","keywords","concat","custom","../dotjs","8","obj","9","len","pos","charCodeAt","10","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","path","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","b","./ucs2length","11","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","stringify","j","anyOf","12","$id","definitions","simpleTypes","statements","valid","not","required","items","modifying","const","./refs/json-schema-draft-07.json","13","$keyword","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","14","15","unicode","16","17","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","18","$valid","$errs","$wasComposite","19","20","21","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","22","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","23","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","arr2","i2","l2","24","$vSchema","25","$ruleType","format","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","26","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","27","allOf","contains","enum","if","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","28","$additionalItems","additionalItems","$currErrSchemaPath","29","multipleOfPrecision","30","$allErrorsOption","31","$prevValid","$passingSchemas","32","$regexp","33","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","34","$invalidName","35","$refCode","$refVal","$message","missingRefs","__callValidate","36","$propertySch","$loopRequired","37","$itemType","$typeIsArray","38","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","nullable","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$bracesCoercion","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","39","definitionSchema","validateKeyword","throwError","_validateKeyword","add","_addRule","ruleGroup","rg","remove","./definition_schema","./dotjs/custom","40","description","41","title","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","42","flags","valueOf","toString","43","cmp","cycles","node","seen","toJSON","isFinite","TypeError","seenIndex","sort","44","cb","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","45","merge","_len","sets","_key","xl","x","subexp","typeOf","shift","toLowerCase","toUpperCase","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","sliceIterator","maxInt","regexPunycode","regexNonASCII","regexSeparators","overflow","not-basic","invalid-input","floor","stringFromCharCode","String","fromCharCode","error$1","RangeError","mapDomain","string","fn","ucs2decode","output","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","decode","input","codePoint","inputLength","bias","basic","lastIndexOf","oldi","w","baseMinusT","fromCodePoint","encode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","m","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","q","qMinusT","punycode","version","ucs2","from","toConsumableArray","toASCII","toUnicode","SCHEMES","pctEncChar","chr","pctDecChars","newStr","il","parseInt","substr","c2","_c","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","scheme","userinfo","host","query","_stripLeadingZeros","_normalizeIPv4","address","_normalizeIPv6","_matches2","zone","_address$toLowerCase$","reverse","_address$toLowerCase$2","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","longestZeroFields","reduce","acc","field","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","options","iri","reference","port","isNaN","schemeHandler","unicodeSupport","domainHost","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","uriTokens","authority","_","$1","$2","charAt","absolutePath","resolveComponents","relative","target","tolerant","unescapeComponent","handler","handler$1","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$2","mailtoComponents","unknownHeaders","headers","hfields","hfield","toAddrs","_x","_xl","subject","body","_x2","_xl2","addr","setInterval","toAddr","atIdx","localPart","domain","name","URN_PARSE","handler$3","urnComponents","nid","nss","uriComponents","handler$4","uuidComponents","baseURI","relativeURI","schemelessOptions","assign","uriA","uriB","escapeComponent","defineProperty","factory","compileSchema","$dataMetaSchema","schemaKeyRef","_meta","_skipValidation","checkUnique","addMetaSchema","skipValidation","throwOrLogError","defaultMeta","META_SCHEMA_ID","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","cacheKey","addFormat","separator","text","dataPath","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","currentOpts","_metaOpts","_validate","customKeyword","addKeyword","getKeyword","removeKeyword","META_IGNORE_OPTIONS","META_SUPPORT_DATA","log","noop","console","setLogger","cache","_get$IdOrId","_get$Id","chooseGetId","errorDataPath","metaOpts","getMetaSchemaOptions","addInitialFormats","addInitialKeywords","$dataSchema","addDefaultMetaSchema","optsSchemas","schemas","addInitialSchemas","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json"],"mappings":"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"} \ No newline at end of file
diff --git a/node_modules/ajv/package.json b/node_modules/ajv/package.json
index faae6bc..b14afc9 100644
--- a/node_modules/ajv/package.json
+++ b/node_modules/ajv/package.json
@@ -1,8 +1,8 @@
{
"_from": "ajv@^6.5.5",
- "_id": "ajv@6.12.0",
+ "_id": "ajv@6.12.2",
"_inBundle": false,
- "_integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
+ "_integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
"_location": "/ajv",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/har-validator"
],
- "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
- "_shasum": "06d60b96d87b8454a5adaba86e7854da629db4b7",
+ "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
+ "_shasum": "c629c5eced17baf314437918d2da88c99d5958cd",
"_spec": "ajv@^6.5.5",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/har-validator",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/har-validator",
"author": {
"name": "Evgeny Poberezkin"
},
@@ -29,6 +29,10 @@
"url": "https://github.com/epoberezkin/ajv/issues"
},
"bundleDependencies": false,
+ "collective": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ajv"
+ },
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -53,10 +57,10 @@
"js-beautify": "^1.7.3",
"jshint": "^2.10.2",
"json-schema-test": "^2.0.0",
- "karma": "^4.0.1",
+ "karma": "^5.0.0",
"karma-chrome-launcher": "^3.0.0",
- "karma-mocha": "^1.1.1",
- "karma-sauce-launcher": "^2.0.0",
+ "karma-mocha": "^2.0.0",
+ "karma-sauce-launcher": "^4.1.3",
"mocha": "^7.0.1",
"nyc": "^15.0.0",
"pre-commit": "^1.1.1",
@@ -121,5 +125,5 @@
},
"tonicExampleFilename": ".tonic_example.js",
"typings": "lib/ajv.d.ts",
- "version": "6.12.0"
+ "version": "6.12.2"
}
diff --git a/node_modules/aws4/README.md b/node_modules/aws4/README.md
index 1e9d61b..f4dc271 100644
--- a/node_modules/aws4/README.md
+++ b/node_modules/aws4/README.md
@@ -1,60 +1,16 @@
aws4
----
-[![Build Status](https://secure.travis-ci.org/mhart/aws4.png?branch=master)](http://travis-ci.org/mhart/aws4)
+[![Build Status](https://api.travis-ci.org/mhart/aws4.png?branch=master)](https://travis-ci.org/github/mhart/aws4)
A small utility to sign vanilla Node.js http(s) request options using Amazon's
-[AWS Signature Version 4](http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html).
-
-If you want to sign and send AWS requests in a modern browser, or an environment like [Cloudflare Workers](https://developers.cloudflare.com/workers/), then check out [aws4fetch](https://github.com/mhart/aws4fetch) – otherwise you can also bundle this library for use [in the browser](./browser).
-
-This signature is supported by nearly all Amazon services, including
-[S3](http://docs.aws.amazon.com/AmazonS3/latest/API/),
-[EC2](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/),
-[DynamoDB](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html),
-[Kinesis](http://docs.aws.amazon.com/kinesis/latest/APIReference/),
-[Lambda](http://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html),
-[SQS](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/),
-[SNS](http://docs.aws.amazon.com/sns/latest/api/),
-[IAM](http://docs.aws.amazon.com/IAM/latest/APIReference/),
-[STS](http://docs.aws.amazon.com/STS/latest/APIReference/),
-[RDS](http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/),
-[CloudWatch](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/),
-[CloudWatch Logs](http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/),
-[CodeDeploy](http://docs.aws.amazon.com/codedeploy/latest/APIReference/),
-[CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/),
-[CloudTrail](http://docs.aws.amazon.com/awscloudtrail/latest/APIReference/),
-[ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/),
-[EMR](http://docs.aws.amazon.com/ElasticMapReduce/latest/API/),
-[Glacier](http://docs.aws.amazon.com/amazonglacier/latest/dev/amazon-glacier-api.html),
-[CloudSearch](http://docs.aws.amazon.com/cloudsearch/latest/developerguide/APIReq.html),
-[Elastic Load Balancing](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/),
-[Elastic Transcoder](http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html),
-[CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/),
-[Elastic Beanstalk](http://docs.aws.amazon.com/elasticbeanstalk/latest/api/),
-[Storage Gateway](http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPI.html),
-[Data Pipeline](http://docs.aws.amazon.com/datapipeline/latest/APIReference/),
-[Direct Connect](http://docs.aws.amazon.com/directconnect/latest/APIReference/),
-[Redshift](http://docs.aws.amazon.com/redshift/latest/APIReference/),
-[OpsWorks](http://docs.aws.amazon.com/opsworks/latest/APIReference/),
-[SES](http://docs.aws.amazon.com/ses/latest/APIReference/),
-[SWF](http://docs.aws.amazon.com/amazonswf/latest/apireference/),
-[AutoScaling](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/),
-[Mobile Analytics](http://docs.aws.amazon.com/mobileanalytics/latest/ug/server-reference.html),
-[Cognito Identity](http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/),
-[Cognito Sync](http://docs.aws.amazon.com/cognitosync/latest/APIReference/),
-[Container Service](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/),
-[AppStream](http://docs.aws.amazon.com/appstream/latest/developerguide/appstream-api-rest.html),
-[Key Management Service](http://docs.aws.amazon.com/kms/latest/APIReference/),
-[Config](http://docs.aws.amazon.com/config/latest/APIReference/),
-[CloudHSM](http://docs.aws.amazon.com/cloudhsm/latest/dg/api-ref.html),
-[Route53](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rest.html) and
-[Route53 Domains](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rpc.html).
-
-Indeed, the only AWS services that *don't* support v4 as of 2014-12-30 are
-[Import/Export](http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html) and
-[SimpleDB](http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html)
-(they only support [AWS Signature Version 2](https://github.com/mhart/aws2)).
+[AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
+
+If you want to sign and send AWS requests in a modern browser, or an environment like [Cloudflare Workers](https://developers.cloudflare.com/workers/), then check out [aws4fetch](https://github.com/mhart/aws4fetch) – otherwise you can also bundle this library for use [in older browsers](./browser).
+
+The only AWS service that *doesn't* support v4 as of 2020-05-22 is
+[SimpleDB](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html)
+(it only supports [AWS Signature Version 2](https://github.com/mhart/aws2)).
It also provides defaults for a number of core AWS headers and
request parameters, making it very easy to query AWS services, or
@@ -64,21 +20,34 @@ Example
-------
```javascript
-var http = require('http'),
- https = require('https'),
- aws4 = require('aws4')
+var http = require('https')
+var aws4 = require('aws4')
+
+// to illustrate usage, we'll create a utility function to request and pipe to stdout
+function request(opts) { http.request(opts, function(res) { res.pipe(process.stdout) }).end(opts.body || '') }
+
+// aws4 will sign an options object as you'd pass to http.request, with an AWS service and region
+var opts = { host: 'my-bucket.s3.us-west-1.amazonaws.com', path: '/my-object', service: 's3', region: 'us-west-1' }
+
+// aws4.sign() will sign and modify these options, ready to pass to http.request
+aws4.sign(opts, { accessKeyId: '', secretAccessKey: '' })
+
+// or it can get credentials from process.env.AWS_ACCESS_KEY_ID, etc
+aws4.sign(opts)
-// given an options object you could pass to http.request
-var opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'}
+// for most AWS services, aws4 can figure out the service and region if you pass a host
+opts = { host: 'my-bucket.s3.us-west-1.amazonaws.com', path: '/my-object' }
-// alternatively (as aws4 can infer the host):
-opts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'}
+// usually it will add/modify request headers, but you can also sign the query:
+opts = { host: 'my-bucket.s3.amazonaws.com', path: '/?X-Amz-Expires=12345', signQuery: true }
-// alternatively (as us-east-1 is default):
-opts = {service: 'sqs', path: '/?Action=ListQueues'}
+// and for services with simple hosts, aws4 can infer the host from service and region:
+opts = { service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues' }
-aws4.sign(opts) // assumes AWS credentials are available in process.env
+// and if you're using us-east-1, it's the default:
+opts = { service: 'sqs', path: '/?Action=ListQueues' }
+aws4.sign(opts)
console.log(opts)
/*
{
@@ -92,37 +61,23 @@ console.log(opts)
}
*/
-// we can now use this to query AWS using the standard node.js http API
-http.request(opts, function(res) { res.pipe(process.stdout) }).end()
+// we can now use this to query AWS
+request(opts)
/*
<?xml version="1.0"?>
-<ListQueuesResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/">
+<ListQueuesResponse xmlns="https://queue.amazonaws.com/doc/2012-11-05/">
...
*/
-```
-
-More options
-------------
-
-```javascript
-// you can also pass AWS credentials in explicitly (otherwise taken from process.env)
-aws4.sign(opts, {accessKeyId: '', secretAccessKey: ''})
-
-// can also add the signature to query strings
-aws4.sign({service: 's3', path: '/my-bucket?X-Amz-Expires=12345', signQuery: true})
-
-// create a utility function to pipe to stdout (with https this time)
-function request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') }
// aws4 can infer the HTTP method if a body is passed in
// method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8'
-request(aws4.sign({service: 'iam', body: 'Action=ListGroups&Version=2010-05-08'}))
+request(aws4.sign({ service: 'iam', body: 'Action=ListGroups&Version=2010-05-08' }))
/*
<ListGroupsResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
...
*/
-// can specify any custom option or header as per usual
+// you can specify any custom option or header as per usual
request(aws4.sign({
service: 'dynamodb',
region: 'ap-southeast-2',
@@ -139,310 +94,7 @@ request(aws4.sign({
...
*/
-// works with all other services that support Signature Version 4
-
-request(aws4.sign({service: 's3', path: '/', signQuery: true}))
-/*
-<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
-...
-*/
-
-request(aws4.sign({service: 'ec2', path: '/?Action=DescribeRegions&Version=2014-06-15'}))
-/*
-<DescribeRegionsResponse xmlns="http://ec2.amazonaws.com/doc/2014-06-15/">
-...
-*/
-
-request(aws4.sign({service: 'sns', path: '/?Action=ListTopics&Version=2010-03-31'}))
-/*
-<ListTopicsResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
-...
-*/
-
-request(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'}))
-/*
-<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
-...
-*/
-
-request(aws4.sign({service: 'cloudsearch', path: '/?Action=ListDomainNames&Version=2013-01-01'}))
-/*
-<ListDomainNamesResponse xmlns="http://cloudsearch.amazonaws.com/doc/2013-01-01/">
-...
-*/
-
-request(aws4.sign({service: 'ses', path: '/?Action=ListIdentities&Version=2010-12-01'}))
-/*
-<ListIdentitiesResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
-...
-*/
-
-request(aws4.sign({service: 'autoscaling', path: '/?Action=DescribeAutoScalingInstances&Version=2011-01-01'}))
-/*
-<DescribeAutoScalingInstancesResponse xmlns="http://autoscaling.amazonaws.com/doc/2011-01-01/">
-...
-*/
-
-request(aws4.sign({service: 'elasticloadbalancing', path: '/?Action=DescribeLoadBalancers&Version=2012-06-01'}))
-/*
-<DescribeLoadBalancersResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/">
-...
-*/
-
-request(aws4.sign({service: 'cloudformation', path: '/?Action=ListStacks&Version=2010-05-15'}))
-/*
-<ListStacksResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
-...
-*/
-
-request(aws4.sign({service: 'elasticbeanstalk', path: '/?Action=ListAvailableSolutionStacks&Version=2010-12-01'}))
-/*
-<ListAvailableSolutionStacksResponse xmlns="http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/">
-...
-*/
-
-request(aws4.sign({service: 'rds', path: '/?Action=DescribeDBInstances&Version=2012-09-17'}))
-/*
-<DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/doc/2012-09-17/">
-...
-*/
-
-request(aws4.sign({service: 'monitoring', path: '/?Action=ListMetrics&Version=2010-08-01'}))
-/*
-<ListMetricsResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
-...
-*/
-
-request(aws4.sign({service: 'redshift', path: '/?Action=DescribeClusters&Version=2012-12-01'}))
-/*
-<DescribeClustersResponse xmlns="http://redshift.amazonaws.com/doc/2012-12-01/">
-...
-*/
-
-request(aws4.sign({service: 'cloudfront', path: '/2014-05-31/distribution'}))
-/*
-<DistributionList xmlns="http://cloudfront.amazonaws.com/doc/2014-05-31/">
-...
-*/
-
-request(aws4.sign({service: 'elasticache', path: '/?Action=DescribeCacheClusters&Version=2014-07-15'}))
-/*
-<DescribeCacheClustersResponse xmlns="http://elasticache.amazonaws.com/doc/2014-07-15/">
-...
-*/
-
-request(aws4.sign({service: 'elasticmapreduce', path: '/?Action=DescribeJobFlows&Version=2009-03-31'}))
-/*
-<DescribeJobFlowsResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
-...
-*/
-
-request(aws4.sign({service: 'route53', path: '/2013-04-01/hostedzone'}))
-/*
-<ListHostedZonesResponse xmlns="https://route53.amazonaws.com/doc/2013-04-01/">
-...
-*/
-
-request(aws4.sign({service: 'appstream', path: '/applications'}))
-/*
-{"_links":{"curie":[{"href":"http://docs.aws.amazon.com/appstream/latest/...
-...
-*/
-
-request(aws4.sign({service: 'cognito-sync', path: '/identitypools'}))
-/*
-{"Count":0,"IdentityPoolUsages":[],"MaxResults":16,"NextToken":null}
-...
-*/
-
-request(aws4.sign({service: 'elastictranscoder', path: '/2012-09-25/pipelines'}))
-/*
-{"NextPageToken":null,"Pipelines":[]}
-...
-*/
-
-request(aws4.sign({service: 'lambda', path: '/2014-11-13/functions/'}))
-/*
-{"Functions":[],"NextMarker":null}
-...
-*/
-
-request(aws4.sign({service: 'ecs', path: '/?Action=ListClusters&Version=2014-11-13'}))
-/*
-<ListClustersResponse xmlns="http://ecs.amazonaws.com/doc/2014-11-13/">
-...
-*/
-
-request(aws4.sign({service: 'glacier', path: '/-/vaults', headers: {'X-Amz-Glacier-Version': '2012-06-01'}}))
-/*
-{"Marker":null,"VaultList":[]}
-...
-*/
-
-request(aws4.sign({service: 'storagegateway', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'StorageGateway_20120630.ListGateways'
-}}))
-/*
-{"Gateways":[]}
-...
-*/
-
-request(aws4.sign({service: 'datapipeline', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'DataPipeline.ListPipelines'
-}}))
-/*
-{"hasMoreResults":false,"pipelineIdList":[]}
-...
-*/
-
-request(aws4.sign({service: 'opsworks', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'OpsWorks_20130218.DescribeStacks'
-}}))
-/*
-{"Stacks":[]}
-...
-*/
-
-request(aws4.sign({service: 'route53domains', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'Route53Domains_v20140515.ListDomains'
-}}))
-/*
-{"Domains":[]}
-...
-*/
-
-request(aws4.sign({service: 'kinesis', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'Kinesis_20131202.ListStreams'
-}}))
-/*
-{"HasMoreStreams":false,"StreamNames":[]}
-...
-*/
-
-request(aws4.sign({service: 'cloudtrail', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'CloudTrail_20131101.DescribeTrails'
-}}))
-/*
-{"trailList":[]}
-...
-*/
-
-request(aws4.sign({service: 'logs', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'Logs_20140328.DescribeLogGroups'
-}}))
-/*
-{"logGroups":[]}
-...
-*/
-
-request(aws4.sign({service: 'codedeploy', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'CodeDeploy_20141006.ListApplications'
-}}))
-/*
-{"applications":[]}
-...
-*/
-
-request(aws4.sign({service: 'directconnect', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'OvertureService.DescribeConnections'
-}}))
-/*
-{"connections":[]}
-...
-*/
-
-request(aws4.sign({service: 'kms', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'TrentService.ListKeys'
-}}))
-/*
-{"Keys":[],"Truncated":false}
-...
-*/
-
-request(aws4.sign({service: 'config', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'StarlingDoveService.DescribeDeliveryChannels'
-}}))
-/*
-{"DeliveryChannels":[]}
-...
-*/
-
-request(aws4.sign({service: 'cloudhsm', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'CloudHsmFrontendService.ListAvailableZones'
-}}))
-/*
-{"AZList":["us-east-1a","us-east-1b","us-east-1c"]}
-...
-*/
-
-request(aws4.sign({
- service: 'swf',
- body: '{"registrationStatus":"REGISTERED"}',
- headers: {
- 'Content-Type': 'application/x-amz-json-1.0',
- 'X-Amz-Target': 'SimpleWorkflowService.ListDomains'
- }
-}))
-/*
-{"domainInfos":[]}
-...
-*/
-
-request(aws4.sign({
- service: 'cognito-identity',
- body: '{"MaxResults": 1}',
- headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'AWSCognitoIdentityService.ListIdentityPools'
- }
-}))
-/*
-{"IdentityPools":[]}
-...
-*/
-
-request(aws4.sign({
- service: 'mobileanalytics',
- path: '/2014-06-05/events',
- body: JSON.stringify({events:[{
- eventType: 'a',
- timestamp: new Date().toISOString(),
- session: {},
- }]}),
- headers: {
- 'Content-Type': 'application/json',
- 'X-Amz-Client-Context': JSON.stringify({
- client: {client_id: 'a', app_title: 'a'},
- custom: {},
- env: {platform: 'a'},
- services: {},
- }),
- }
-}))
-/*
-(HTTP 202, empty response)
-*/
-
-// Generate CodeCommit Git access password
-var signer = new aws4.RequestSigner({
- service: 'codecommit',
- host: 'git-codecommit.us-east-1.amazonaws.com',
- method: 'GIT',
- path: '/v1/repos/MyAwesomeRepo',
-})
-var password = signer.getDateTime() + 'Z' + signer.signature()
+// see example.js for examples with other services
```
API
@@ -455,18 +107,18 @@ This calculates and populates the `Authorization` header of
options. Returns `requestOptions` as a convenience for chaining.
`requestOptions` is an object holding the same options that the node.js
-[http.request](http://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback)
+[http.request](https://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback)
function takes.
The following properties of `requestOptions` are used in the signing or
populated if they don't already exist:
-- `hostname` or `host` (will be determined from `service` and `region` if not given)
+- `hostname` or `host` (will try to be determined from `service` and `region` if not given)
- `method` (will use `'GET'` if not given or `'POST'` if there is a `body`)
- `path` (will use `'/'` if not given)
- `body` (will use `''` if not given)
-- `service` (will be calculated from `hostname` or `host` if not given)
-- `region` (will be calculated from `hostname` or `host` or use `'us-east-1'` if not given)
+- `service` (will try to be calculated from `hostname` or `host` if not given)
+- `region` (will try to be calculated from `hostname` or `host` or use `'us-east-1'` if not given)
- `headers['Host']` (will use `hostname` or `host` or be calculated if not given)
- `headers['Content-Type']` (will use `'application/x-www-form-urlencoded; charset=utf-8'`
if not given and there is a `body`)
@@ -489,20 +141,20 @@ aws4.sign(requestOptions, {
- From `process.env`, such as this:
```
-export AWS_SECRET_ACCESS_KEY="<your-secret-access-key>"
export AWS_ACCESS_KEY_ID="<your-access-key-id>"
+export AWS_SECRET_ACCESS_KEY="<your-secret-access-key>"
export AWS_SESSION_TOKEN="<your-session-token>"
```
(will also use `AWS_ACCESS_KEY` and `AWS_SECRET_KEY` if available)
The `sessionToken` property and `AWS_SESSION_TOKEN` environment variable are optional for signing
-with [IAM STS temporary credentials](http://docs.aws.amazon.com/STS/latest/UsingSTS/using-temp-creds.html).
+with [IAM STS temporary credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).
Installation
------------
-With [npm](http://npmjs.org/) do:
+With [npm](https://www.npmjs.com/) do:
```
npm install aws4
@@ -520,4 +172,3 @@ committed and subsequently extracted this code.
Also thanks to the
[official node.js AWS SDK](https://github.com/aws/aws-sdk-js) for giving
me a start on implementing the v4 signature.
-
diff --git a/node_modules/aws4/aws4.js b/node_modules/aws4/aws4.js
index 9014894..ed282f8 100644
--- a/node_modules/aws4/aws4.js
+++ b/node_modules/aws4/aws4.js
@@ -33,7 +33,7 @@ function RequestSigner(request, credentials) {
if (typeof request === 'string') request = url.parse(request)
var headers = request.headers = (request.headers || {}),
- hostParts = this.matchHost(request.hostname || request.host || headers.Host || headers.host)
+ hostParts = (!this.service || !this.region) && this.matchHost(request.hostname || request.host || headers.Host || headers.host)
this.request = request
this.credentials = credentials || this.defaultCredentials()
@@ -70,6 +70,19 @@ RequestSigner.prototype.matchHost = function(host) {
if (hostParts[1] === 'es')
hostParts = hostParts.reverse()
+ if (hostParts[1] == 's3') {
+ hostParts[0] = 's3'
+ hostParts[1] = 'us-east-1'
+ } else {
+ for (var i = 0; i < 2; i++) {
+ if (/^s3-/.test(hostParts[i])) {
+ hostParts[1] = hostParts[i].slice(3)
+ hostParts[0] = 's3'
+ break
+ }
+ }
+ }
+
return hostParts
}
@@ -83,10 +96,9 @@ RequestSigner.prototype.isSingleRegion = function() {
}
RequestSigner.prototype.createHost = function() {
- var region = this.isSingleRegion() ? '' :
- (this.service === 's3' && this.region !== 'us-east-1' ? '-' : '.') + this.region,
- service = this.service === 'ses' ? 'email' : this.service
- return service + region + '.amazonaws.com'
+ var region = this.isSingleRegion() ? '' : '.' + this.region,
+ subdomain = this.service === 'ses' ? 'email' : this.service
+ return subdomain + region + '.amazonaws.com'
}
RequestSigner.prototype.prepareRequest = function() {
diff --git a/node_modules/aws4/package.json b/node_modules/aws4/package.json
index 27f0cc0..79c9996 100644
--- a/node_modules/aws4/package.json
+++ b/node_modules/aws4/package.json
@@ -1,8 +1,8 @@
{
"_from": "aws4@^1.8.0",
- "_id": "aws4@1.9.1",
+ "_id": "aws4@1.10.0",
"_inBundle": false,
- "_integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==",
+ "_integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
"_location": "/aws4",
"_phantomChildren": {},
"_requested": {
@@ -18,14 +18,14 @@
"_requiredBy": [
"/request"
],
- "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
- "_shasum": "7e33d8f7d449b3f673cd72deb9abdc552dbe528e",
+ "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
+ "_shasum": "a17b3a8ea811060e74d47d306122400ad4497ae2",
"_spec": "aws4@^1.8.0",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/request",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/request",
"author": {
"name": "Michael Hart",
"email": "michael.hart.au@gmail.com",
- "url": "http://github.com/mhart"
+ "url": "https://github.com/mhart"
},
"bugs": {
"url": "https://github.com/mhart/aws4/issues"
@@ -34,62 +34,10 @@
"deprecated": false,
"description": "Signs and prepares requests using AWS Signature Version 4",
"devDependencies": {
- "mocha": "^2.4.5",
- "should": "^8.2.2"
+ "mocha": "^7.1.2",
+ "should": "^13.2.3"
},
"homepage": "https://github.com/mhart/aws4#readme",
- "keywords": [
- "amazon",
- "aws",
- "signature",
- "s3",
- "ec2",
- "autoscaling",
- "cloudformation",
- "elasticloadbalancing",
- "elb",
- "elasticbeanstalk",
- "cloudsearch",
- "dynamodb",
- "kinesis",
- "lambda",
- "glacier",
- "sqs",
- "sns",
- "iam",
- "sts",
- "ses",
- "swf",
- "storagegateway",
- "datapipeline",
- "directconnect",
- "redshift",
- "opsworks",
- "rds",
- "monitoring",
- "cloudtrail",
- "cloudfront",
- "codedeploy",
- "elasticache",
- "elasticmapreduce",
- "elastictranscoder",
- "emr",
- "cloudwatch",
- "mobileanalytics",
- "cognitoidentity",
- "cognitosync",
- "cognito",
- "containerservice",
- "ecs",
- "appstream",
- "keymanagementservice",
- "kms",
- "config",
- "cloudhsm",
- "route53",
- "route53domains",
- "logs"
- ],
"license": "MIT",
"main": "aws4.js",
"name": "aws4",
@@ -99,7 +47,7 @@
},
"scripts": {
"integration": "node ./test/slow.js",
- "test": "mocha ./test/fast.js -b -t 100s -R list"
+ "test": "mocha ./test/fast.js -R list"
},
- "version": "1.9.1"
+ "version": "1.10.0"
}
diff --git a/node_modules/cliui/CHANGELOG.md b/node_modules/cliui/CHANGELOG.md
index ef6a35e..37f259a 100644
--- a/node_modules/cliui/CHANGELOG.md
+++ b/node_modules/cliui/CHANGELOG.md
@@ -2,6 +2,56 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+# [5.0.0](https://github.com/yargs/cliui/compare/v4.1.0...v5.0.0) (2019-04-10)
+
+
+### Bug Fixes
+
+* Update wrap-ansi to fix compatibility with latest versions of chalk. ([#60](https://github.com/yargs/cliui/issues/60)) ([7bf79ae](https://github.com/yargs/cliui/commit/7bf79ae))
+
+
+### BREAKING CHANGES
+
+* Drop support for node < 6.
+
+
+
+<a name="4.1.0"></a>
+# [4.1.0](https://github.com/yargs/cliui/compare/v4.0.0...v4.1.0) (2018-04-23)
+
+
+### Features
+
+* add resetOutput method ([#57](https://github.com/yargs/cliui/issues/57)) ([7246902](https://github.com/yargs/cliui/commit/7246902))
+
+
+
+<a name="4.0.0"></a>
+# [4.0.0](https://github.com/yargs/cliui/compare/v3.2.0...v4.0.0) (2017-12-18)
+
+
+### Bug Fixes
+
+* downgrades strip-ansi to version 3.0.1 ([#54](https://github.com/yargs/cliui/issues/54)) ([5764c46](https://github.com/yargs/cliui/commit/5764c46))
+* set env variable FORCE_COLOR. ([#56](https://github.com/yargs/cliui/issues/56)) ([7350e36](https://github.com/yargs/cliui/commit/7350e36))
+
+
+### Chores
+
+* drop support for node < 4 ([#53](https://github.com/yargs/cliui/issues/53)) ([b105376](https://github.com/yargs/cliui/commit/b105376))
+
+
+### Features
+
+* add fallback for window width ([#45](https://github.com/yargs/cliui/issues/45)) ([d064922](https://github.com/yargs/cliui/commit/d064922))
+
+
+### BREAKING CHANGES
+
+* officially drop support for Node < 4
+
+
+
<a name="3.2.0"></a>
# [3.2.0](https://github.com/yargs/cliui/compare/v3.1.2...v3.2.0) (2016-04-11)
diff --git a/node_modules/cliui/README.md b/node_modules/cliui/README.md
index 028392c..deacfa0 100644
--- a/node_modules/cliui/README.md
+++ b/node_modules/cliui/README.md
@@ -10,9 +10,7 @@ easily create complex multi-column command-line-interfaces.
## Example
```js
-var ui = require('cliui')({
- width: 80
-})
+var ui = require('cliui')()
ui.div('Usage: $0 [command] [options]')
@@ -48,7 +46,7 @@ console.log(ui.toString())
cliui exposes a simple layout DSL:
-If you create a single `ui.row`, passing a string rather than an
+If you create a single `ui.div`, passing a string rather than an
object:
* `\n`: characters will be interpreted as new rows.
@@ -88,6 +86,7 @@ cliui = require('cliui')
### cliui({width: integer})
Specify the maximum width of the UI being generated.
+If no width is provided, cliui will try to get the current window's width and use it, and if that doesn't work, width will be set to `80`.
### cliui({wrap: boolean})
@@ -99,6 +98,7 @@ Create a row with any number of columns, a column
can either be a string, or an object with the following
options:
+* **text:** some text to place in the column.
* **width:** the width of a column.
* **align:** alignment, `right` or `center`.
* **padding:** `[top, right, bottom, left]`.
@@ -108,3 +108,8 @@ options:
Similar to `div`, except the next row will be appended without
a new line being created.
+
+### cliui.resetOutput()
+
+Resets the UI elements of the current cliui instance, maintaining the values
+set for `width` and `wrap`.
diff --git a/node_modules/cliui/index.js b/node_modules/cliui/index.js
index e501e78..b42d982 100644
--- a/node_modules/cliui/index.js
+++ b/node_modules/cliui/index.js
@@ -21,6 +21,10 @@ UI.prototype.span = function () {
cols.span = true
}
+UI.prototype.resetOutput = function () {
+ this.rows = []
+}
+
UI.prototype.div = function () {
if (arguments.length === 0) this.div('')
if (this.wrap && this._shouldApplyLayoutDSL.apply(this, arguments)) {
@@ -209,7 +213,7 @@ UI.prototype._rasterize = function (row) {
row.forEach(function (col, c) {
// leave room for left and right padding.
col.width = widths[c]
- if (_this.wrap) wrapped = wrap(col.text, _this._negatePadding(col), {hard: true}).split('\n')
+ if (_this.wrap) wrapped = wrap(col.text, _this._negatePadding(col), { hard: true }).split('\n')
else wrapped = col.text.split('\n')
if (col.border) {
@@ -282,6 +286,10 @@ function _minWidth (col) {
return minWidth
}
+function getWindowWidth () {
+ if (typeof process === 'object' && process.stdout && process.stdout.columns) return process.stdout.columns
+}
+
function alignRight (str, width) {
str = str.trim()
var padding = ''
@@ -310,7 +318,7 @@ module.exports = function (opts) {
opts = opts || {}
return new UI({
- width: (opts || {}).width || 80,
+ width: (opts || {}).width || getWindowWidth() || 80,
wrap: typeof opts.wrap === 'boolean' ? opts.wrap : true
})
}
diff --git a/node_modules/cliui/node_modules/ansi-regex/index.js b/node_modules/cliui/node_modules/ansi-regex/index.js
new file mode 100644
index 0000000..c254480
--- /dev/null
+++ b/node_modules/cliui/node_modules/ansi-regex/index.js
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = options => {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+
+ const pattern = [
+ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
+ '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
+ ].join('|');
+
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
diff --git a/node_modules/cliui/node_modules/ansi-regex/license b/node_modules/cliui/node_modules/ansi-regex/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/cliui/node_modules/ansi-regex/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/cliui/node_modules/ansi-regex/package.json b/node_modules/cliui/node_modules/ansi-regex/package.json
new file mode 100644
index 0000000..8a3a685
--- /dev/null
+++ b/node_modules/cliui/node_modules/ansi-regex/package.json
@@ -0,0 +1,85 @@
+{
+ "_from": "ansi-regex@^4.1.0",
+ "_id": "ansi-regex@4.1.0",
+ "_inBundle": false,
+ "_integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "_location": "/cliui/ansi-regex",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "ansi-regex@^4.1.0",
+ "name": "ansi-regex",
+ "escapedName": "ansi-regex",
+ "rawSpec": "^4.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^4.1.0"
+ },
+ "_requiredBy": [
+ "/cliui/strip-ansi"
+ ],
+ "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "_shasum": "8b9f8f08cf1acb843756a839ca8c7e3168c51997",
+ "_spec": "ansi-regex@^4.1.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/cliui/node_modules/strip-ansi",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Regular expression for matching ANSI escape codes",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/ansi-regex#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "text",
+ "regex",
+ "regexp",
+ "re",
+ "match",
+ "test",
+ "find",
+ "pattern"
+ ],
+ "license": "MIT",
+ "name": "ansi-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-regex.git"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "view-supported": "node fixtures/view-codes.js"
+ },
+ "version": "4.1.0"
+}
diff --git a/node_modules/cliui/node_modules/ansi-regex/readme.md b/node_modules/cliui/node_modules/ansi-regex/readme.md
new file mode 100644
index 0000000..d19c446
--- /dev/null
+++ b/node_modules/cliui/node_modules/ansi-regex/readme.md
@@ -0,0 +1,87 @@
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
+
+> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&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>
+
+---
+
+
+## Install
+
+```
+$ npm install ansi-regex
+```
+
+
+## Usage
+
+```js
+const ansiRegex = require('ansi-regex');
+
+ansiRegex().test('\u001B[4mcake\u001B[0m');
+//=> true
+
+ansiRegex().test('cake');
+//=> false
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex());
+//=> ['\u001B[4m', '\u001B[0m']
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
+//=> ['\u001B[4m']
+
+'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
+//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
+```
+
+
+## API
+
+### ansiRegex([options])
+
+Returns a regex for matching ANSI escape codes.
+
+#### options
+
+##### onlyFirst
+
+Type: `boolean`<br>
+Default: `false` *(Matches any ANSI escape codes in a string)*
+
+Match only the first ANSI escape.
+
+
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/cliui/node_modules/is-fullwidth-code-point/index.js b/node_modules/cliui/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 0000000..d506327
--- /dev/null
+++ b/node_modules/cliui/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/lcid/license b/node_modules/cliui/node_modules/is-fullwidth-code-point/license
index 654d0bf..654d0bf 100644
--- a/node_modules/lcid/license
+++ b/node_modules/cliui/node_modules/is-fullwidth-code-point/license
diff --git a/node_modules/cliui/node_modules/is-fullwidth-code-point/package.json b/node_modules/cliui/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 0000000..bcf38fa
--- /dev/null
+++ b/node_modules/cliui/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,77 @@
+{
+ "_from": "is-fullwidth-code-point@^2.0.0",
+ "_id": "is-fullwidth-code-point@2.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "_location": "/cliui/is-fullwidth-code-point",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "is-fullwidth-code-point@^2.0.0",
+ "name": "is-fullwidth-code-point",
+ "escapedName": "is-fullwidth-code-point",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/cliui/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "_shasum": "a3b30a5c4f199183167aaab93beefae3ddfb654f",
+ "_spec": "is-fullwidth-code-point@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/cliui/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "name": "is-fullwidth-code-point",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/cliui/node_modules/is-fullwidth-code-point/readme.md b/node_modules/cliui/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 0000000..093b028
--- /dev/null
+++ b/node_modules/cliui/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/cliui/node_modules/string-width/index.js b/node_modules/cliui/node_modules/string-width/index.js
new file mode 100644
index 0000000..33c9d6c
--- /dev/null
+++ b/node_modules/cliui/node_modules/string-width/index.js
@@ -0,0 +1,39 @@
+'use strict';
+const stripAnsi = require('strip-ansi');
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+const emojiRegex = require('emoji-regex')();
+
+module.exports = input => {
+ input = input.replace(emojiRegex, ' ');
+
+ if (typeof input !== 'string' || input.length === 0) {
+ return 0;
+ }
+
+ input = stripAnsi(input);
+
+ let width = 0;
+
+ for (let i = 0; i < input.length; i++) {
+ const code = input.codePointAt(i);
+
+ // Ignore control characters
+ if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
+ continue;
+ }
+
+ // Ignore combining characters
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ }
+
+ // Surrogates
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint(code) ? 2 : 1;
+ }
+
+ return width;
+};
diff --git a/node_modules/cliui/node_modules/string-width/license b/node_modules/cliui/node_modules/string-width/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/cliui/node_modules/string-width/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/cliui/node_modules/string-width/package.json b/node_modules/cliui/node_modules/string-width/package.json
new file mode 100644
index 0000000..190b18b
--- /dev/null
+++ b/node_modules/cliui/node_modules/string-width/package.json
@@ -0,0 +1,88 @@
+{
+ "_from": "string-width@^3.1.0",
+ "_id": "string-width@3.1.0",
+ "_inBundle": false,
+ "_integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "_location": "/cliui/string-width",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "string-width@^3.1.0",
+ "name": "string-width",
+ "escapedName": "string-width",
+ "rawSpec": "^3.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.1.0"
+ },
+ "_requiredBy": [
+ "/cliui"
+ ],
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "_shasum": "22767be21b62af1081574306f69ac51b62203961",
+ "_spec": "string-width@^3.1.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/cliui",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "deprecated": false,
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "^1.0.1",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "name": "string-width",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.1.0"
+}
diff --git a/node_modules/cliui/node_modules/string-width/readme.md b/node_modules/cliui/node_modules/string-width/readme.md
new file mode 100644
index 0000000..d39d95f
--- /dev/null
+++ b/node_modules/cliui/node_modules/string-width/readme.md
@@ -0,0 +1,45 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+
+stringWidth('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+// => 5
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/cliui/node_modules/strip-ansi/index.d.ts b/node_modules/cliui/node_modules/strip-ansi/index.d.ts
new file mode 100644
index 0000000..44e954d
--- /dev/null
+++ b/node_modules/cliui/node_modules/strip-ansi/index.d.ts
@@ -0,0 +1,15 @@
+/**
+Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
+
+@example
+```
+import stripAnsi from 'strip-ansi';
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+*/
+export default function stripAnsi(string: string): string;
diff --git a/node_modules/cliui/node_modules/strip-ansi/index.js b/node_modules/cliui/node_modules/strip-ansi/index.js
new file mode 100644
index 0000000..9788c96
--- /dev/null
+++ b/node_modules/cliui/node_modules/strip-ansi/index.js
@@ -0,0 +1,7 @@
+'use strict';
+const ansiRegex = require('ansi-regex');
+
+const stripAnsi = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+
+module.exports = stripAnsi;
+module.exports.default = stripAnsi;
diff --git a/node_modules/cliui/node_modules/strip-ansi/license b/node_modules/cliui/node_modules/strip-ansi/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/cliui/node_modules/strip-ansi/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/cliui/node_modules/strip-ansi/package.json b/node_modules/cliui/node_modules/strip-ansi/package.json
new file mode 100644
index 0000000..3c9a541
--- /dev/null
+++ b/node_modules/cliui/node_modules/strip-ansi/package.json
@@ -0,0 +1,87 @@
+{
+ "_from": "strip-ansi@^5.2.0",
+ "_id": "strip-ansi@5.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "_location": "/cliui/strip-ansi",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "strip-ansi@^5.2.0",
+ "name": "strip-ansi",
+ "escapedName": "strip-ansi",
+ "rawSpec": "^5.2.0",
+ "saveSpec": null,
+ "fetchSpec": "^5.2.0"
+ },
+ "_requiredBy": [
+ "/cliui",
+ "/cliui/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "_shasum": "8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae",
+ "_spec": "strip-ansi@^5.2.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/cliui",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/strip-ansi/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "deprecated": false,
+ "description": "Strip ANSI escape codes from a string",
+ "devDependencies": {
+ "ava": "^1.3.1",
+ "tsd-check": "^0.5.0",
+ "xo": "^0.24.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "homepage": "https://github.com/chalk/strip-ansi#readme",
+ "keywords": [
+ "strip",
+ "trim",
+ "remove",
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "name": "strip-ansi",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/strip-ansi.git"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd-check"
+ },
+ "version": "5.2.0"
+}
diff --git a/node_modules/cliui/node_modules/strip-ansi/readme.md b/node_modules/cliui/node_modules/strip-ansi/readme.md
new file mode 100644
index 0000000..8681fe8
--- /dev/null
+++ b/node_modules/cliui/node_modules/strip-ansi/readme.md
@@ -0,0 +1,61 @@
+# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
+
+> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=readme">Get professional support for 'strip-ansi' 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>
+
+---
+
+## Install
+
+```
+$ npm install strip-ansi
+```
+
+
+## Usage
+
+```js
+const stripAnsi = require('strip-ansi');
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Related
+
+- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/cliui/package.json b/node_modules/cliui/package.json
index 7d2c56f..a04a9e5 100644
--- a/node_modules/cliui/package.json
+++ b/node_modules/cliui/package.json
@@ -1,27 +1,29 @@
{
- "_from": "cliui@^3.2.0",
- "_id": "cliui@3.2.0",
+ "_from": "cliui@^5.0.0",
+ "_id": "cliui@5.0.0",
"_inBundle": false,
- "_integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "_integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"_location": "/cliui",
- "_phantomChildren": {},
+ "_phantomChildren": {
+ "emoji-regex": "7.0.3"
+ },
"_requested": {
"type": "range",
"registry": true,
- "raw": "cliui@^3.2.0",
+ "raw": "cliui@^5.0.0",
"name": "cliui",
"escapedName": "cliui",
- "rawSpec": "^3.2.0",
+ "rawSpec": "^5.0.0",
"saveSpec": null,
- "fetchSpec": "^3.2.0"
+ "fetchSpec": "^5.0.0"
},
"_requiredBy": [
"/yargs"
],
- "_resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "_shasum": "120601537a916d29940f934da3b48d585a39213d",
- "_spec": "cliui@^3.2.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
+ "_resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "_shasum": "deefcfdb2e800784aa34f46fa08e06851c7bbbc5",
+ "_spec": "cliui@^5.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
"author": {
"name": "Ben Coe",
"email": "ben@npmjs.com"
@@ -43,20 +45,23 @@
}
},
"dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
},
"deprecated": false,
"description": "easily create complex multi-column command-line-interfaces",
"devDependencies": {
- "chai": "^3.5.0",
- "chalk": "^1.1.2",
- "coveralls": "^2.11.8",
- "mocha": "^2.4.5",
- "nyc": "^6.4.0",
- "standard": "^6.0.8",
- "standard-version": "^2.1.2"
+ "chai": "^4.2.0",
+ "chalk": "^2.4.2",
+ "coveralls": "^3.0.3",
+ "mocha": "^6.0.2",
+ "nyc": "^13.3.0",
+ "standard": "^12.0.1",
+ "standard-version": "^5.0.2"
+ },
+ "engine": {
+ "node": ">=6"
},
"files": [
"index.js"
@@ -81,8 +86,8 @@
"scripts": {
"coverage": "nyc --reporter=text-lcov mocha | coveralls",
"pretest": "standard",
- "test": "nyc mocha",
- "version": "standard-version"
+ "release": "standard-version",
+ "test": "nyc mocha"
},
"standard": {
"ignore": [
@@ -92,5 +97,5 @@
"it"
]
},
- "version": "3.2.0"
+ "version": "5.0.0"
}
diff --git a/node_modules/color-convert/CHANGELOG.md b/node_modules/color-convert/CHANGELOG.md
new file mode 100644
index 0000000..0a7bce4
--- /dev/null
+++ b/node_modules/color-convert/CHANGELOG.md
@@ -0,0 +1,54 @@
+# 1.0.0 - 2016-01-07
+
+- Removed: unused speed test
+- Added: Automatic routing between previously unsupported conversions
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Removed: `xxx2xxx()` and `xxx2xxxRaw()` functions
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Removed: `convert()` class
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Changed: all functions to lookup dictionary
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Changed: `ansi` to `ansi256`
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Fixed: argument grouping for functions requiring only one argument
+([#27](https://github.com/Qix-/color-convert/pull/27))
+
+# 0.6.0 - 2015-07-23
+
+- Added: methods to handle
+[ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) 16/256 colors:
+ - rgb2ansi16
+ - rgb2ansi
+ - hsl2ansi16
+ - hsl2ansi
+ - hsv2ansi16
+ - hsv2ansi
+ - hwb2ansi16
+ - hwb2ansi
+ - cmyk2ansi16
+ - cmyk2ansi
+ - keyword2ansi16
+ - keyword2ansi
+ - ansi162rgb
+ - ansi162hsl
+ - ansi162hsv
+ - ansi162hwb
+ - ansi162cmyk
+ - ansi162keyword
+ - ansi2rgb
+ - ansi2hsl
+ - ansi2hsv
+ - ansi2hwb
+ - ansi2cmyk
+ - ansi2keyword
+([#18](https://github.com/harthur/color-convert/pull/18))
+
+# 0.5.3 - 2015-06-02
+
+- Fixed: hsl2hsv does not return `NaN` anymore when using `[0,0,0]`
+([#15](https://github.com/harthur/color-convert/issues/15))
+
+---
+
+Check out commit logs for older releases
diff --git a/node_modules/color-convert/LICENSE b/node_modules/color-convert/LICENSE
new file mode 100644
index 0000000..5b4c386
--- /dev/null
+++ b/node_modules/color-convert/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.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/color-convert/README.md b/node_modules/color-convert/README.md
new file mode 100644
index 0000000..d4b08fc
--- /dev/null
+++ b/node_modules/color-convert/README.md
@@ -0,0 +1,68 @@
+# color-convert
+
+[![Build Status](https://travis-ci.org/Qix-/color-convert.svg?branch=master)](https://travis-ci.org/Qix-/color-convert)
+
+Color-convert is a color conversion library for JavaScript and node.
+It converts all ways between `rgb`, `hsl`, `hsv`, `hwb`, `cmyk`, `ansi`, `ansi16`, `hex` strings, and CSS `keyword`s (will round to closest):
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hsl(140, 200, 100); // [96, 48, 59]
+convert.keyword.rgb('blue'); // [0, 0, 255]
+
+var rgbChannels = convert.rgb.channels; // 3
+var cmykChannels = convert.cmyk.channels; // 4
+var ansiChannels = convert.ansi16.channels; // 1
+```
+
+# Install
+
+```console
+$ npm install color-convert
+```
+
+# API
+
+Simply get the property of the _from_ and _to_ conversion that you're looking for.
+
+All functions have a rounded and unrounded variant. By default, return values are rounded. To get the unrounded (raw) results, simply tack on `.raw` to the function.
+
+All 'from' functions have a hidden property called `.channels` that indicates the number of channels the function expects (not including alpha).
+
+```js
+var convert = require('color-convert');
+
+// Hex to LAB
+convert.hex.lab('DEADBF'); // [ 76, 21, -2 ]
+convert.hex.lab.raw('DEADBF'); // [ 75.56213190997677, 20.653827952644754, -2.290532499330533 ]
+
+// RGB to CMYK
+convert.rgb.cmyk(167, 255, 4); // [ 35, 0, 98, 0 ]
+convert.rgb.cmyk.raw(167, 255, 4); // [ 34.509803921568626, 0, 98.43137254901961, 0 ]
+```
+
+### Arrays
+All functions that accept multiple arguments also support passing an array.
+
+Note that this does **not** apply to functions that convert from a color that only requires one value (e.g. `keyword`, `ansi256`, `hex`, etc.)
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hex(123, 45, 67); // '7B2D43'
+convert.rgb.hex([123, 45, 67]); // '7B2D43'
+```
+
+## Routing
+
+Conversions that don't have an _explicitly_ defined conversion (in [conversions.js](conversions.js)), but can be converted by means of sub-conversions (e.g. XYZ -> **RGB** -> CMYK), are automatically routed together. This allows just about any color model supported by `color-convert` to be converted to any other model, so long as a sub-conversion path exists. This is also true for conversions requiring more than one step in between (e.g. LCH -> **LAB** -> **XYZ** -> **RGB** -> Hex).
+
+Keep in mind that extensive conversions _may_ result in a loss of precision, and exist only to be complete. For a list of "direct" (single-step) conversions, see [conversions.js](conversions.js).
+
+# Contribute
+
+If there is a new model you would like to support, or want to add a direct conversion between two existing models, please send us a pull request.
+
+# License
+Copyright &copy; 2011-2016, Heather Arthur and Josh Junon. Licensed under the [MIT License](LICENSE).
diff --git a/node_modules/color-convert/conversions.js b/node_modules/color-convert/conversions.js
new file mode 100644
index 0000000..3217200
--- /dev/null
+++ b/node_modules/color-convert/conversions.js
@@ -0,0 +1,868 @@
+/* MIT license */
+var cssKeywords = require('color-name');
+
+// NOTE: conversions should only return primitive values (i.e. arrays, or
+// values that give correct `typeof` results).
+// do not use box values types (i.e. Number(), String(), etc.)
+
+var reverseKeywords = {};
+for (var key in cssKeywords) {
+ if (cssKeywords.hasOwnProperty(key)) {
+ reverseKeywords[cssKeywords[key]] = key;
+ }
+}
+
+var convert = module.exports = {
+ rgb: {channels: 3, labels: 'rgb'},
+ hsl: {channels: 3, labels: 'hsl'},
+ hsv: {channels: 3, labels: 'hsv'},
+ hwb: {channels: 3, labels: 'hwb'},
+ cmyk: {channels: 4, labels: 'cmyk'},
+ xyz: {channels: 3, labels: 'xyz'},
+ lab: {channels: 3, labels: 'lab'},
+ lch: {channels: 3, labels: 'lch'},
+ hex: {channels: 1, labels: ['hex']},
+ keyword: {channels: 1, labels: ['keyword']},
+ ansi16: {channels: 1, labels: ['ansi16']},
+ ansi256: {channels: 1, labels: ['ansi256']},
+ hcg: {channels: 3, labels: ['h', 'c', 'g']},
+ apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
+ gray: {channels: 1, labels: ['gray']}
+};
+
+// hide .channels and .labels properties
+for (var model in convert) {
+ if (convert.hasOwnProperty(model)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ var channels = convert[model].channels;
+ var labels = convert[model].labels;
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {value: channels});
+ Object.defineProperty(convert[model], 'labels', {value: labels});
+ }
+}
+
+convert.rgb.hsl = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var l;
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
+};
+
+convert.rgb.hsv = function (rgb) {
+ var rdif;
+ var gdif;
+ var bdif;
+ var h;
+ var s;
+
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var v = Math.max(r, g, b);
+ var diff = v - Math.min(r, g, b);
+ var diffc = function (c) {
+ return (v - c) / 6 / diff + 1 / 2;
+ };
+
+ if (diff === 0) {
+ h = s = 0;
+ } else {
+ s = diff / v;
+ rdif = diffc(r);
+ gdif = diffc(g);
+ bdif = diffc(b);
+
+ if (r === v) {
+ h = bdif - gdif;
+ } else if (g === v) {
+ h = (1 / 3) + rdif - bdif;
+ } else if (b === v) {
+ h = (2 / 3) + gdif - rdif;
+ }
+ if (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ }
+
+ return [
+ h * 360,
+ s * 100,
+ v * 100
+ ];
+};
+
+convert.rgb.hwb = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var h = convert.rgb.hsl(rgb)[0];
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
+
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+
+ return [h, w * 100, b * 100];
+};
+
+convert.rgb.cmyk = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var c;
+ var m;
+ var y;
+ var k;
+
+ k = Math.min(1 - r, 1 - g, 1 - b);
+ c = (1 - r - k) / (1 - k) || 0;
+ m = (1 - g - k) / (1 - k) || 0;
+ y = (1 - b - k) / (1 - k) || 0;
+
+ return [c * 100, m * 100, y * 100, k * 100];
+};
+
+/**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+function comparativeDistance(x, y) {
+ return (
+ Math.pow(x[0] - y[0], 2) +
+ Math.pow(x[1] - y[1], 2) +
+ Math.pow(x[2] - y[2], 2)
+ );
+}
+
+convert.rgb.keyword = function (rgb) {
+ var reversed = reverseKeywords[rgb];
+ if (reversed) {
+ return reversed;
+ }
+
+ var currentClosestDistance = Infinity;
+ var currentClosestKeyword;
+
+ for (var keyword in cssKeywords) {
+ if (cssKeywords.hasOwnProperty(keyword)) {
+ var value = cssKeywords[keyword];
+
+ // Compute comparative distance
+ var distance = comparativeDistance(rgb, value);
+
+ // Check if its less, if so set as closest
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ }
+
+ return currentClosestKeyword;
+};
+
+convert.keyword.rgb = function (keyword) {
+ return cssKeywords[keyword];
+};
+
+convert.rgb.xyz = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+
+ // assume sRGB
+ r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
+ g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
+ b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
+
+ var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+ var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+ var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+
+ return [x * 100, y * 100, z * 100];
+};
+
+convert.rgb.lab = function (rgb) {
+ var xyz = convert.rgb.xyz(rgb);
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+ l = (116 * y) - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+
+ return [l, a, b];
+};
+
+convert.hsl.rgb = function (hsl) {
+ var h = hsl[0] / 360;
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var t1;
+ var t2;
+ var t3;
+ var rgb;
+ var val;
+
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+
+ t1 = 2 * l - t2;
+
+ rgb = [0, 0, 0];
+ for (var i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+ if (t3 < 0) {
+ t3++;
+ }
+ if (t3 > 1) {
+ t3--;
+ }
+
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+
+ rgb[i] = val * 255;
+ }
+
+ return rgb;
+};
+
+convert.hsl.hsv = function (hsl) {
+ var h = hsl[0];
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var smin = s;
+ var lmin = Math.max(l, 0.01);
+ var sv;
+ var v;
+
+ l *= 2;
+ s *= (l <= 1) ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (l + s) / 2;
+ sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
+
+ return [h, sv * 100, v * 100];
+};
+
+convert.hsv.rgb = function (hsv) {
+ var h = hsv[0] / 60;
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var hi = Math.floor(h) % 6;
+
+ var f = h - Math.floor(h);
+ var p = 255 * v * (1 - s);
+ var q = 255 * v * (1 - (s * f));
+ var t = 255 * v * (1 - (s * (1 - f)));
+ v *= 255;
+
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+ case 1:
+ return [q, v, p];
+ case 2:
+ return [p, v, t];
+ case 3:
+ return [p, q, v];
+ case 4:
+ return [t, p, v];
+ case 5:
+ return [v, p, q];
+ }
+};
+
+convert.hsv.hsl = function (hsv) {
+ var h = hsv[0];
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var vmin = Math.max(v, 0.01);
+ var lmin;
+ var sl;
+ var l;
+
+ l = (2 - s) * v;
+ lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= (lmin <= 1) ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+
+ return [h, sl * 100, l * 100];
+};
+
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+convert.hwb.rgb = function (hwb) {
+ var h = hwb[0] / 360;
+ var wh = hwb[1] / 100;
+ var bl = hwb[2] / 100;
+ var ratio = wh + bl;
+ var i;
+ var v;
+ var f;
+ var n;
+
+ // wh + bl cant be > 1
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+
+ i = Math.floor(6 * h);
+ v = 1 - bl;
+ f = 6 * h - i;
+
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
+
+ n = wh + f * (v - wh); // linear interpolation
+
+ var r;
+ var g;
+ var b;
+ switch (i) {
+ default:
+ case 6:
+ case 0: r = v; g = n; b = wh; break;
+ case 1: r = n; g = v; b = wh; break;
+ case 2: r = wh; g = v; b = n; break;
+ case 3: r = wh; g = n; b = v; break;
+ case 4: r = n; g = wh; b = v; break;
+ case 5: r = v; g = wh; b = n; break;
+ }
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.cmyk.rgb = function (cmyk) {
+ var c = cmyk[0] / 100;
+ var m = cmyk[1] / 100;
+ var y = cmyk[2] / 100;
+ var k = cmyk[3] / 100;
+ var r;
+ var g;
+ var b;
+
+ r = 1 - Math.min(1, c * (1 - k) + k);
+ g = 1 - Math.min(1, m * (1 - k) + k);
+ b = 1 - Math.min(1, y * (1 - k) + k);
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.rgb = function (xyz) {
+ var x = xyz[0] / 100;
+ var y = xyz[1] / 100;
+ var z = xyz[2] / 100;
+ var r;
+ var g;
+ var b;
+
+ r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+ g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+ b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
+
+ // assume sRGB
+ r = r > 0.0031308
+ ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
+ : r * 12.92;
+
+ g = g > 0.0031308
+ ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
+ : g * 12.92;
+
+ b = b > 0.0031308
+ ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
+ : b * 12.92;
+
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.lab = function (xyz) {
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+ l = (116 * y) - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+
+ return [l, a, b];
+};
+
+convert.lab.xyz = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var x;
+ var y;
+ var z;
+
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+
+ var y2 = Math.pow(y, 3);
+ var x2 = Math.pow(x, 3);
+ var z2 = Math.pow(z, 3);
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+
+ return [x, y, z];
+};
+
+convert.lab.lch = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var hr;
+ var h;
+ var c;
+
+ hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ c = Math.sqrt(a * a + b * b);
+
+ return [l, c, h];
+};
+
+convert.lch.lab = function (lch) {
+ var l = lch[0];
+ var c = lch[1];
+ var h = lch[2];
+ var a;
+ var b;
+ var hr;
+
+ hr = h / 360 * 2 * Math.PI;
+ a = c * Math.cos(hr);
+ b = c * Math.sin(hr);
+
+ return [l, a, b];
+};
+
+convert.rgb.ansi16 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+ var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+
+ value = Math.round(value / 50);
+
+ if (value === 0) {
+ return 30;
+ }
+
+ var ansi = 30
+ + ((Math.round(b / 255) << 2)
+ | (Math.round(g / 255) << 1)
+ | Math.round(r / 255));
+
+ if (value === 2) {
+ ansi += 60;
+ }
+
+ return ansi;
+};
+
+convert.hsv.ansi16 = function (args) {
+ // optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+};
+
+convert.rgb.ansi256 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+
+ // we use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+
+ if (r > 248) {
+ return 231;
+ }
+
+ return Math.round(((r - 8) / 247) * 24) + 232;
+ }
+
+ var ansi = 16
+ + (36 * Math.round(r / 255 * 5))
+ + (6 * Math.round(g / 255 * 5))
+ + Math.round(b / 255 * 5);
+
+ return ansi;
+};
+
+convert.ansi16.rgb = function (args) {
+ var color = args % 10;
+
+ // handle greyscale
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+
+ color = color / 10.5 * 255;
+
+ return [color, color, color];
+ }
+
+ var mult = (~~(args > 50) + 1) * 0.5;
+ var r = ((color & 1) * mult) * 255;
+ var g = (((color >> 1) & 1) * mult) * 255;
+ var b = (((color >> 2) & 1) * mult) * 255;
+
+ return [r, g, b];
+};
+
+convert.ansi256.rgb = function (args) {
+ // handle greyscale
+ if (args >= 232) {
+ var c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+
+ args -= 16;
+
+ var rem;
+ var r = Math.floor(args / 36) / 5 * 255;
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ var b = (rem % 6) / 5 * 255;
+
+ return [r, g, b];
+};
+
+convert.rgb.hex = function (args) {
+ var integer = ((Math.round(args[0]) & 0xFF) << 16)
+ + ((Math.round(args[1]) & 0xFF) << 8)
+ + (Math.round(args[2]) & 0xFF);
+
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.hex.rgb = function (args) {
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+ if (!match) {
+ return [0, 0, 0];
+ }
+
+ var colorString = match[0];
+
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(function (char) {
+ return char + char;
+ }).join('');
+ }
+
+ var integer = parseInt(colorString, 16);
+ var r = (integer >> 16) & 0xFF;
+ var g = (integer >> 8) & 0xFF;
+ var b = integer & 0xFF;
+
+ return [r, g, b];
+};
+
+convert.rgb.hcg = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var max = Math.max(Math.max(r, g), b);
+ var min = Math.min(Math.min(r, g), b);
+ var chroma = (max - min);
+ var grayscale;
+ var hue;
+
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+
+ if (chroma <= 0) {
+ hue = 0;
+ } else
+ if (max === r) {
+ hue = ((g - b) / chroma) % 6;
+ } else
+ if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma + 4;
+ }
+
+ hue /= 6;
+ hue %= 1;
+
+ return [hue * 360, chroma * 100, grayscale * 100];
+};
+
+convert.hsl.hcg = function (hsl) {
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var c = 1;
+ var f = 0;
+
+ if (l < 0.5) {
+ c = 2.0 * s * l;
+ } else {
+ c = 2.0 * s * (1.0 - l);
+ }
+
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
+
+ return [hsl[0], c * 100, f * 100];
+};
+
+convert.hsv.hcg = function (hsv) {
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+
+ var c = s * v;
+ var f = 0;
+
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
+};
+
+convert.hcg.rgb = function (hcg) {
+ var h = hcg[0] / 360;
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
+
+ var pure = [0, 0, 0];
+ var hi = (h % 1) * 6;
+ var v = hi % 1;
+ var w = 1 - v;
+ var mg = 0;
+
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1; pure[1] = v; pure[2] = 0; break;
+ case 1:
+ pure[0] = w; pure[1] = 1; pure[2] = 0; break;
+ case 2:
+ pure[0] = 0; pure[1] = 1; pure[2] = v; break;
+ case 3:
+ pure[0] = 0; pure[1] = w; pure[2] = 1; break;
+ case 4:
+ pure[0] = v; pure[1] = 0; pure[2] = 1; break;
+ default:
+ pure[0] = 1; pure[1] = 0; pure[2] = w;
+ }
+
+ mg = (1.0 - c) * g;
+
+ return [
+ (c * pure[0] + mg) * 255,
+ (c * pure[1] + mg) * 255,
+ (c * pure[2] + mg) * 255
+ ];
+};
+
+convert.hcg.hsv = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ var v = c + g * (1.0 - c);
+ var f = 0;
+
+ if (v > 0.0) {
+ f = c / v;
+ }
+
+ return [hcg[0], f * 100, v * 100];
+};
+
+convert.hcg.hsl = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ var l = g * (1.0 - c) + 0.5 * c;
+ var s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else
+ if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
+};
+
+convert.hcg.hwb = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+};
+
+convert.hwb.hcg = function (hwb) {
+ var w = hwb[1] / 100;
+ var b = hwb[2] / 100;
+ var v = 1 - b;
+ var c = v - w;
+ var g = 0;
+
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
+};
+
+convert.apple.rgb = function (apple) {
+ return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
+};
+
+convert.rgb.apple = function (rgb) {
+ return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
+};
+
+convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+};
+
+convert.gray.hsl = convert.gray.hsv = function (args) {
+ return [0, 0, args[0]];
+};
+
+convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+};
+
+convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+};
+
+convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+};
+
+convert.gray.hex = function (gray) {
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ var integer = (val << 16) + (val << 8) + val;
+
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.rgb.gray = function (rgb) {
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+};
diff --git a/node_modules/color-convert/index.js b/node_modules/color-convert/index.js
new file mode 100644
index 0000000..e65b5d7
--- /dev/null
+++ b/node_modules/color-convert/index.js
@@ -0,0 +1,78 @@
+var conversions = require('./conversions');
+var route = require('./route');
+
+var convert = {};
+
+var models = Object.keys(conversions);
+
+function wrapRaw(fn) {
+ var wrappedFn = function (args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ return fn(args);
+ };
+
+ // preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+function wrapRounded(fn) {
+ var wrappedFn = function (args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ var result = fn(args);
+
+ // we're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+ if (typeof result === 'object') {
+ for (var len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+
+ return result;
+ };
+
+ // preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+models.forEach(function (fromModel) {
+ convert[fromModel] = {};
+
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
+
+ var routes = route(fromModel);
+ var routeModels = Object.keys(routes);
+
+ routeModels.forEach(function (toModel) {
+ var fn = routes[toModel];
+
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
+
+module.exports = convert;
diff --git a/node_modules/color-convert/package.json b/node_modules/color-convert/package.json
new file mode 100644
index 0000000..48c3f06
--- /dev/null
+++ b/node_modules/color-convert/package.json
@@ -0,0 +1,81 @@
+{
+ "_from": "color-convert@^1.9.0",
+ "_id": "color-convert@1.9.3",
+ "_inBundle": false,
+ "_integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "_location": "/color-convert",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "color-convert@^1.9.0",
+ "name": "color-convert",
+ "escapedName": "color-convert",
+ "rawSpec": "^1.9.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.9.0"
+ },
+ "_requiredBy": [
+ "/wrap-ansi/ansi-styles"
+ ],
+ "_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "_shasum": "bb71850690e1f136567de629d2d5471deda4c1e8",
+ "_spec": "color-convert@^1.9.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/wrap-ansi/node_modules/ansi-styles",
+ "author": {
+ "name": "Heather Arthur",
+ "email": "fayearthur@gmail.com"
+ },
+ "bugs": {
+ "url": "https://github.com/Qix-/color-convert/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "color-name": "1.1.3"
+ },
+ "deprecated": false,
+ "description": "Plain color conversion functions",
+ "devDependencies": {
+ "chalk": "1.1.1",
+ "xo": "0.11.2"
+ },
+ "files": [
+ "index.js",
+ "conversions.js",
+ "css-keywords.js",
+ "route.js"
+ ],
+ "homepage": "https://github.com/Qix-/color-convert#readme",
+ "keywords": [
+ "color",
+ "colour",
+ "convert",
+ "converter",
+ "conversion",
+ "rgb",
+ "hsl",
+ "hsv",
+ "hwb",
+ "cmyk",
+ "ansi",
+ "ansi16"
+ ],
+ "license": "MIT",
+ "name": "color-convert",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/Qix-/color-convert.git"
+ },
+ "scripts": {
+ "pretest": "xo",
+ "test": "node test/basic.js"
+ },
+ "version": "1.9.3",
+ "xo": {
+ "rules": {
+ "default-case": 0,
+ "no-inline-comments": 0,
+ "operator-linebreak": 0
+ }
+ }
+}
diff --git a/node_modules/color-convert/route.js b/node_modules/color-convert/route.js
new file mode 100644
index 0000000..0a1fdea
--- /dev/null
+++ b/node_modules/color-convert/route.js
@@ -0,0 +1,97 @@
+var conversions = require('./conversions');
+
+/*
+ this function routes a model to all other models.
+
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+*/
+
+function buildGraph() {
+ var graph = {};
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
+ var models = Object.keys(conversions);
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
+}
+
+// https://en.wikipedia.org/wiki/Breadth-first_search
+function deriveBFS(fromModel) {
+ var graph = buildGraph();
+ var queue = [fromModel]; // unshift -> queue -> pop
+
+ graph[fromModel].distance = 0;
+
+ while (queue.length) {
+ var current = queue.pop();
+ var adjacents = Object.keys(conversions[current]);
+
+ for (var len = adjacents.length, i = 0; i < len; i++) {
+ var adjacent = adjacents[i];
+ var node = graph[adjacent];
+
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+
+ return graph;
+}
+
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
+
+function wrapConversion(toModel, graph) {
+ var path = [graph[toModel].parent, toModel];
+ var fn = conversions[graph[toModel].parent][toModel];
+
+ var cur = graph[toModel].parent;
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+
+ fn.conversion = path;
+ return fn;
+}
+
+module.exports = function (fromModel) {
+ var graph = deriveBFS(fromModel);
+ var conversion = {};
+
+ var models = Object.keys(graph);
+ for (var len = models.length, i = 0; i < len; i++) {
+ var toModel = models[i];
+ var node = graph[toModel];
+
+ if (node.parent === null) {
+ // no possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+
+ return conversion;
+};
+
diff --git a/node_modules/color-name/.eslintrc.json b/node_modules/color-name/.eslintrc.json
new file mode 100644
index 0000000..c50c250
--- /dev/null
+++ b/node_modules/color-name/.eslintrc.json
@@ -0,0 +1,43 @@
+{
+ "env": {
+ "browser": true,
+ "node": true,
+ "commonjs": true,
+ "es6": true
+ },
+ "extends": "eslint:recommended",
+ "rules": {
+ "strict": 2,
+ "indent": 0,
+ "linebreak-style": 0,
+ "quotes": 0,
+ "semi": 0,
+ "no-cond-assign": 1,
+ "no-constant-condition": 1,
+ "no-duplicate-case": 1,
+ "no-empty": 1,
+ "no-ex-assign": 1,
+ "no-extra-boolean-cast": 1,
+ "no-extra-semi": 1,
+ "no-fallthrough": 1,
+ "no-func-assign": 1,
+ "no-global-assign": 1,
+ "no-implicit-globals": 2,
+ "no-inner-declarations": ["error", "functions"],
+ "no-irregular-whitespace": 2,
+ "no-loop-func": 1,
+ "no-multi-str": 1,
+ "no-mixed-spaces-and-tabs": 1,
+ "no-proto": 1,
+ "no-sequences": 1,
+ "no-throw-literal": 1,
+ "no-unmodified-loop-condition": 1,
+ "no-useless-call": 1,
+ "no-void": 1,
+ "no-with": 2,
+ "wrap-iife": 1,
+ "no-redeclare": 1,
+ "no-unused-vars": ["error", { "vars": "all", "args": "none" }],
+ "no-sparse-arrays": 1
+ }
+}
diff --git a/node_modules/color-name/.npmignore b/node_modules/color-name/.npmignore
new file mode 100644
index 0000000..f9f2816
--- /dev/null
+++ b/node_modules/color-name/.npmignore
@@ -0,0 +1,107 @@
+//this will affect all the git repos
+git config --global core.excludesfile ~/.gitignore
+
+
+//update files since .ignore won't if already tracked
+git rm --cached <file>
+
+# Compiled source #
+###################
+*.com
+*.class
+*.dll
+*.exe
+*.o
+*.so
+
+# Packages #
+############
+# it's better to unpack these files and commit the raw source
+# git has its own built in compression methods
+*.7z
+*.dmg
+*.gz
+*.iso
+*.jar
+*.rar
+*.tar
+*.zip
+
+# Logs and databases #
+######################
+*.log
+*.sql
+*.sqlite
+
+# OS generated files #
+######################
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+# Icon?
+ehthumbs.db
+Thumbs.db
+.cache
+.project
+.settings
+.tmproj
+*.esproj
+nbproject
+
+# Numerous always-ignore extensions #
+#####################################
+*.diff
+*.err
+*.orig
+*.rej
+*.swn
+*.swo
+*.swp
+*.vi
+*~
+*.sass-cache
+*.grunt
+*.tmp
+
+# Dreamweaver added files #
+###########################
+_notes
+dwsync.xml
+
+# Komodo #
+###########################
+*.komodoproject
+.komodotools
+
+# Node #
+#####################
+node_modules
+
+# Bower #
+#####################
+bower_components
+
+# Folders to ignore #
+#####################
+.hg
+.svn
+.CVS
+intermediate
+publish
+.idea
+.graphics
+_test
+_archive
+uploads
+tmp
+
+# Vim files to ignore #
+#######################
+.VimballRecord
+.netrwhist
+
+bundle.*
+
+_demo \ No newline at end of file
diff --git a/node_modules/color-name/LICENSE b/node_modules/color-name/LICENSE
new file mode 100644
index 0000000..c6b1001
--- /dev/null
+++ b/node_modules/color-name/LICENSE
@@ -0,0 +1,8 @@
+The MIT License (MIT)
+Copyright (c) 2015 Dmitry Ivanov
+
+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. \ No newline at end of file
diff --git a/node_modules/color-name/README.md b/node_modules/color-name/README.md
new file mode 100644
index 0000000..932b979
--- /dev/null
+++ b/node_modules/color-name/README.md
@@ -0,0 +1,11 @@
+A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
+
+[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/)
+
+
+```js
+var colors = require('color-name');
+colors.red //[255,0,0]
+```
+
+<a href="LICENSE"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0c/MIT_logo.svg" width="120"/></a>
diff --git a/node_modules/color-name/index.js b/node_modules/color-name/index.js
new file mode 100644
index 0000000..b7c198a
--- /dev/null
+++ b/node_modules/color-name/index.js
@@ -0,0 +1,152 @@
+'use strict'
+
+module.exports = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+};
diff --git a/node_modules/color-name/package.json b/node_modules/color-name/package.json
new file mode 100644
index 0000000..54beeca
--- /dev/null
+++ b/node_modules/color-name/package.json
@@ -0,0 +1,53 @@
+{
+ "_from": "color-name@1.1.3",
+ "_id": "color-name@1.1.3",
+ "_inBundle": false,
+ "_integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "_location": "/color-name",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "color-name@1.1.3",
+ "name": "color-name",
+ "escapedName": "color-name",
+ "rawSpec": "1.1.3",
+ "saveSpec": null,
+ "fetchSpec": "1.1.3"
+ },
+ "_requiredBy": [
+ "/color-convert"
+ ],
+ "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "_shasum": "a7d0558bd89c42f795dd42328f740831ca53bc25",
+ "_spec": "color-name@1.1.3",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/color-convert",
+ "author": {
+ "name": "DY",
+ "email": "dfcreative@gmail.com"
+ },
+ "bugs": {
+ "url": "https://github.com/dfcreative/color-name/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "A list of color names and its values",
+ "homepage": "https://github.com/dfcreative/color-name",
+ "keywords": [
+ "color-name",
+ "color",
+ "color-keyword",
+ "keyword"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "color-name",
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/dfcreative/color-name.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.1.3"
+}
diff --git a/node_modules/color-name/test.js b/node_modules/color-name/test.js
new file mode 100644
index 0000000..6e6bf30
--- /dev/null
+++ b/node_modules/color-name/test.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var names = require('./');
+var assert = require('assert');
+
+assert.deepEqual(names.red, [255,0,0]);
+assert.deepEqual(names.aliceblue, [240,248,255]);
diff --git a/node_modules/emoji-regex/LICENSE-MIT.txt b/node_modules/emoji-regex/LICENSE-MIT.txt
new file mode 100644
index 0000000..a41e0a7
--- /dev/null
+++ b/node_modules/emoji-regex/LICENSE-MIT.txt
@@ -0,0 +1,20 @@
+Copyright Mathias Bynens <https://mathiasbynens.be/>
+
+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/emoji-regex/README.md b/node_modules/emoji-regex/README.md
new file mode 100644
index 0000000..37cf14e
--- /dev/null
+++ b/node_modules/emoji-regex/README.md
@@ -0,0 +1,73 @@
+# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex)
+
+_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard.
+
+This repository contains a script that generates this regular expression based on [the data from Unicode Technical Report #51](https://github.com/mathiasbynens/unicode-tr51). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
+
+## Installation
+
+Via [npm](https://www.npmjs.com/):
+
+```bash
+npm install emoji-regex
+```
+
+In [Node.js](https://nodejs.org/):
+
+```js
+const emojiRegex = require('emoji-regex');
+// Note: because the regular expression has the global flag set, this module
+// exports a function that returns the regex rather than exporting the regular
+// expression itself, to make it impossible to (accidentally) mutate the
+// original regular expression.
+
+const text = `
+\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
+\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
+\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
+\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
+`;
+
+const regex = emojiRegex();
+let match;
+while (match = regex.exec(text)) {
+ const emoji = match[0];
+ console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
+}
+```
+
+Console output:
+
+```
+Matched sequence ⌚ — code points: 1
+Matched sequence ⌚ — code points: 1
+Matched sequence ↔️ — code points: 2
+Matched sequence ↔️ — code points: 2
+Matched sequence 👩 — code points: 1
+Matched sequence 👩 — code points: 1
+Matched sequence 👩🏿 — code points: 2
+Matched sequence 👩🏿 — code points: 2
+```
+
+To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex:
+
+```js
+const emojiRegex = require('emoji-regex/text.js');
+```
+
+Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes:
+
+```js
+const emojiRegex = require('emoji-regex/es2015/index.js');
+const emojiRegexText = require('emoji-regex/es2015/text.js');
+```
+
+## Author
+
+| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
+|---|
+| [Mathias Bynens](https://mathiasbynens.be/) |
+
+## License
+
+_emoji-regex_ is available under the [MIT](https://mths.be/mit) license.
diff --git a/node_modules/emoji-regex/es2015/index.js b/node_modules/emoji-regex/es2015/index.js
new file mode 100644
index 0000000..0216db9
--- /dev/null
+++ b/node_modules/emoji-regex/es2015/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = () => {
+ // https://mths.be/emoji
+ return /\u{1F3F4}(?:\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0077}\u{E006C}\u{E0073}|\u{E0073}\u{E0063}\u{E0074})\u{E007F}|\u200D\u2620\uFE0F)|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F468}(?:\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u{1F468}(?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F469}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|\u{1F468}(?:\u200D(?:[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u{1F466}\u{1F467}])|[\u{1F3FB}-\u{1F3FF}])|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F469}\u200D\u{1F467}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}]|\u{1F469}\u200D\u{1F466}|\u{1F1F6}\u{1F1E6}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|[#\*0-9]\uFE0F\u20E3|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9D1}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F469}\u{1F46E}\u{1F470}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9D1}-\u{1F9DD}]/gu;
+};
diff --git a/node_modules/emoji-regex/es2015/text.js b/node_modules/emoji-regex/es2015/text.js
new file mode 100644
index 0000000..d0a771d
--- /dev/null
+++ b/node_modules/emoji-regex/es2015/text.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = () => {
+ // https://mths.be/emoji
+ return /\u{1F3F4}(?:\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0077}\u{E006C}\u{E0073}|\u{E0073}\u{E0063}\u{E0074})\u{E007F}|\u200D\u2620\uFE0F)|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F468}(?:\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u{1F468}(?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F469}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|\u{1F468}(?:\u200D(?:[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u{1F466}\u{1F467}])|[\u{1F3FB}-\u{1F3FF}])|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F469}\u200D\u{1F467}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}]|\u{1F469}\u200D\u{1F466}|\u{1F1F6}\u{1F1E6}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|[#\*0-9]\uFE0F\u20E3|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9D1}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F469}\u{1F46E}\u{1F470}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9D1}-\u{1F9DD}]/gu;
+};
diff --git a/node_modules/emoji-regex/index.d.ts b/node_modules/emoji-regex/index.d.ts
new file mode 100644
index 0000000..2c317cd
--- /dev/null
+++ b/node_modules/emoji-regex/index.d.ts
@@ -0,0 +1,5 @@
+declare module 'emoji-regex' {
+ function emojiRegex(): RegExp;
+
+ export default emojiRegex;
+}
diff --git a/node_modules/emoji-regex/index.js b/node_modules/emoji-regex/index.js
new file mode 100644
index 0000000..e2237a4
--- /dev/null
+++ b/node_modules/emoji-regex/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function () {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4(?:\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74)\uDB40\uDC7F|\u200D\u2620\uFE0F)|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3]))|\uD83D\uDC69\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83D\uDC69\u200D[\u2695\u2696\u2708])\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC68(?:\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDD1-\uDDDD])/g;
+};
diff --git a/node_modules/emoji-regex/package.json b/node_modules/emoji-regex/package.json
new file mode 100644
index 0000000..6c524e8
--- /dev/null
+++ b/node_modules/emoji-regex/package.json
@@ -0,0 +1,80 @@
+{
+ "_from": "emoji-regex@^7.0.1",
+ "_id": "emoji-regex@7.0.3",
+ "_inBundle": false,
+ "_integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "_location": "/emoji-regex",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "emoji-regex@^7.0.1",
+ "name": "emoji-regex",
+ "escapedName": "emoji-regex",
+ "rawSpec": "^7.0.1",
+ "saveSpec": null,
+ "fetchSpec": "^7.0.1"
+ },
+ "_requiredBy": [
+ "/cliui/string-width",
+ "/wrap-ansi/string-width",
+ "/yargs/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "_shasum": "933a04052860c85e83c122479c4748a8e4c72156",
+ "_spec": "emoji-regex@^7.0.1",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/cliui/node_modules/string-width",
+ "author": {
+ "name": "Mathias Bynens",
+ "url": "https://mathiasbynens.be/"
+ },
+ "bugs": {
+ "url": "https://github.com/mathiasbynens/emoji-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
+ "devDependencies": {
+ "@babel/cli": "^7.0.0",
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "mocha": "^5.2.0",
+ "regexgen": "^1.3.0",
+ "unicode-11.0.0": "^0.7.7",
+ "unicode-tr51": "^9.0.1"
+ },
+ "files": [
+ "LICENSE-MIT.txt",
+ "index.js",
+ "index.d.ts",
+ "text.js",
+ "es2015/index.js",
+ "es2015/text.js"
+ ],
+ "homepage": "https://mths.be/emoji-regex",
+ "keywords": [
+ "unicode",
+ "regex",
+ "regexp",
+ "regular expressions",
+ "code points",
+ "symbols",
+ "characters",
+ "emoji"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "emoji-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/mathiasbynens/emoji-regex.git"
+ },
+ "scripts": {
+ "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
+ "test": "mocha",
+ "test:watch": "npm run test -- --watch"
+ },
+ "types": "index.d.ts",
+ "version": "7.0.3"
+}
diff --git a/node_modules/emoji-regex/text.js b/node_modules/emoji-regex/text.js
new file mode 100644
index 0000000..199ae3b
--- /dev/null
+++ b/node_modules/emoji-regex/text.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function () {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4(?:\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74)\uDB40\uDC7F|\u200D\u2620\uFE0F)|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3]))|\uD83D\uDC69\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83D\uDC69\u200D[\u2695\u2696\u2708])\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC68(?:\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDD1-\uDDDD])/g;
+};
diff --git a/node_modules/get-caller-file/README.md b/node_modules/get-caller-file/README.md
index 1944927..a7d8c07 100644
--- a/node_modules/get-caller-file/README.md
+++ b/node_modules/get-caller-file/README.md
@@ -2,3 +2,40 @@
[![Build Status](https://travis-ci.org/stefanpenner/get-caller-file.svg?branch=master)](https://travis-ci.org/stefanpenner/get-caller-file)
[![Build status](https://ci.appveyor.com/api/projects/status/ol2q94g1932cy14a/branch/master?svg=true)](https://ci.appveyor.com/project/embercli/get-caller-file/branch/master)
+
+This is a utility, which allows a function to figure out from which file it was invoked. It does so by inspecting v8's stack trace at the time it is invoked.
+
+Inspired by http://stackoverflow.com/questions/13227489
+
+*note: this relies on Node/V8 specific APIs, as such other runtimes may not work*
+
+## Installation
+
+```bash
+yarn add get-caller-file
+```
+
+## Usage
+
+Given:
+
+```js
+// ./foo.js
+const getCallerFile = require('get-caller-file');
+
+module.exports = function() {
+ return getCallerFile(); // figures out who called it
+};
+```
+
+```js
+// index.js
+const foo = require('./foo');
+
+foo() // => /full/path/to/this/file/index.js
+```
+
+
+## Options:
+
+* `getCallerFile(position = 2)`: where position is stack frame whos fileName we want.
diff --git a/node_modules/get-caller-file/index.d.ts b/node_modules/get-caller-file/index.d.ts
new file mode 100644
index 0000000..babed69
--- /dev/null
+++ b/node_modules/get-caller-file/index.d.ts
@@ -0,0 +1,2 @@
+declare const _default: (position?: number) => any;
+export = _default;
diff --git a/node_modules/get-caller-file/index.js b/node_modules/get-caller-file/index.js
index 03e7dfc..57304f8 100644
--- a/node_modules/get-caller-file/index.js
+++ b/node_modules/get-caller-file/index.js
@@ -1,20 +1,22 @@
-'use strict';
-
+"use strict";
// Call this function in a another function to find out the file from
// which that function was called from. (Inspects the v8 stack trace)
//
// Inspired by http://stackoverflow.com/questions/13227489
-
-module.exports = function getCallerFile(_position) {
- var oldPrepareStackTrace = Error.prepareStackTrace;
- Error.prepareStackTrace = function(err, stack) { return stack; };
- var stack = new Error().stack;
- Error.prepareStackTrace = oldPrepareStackTrace;
-
- var position = _position ? _position : 2;
-
- // stack[0] holds this file
- // stack[1] holds where this function was called
- // stack[2] holds the file we're interested in
- return stack[position] ? stack[position].getFileName() : undefined;
+module.exports = function getCallerFile(position) {
+ if (position === void 0) { position = 2; }
+ if (position >= Error.stackTraceLimit) {
+ throw new TypeError('getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `' + position + '` and Error.stackTraceLimit was: `' + Error.stackTraceLimit + '`');
+ }
+ var oldPrepareStackTrace = Error.prepareStackTrace;
+ Error.prepareStackTrace = function (_, stack) { return stack; };
+ var stack = new Error().stack;
+ Error.prepareStackTrace = oldPrepareStackTrace;
+ if (stack !== null && typeof stack === 'object') {
+ // stack[0] holds this file
+ // stack[1] holds where this function was called
+ // stack[2] holds the file we're interested in
+ return stack[position] ? stack[position].getFileName() : undefined;
+ }
};
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/node_modules/get-caller-file/index.js.map b/node_modules/get-caller-file/index.js.map
new file mode 100644
index 0000000..89c655c
--- /dev/null
+++ b/node_modules/get-caller-file/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,0DAA0D;AAE1D,iBAAS,SAAS,aAAa,CAAC,QAAY;IAAZ,yBAAA,EAAA,YAAY;IAC1C,IAAI,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE;QACrC,MAAM,IAAI,SAAS,CAAC,kGAAkG,GAAG,QAAQ,GAAG,oCAAoC,GAAG,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;KACzM;IAED,IAAM,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACrD,KAAK,CAAC,iBAAiB,GAAG,UAAC,CAAC,EAAE,KAAK,IAAM,OAAA,KAAK,EAAL,CAAK,CAAC;IAC/C,IAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAChC,KAAK,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;IAG/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC/C,2BAA2B;QAC3B,gDAAgD;QAChD,8CAA8C;QAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,QAAQ,CAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KAC7E;AACH,CAAC,CAAC"} \ No newline at end of file
diff --git a/node_modules/get-caller-file/package.json b/node_modules/get-caller-file/package.json
index f8ae739..171bee6 100644
--- a/node_modules/get-caller-file/package.json
+++ b/node_modules/get-caller-file/package.json
@@ -1,27 +1,27 @@
{
- "_from": "get-caller-file@^1.0.1",
- "_id": "get-caller-file@1.0.3",
+ "_from": "get-caller-file@^2.0.1",
+ "_id": "get-caller-file@2.0.5",
"_inBundle": false,
- "_integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "_integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"_location": "/get-caller-file",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "get-caller-file@^1.0.1",
+ "raw": "get-caller-file@^2.0.1",
"name": "get-caller-file",
"escapedName": "get-caller-file",
- "rawSpec": "^1.0.1",
+ "rawSpec": "^2.0.1",
"saveSpec": null,
- "fetchSpec": "^1.0.1"
+ "fetchSpec": "^2.0.1"
},
"_requiredBy": [
"/yargs"
],
- "_resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "_shasum": "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a",
- "_spec": "get-caller-file@^1.0.1",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
+ "_resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "_shasum": "4f94412a82db32f36e3b0b9741f8a97feb031f7e",
+ "_spec": "get-caller-file@^2.0.1",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
"author": {
"name": "Stefan Penner"
},
@@ -32,15 +32,25 @@
"deprecated": false,
"description": "[![Build Status](https://travis-ci.org/stefanpenner/get-caller-file.svg?branch=master)](https://travis-ci.org/stefanpenner/get-caller-file) [![Build status](https://ci.appveyor.com/api/projects/status/ol2q94g1932cy14a/branch/master?svg=true)](https://ci.appveyor.com/project/embercli/get-caller-file/branch/master)",
"devDependencies": {
+ "@types/chai": "^4.1.7",
+ "@types/ensure-posix-path": "^1.0.0",
+ "@types/mocha": "^5.2.6",
+ "@types/node": "^11.10.5",
"chai": "^4.1.2",
"ensure-posix-path": "^1.0.1",
- "mocha": "^5.2.0"
+ "mocha": "^5.2.0",
+ "typescript": "^3.3.3333"
},
"directories": {
"test": "tests"
},
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ },
"files": [
- "index.js"
+ "index.js",
+ "index.js.map",
+ "index.d.ts"
],
"homepage": "https://github.com/stefanpenner/get-caller-file#readme",
"license": "ISC",
@@ -51,8 +61,9 @@
"url": "git+https://github.com/stefanpenner/get-caller-file.git"
},
"scripts": {
+ "prepare": "tsc",
"test": "mocha test",
"test:debug": "mocha test"
},
- "version": "1.0.3"
+ "version": "2.0.5"
}
diff --git a/node_modules/graceful-fs/graceful-fs.js b/node_modules/graceful-fs/graceful-fs.js
index 8c75ee2..de3df47 100644
--- a/node_modules/graceful-fs/graceful-fs.js
+++ b/node_modules/graceful-fs/graceful-fs.js
@@ -21,6 +21,14 @@ if (typeof Symbol === 'function' && typeof Symbol.for === 'function') {
function noop () {}
+function publishQueue(context, queue) {
+ Object.defineProperty(context, gracefulQueue, {
+ get: function() {
+ return queue
+ }
+ })
+}
+
var debug = noop
if (util.debuglog)
debug = util.debuglog('gfs4')
@@ -32,14 +40,10 @@ else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
}
// Once time initialization
-if (!global[gracefulQueue]) {
+if (!fs[gracefulQueue]) {
// This queue can be shared by multiple loaded instances
- var queue = []
- Object.defineProperty(global, gracefulQueue, {
- get: function() {
- return queue
- }
- })
+ var queue = global[gracefulQueue] || []
+ publishQueue(fs, queue)
// Patch fs.close/closeSync to shared queue version, because we need
// to retry() whenever a close happens *anywhere* in the program.
@@ -79,12 +83,16 @@ if (!global[gracefulQueue]) {
if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
process.on('exit', function() {
- debug(global[gracefulQueue])
- require('assert').equal(global[gracefulQueue].length, 0)
+ debug(fs[gracefulQueue])
+ require('assert').equal(fs[gracefulQueue].length, 0)
})
}
}
+if (!global[gracefulQueue]) {
+ publishQueue(global, fs[gracefulQueue]);
+}
+
module.exports = patch(clone(fs))
if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
module.exports = patch(fs)
@@ -334,11 +342,11 @@ function patch (fs) {
function enqueue (elem) {
debug('ENQUEUE', elem[0].name, elem[1])
- global[gracefulQueue].push(elem)
+ fs[gracefulQueue].push(elem)
}
function retry () {
- var elem = global[gracefulQueue].shift()
+ var elem = fs[gracefulQueue].shift()
if (elem) {
debug('RETRY', elem[0].name, elem[1])
elem[0].apply(null, elem[1])
diff --git a/node_modules/graceful-fs/package.json b/node_modules/graceful-fs/package.json
index b177889..675a42b 100644
--- a/node_modules/graceful-fs/package.json
+++ b/node_modules/graceful-fs/package.json
@@ -1,8 +1,8 @@
{
"_from": "graceful-fs@^4.1.2",
- "_id": "graceful-fs@4.2.3",
+ "_id": "graceful-fs@4.2.4",
"_inBundle": false,
- "_integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
+ "_integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"_location": "/graceful-fs",
"_phantomChildren": {},
"_requested": {
@@ -21,10 +21,10 @@
"/node-gyp",
"/path-type"
],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
- "_shasum": "4a12ff1b60376ef09862c2093edd908328be8423",
+ "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "_shasum": "2256bde14d3632958c465ebc96dc467ca07a29fb",
"_spec": "graceful-fs@^4.1.2",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/load-json-file",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/load-json-file",
"bugs": {
"url": "https://github.com/isaacs/node-graceful-fs/issues"
},
@@ -78,5 +78,5 @@
"preversion": "npm test",
"test": "node test.js | tap -"
},
- "version": "4.2.3"
+ "version": "4.2.4"
}
diff --git a/node_modules/in-publish/.npmignore b/node_modules/in-publish/.npmignore
deleted file mode 100644
index 0c648eb..0000000
--- a/node_modules/in-publish/.npmignore
+++ /dev/null
@@ -1,32 +0,0 @@
-# Logs
-logs
-*.log
-
-# Runtime data
-pids
-*.pid
-*.seed
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directory
-# Commenting this out is preferred by some people, see
-# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
-node_modules
-
-# Users Environment Variables
-.lock-wscript
-
-# Editr files
-*~
-.#*
diff --git a/node_modules/in-publish/README.md b/node_modules/in-publish/README.md
index 8f4e5c0..de0b2a7 100644
--- a/node_modules/in-publish/README.md
+++ b/node_modules/in-publish/README.md
@@ -1,11 +1,13 @@
in-publish
==========
+> For background, see [npm#10074](https://github.com/npm/npm/issues/10074).
+
Detect if we were run as a result of `npm publish`. This is intended to allow you to
easily have prepublish lifecycle scripts that don't run when you run `npm install`.
```
-$ npm install --save in-publish
+$ npm install --save-dev in-publish
in-publish@1.0.0 node_modules/in-publish
```
@@ -35,7 +37,7 @@ It's worth noting that the `prepublish` lifecycle is _ALSO_ called when you buil
$ npm pack
```
-Will call your `prepublish` lifecycle, but with the examplea above,
+Will call your `prepublish` lifecycle, but with the example above,
`thing-I-dont-want-on-dev-install` won't be run.
If you want this, you can use another helper included here:
diff --git a/node_modules/in-publish/README.md~ b/node_modules/in-publish/README.md~
deleted file mode 100644
index b52a50c..0000000
--- a/node_modules/in-publish/README.md~
+++ /dev/null
@@ -1,40 +0,0 @@
-in-publish
-==========
-
-Detect if we were run as a result of `npm publish`. This is intended to allow you to
-easily have prepublish lifecycle scripts that don't run when you run `npm install`.
-
-```
-$ npm install --save in-publish
-in-publish@1.0.0 node_modules/in-publish
-```
-
-Then edit your package.json to have:
-
-```json
- "scripts": {
- "prepublish": "in-publish && thing-I-dont-want-on-dev-install || in-install"
- }
-```
-
-Now when you run:
-```
-$ npm install
-```
-Then `thing-I-dont-want-on-dev-install` won't be run, but...
-
-```
-$ npm publish
-```
-And `thing-I-dont-want-on-dev-install` will be run.
-
-Caveat Emptor
-=============
-
-This detects that its running as a part of publish command in a terrible,
-terrible way. NPM dumps out its config object blindly into the environment
-prior to running commands. This includes the command line it was invoked
-with. This module determines if its being run as a result of publish by
-looking at that env var. This is not a part of the documented npm interface
-and so it is not guarenteed to be stable.
-
diff --git a/node_modules/in-publish/index.js b/node_modules/in-publish/index.js
index b9d3c44..8cfc92f 100644
--- a/node_modules/in-publish/index.js
+++ b/node_modules/in-publish/index.js
@@ -1,5 +1,9 @@
'use strict'
-function inCommand (cmd) {
+function inCommand (cmd, cmdStr) {
+ if (process.env.npm_command) {
+ return process.env.npm_command === cmdStr
+ }
+
try {
var npm_config_argv = JSON.parse(process.env['npm_config_argv'])
} catch (e) {
@@ -20,9 +24,9 @@ function inCommand (cmd) {
}
exports.inPublish = function () {
- return inCommand(/^pu(b(l(i(sh?)?)?)?)?$/)
+ return inCommand(/^pu(b(l(i(sh?)?)?)?)?$/, 'publish')
}
exports.inInstall = function () {
- return inCommand(/^i(n(s(t(a(ll?)?)?)?)?)?$/)
+ return inCommand(/^i(n(s(t(a(ll?)?)?)?)?)?$/, 'install')
}
diff --git a/node_modules/in-publish/package.json b/node_modules/in-publish/package.json
index 4fc6c06..e7df246 100644
--- a/node_modules/in-publish/package.json
+++ b/node_modules/in-publish/package.json
@@ -1,8 +1,8 @@
{
"_from": "in-publish@^2.0.0",
- "_id": "in-publish@2.0.0",
+ "_id": "in-publish@2.0.1",
"_inBundle": false,
- "_integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+ "_integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
"_location": "/in-publish",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/node-sass"
],
- "_resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
- "_shasum": "e20ff5e3a2afc2690320b6dc552682a9c7fadf51",
+ "_resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+ "_shasum": "948b1a535c8030561cea522f73f78f4be357e00c",
"_spec": "in-publish@^2.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/node-sass",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/node-sass",
"author": {
"name": "Rebecca Turner",
"email": "me@re-becca.org"
@@ -46,5 +46,5 @@
"type": "git",
"url": "git+https://github.com/iarna/in-publish.git"
},
- "version": "2.0.0"
+ "version": "2.0.1"
}
diff --git a/node_modules/invert-kv/index.js b/node_modules/invert-kv/index.js
deleted file mode 100644
index 61e2196..0000000
--- a/node_modules/invert-kv/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-module.exports = function (obj) {
- if (typeof obj !== 'object') {
- throw new TypeError('Expected an object');
- }
-
- var ret = {};
-
- for (var key in obj) {
- var val = obj[key];
- ret[val] = key;
- }
-
- return ret;
-};
diff --git a/node_modules/invert-kv/package.json b/node_modules/invert-kv/package.json
deleted file mode 100644
index 7ba47d7..0000000
--- a/node_modules/invert-kv/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "_from": "invert-kv@^1.0.0",
- "_id": "invert-kv@1.0.0",
- "_inBundle": false,
- "_integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "_location": "/invert-kv",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "invert-kv@^1.0.0",
- "name": "invert-kv",
- "escapedName": "invert-kv",
- "rawSpec": "^1.0.0",
- "saveSpec": null,
- "fetchSpec": "^1.0.0"
- },
- "_requiredBy": [
- "/lcid"
- ],
- "_resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "_shasum": "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6",
- "_spec": "invert-kv@^1.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/lcid",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "bugs": {
- "url": "https://github.com/sindresorhus/invert-kv/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "Invert the key/value of an object. Example: {foo: 'bar'} → {bar: 'foo'}",
- "devDependencies": {
- "mocha": "*"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js"
- ],
- "homepage": "https://github.com/sindresorhus/invert-kv#readme",
- "keywords": [
- "object",
- "obj",
- "key",
- "value",
- "val",
- "kv",
- "invert"
- ],
- "license": "MIT",
- "name": "invert-kv",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/invert-kv.git"
- },
- "scripts": {
- "test": "mocha"
- },
- "version": "1.0.0"
-}
diff --git a/node_modules/invert-kv/readme.md b/node_modules/invert-kv/readme.md
deleted file mode 100644
index 039fc7c..0000000
--- a/node_modules/invert-kv/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# invert-kv [![Build Status](https://travis-ci.org/sindresorhus/invert-kv.svg?branch=master)](https://travis-ci.org/sindresorhus/invert-kv)
-
-> Invert the key/value of an object. Example: `{foo: 'bar'}` → `{bar: 'foo'}`
-
-
-## Install
-
-```sh
-$ npm install --save invert-kv
-```
-
-
-## Usage
-
-```js
-var invertKv = require('invert-kv');
-
-invertKv({foo: 'bar', unicorn: 'rainbow'});
-//=> {bar: 'foo', rainbow: 'unicorn'}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/lcid/index.js b/node_modules/lcid/index.js
deleted file mode 100644
index 69bd3d2..0000000
--- a/node_modules/lcid/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-var invertKv = require('invert-kv');
-var all = require('./lcid.json');
-var inverted = invertKv(all);
-
-exports.from = function (lcidCode) {
- if (typeof lcidCode !== 'number') {
- throw new TypeError('Expected a number');
- }
-
- return inverted[lcidCode];
-};
-
-exports.to = function (localeId) {
- if (typeof localeId !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- return all[localeId];
-};
-
-exports.all = all;
diff --git a/node_modules/lcid/lcid.json b/node_modules/lcid/lcid.json
deleted file mode 100644
index 9c89f6a..0000000
--- a/node_modules/lcid/lcid.json
+++ /dev/null
@@ -1,203 +0,0 @@
-{
- "af_ZA": 1078,
- "am_ET": 1118,
- "ar_AE": 14337,
- "ar_BH": 15361,
- "ar_DZ": 5121,
- "ar_EG": 3073,
- "ar_IQ": 2049,
- "ar_JO": 11265,
- "ar_KW": 13313,
- "ar_LB": 12289,
- "ar_LY": 4097,
- "ar_MA": 6145,
- "ar_OM": 8193,
- "ar_QA": 16385,
- "ar_SA": 1025,
- "ar_SY": 10241,
- "ar_TN": 7169,
- "ar_YE": 9217,
- "arn_CL": 1146,
- "as_IN": 1101,
- "az_AZ": 2092,
- "ba_RU": 1133,
- "be_BY": 1059,
- "bg_BG": 1026,
- "bn_IN": 1093,
- "bo_BT": 2129,
- "bo_CN": 1105,
- "br_FR": 1150,
- "bs_BA": 8218,
- "ca_ES": 1027,
- "co_FR": 1155,
- "cs_CZ": 1029,
- "cy_GB": 1106,
- "da_DK": 1030,
- "de_AT": 3079,
- "de_CH": 2055,
- "de_DE": 1031,
- "de_LI": 5127,
- "de_LU": 4103,
- "div_MV": 1125,
- "dsb_DE": 2094,
- "el_GR": 1032,
- "en_AU": 3081,
- "en_BZ": 10249,
- "en_CA": 4105,
- "en_CB": 9225,
- "en_GB": 2057,
- "en_IE": 6153,
- "en_IN": 18441,
- "en_JA": 8201,
- "en_MY": 17417,
- "en_NZ": 5129,
- "en_PH": 13321,
- "en_TT": 11273,
- "en_US": 1033,
- "en_ZA": 7177,
- "en_ZW": 12297,
- "es_AR": 11274,
- "es_BO": 16394,
- "es_CL": 13322,
- "es_CO": 9226,
- "es_CR": 5130,
- "es_DO": 7178,
- "es_EC": 12298,
- "es_ES": 3082,
- "es_GT": 4106,
- "es_HN": 18442,
- "es_MX": 2058,
- "es_NI": 19466,
- "es_PA": 6154,
- "es_PE": 10250,
- "es_PR": 20490,
- "es_PY": 15370,
- "es_SV": 17418,
- "es_UR": 14346,
- "es_US": 21514,
- "es_VE": 8202,
- "et_EE": 1061,
- "eu_ES": 1069,
- "fa_IR": 1065,
- "fi_FI": 1035,
- "fil_PH": 1124,
- "fo_FO": 1080,
- "fr_BE": 2060,
- "fr_CA": 3084,
- "fr_CH": 4108,
- "fr_FR": 1036,
- "fr_LU": 5132,
- "fr_MC": 6156,
- "fy_NL": 1122,
- "ga_IE": 2108,
- "gbz_AF": 1164,
- "gl_ES": 1110,
- "gsw_FR": 1156,
- "gu_IN": 1095,
- "ha_NG": 1128,
- "he_IL": 1037,
- "hi_IN": 1081,
- "hr_BA": 4122,
- "hr_HR": 1050,
- "hu_HU": 1038,
- "hy_AM": 1067,
- "id_ID": 1057,
- "ii_CN": 1144,
- "is_IS": 1039,
- "it_CH": 2064,
- "it_IT": 1040,
- "iu_CA": 2141,
- "ja_JP": 1041,
- "ka_GE": 1079,
- "kh_KH": 1107,
- "kk_KZ": 1087,
- "kl_GL": 1135,
- "kn_IN": 1099,
- "ko_KR": 1042,
- "kok_IN": 1111,
- "ky_KG": 1088,
- "lb_LU": 1134,
- "lo_LA": 1108,
- "lt_LT": 1063,
- "lv_LV": 1062,
- "mi_NZ": 1153,
- "mk_MK": 1071,
- "ml_IN": 1100,
- "mn_CN": 2128,
- "mn_MN": 1104,
- "moh_CA": 1148,
- "mr_IN": 1102,
- "ms_BN": 2110,
- "ms_MY": 1086,
- "mt_MT": 1082,
- "my_MM": 1109,
- "nb_NO": 1044,
- "ne_NP": 1121,
- "nl_BE": 2067,
- "nl_NL": 1043,
- "nn_NO": 2068,
- "ns_ZA": 1132,
- "oc_FR": 1154,
- "or_IN": 1096,
- "pa_IN": 1094,
- "pl_PL": 1045,
- "ps_AF": 1123,
- "pt_BR": 1046,
- "pt_PT": 2070,
- "qut_GT": 1158,
- "quz_BO": 1131,
- "quz_EC": 2155,
- "quz_PE": 3179,
- "rm_CH": 1047,
- "ro_RO": 1048,
- "ru_RU": 1049,
- "rw_RW": 1159,
- "sa_IN": 1103,
- "sah_RU": 1157,
- "se_FI": 3131,
- "se_NO": 1083,
- "se_SE": 2107,
- "si_LK": 1115,
- "sk_SK": 1051,
- "sl_SI": 1060,
- "sma_NO": 6203,
- "sma_SE": 7227,
- "smj_NO": 4155,
- "smj_SE": 5179,
- "smn_FI": 9275,
- "sms_FI": 8251,
- "sq_AL": 1052,
- "sr_BA": 7194,
- "sr_SP": 3098,
- "sv_FI": 2077,
- "sv_SE": 1053,
- "sw_KE": 1089,
- "syr_SY": 1114,
- "ta_IN": 1097,
- "te_IN": 1098,
- "tg_TJ": 1064,
- "th_TH": 1054,
- "tk_TM": 1090,
- "tmz_DZ": 2143,
- "tn_ZA": 1074,
- "tr_TR": 1055,
- "tt_RU": 1092,
- "ug_CN": 1152,
- "uk_UA": 1058,
- "ur_IN": 2080,
- "ur_PK": 1056,
- "uz_UZ": 2115,
- "vi_VN": 1066,
- "wen_DE": 1070,
- "wo_SN": 1160,
- "xh_ZA": 1076,
- "yo_NG": 1130,
- "zh_CHS": 4,
- "zh_CHT": 31748,
- "zh_CN": 2052,
- "zh_HK": 3076,
- "zh_MO": 5124,
- "zh_SG": 4100,
- "zh_TW": 1028,
- "zu_ZA": 1077
-}
diff --git a/node_modules/lcid/package.json b/node_modules/lcid/package.json
deleted file mode 100644
index bf32cdc..0000000
--- a/node_modules/lcid/package.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "_from": "lcid@^1.0.0",
- "_id": "lcid@1.0.0",
- "_inBundle": false,
- "_integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "_location": "/lcid",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "lcid@^1.0.0",
- "name": "lcid",
- "escapedName": "lcid",
- "rawSpec": "^1.0.0",
- "saveSpec": null,
- "fetchSpec": "^1.0.0"
- },
- "_requiredBy": [
- "/os-locale"
- ],
- "_resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "_shasum": "308accafa0bc483a3867b4b6f2b9506251d1b835",
- "_spec": "lcid@^1.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/os-locale",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "bugs": {
- "url": "https://github.com/sindresorhus/lcid/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "deprecated": false,
- "description": "Mapping between standard locale identifiers and Windows locale identifiers (LCID)",
- "devDependencies": {
- "ava": "0.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js",
- "lcid.json"
- ],
- "homepage": "https://github.com/sindresorhus/lcid#readme",
- "keywords": [
- "lcid",
- "locale",
- "string",
- "str",
- "id",
- "identifier",
- "windows",
- "language",
- "lang",
- "map",
- "mapping",
- "convert",
- "json",
- "bcp47",
- "ietf",
- "tag"
- ],
- "license": "MIT",
- "name": "lcid",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/lcid.git"
- },
- "scripts": {
- "test": "node test.js"
- },
- "version": "1.0.0"
-}
diff --git a/node_modules/lcid/readme.md b/node_modules/lcid/readme.md
deleted file mode 100644
index bee4a70..0000000
--- a/node_modules/lcid/readme.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# lcid [![Build Status](https://travis-ci.org/sindresorhus/lcid.svg?branch=master)](https://travis-ci.org/sindresorhus/lcid)
-
-> Mapping between [standard locale identifiers](http://en.wikipedia.org/wiki/Locale) and [Windows locale identifiers (LCID)](http://en.wikipedia.org/wiki/Locale#Specifics_for_Microsoft_platforms)
-
-Based on the [mapping](https://github.com/python/cpython/blob/be2a1a76fa43bb1ea1b3577bb5bdd506a2e90e37/Lib/locale.py#L1395-L1604) used in the Python standard library.
-
-The mapping itself is just a [JSON file](lcid.json) and can be used wherever.
-
-
-## Install
-
-```
-$ npm install --save lcid
-```
-
-
-## Usage
-
-```js
-var lcid = require('lcid');
-
-lcid.from(1044);
-//=> 'nb_NO'
-
-lcid.to('nb_NO');
-//=> 1044
-
-lcid.all;
-//=> {'af_ZA': 1078, ...}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/locate-path/index.js b/node_modules/locate-path/index.js
new file mode 100644
index 0000000..5aae6ee
--- /dev/null
+++ b/node_modules/locate-path/index.js
@@ -0,0 +1,24 @@
+'use strict';
+const path = require('path');
+const pathExists = require('path-exists');
+const pLocate = require('p-locate');
+
+module.exports = (iterable, options) => {
+ options = Object.assign({
+ cwd: process.cwd()
+ }, options);
+
+ return pLocate(iterable, el => pathExists(path.resolve(options.cwd, el)), options);
+};
+
+module.exports.sync = (iterable, options) => {
+ options = Object.assign({
+ cwd: process.cwd()
+ }, options);
+
+ for (const el of iterable) {
+ if (pathExists.sync(path.resolve(options.cwd, el))) {
+ return el;
+ }
+ }
+};
diff --git a/node_modules/locate-path/license b/node_modules/locate-path/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/locate-path/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/locate-path/node_modules/path-exists/index.js b/node_modules/locate-path/node_modules/path-exists/index.js
new file mode 100644
index 0000000..16ae60a
--- /dev/null
+++ b/node_modules/locate-path/node_modules/path-exists/index.js
@@ -0,0 +1,17 @@
+'use strict';
+const fs = require('fs');
+
+module.exports = fp => new Promise(resolve => {
+ fs.access(fp, err => {
+ resolve(!err);
+ });
+});
+
+module.exports.sync = fp => {
+ try {
+ fs.accessSync(fp);
+ return true;
+ } catch (err) {
+ return false;
+ }
+};
diff --git a/node_modules/os-locale/license b/node_modules/locate-path/node_modules/path-exists/license
index 654d0bf..654d0bf 100644
--- a/node_modules/os-locale/license
+++ b/node_modules/locate-path/node_modules/path-exists/license
diff --git a/node_modules/locate-path/node_modules/path-exists/package.json b/node_modules/locate-path/node_modules/path-exists/package.json
new file mode 100644
index 0000000..a85a325
--- /dev/null
+++ b/node_modules/locate-path/node_modules/path-exists/package.json
@@ -0,0 +1,72 @@
+{
+ "_from": "path-exists@^3.0.0",
+ "_id": "path-exists@3.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "_location": "/locate-path/path-exists",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "path-exists@^3.0.0",
+ "name": "path-exists",
+ "escapedName": "path-exists",
+ "rawSpec": "^3.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.0.0"
+ },
+ "_requiredBy": [
+ "/locate-path"
+ ],
+ "_resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "_shasum": "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515",
+ "_spec": "path-exists@^3.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/locate-path",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/path-exists/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Check if a path exists",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/path-exists#readme",
+ "keywords": [
+ "path",
+ "exists",
+ "exist",
+ "file",
+ "filepath",
+ "fs",
+ "filesystem",
+ "file-system",
+ "access",
+ "stat"
+ ],
+ "license": "MIT",
+ "name": "path-exists",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/path-exists.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/locate-path/node_modules/path-exists/readme.md b/node_modules/locate-path/node_modules/path-exists/readme.md
new file mode 100644
index 0000000..1b65fa7
--- /dev/null
+++ b/node_modules/locate-path/node_modules/path-exists/readme.md
@@ -0,0 +1,50 @@
+# path-exists [![Build Status](https://travis-ci.org/sindresorhus/path-exists.svg?branch=master)](https://travis-ci.org/sindresorhus/path-exists)
+
+> Check if a path exists
+
+Because [`fs.exists()`](https://nodejs.org/api/fs.html#fs_fs_exists_path_callback) is being [deprecated](https://github.com/iojs/io.js/issues/103), but there's still a genuine use-case of being able to check if a path exists for other purposes than doing IO with it.
+
+Never use this before handling a file though:
+
+> In particular, checking if a file exists before opening it is an anti-pattern that leaves you vulnerable to race conditions: another process may remove the file between the calls to `fs.exists()` and `fs.open()`. Just open the file and handle the error when it's not there.
+
+
+## Install
+
+```
+$ npm install --save path-exists
+```
+
+
+## Usage
+
+```js
+// foo.js
+const pathExists = require('path-exists');
+
+pathExists('foo.js').then(exists => {
+ console.log(exists);
+ //=> true
+});
+```
+
+
+## API
+
+### pathExists(path)
+
+Returns a promise for a boolean of whether the path exists.
+
+### pathExists.sync(path)
+
+Returns a boolean of whether the path exists.
+
+
+## Related
+
+- [path-exists-cli](https://github.com/sindresorhus/path-exists-cli) - CLI for this module
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/locate-path/package.json b/node_modules/locate-path/package.json
new file mode 100644
index 0000000..edd2bc1
--- /dev/null
+++ b/node_modules/locate-path/package.json
@@ -0,0 +1,76 @@
+{
+ "_from": "locate-path@^3.0.0",
+ "_id": "locate-path@3.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "_location": "/locate-path",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "locate-path@^3.0.0",
+ "name": "locate-path",
+ "escapedName": "locate-path",
+ "rawSpec": "^3.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.0.0"
+ },
+ "_requiredBy": [
+ "/yargs/find-up"
+ ],
+ "_resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "_shasum": "dbec3b3ab759758071b58fe59fc41871af21400e",
+ "_spec": "locate-path@^3.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs/node_modules/find-up",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/locate-path/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "deprecated": false,
+ "description": "Get the first path that exists on disk of multiple paths",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/locate-path#readme",
+ "keywords": [
+ "locate",
+ "path",
+ "paths",
+ "file",
+ "files",
+ "exists",
+ "find",
+ "finder",
+ "search",
+ "searcher",
+ "array",
+ "iterable",
+ "iterator"
+ ],
+ "license": "MIT",
+ "name": "locate-path",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/locate-path.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/locate-path/readme.md b/node_modules/locate-path/readme.md
new file mode 100644
index 0000000..a1d2e62
--- /dev/null
+++ b/node_modules/locate-path/readme.md
@@ -0,0 +1,99 @@
+# locate-path [![Build Status](https://travis-ci.org/sindresorhus/locate-path.svg?branch=master)](https://travis-ci.org/sindresorhus/locate-path)
+
+> Get the first path that exists on disk of multiple paths
+
+
+## Install
+
+```
+$ npm install locate-path
+```
+
+
+## Usage
+
+Here we find the first file that exists on disk, in array order.
+
+```js
+const locatePath = require('locate-path');
+
+const files = [
+ 'unicorn.png',
+ 'rainbow.png', // Only this one actually exists on disk
+ 'pony.png'
+];
+
+(async () => {
+ console(await locatePath(files));
+ //=> 'rainbow'
+})();
+```
+
+
+## API
+
+### locatePath(input, [options])
+
+Returns a `Promise` for the first path that exists or `undefined` if none exists.
+
+#### input
+
+Type: `Iterable<string>`
+
+Paths to check.
+
+#### options
+
+Type: `Object`
+
+##### concurrency
+
+Type: `number`<br>
+Default: `Infinity`<br>
+Minimum: `1`
+
+Number of concurrently pending promises.
+
+##### preserveOrder
+
+Type: `boolean`<br>
+Default: `true`
+
+Preserve `input` order when searching.
+
+Disable this to improve performance if you don't care about the order.
+
+##### cwd
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+Current working directory.
+
+### locatePath.sync(input, [options])
+
+Returns the first path that exists or `undefined` if none exists.
+
+#### input
+
+Type: `Iterable<string>`
+
+Paths to check.
+
+#### options
+
+Type: `Object`
+
+##### cwd
+
+Same as above.
+
+
+## Related
+
+- [path-exists](https://github.com/sindresorhus/path-exists) - Check if a path exists
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/mime-db/HISTORY.md b/node_modules/mime-db/HISTORY.md
index 8afff37..85c0319 100644
--- a/node_modules/mime-db/HISTORY.md
+++ b/node_modules/mime-db/HISTORY.md
@@ -1,3 +1,10 @@
+1.44.0 / 2020-04-22
+===================
+
+ * Add charsets from IANA
+ * Add extension `.cjs` to `application/node`
+ * Add new upstream MIME types
+
1.43.0 / 2020-01-05
===================
diff --git a/node_modules/mime-db/README.md b/node_modules/mime-db/README.md
index 68e3a1a..d6a6f80 100644
--- a/node_modules/mime-db/README.md
+++ b/node_modules/mime-db/README.md
@@ -34,11 +34,13 @@ https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json
## Usage
+<!-- eslint-disable no-unused-vars -->
+
```js
-var db = require('mime-db');
+var db = require('mime-db')
// grab data on .js files
-var data = db['application/javascript'];
+var data = db['application/javascript']
```
## Data Structure
diff --git a/node_modules/mime-db/db.json b/node_modules/mime-db/db.json
index cfa3c63..e69f352 100644
--- a/node_modules/mime-db/db.json
+++ b/node_modules/mime-db/db.json
@@ -4,6 +4,7 @@
},
"application/3gpdash-qoe-report+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/3gpp-ims+xml": {
@@ -60,6 +61,14 @@
"source": "iana",
"compressible": true
},
+ "application/alto-updatestreamcontrol+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-updatestreamparams+json": {
+ "source": "iana",
+ "compressible": true
+ },
"application/aml": {
"source": "iana"
},
@@ -108,6 +117,9 @@
"compressible": true,
"extensions": ["dwd"]
},
+ "application/atsc-dynamic-event-message": {
+ "source": "iana"
+ },
"application/atsc-held+xml": {
"source": "iana",
"compressible": true,
@@ -142,6 +154,7 @@
},
"application/beep+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/calendar+json": {
@@ -159,6 +172,11 @@
"application/cals-1840": {
"source": "iana"
},
+ "application/cap+xml": {
+ "source": "iana",
+ "charset": "UTF-8",
+ "compressible": true
+ },
"application/cbor": {
"source": "iana"
},
@@ -347,6 +365,9 @@
"compressible": true,
"extensions": ["dbk"]
},
+ "application/dots+cbor": {
+ "source": "iana"
+ },
"application/dskpp+xml": {
"source": "iana",
"compressible": true
@@ -459,10 +480,12 @@
},
"application/fhir+json": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/fhir+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/fido.trusted-apps+json": {
@@ -559,6 +582,7 @@
},
"application/im-iscomposing+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/index": {
@@ -701,6 +725,10 @@
"source": "iana",
"compressible": true
},
+ "application/lpf+zip": {
+ "source": "iana",
+ "compressible": false
+ },
"application/lxf": {
"source": "iana"
},
@@ -896,10 +924,12 @@
},
"application/msc-ivr+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/msc-mixer+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/msword": {
@@ -930,10 +960,12 @@
"source": "iana"
},
"application/news-checkgroups": {
- "source": "iana"
+ "source": "iana",
+ "charset": "US-ASCII"
},
"application/news-groupinfo": {
- "source": "iana"
+ "source": "iana",
+ "charset": "US-ASCII"
},
"application/news-transmission": {
"source": "iana"
@@ -943,7 +975,8 @@
"compressible": true
},
"application/node": {
- "source": "iana"
+ "source": "iana",
+ "extensions": ["cjs"]
},
"application/nss": {
"source": "iana"
@@ -1041,10 +1074,12 @@
},
"application/pidf+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/pidf-diff+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/pkcs10": {
@@ -1096,6 +1131,7 @@
},
"application/poc-settings+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/postscript": {
@@ -1149,6 +1185,10 @@
"compressible": true,
"extensions": ["pskcxml"]
},
+ "application/pvd+json": {
+ "source": "iana",
+ "compressible": true
+ },
"application/qsig": {
"source": "iana"
},
@@ -1272,6 +1312,9 @@
"source": "iana",
"compressible": true
},
+ "application/sbe": {
+ "source": "iana"
+ },
"application/sbml+xml": {
"source": "iana",
"compressible": true,
@@ -1320,6 +1363,13 @@
"compressible": true,
"extensions": ["senmlx"]
},
+ "application/senml-etch+cbor": {
+ "source": "iana"
+ },
+ "application/senml-etch+json": {
+ "source": "iana",
+ "compressible": true
+ },
"application/senml-exi": {
"source": "iana"
},
@@ -1500,6 +1550,10 @@
"source": "iana",
"compressible": true
},
+ "application/td+json": {
+ "source": "iana",
+ "compressible": true
+ },
"application/tei+xml": {
"source": "iana",
"compressible": true,
@@ -2284,6 +2338,9 @@
"source": "iana",
"compressible": true
},
+ "application/vnd.dbf": {
+ "source": "iana"
+ },
"application/vnd.debian.binary-package": {
"source": "iana"
},
@@ -2368,6 +2425,10 @@
"source": "iana",
"extensions": ["ait"]
},
+ "application/vnd.dvb.dvbisl+xml": {
+ "source": "iana",
+ "compressible": true
+ },
"application/vnd.dvb.dvbj": {
"source": "iana"
},
@@ -3860,6 +3921,10 @@
"application/vnd.ocf+cbor": {
"source": "iana"
},
+ "application/vnd.oci.image.manifest.v1+json": {
+ "source": "iana",
+ "compressible": true
+ },
"application/vnd.oftn.l10n+json": {
"source": "iana",
"compressible": true
@@ -4048,14 +4113,17 @@
},
"application/vnd.omads-email+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/vnd.omads-file+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/vnd.omads-folder+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/vnd.omaloc-supl-init": {
@@ -4667,6 +4735,9 @@
"source": "iana",
"extensions": ["st"]
},
+ "application/vnd.sar": {
+ "source": "iana"
+ },
"application/vnd.sbm.cid": {
"source": "iana"
},
@@ -4752,6 +4823,12 @@
"source": "iana",
"compressible": true
},
+ "application/vnd.shp": {
+ "source": "iana"
+ },
+ "application/vnd.shx": {
+ "source": "iana"
+ },
"application/vnd.sigrok.session": {
"source": "iana"
},
@@ -4774,6 +4851,9 @@
"source": "iana",
"extensions": ["teacher"]
},
+ "application/vnd.snesdev-page-table": {
+ "source": "iana"
+ },
"application/vnd.software602.filler.form+xml": {
"source": "iana",
"compressible": true,
@@ -4904,15 +4984,18 @@
},
"application/vnd.syncml+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true,
"extensions": ["xsm"]
},
"application/vnd.syncml.dm+wbxml": {
"source": "iana",
+ "charset": "UTF-8",
"extensions": ["bdm"]
},
"application/vnd.syncml.dm+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true,
"extensions": ["xdm"]
},
@@ -4924,6 +5007,7 @@
},
"application/vnd.syncml.dmddf+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true,
"extensions": ["ddf"]
},
@@ -4932,6 +5016,7 @@
},
"application/vnd.syncml.dmtnds+xml": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true
},
"application/vnd.syncml.ds.notification": {
@@ -5100,6 +5185,7 @@
},
"application/vnd.wap.wbxml": {
"source": "iana",
+ "charset": "UTF-8",
"extensions": ["wbxml"]
},
"application/vnd.wap.wmlc": {
@@ -5696,6 +5782,9 @@
"source": "apache",
"extensions": ["p7r"]
},
+ "application/x-pki-message": {
+ "source": "iana"
+ },
"application/x-rar-compressed": {
"source": "apache",
"compressible": false,
@@ -5838,9 +5927,15 @@
"compressible": true
},
"application/x-x509-ca-cert": {
- "source": "apache",
+ "source": "iana",
"extensions": ["der","crt","pem"]
},
+ "application/x-x509-ca-ra-cert": {
+ "source": "iana"
+ },
+ "application/x-x509-next-ca-cert": {
+ "source": "iana"
+ },
"application/x-xfig": {
"source": "apache",
"extensions": ["fig"]
@@ -6245,6 +6340,9 @@
"audio/melp600": {
"source": "iana"
},
+ "audio/mhas": {
+ "source": "iana"
+ },
"audio/midi": {
"source": "apache",
"extensions": ["mid","midi","kar","rmi"]
@@ -6364,6 +6462,9 @@
"audio/tetra_acelp": {
"source": "iana"
},
+ "audio/tetra_acelp_bb": {
+ "source": "iana"
+ },
"audio/tone": {
"source": "iana"
},
@@ -7133,6 +7234,14 @@
"compressible": false,
"extensions": ["msh","mesh","silo"]
},
+ "model/mtl": {
+ "source": "iana",
+ "extensions": ["mtl"]
+ },
+ "model/obj": {
+ "source": "iana",
+ "extensions": ["obj"]
+ },
"model/stl": {
"source": "iana",
"extensions": ["stl"]
@@ -7380,11 +7489,13 @@
},
"text/n3": {
"source": "iana",
+ "charset": "UTF-8",
"compressible": true,
"extensions": ["n3"]
},
"text/parameters": {
- "source": "iana"
+ "source": "iana",
+ "charset": "UTF-8"
},
"text/parityfec": {
"source": "iana"
@@ -7395,7 +7506,8 @@
"extensions": ["txt","text","conf","def","list","log","in","ini"]
},
"text/provenance-notation": {
- "source": "iana"
+ "source": "iana",
+ "charset": "UTF-8"
},
"text/prs.fallenstein.rst": {
"source": "iana"
@@ -7507,7 +7619,8 @@
"extensions": ["scurl"]
},
"text/vnd.debian.copyright": {
- "source": "iana"
+ "source": "iana",
+ "charset": "UTF-8"
},
"text/vnd.dmclientscript": {
"source": "iana"
@@ -7517,7 +7630,8 @@
"extensions": ["sub"]
},
"text/vnd.esmertec.theme-descriptor": {
- "source": "iana"
+ "source": "iana",
+ "charset": "UTF-8"
},
"text/vnd.ficlab.flt": {
"source": "iana"
@@ -7580,10 +7694,12 @@
},
"text/vnd.sun.j2me.app-descriptor": {
"source": "iana",
+ "charset": "UTF-8",
"extensions": ["jad"]
},
"text/vnd.trolltech.linguist": {
- "source": "iana"
+ "source": "iana",
+ "charset": "UTF-8"
},
"text/vnd.wap.si": {
"source": "iana"
diff --git a/node_modules/mime-db/package.json b/node_modules/mime-db/package.json
index 4631570..dd2d5b9 100644
--- a/node_modules/mime-db/package.json
+++ b/node_modules/mime-db/package.json
@@ -1,27 +1,27 @@
{
- "_from": "mime-db@1.43.0",
- "_id": "mime-db@1.43.0",
+ "_from": "mime-db@1.44.0",
+ "_id": "mime-db@1.44.0",
"_inBundle": false,
- "_integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
+ "_integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
"_location": "/mime-db",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
- "raw": "mime-db@1.43.0",
+ "raw": "mime-db@1.44.0",
"name": "mime-db",
"escapedName": "mime-db",
- "rawSpec": "1.43.0",
+ "rawSpec": "1.44.0",
"saveSpec": null,
- "fetchSpec": "1.43.0"
+ "fetchSpec": "1.44.0"
},
"_requiredBy": [
"/mime-types"
],
- "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
- "_shasum": "0a12e0502650e473d735535050e7c8f4eb4fae58",
- "_spec": "mime-db@1.43.0",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/mime-types",
+ "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+ "_shasum": "fa11c5eb0aca1334b4233cb4d52f10c5a6272f92",
+ "_spec": "mime-db@1.44.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/mime-types",
"bugs": {
"url": "https://github.com/jshttp/mime-db/issues"
},
@@ -48,16 +48,17 @@
"bluebird": "3.7.2",
"co": "4.6.0",
"cogent": "1.0.1",
- "csv-parse": "4.8.3",
+ "csv-parse": "4.8.9",
"eslint": "6.8.0",
- "eslint-config-standard": "14.1.0",
- "eslint-plugin-import": "2.19.1",
- "eslint-plugin-node": "11.0.0",
+ "eslint-config-standard": "14.1.1",
+ "eslint-plugin-import": "2.20.2",
+ "eslint-plugin-markdown": "1.0.2",
+ "eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-standard": "4.0.1",
"gnode": "0.1.2",
- "mocha": "7.0.0",
- "nyc": "15.0.0",
+ "mocha": "7.1.1",
+ "nyc": "15.0.1",
"raw-body": "2.4.1",
"stream-to-array": "2.3.0"
},
@@ -90,12 +91,12 @@
"scripts": {
"build": "node scripts/build",
"fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx",
- "lint": "eslint .",
+ "lint": "eslint --plugin markdown --ext js,md .",
"test": "mocha --reporter spec --bail --check-leaks test/",
"test-cov": "nyc --reporter=html --reporter=text npm test",
"test-travis": "nyc --reporter=text npm test",
"update": "npm run fetch && npm run build",
"version": "node scripts/version-history.js && git add HISTORY.md"
},
- "version": "1.43.0"
+ "version": "1.44.0"
}
diff --git a/node_modules/mime-types/HISTORY.md b/node_modules/mime-types/HISTORY.md
index db3b311..e93149a 100644
--- a/node_modules/mime-types/HISTORY.md
+++ b/node_modules/mime-types/HISTORY.md
@@ -1,3 +1,11 @@
+2.1.27 / 2020-04-23
+===================
+
+ * deps: mime-db@1.44.0
+ - Add charsets from IANA
+ - Add extension `.cjs` to `application/node`
+ - Add new upstream MIME types
+
2.1.26 / 2020-01-05
===================
diff --git a/node_modules/mime-types/README.md b/node_modules/mime-types/README.md
index 1dbef2b..3863339 100644
--- a/node_modules/mime-types/README.md
+++ b/node_modules/mime-types/README.md
@@ -36,6 +36,8 @@ so open a PR there if you'd like to add mime types.
## API
+<!-- eslint-disable no-unused-vars -->
+
```js
var mime = require('mime-types')
```
@@ -46,11 +48,13 @@ All functions return `false` if input is invalid or not found.
Lookup the content-type associated with a file.
+<!-- eslint-disable no-undef -->
+
```js
-mime.lookup('json') // 'application/json'
-mime.lookup('.md') // 'text/markdown'
-mime.lookup('file.html') // 'text/html'
-mime.lookup('folder/file.js') // 'application/javascript'
+mime.lookup('json') // 'application/json'
+mime.lookup('.md') // 'text/markdown'
+mime.lookup('file.html') // 'text/html'
+mime.lookup('folder/file.js') // 'application/javascript'
mime.lookup('folder/.htaccess') // false
mime.lookup('cats') // false
@@ -64,8 +68,10 @@ content-type, otherwise the given content-type is used. Then if the
content-type does not already have a `charset` parameter, `mime.charset`
is used to get the default charset and add to the returned content-type.
+<!-- eslint-disable no-undef -->
+
```js
-mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
+mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
mime.contentType('file.json') // 'application/json; charset=utf-8'
mime.contentType('text/html') // 'text/html; charset=utf-8'
mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1'
@@ -78,6 +84,8 @@ mime.contentType(path.extname('/path/to/file.json')) // 'application/json; chars
Get the default extension for a content-type.
+<!-- eslint-disable no-undef -->
+
```js
mime.extension('application/octet-stream') // 'bin'
```
@@ -86,6 +94,8 @@ mime.extension('application/octet-stream') // 'bin'
Lookup the implied default charset of a content-type.
+<!-- eslint-disable no-undef -->
+
```js
mime.charset('text/markdown') // 'UTF-8'
```
diff --git a/node_modules/mime-types/package.json b/node_modules/mime-types/package.json
index 486ad52..c5e15dd 100644
--- a/node_modules/mime-types/package.json
+++ b/node_modules/mime-types/package.json
@@ -1,8 +1,8 @@
{
"_from": "mime-types@~2.1.19",
- "_id": "mime-types@2.1.26",
+ "_id": "mime-types@2.1.27",
"_inBundle": false,
- "_integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+ "_integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
"_location": "/mime-types",
"_phantomChildren": {},
"_requested": {
@@ -19,10 +19,10 @@
"/form-data",
"/request"
],
- "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
- "_shasum": "9c921fc09b7e149a65dfdc0da4d20997200b0a06",
+ "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+ "_shasum": "47949f98e279ea53119f5722e0f34e529bec009f",
"_spec": "mime-types@~2.1.19",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/request",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/request",
"bugs": {
"url": "https://github.com/jshttp/mime-types/issues"
},
@@ -44,19 +44,20 @@
}
],
"dependencies": {
- "mime-db": "1.43.0"
+ "mime-db": "1.44.0"
},
"deprecated": false,
"description": "The ultimate javascript content-type utility.",
"devDependencies": {
"eslint": "6.8.0",
- "eslint-config-standard": "14.1.0",
- "eslint-plugin-import": "2.19.1",
- "eslint-plugin-node": "11.0.0",
+ "eslint-config-standard": "14.1.1",
+ "eslint-plugin-import": "2.20.2",
+ "eslint-plugin-markdown": "1.0.2",
+ "eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-standard": "4.0.1",
- "mocha": "7.0.0",
- "nyc": "15.0.0"
+ "mocha": "7.1.1",
+ "nyc": "15.0.1"
},
"engines": {
"node": ">= 0.6"
@@ -78,10 +79,10 @@
"url": "git+https://github.com/jshttp/mime-types.git"
},
"scripts": {
- "lint": "eslint .",
+ "lint": "eslint --plugin markdown --ext js,md .",
"test": "mocha --reporter spec test/test.js",
"test-cov": "nyc --reporter=html --reporter=text npm test",
"test-travis": "nyc --reporter=text npm test"
},
- "version": "2.1.26"
+ "version": "2.1.27"
}
diff --git a/node_modules/mkdirp/.travis.yml b/node_modules/mkdirp/.travis.yml
deleted file mode 100644
index 74c57bf..0000000
--- a/node_modules/mkdirp/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
-before_install:
- - npm install -g npm@~1.4.6
diff --git a/node_modules/mkdirp/examples/pow.js b/node_modules/mkdirp/examples/pow.js
deleted file mode 100644
index e692421..0000000
--- a/node_modules/mkdirp/examples/pow.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
- if (err) console.error(err)
- else console.log('pow!')
-});
diff --git a/node_modules/mkdirp/index.js b/node_modules/mkdirp/index.js
index 6ce241b..468d7cd 100644
--- a/node_modules/mkdirp/index.js
+++ b/node_modules/mkdirp/index.js
@@ -17,7 +17,7 @@ function mkdirP (p, opts, f, made) {
var xfs = opts.fs || fs;
if (mode === undefined) {
- mode = _0777 & (~process.umask());
+ mode = _0777
}
if (!made) made = null;
@@ -31,6 +31,7 @@ function mkdirP (p, opts, f, made) {
}
switch (er.code) {
case 'ENOENT':
+ if (path.dirname(p) === p) return cb(er);
mkdirP(path.dirname(p), opts, function (er, made) {
if (er) cb(er, made);
else mkdirP(p, opts, cb, made);
@@ -61,7 +62,7 @@ mkdirP.sync = function sync (p, opts, made) {
var xfs = opts.fs || fs;
if (mode === undefined) {
- mode = _0777 & (~process.umask());
+ mode = _0777
}
if (!made) made = null;
diff --git a/node_modules/mkdirp/node_modules/minimist/.travis.yml b/node_modules/mkdirp/node_modules/minimist/.travis.yml
deleted file mode 100644
index cc4dba2..0000000
--- a/node_modules/mkdirp/node_modules/minimist/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
diff --git a/node_modules/mkdirp/node_modules/minimist/example/parse.js b/node_modules/mkdirp/node_modules/minimist/example/parse.js
deleted file mode 100644
index abff3e8..0000000
--- a/node_modules/mkdirp/node_modules/minimist/example/parse.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.dir(argv);
diff --git a/node_modules/mkdirp/node_modules/minimist/index.js b/node_modules/mkdirp/node_modules/minimist/index.js
deleted file mode 100644
index 584f551..0000000
--- a/node_modules/mkdirp/node_modules/minimist/index.js
+++ /dev/null
@@ -1,187 +0,0 @@
-module.exports = function (args, opts) {
- if (!opts) opts = {};
-
- var flags = { bools : {}, strings : {} };
-
- [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true;
- });
-
- [].concat(opts.string).filter(Boolean).forEach(function (key) {
- flags.strings[key] = true;
- });
-
- var aliases = {};
- Object.keys(opts.alias || {}).forEach(function (key) {
- aliases[key] = [].concat(opts.alias[key]);
- aliases[key].forEach(function (x) {
- aliases[x] = [key].concat(aliases[key].filter(function (y) {
- return x !== y;
- }));
- });
- });
-
- var defaults = opts['default'] || {};
-
- var argv = { _ : [] };
- Object.keys(flags.bools).forEach(function (key) {
- setArg(key, defaults[key] === undefined ? false : defaults[key]);
- });
-
- var notFlags = [];
-
- if (args.indexOf('--') !== -1) {
- notFlags = args.slice(args.indexOf('--')+1);
- args = args.slice(0, args.indexOf('--'));
- }
-
- function setArg (key, val) {
- var value = !flags.strings[key] && isNumber(val)
- ? Number(val) : val
- ;
- setKey(argv, key.split('.'), value);
-
- (aliases[key] || []).forEach(function (x) {
- setKey(argv, x.split('.'), value);
- });
- }
-
- for (var i = 0; i < args.length; i++) {
- var arg = args[i];
-
- if (/^--.+=/.test(arg)) {
- // Using [\s\S] instead of . because js doesn't support the
- // 'dotall' regex modifier. See:
- // http://stackoverflow.com/a/1068308/13216
- var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
- setArg(m[1], m[2]);
- }
- else if (/^--no-.+/.test(arg)) {
- var key = arg.match(/^--no-(.+)/)[1];
- setArg(key, false);
- }
- else if (/^--.+/.test(arg)) {
- var key = arg.match(/^--(.+)/)[1];
- var next = args[i + 1];
- if (next !== undefined && !/^-/.test(next)
- && !flags.bools[key]
- && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
- setArg(key, next);
- i++;
- }
- else if (/^(true|false)$/.test(next)) {
- setArg(key, next === 'true');
- i++;
- }
- else {
- setArg(key, flags.strings[key] ? '' : true);
- }
- }
- else if (/^-[^-]+/.test(arg)) {
- var letters = arg.slice(1,-1).split('');
-
- var broken = false;
- for (var j = 0; j < letters.length; j++) {
- var next = arg.slice(j+2);
-
- if (next === '-') {
- setArg(letters[j], next)
- continue;
- }
-
- if (/[A-Za-z]/.test(letters[j])
- && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
- setArg(letters[j], next);
- broken = true;
- break;
- }
-
- if (letters[j+1] && letters[j+1].match(/\W/)) {
- setArg(letters[j], arg.slice(j+2));
- broken = true;
- break;
- }
- else {
- setArg(letters[j], flags.strings[letters[j]] ? '' : true);
- }
- }
-
- var key = arg.slice(-1)[0];
- if (!broken && key !== '-') {
- if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
- && !flags.bools[key]
- && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
- setArg(key, args[i+1]);
- i++;
- }
- else if (args[i+1] && /true|false/.test(args[i+1])) {
- setArg(key, args[i+1] === 'true');
- i++;
- }
- else {
- setArg(key, flags.strings[key] ? '' : true);
- }
- }
- }
- else {
- argv._.push(
- flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
- );
- }
- }
-
- Object.keys(defaults).forEach(function (key) {
- if (!hasKey(argv, key.split('.'))) {
- setKey(argv, key.split('.'), defaults[key]);
-
- (aliases[key] || []).forEach(function (x) {
- setKey(argv, x.split('.'), defaults[key]);
- });
- }
- });
-
- notFlags.forEach(function(key) {
- argv._.push(key);
- });
-
- return argv;
-};
-
-function hasKey (obj, keys) {
- var o = obj;
- keys.slice(0,-1).forEach(function (key) {
- o = (o[key] || {});
- });
-
- var key = keys[keys.length - 1];
- return key in o;
-}
-
-function setKey (obj, keys, value) {
- var o = obj;
- keys.slice(0,-1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {};
- o = o[key];
- });
-
- var key = keys[keys.length - 1];
- if (o[key] === undefined || typeof o[key] === 'boolean') {
- o[key] = value;
- }
- else if (Array.isArray(o[key])) {
- o[key].push(value);
- }
- else {
- o[key] = [ o[key], value ];
- }
-}
-
-function isNumber (x) {
- if (typeof x === 'number') return true;
- if (/^0x[0-9a-f]+$/i.test(x)) return true;
- return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
-}
-
-function longest (xs) {
- return Math.max.apply(null, xs.map(function (x) { return x.length }));
-}
diff --git a/node_modules/mkdirp/node_modules/minimist/package.json b/node_modules/mkdirp/node_modules/minimist/package.json
deleted file mode 100644
index 93e2840..0000000
--- a/node_modules/mkdirp/node_modules/minimist/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "_from": "minimist@0.0.8",
- "_id": "minimist@0.0.8",
- "_inBundle": false,
- "_integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "_location": "/mkdirp/minimist",
- "_phantomChildren": {},
- "_requested": {
- "type": "version",
- "registry": true,
- "raw": "minimist@0.0.8",
- "name": "minimist",
- "escapedName": "minimist",
- "rawSpec": "0.0.8",
- "saveSpec": null,
- "fetchSpec": "0.0.8"
- },
- "_requiredBy": [
- "/mkdirp"
- ],
- "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
- "_spec": "minimist@0.0.8",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/mkdirp",
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "bugs": {
- "url": "https://github.com/substack/minimist/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "parse argument options",
- "devDependencies": {
- "tap": "~0.4.0",
- "tape": "~1.0.4"
- },
- "homepage": "https://github.com/substack/minimist",
- "keywords": [
- "argv",
- "getopt",
- "parser",
- "optimist"
- ],
- "license": "MIT",
- "main": "index.js",
- "name": "minimist",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/minimist.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/6..latest",
- "ff/5",
- "firefox/latest",
- "chrome/10",
- "chrome/latest",
- "safari/5.1",
- "safari/latest",
- "opera/12"
- ]
- },
- "version": "0.0.8"
-}
diff --git a/node_modules/mkdirp/node_modules/minimist/readme.markdown b/node_modules/mkdirp/node_modules/minimist/readme.markdown
deleted file mode 100644
index c256353..0000000
--- a/node_modules/mkdirp/node_modules/minimist/readme.markdown
+++ /dev/null
@@ -1,73 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
-
-[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.dir(argv);
-```
-
-```
-$ node example/parse.js -a beep -b boop
-{ _: [], a: 'beep', b: 'boop' }
-```
-
-```
-$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
-{ _: [ 'foo', 'bar', 'baz' ],
- x: 3,
- y: 4,
- n: 5,
- a: true,
- b: true,
- c: true,
- beep: 'boop' }
-```
-
-# methods
-
-``` js
-var parseArgs = require('minimist')
-```
-
-## var argv = parseArgs(args, opts={})
-
-Return an argument object `argv` populated with the array arguments from `args`.
-
-`argv._` contains all the arguments that didn't have an option associated with
-them.
-
-Numeric-looking arguments will be returned as numbers unless `opts.string` or
-`opts.boolean` is set for that argument name.
-
-Any arguments after `'--'` will not be parsed and will end up in `argv._`.
-
-options can be:
-
-* `opts.string` - a string or array of strings argument names to always treat as
-strings
-* `opts.boolean` - a string or array of strings to always treat as booleans
-* `opts.alias` - an object mapping string names to strings or arrays of string
-argument names to use as aliases
-* `opts.default` - an object mapping string argument names to default values
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT
diff --git a/node_modules/mkdirp/node_modules/minimist/test/dash.js b/node_modules/mkdirp/node_modules/minimist/test/dash.js
deleted file mode 100644
index 8b034b9..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/dash.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
- t.plan(5);
- t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
- t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
- t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
- t.deepEqual(
- parse([ '-b', '-' ], { boolean: 'b' }),
- { b: true, _: [ '-' ] }
- );
- t.deepEqual(
- parse([ '-s', '-' ], { string: 's' }),
- { s: '-', _: [] }
- );
-});
-
-test('-a -- b', function (t) {
- t.plan(3);
- t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/default_bool.js b/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
deleted file mode 100644
index f0041ee..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
- var argv = parse([], {
- boolean: 'sometrue',
- default: { sometrue: true }
- });
- t.equal(argv.sometrue, true);
- t.end();
-});
-
-test('boolean default false', function (t) {
- var argv = parse([], {
- boolean: 'somefalse',
- default: { somefalse: false }
- });
- t.equal(argv.somefalse, false);
- t.end();
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/dotted.js b/node_modules/mkdirp/node_modules/minimist/test/dotted.js
deleted file mode 100644
index ef0ae34..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/dotted.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
- var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 22);
- t.equal(argv.aa.bb, 22);
- t.end();
-});
-
-test('dotted default', function (t) {
- var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 11);
- t.equal(argv.aa.bb, 11);
- t.end();
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/long.js b/node_modules/mkdirp/node_modules/minimist/test/long.js
deleted file mode 100644
index 5d3a1e0..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/long.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
- t.deepEqual(
- parse([ '--bool' ]),
- { bool : true, _ : [] },
- 'long boolean'
- );
- t.deepEqual(
- parse([ '--pow', 'xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture sp'
- );
- t.deepEqual(
- parse([ '--pow=xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture eq'
- );
- t.deepEqual(
- parse([ '--host', 'localhost', '--port', '555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures sp'
- );
- t.deepEqual(
- parse([ '--host=localhost', '--port=555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures eq'
- );
- t.end();
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/parse.js b/node_modules/mkdirp/node_modules/minimist/test/parse.js
deleted file mode 100644
index 8a90646..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/parse.js
+++ /dev/null
@@ -1,318 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
- t.deepEqual(
- parse([ '--no-moo' ]),
- { moo : false, _ : [] },
- 'no'
- );
- t.deepEqual(
- parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
- { v : ['a','b','c'], _ : [] },
- 'multi'
- );
- t.end();
-});
-
-test('comprehensive', function (t) {
- t.deepEqual(
- parse([
- '--name=meowmers', 'bare', '-cats', 'woo',
- '-h', 'awesome', '--multi=quux',
- '--key', 'value',
- '-b', '--bool', '--no-meep', '--multi=baz',
- '--', '--not-a-flag', 'eek'
- ]),
- {
- c : true,
- a : true,
- t : true,
- s : 'woo',
- h : 'awesome',
- b : true,
- bool : true,
- key : 'value',
- multi : [ 'quux', 'baz' ],
- meep : false,
- name : 'meowmers',
- _ : [ 'bare', '--not-a-flag', 'eek' ]
- }
- );
- t.end();
-});
-
-test('nums', function (t) {
- var argv = parse([
- '-x', '1234',
- '-y', '5.67',
- '-z', '1e7',
- '-w', '10f',
- '--hex', '0xdeadbeef',
- '789'
- ]);
- t.deepEqual(argv, {
- x : 1234,
- y : 5.67,
- z : 1e7,
- w : '10f',
- hex : 0xdeadbeef,
- _ : [ 789 ]
- });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv.y, 'number');
- t.deepEqual(typeof argv.z, 'number');
- t.deepEqual(typeof argv.w, 'string');
- t.deepEqual(typeof argv.hex, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
-
-test('flag boolean', function (t) {
- var argv = parse([ '-t', 'moo' ], { boolean: 't' });
- t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean value', function (t) {
- var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
- boolean: [ 't', 'verbose' ],
- default: { verbose: true }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: true,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean default false', function (t) {
- var argv = parse(['moo'], {
- boolean: ['t', 'verbose'],
- default: { verbose: false, t: false }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: false,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-
-});
-
-test('boolean groups', function (t) {
- var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
- boolean: ['x','y','z']
- });
-
- t.deepEqual(argv, {
- x : true,
- y : false,
- z : true,
- _ : [ 'one', 'two', 'three' ]
- });
-
- t.deepEqual(typeof argv.x, 'boolean');
- t.deepEqual(typeof argv.y, 'boolean');
- t.deepEqual(typeof argv.z, 'boolean');
- t.end();
-});
-
-test('newlines in params' , function (t) {
- var args = parse([ '-s', "X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
-
- // reproduce in bash:
- // VALUE="new
- // line"
- // node program.js --s="$VALUE"
- args = parse([ "--s=X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
- t.end();
-});
-
-test('strings' , function (t) {
- var s = parse([ '-s', '0001234' ], { string: 's' }).s;
- t.equal(s, '0001234');
- t.equal(typeof s, 'string');
-
- var x = parse([ '-x', '56' ], { string: 'x' }).x;
- t.equal(x, '56');
- t.equal(typeof x, 'string');
- t.end();
-});
-
-test('stringArgs', function (t) {
- var s = parse([ ' ', ' ' ], { string: '_' })._;
- t.same(s.length, 2);
- t.same(typeof s[0], 'string');
- t.same(s[0], ' ');
- t.same(typeof s[1], 'string');
- t.same(s[1], ' ');
- t.end();
-});
-
-test('empty strings', function(t) {
- var s = parse([ '-s' ], { string: 's' }).s;
- t.equal(s, '');
- t.equal(typeof s, 'string');
-
- var str = parse([ '--str' ], { string: 'str' }).str;
- t.equal(str, '');
- t.equal(typeof str, 'string');
-
- var letters = parse([ '-art' ], {
- string: [ 'a', 't' ]
- });
-
- t.equal(letters.a, '');
- t.equal(letters.r, true);
- t.equal(letters.t, '');
-
- t.end();
-});
-
-
-test('slashBreak', function (t) {
- t.same(
- parse([ '-I/foo/bar/baz' ]),
- { I : '/foo/bar/baz', _ : [] }
- );
- t.same(
- parse([ '-xyz/foo/bar/baz' ]),
- { x : true, y : true, z : '/foo/bar/baz', _ : [] }
- );
- t.end();
-});
-
-test('alias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: 'zoom' }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('multiAlias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: [ 'zm', 'zoom' ] }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.z, argv.zm);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('nested dotted objects', function (t) {
- var argv = parse([
- '--foo.bar', '3', '--foo.baz', '4',
- '--foo.quux.quibble', '5', '--foo.quux.o_O',
- '--beep.boop'
- ]);
-
- t.same(argv.foo, {
- bar : 3,
- baz : 4,
- quux : {
- quibble : 5,
- o_O : true
- }
- });
- t.same(argv.beep, { boop : true });
- t.end();
-});
-
-test('boolean and alias with chainable api', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- herp: { alias: 'h', boolean: true }
- };
- var aliasedArgv = parse(aliased, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var propertyArgv = parse(regular, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- alias: { 'h': 'herp' },
- boolean: 'herp'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
- var aliased = [ '-h', 'true' ];
- var regular = [ '--herp', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
- var parsed = parse(['--boool', '--other=true'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'true');
-
- parsed = parse(['--boool', '--other=false'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'false');
- t.end();
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js b/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
deleted file mode 100644
index 21851b0..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse with modifier functions' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-b', '123' ], { boolean: 'b' });
- t.deepEqual(argv, { b: true, _: ['123'] });
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/short.js b/node_modules/mkdirp/node_modules/minimist/test/short.js
deleted file mode 100644
index d513a1c..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/short.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('numeric short args', function (t) {
- t.plan(2);
- t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
- t.deepEqual(
- parse([ '-123', '456' ]),
- { 1: true, 2: true, 3: 456, _: [] }
- );
-});
-
-test('short', function (t) {
- t.deepEqual(
- parse([ '-b' ]),
- { b : true, _ : [] },
- 'short boolean'
- );
- t.deepEqual(
- parse([ 'foo', 'bar', 'baz' ]),
- { _ : [ 'foo', 'bar', 'baz' ] },
- 'bare'
- );
- t.deepEqual(
- parse([ '-cats' ]),
- { c : true, a : true, t : true, s : true, _ : [] },
- 'group'
- );
- t.deepEqual(
- parse([ '-cats', 'meow' ]),
- { c : true, a : true, t : true, s : 'meow', _ : [] },
- 'short group next'
- );
- t.deepEqual(
- parse([ '-h', 'localhost' ]),
- { h : 'localhost', _ : [] },
- 'short capture'
- );
- t.deepEqual(
- parse([ '-h', 'localhost', '-p', '555' ]),
- { h : 'localhost', p : 555, _ : [] },
- 'short captures'
- );
- t.end();
-});
-
-test('mixed short bool and capture', function (t) {
- t.same(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
-
-test('short and long', function (t) {
- t.deepEqual(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
diff --git a/node_modules/mkdirp/node_modules/minimist/test/whitespace.js b/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
deleted file mode 100644
index 8a52a58..0000000
--- a/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('whitespace should be whitespace' , function (t) {
- t.plan(1);
- var x = parse([ '-x', '\t' ]).x;
- t.equal(x, '\t');
-});
diff --git a/node_modules/mkdirp/package.json b/node_modules/mkdirp/package.json
index b0b1b3a..a7f6350 100644
--- a/node_modules/mkdirp/package.json
+++ b/node_modules/mkdirp/package.json
@@ -1,8 +1,8 @@
{
"_from": "mkdirp@^0.5.1",
- "_id": "mkdirp@0.5.1",
+ "_id": "mkdirp@0.5.5",
"_inBundle": false,
- "_integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "_integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"_location": "/mkdirp",
"_phantomChildren": {},
"_requested": {
@@ -20,10 +20,10 @@
"/node-gyp",
"/node-sass"
],
- "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "_shasum": "30057438eac6cf7f8c4767f38648d6697d75c903",
+ "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "_shasum": "d91cefd62d1436ca0f41620e251288d420099def",
"_spec": "mkdirp@^0.5.1",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/node-sass",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/node-sass",
"author": {
"name": "James Halliday",
"email": "mail@substack.net",
@@ -37,14 +37,18 @@
},
"bundleDependencies": false,
"dependencies": {
- "minimist": "0.0.8"
+ "minimist": "^1.2.5"
},
"deprecated": false,
"description": "Recursively mkdir, like `mkdir -p`",
"devDependencies": {
- "mock-fs": "2 >=2.7.0",
- "tap": "1"
+ "mock-fs": "^3.7.0",
+ "tap": "^5.4.2"
},
+ "files": [
+ "bin",
+ "index.js"
+ ],
"homepage": "https://github.com/substack/node-mkdirp#readme",
"keywords": [
"mkdir",
@@ -53,6 +57,9 @@
"license": "MIT",
"main": "index.js",
"name": "mkdirp",
+ "publishConfig": {
+ "tag": "legacy"
+ },
"repository": {
"type": "git",
"url": "git+https://github.com/substack/node-mkdirp.git"
@@ -60,5 +67,5 @@
"scripts": {
"test": "tap test/*.js"
},
- "version": "0.5.1"
+ "version": "0.5.5"
}
diff --git a/node_modules/mkdirp/readme.markdown b/node_modules/mkdirp/readme.markdown
index 3cc1315..fc314bf 100644
--- a/node_modules/mkdirp/readme.markdown
+++ b/node_modules/mkdirp/readme.markdown
@@ -37,7 +37,7 @@ Create a new directory and any necessary subdirectories at `dir` with octal
permission string `opts.mode`. If `opts` is a non-object, it will be treated as
the `opts.mode`.
-If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
+If `opts.mode` isn't specified, it defaults to `0777`.
`cb(err, made)` fires with the error or the first directory `made`
that had to be created, if any.
@@ -52,7 +52,7 @@ Synchronously create a new directory and any necessary subdirectories at `dir`
with octal permission string `opts.mode`. If `opts` is a non-object, it will be
treated as the `opts.mode`.
-If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
+If `opts.mode` isn't specified, it defaults to `0777`.
Returns the first directory that had to be created, if any.
diff --git a/node_modules/mkdirp/test/chmod.js b/node_modules/mkdirp/test/chmod.js
deleted file mode 100644
index 6a404b9..0000000
--- a/node_modules/mkdirp/test/chmod.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-var _0744 = parseInt('0744', 8);
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
-}
-
-var file = ps.join('/');
-
-test('chmod-pre', function (t) {
- var mode = _0744
- mkdirp(file, mode, function (er) {
- t.ifError(er, 'should not error');
- fs.stat(file, function (er, stat) {
- t.ifError(er, 'should exist');
- t.ok(stat && stat.isDirectory(), 'should be directory');
- t.equal(stat && stat.mode & _0777, mode, 'should be 0744');
- t.end();
- });
- });
-});
-
-test('chmod', function (t) {
- var mode = _0755
- mkdirp(file, mode, function (er) {
- t.ifError(er, 'should not error');
- fs.stat(file, function (er, stat) {
- t.ifError(er, 'should exist');
- t.ok(stat && stat.isDirectory(), 'should be directory');
- t.end();
- });
- });
-});
diff --git a/node_modules/mkdirp/test/clobber.js b/node_modules/mkdirp/test/clobber.js
deleted file mode 100644
index 2433b9a..0000000
--- a/node_modules/mkdirp/test/clobber.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0755 = parseInt('0755', 8);
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
-}
-
-var file = ps.join('/');
-
-// a file in the way
-var itw = ps.slice(0, 3).join('/');
-
-
-test('clobber-pre', function (t) {
- console.error("about to write to "+itw)
- fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
-
- fs.stat(itw, function (er, stat) {
- t.ifError(er)
- t.ok(stat && stat.isFile(), 'should be file')
- t.end()
- })
-})
-
-test('clobber', function (t) {
- t.plan(2);
- mkdirp(file, _0755, function (err) {
- t.ok(err);
- t.equal(err.code, 'ENOTDIR');
- t.end();
- });
-});
diff --git a/node_modules/mkdirp/test/mkdirp.js b/node_modules/mkdirp/test/mkdirp.js
deleted file mode 100644
index eaa8921..0000000
--- a/node_modules/mkdirp/test/mkdirp.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('woo', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
diff --git a/node_modules/mkdirp/test/opts_fs.js b/node_modules/mkdirp/test/opts_fs.js
deleted file mode 100644
index 97186b6..0000000
--- a/node_modules/mkdirp/test/opts_fs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var test = require('tap').test;
-var mockfs = require('mock-fs');
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('opts.fs', function (t) {
- t.plan(5);
-
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/beep/boop/' + [x,y,z].join('/');
- var xfs = mockfs.fs();
-
- mkdirp(file, { fs: xfs, mode: _0755 }, function (err) {
- t.ifError(err);
- xfs.exists(file, function (ex) {
- t.ok(ex, 'created file');
- xfs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
- });
-});
diff --git a/node_modules/mkdirp/test/opts_fs_sync.js b/node_modules/mkdirp/test/opts_fs_sync.js
deleted file mode 100644
index 6c370aa..0000000
--- a/node_modules/mkdirp/test/opts_fs_sync.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var test = require('tap').test;
-var mockfs = require('mock-fs');
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('opts.fs sync', function (t) {
- t.plan(4);
-
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/beep/boop/' + [x,y,z].join('/');
- var xfs = mockfs.fs();
-
- mkdirp.sync(file, { fs: xfs, mode: _0755 });
- xfs.exists(file, function (ex) {
- t.ok(ex, 'created file');
- xfs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/node_modules/mkdirp/test/perm.js b/node_modules/mkdirp/test/perm.js
deleted file mode 100644
index fbce44b..0000000
--- a/node_modules/mkdirp/test/perm.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('async perm', function (t) {
- t.plan(5);
- var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
-
-test('async root perm', function (t) {
- mkdirp('/tmp', _0755, function (err) {
- if (err) t.fail(err);
- t.end();
- });
- t.end();
-});
diff --git a/node_modules/mkdirp/test/perm_sync.js b/node_modules/mkdirp/test/perm_sync.js
deleted file mode 100644
index 398229f..0000000
--- a/node_modules/mkdirp/test/perm_sync.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('sync perm', function (t) {
- t.plan(4);
- var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
-
- mkdirp.sync(file, _0755);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
-
-test('sync root perm', function (t) {
- t.plan(3);
-
- var file = '/tmp';
- mkdirp.sync(file, _0755);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- });
-});
diff --git a/node_modules/mkdirp/test/race.js b/node_modules/mkdirp/test/race.js
deleted file mode 100644
index b0b9e18..0000000
--- a/node_modules/mkdirp/test/race.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('race', function (t) {
- t.plan(10);
- var ps = [ '', 'tmp' ];
-
- for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
- }
- var file = ps.join('/');
-
- var res = 2;
- mk(file);
-
- mk(file);
-
- function mk (file, cb) {
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- })
- });
- }
-});
diff --git a/node_modules/mkdirp/test/rel.js b/node_modules/mkdirp/test/rel.js
deleted file mode 100644
index 4ddb342..0000000
--- a/node_modules/mkdirp/test/rel.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('rel', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var cwd = process.cwd();
- process.chdir('/tmp');
-
- var file = [x,y,z].join('/');
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- process.chdir(cwd);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
diff --git a/node_modules/mkdirp/test/return.js b/node_modules/mkdirp/test/return.js
deleted file mode 100644
index bce68e5..0000000
--- a/node_modules/mkdirp/test/return.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- // should return the first dir created.
- // By this point, it would be profoundly surprising if /tmp didn't
- // already exist, since every other test makes things in there.
- mkdirp(file, function (err, made) {
- t.ifError(err);
- t.equal(made, '/tmp/' + x);
- mkdirp(file, function (err, made) {
- t.ifError(err);
- t.equal(made, null);
- });
- });
-});
diff --git a/node_modules/mkdirp/test/return_sync.js b/node_modules/mkdirp/test/return_sync.js
deleted file mode 100644
index 7c222d3..0000000
--- a/node_modules/mkdirp/test/return_sync.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
- t.plan(2);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- // should return the first dir created.
- // By this point, it would be profoundly surprising if /tmp didn't
- // already exist, since every other test makes things in there.
- // Note that this will throw on failure, which will fail the test.
- var made = mkdirp.sync(file);
- t.equal(made, '/tmp/' + x);
-
- // making the same file again should have no effect.
- made = mkdirp.sync(file);
- t.equal(made, null);
-});
diff --git a/node_modules/mkdirp/test/root.js b/node_modules/mkdirp/test/root.js
deleted file mode 100644
index 9e7d079..0000000
--- a/node_modules/mkdirp/test/root.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0755 = parseInt('0755', 8);
-
-test('root', function (t) {
- // '/' on unix, 'c:/' on windows.
- var file = path.resolve('/');
-
- mkdirp(file, _0755, function (err) {
- if (err) throw err
- fs.stat(file, function (er, stat) {
- if (er) throw er
- t.ok(stat.isDirectory(), 'target is a directory');
- t.end();
- })
- });
-});
diff --git a/node_modules/mkdirp/test/sync.js b/node_modules/mkdirp/test/sync.js
deleted file mode 100644
index 8c8dc93..0000000
--- a/node_modules/mkdirp/test/sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('sync', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- try {
- mkdirp.sync(file, _0755);
- } catch (err) {
- t.fail(err);
- return t.end();
- }
-
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/node_modules/mkdirp/test/umask.js b/node_modules/mkdirp/test/umask.js
deleted file mode 100644
index 2033c63..0000000
--- a/node_modules/mkdirp/test/umask.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('implicit mode from umask', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- mkdirp(file, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0777 & (~process.umask()));
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- })
- });
-});
diff --git a/node_modules/mkdirp/test/umask_sync.js b/node_modules/mkdirp/test/umask_sync.js
deleted file mode 100644
index 11a7614..0000000
--- a/node_modules/mkdirp/test/umask_sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('umask sync modes', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- try {
- mkdirp.sync(file);
- } catch (err) {
- t.fail(err);
- return t.end();
- }
-
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, (_0777 & (~process.umask())));
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/node_modules/nan/CHANGELOG.md b/node_modules/nan/CHANGELOG.md
index 7cdfbe7..44858c7 100644
--- a/node_modules/nan/CHANGELOG.md
+++ b/node_modules/nan/CHANGELOG.md
@@ -1,6 +1,10 @@
# NAN ChangeLog
-**Version 2.14.0: current Node 12.2.0, Node 0.12: 0.12.18, Node 0.10: 0.10.48, iojs: 3.3.1**
+**Version 2.14.1: current Node 14.0.0, Node 0.12: 0.12.18, Node 0.10: 0.10.48, iojs: 3.3.1**
+
+### 2.14.1 Apr 21 2020
+
+ - Bugfix: use GetBackingStore() instead of GetContents() (#888) 2c023bd447661a61071da318b0ff4003c3858d39
### 2.14.0 May 16 2019
diff --git a/node_modules/nan/README.md b/node_modules/nan/README.md
index 3389ef5..9b5f38a 100644
--- a/node_modules/nan/README.md
+++ b/node_modules/nan/README.md
@@ -1,9 +1,9 @@
Native Abstractions for Node.js
===============================
-**A header file filled with macro and utility goodness for making add-on development for Node.js easier across versions 0.8, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 and 12.**
+**A header file filled with macro and utility goodness for making add-on development for Node.js easier across versions 0.8, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 and 14.**
-***Current version: 2.14.0***
+***Current version: 2.14.1***
*(See [CHANGELOG.md](https://github.com/nodejs/nan/blob/master/CHANGELOG.md) for complete ChangeLog)*
@@ -68,8 +68,7 @@ Also take a look at our comprehensive **[C++ test suite](https://github.com/node
Additional to the NAN documentation below, please consult:
-* [The V8 Getting Started * Guide](https://github.com/v8/v8/wiki/Getting%20Started%20with%20Embedding)
-* [The V8 Embedders * Guide](https://github.com/v8/v8/wiki/Embedder%27s%20Guide)
+* [The V8 Getting Started * Guide](https://v8.dev/docs/embed)
* [V8 API Documentation](https://v8docs.nodesource.com/)
* [Node Add-on Documentation](https://nodejs.org/api/addons.html)
@@ -219,7 +218,7 @@ The _JSON_ object provides the c++ versions of the methods offered by the `JSON`
- <a href="doc/json.md#api_nan_json_parse"><b><code>Nan::JSON.Parse</code></b></a>
- <a href="doc/json.md#api_nan_json_stringify"><b><code>Nan::JSON.Stringify</code></b></a>
-Refer to the V8 JSON object in the [V8 documentation](https://v8docs.nodesource.com/node-8.11/da/d6f/classv8_1_1_j_s_o_n.html) for more information about these methods and their arguments.
+Refer to the V8 JSON object in the [V8 documentation](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html) for more information about these methods and their arguments.
### Errors
diff --git a/node_modules/nan/doc/errors.md b/node_modules/nan/doc/errors.md
index 8127a54..843435b 100644
--- a/node_modules/nan/doc/errors.md
+++ b/node_modules/nan/doc/errors.md
@@ -24,7 +24,7 @@ Also consult the V8 Embedders Guide section on [Exceptions](https://developers.g
<a name="api_nan_error"></a>
### Nan::Error()
-Create a new Error object using the [v8::Exception](https://v8docs.nodesource.com/node-8.11/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
+Create a new Error object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
Note that an Error object is simply a specialized form of `v8::Value`.
@@ -39,7 +39,7 @@ v8::Local<v8::Value> Nan::Error(v8::Local<v8::String> msg);
<a name="api_nan_range_error"></a>
### Nan::RangeError()
-Create a new RangeError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.11/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
+Create a new RangeError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
Note that an RangeError object is simply a specialized form of `v8::Value`.
@@ -54,7 +54,7 @@ v8::Local<v8::Value> Nan::RangeError(v8::Local<v8::String> msg);
<a name="api_nan_reference_error"></a>
### Nan::ReferenceError()
-Create a new ReferenceError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.11/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
+Create a new ReferenceError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
Note that an ReferenceError object is simply a specialized form of `v8::Value`.
@@ -69,7 +69,7 @@ v8::Local<v8::Value> Nan::ReferenceError(v8::Local<v8::String> msg);
<a name="api_nan_syntax_error"></a>
### Nan::SyntaxError()
-Create a new SyntaxError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.11/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
+Create a new SyntaxError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
Note that an SyntaxError object is simply a specialized form of `v8::Value`.
@@ -84,7 +84,7 @@ v8::Local<v8::Value> Nan::SyntaxError(v8::Local<v8::String> msg);
<a name="api_nan_type_error"></a>
### Nan::TypeError()
-Create a new TypeError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.11/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
+Create a new TypeError object using the [v8::Exception](https://v8docs.nodesource.com/node-8.16/da/d6a/classv8_1_1_exception.html) class in a way that is compatible across the supported versions of V8.
Note that an TypeError object is simply a specialized form of `v8::Value`.
@@ -194,7 +194,7 @@ v8::Local<v8::Value> Nan::ErrnoException(int errorno,
<a name="api_nan_try_catch"></a>
### Nan::TryCatch
-A simple wrapper around [`v8::TryCatch`](https://v8docs.nodesource.com/node-8.11/d4/dc6/classv8_1_1_try_catch.html) compatible with all supported versions of V8. Can be used as a direct replacement in most cases. See also [`Nan::FatalException()`](#api_nan_fatal_exception) for an internal use compatible with `node::FatalException`.
+A simple wrapper around [`v8::TryCatch`](https://v8docs.nodesource.com/node-8.16/d4/dc6/classv8_1_1_try_catch.html) compatible with all supported versions of V8. Can be used as a direct replacement in most cases. See also [`Nan::FatalException()`](#api_nan_fatal_exception) for an internal use compatible with `node::FatalException`.
Signature:
diff --git a/node_modules/nan/doc/json.md b/node_modules/nan/doc/json.md
index 4fa78db..d142597 100644
--- a/node_modules/nan/doc/json.md
+++ b/node_modules/nan/doc/json.md
@@ -5,13 +5,13 @@ The _JSON_ object provides the c++ versions of the methods offered by the `JSON`
- <a href="#api_nan_json_parse"><b><code>Nan::JSON.Parse</code></b></a>
- <a href="#api_nan_json_stringify"><b><code>Nan::JSON.Stringify</code></b></a>
-Refer to the V8 JSON object in the [V8 documentation](https://v8docs.nodesource.com/node-8.11/da/d6f/classv8_1_1_j_s_o_n.html) for more information about these methods and their arguments.
+Refer to the V8 JSON object in the [V8 documentation](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html) for more information about these methods and their arguments.
<a name="api_nan_json_parse"></a>
### Nan::JSON.Parse
-A simple wrapper around [`v8::JSON::Parse`](https://v8docs.nodesource.com/node-8.11/da/d6f/classv8_1_1_j_s_o_n.html#a936310d2540fb630ed37d3ee3ffe4504).
+A simple wrapper around [`v8::JSON::Parse`](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html#a936310d2540fb630ed37d3ee3ffe4504).
Definition:
@@ -37,7 +37,7 @@ if (!result.IsEmpty()) {
### Nan::JSON.Stringify
-A simple wrapper around [`v8::JSON::Stringify`](https://v8docs.nodesource.com/node-8.11/da/d6f/classv8_1_1_j_s_o_n.html#a44b255c3531489ce43f6110209138860).
+A simple wrapper around [`v8::JSON::Stringify`](https://v8docs.nodesource.com/node-8.16/da/d6f/classv8_1_1_j_s_o_n.html#a44b255c3531489ce43f6110209138860).
Definition:
diff --git a/node_modules/nan/doc/maybe_types.md b/node_modules/nan/doc/maybe_types.md
index 1a9fabf..142851a 100644
--- a/node_modules/nan/doc/maybe_types.md
+++ b/node_modules/nan/doc/maybe_types.md
@@ -47,7 +47,7 @@ The `Nan::MaybeLocal` and `Nan::Maybe` types are monads that encapsulate `v8::Lo
<a name="api_nan_maybe_local"></a>
### Nan::MaybeLocal
-A `Nan::MaybeLocal<T>` is a wrapper around [`v8::Local<T>`](https://v8docs.nodesource.com/node-8.11/de/deb/classv8_1_1_local.html) that enforces a check that determines whether the `v8::Local<T>` is empty before it can be used.
+A `Nan::MaybeLocal<T>` is a wrapper around [`v8::Local<T>`](https://v8docs.nodesource.com/node-8.16/de/deb/classv8_1_1_local.html) that enforces a check that determines whether the `v8::Local<T>` is empty before it can be used.
If an API method returns a `Nan::MaybeLocal`, the API method can potentially fail either because an exception is thrown, or because an exception is pending, e.g. because a previous API call threw an exception that hasn't been caught yet, or because a `v8::TerminateExecution` exception was thrown. In that case, an empty `Nan::MaybeLocal` is returned.
@@ -71,7 +71,7 @@ template<typename T> class Nan::MaybeLocal {
};
```
-See the documentation for [`v8::MaybeLocal`](https://v8docs.nodesource.com/node-8.11/d8/d7d/classv8_1_1_maybe_local.html) for further details.
+See the documentation for [`v8::MaybeLocal`](https://v8docs.nodesource.com/node-8.16/d8/d7d/classv8_1_1_maybe_local.html) for further details.
<a name="api_nan_maybe"></a>
### Nan::Maybe
@@ -99,7 +99,7 @@ template<typename T> class Nan::Maybe {
};
```
-See the documentation for [`v8::Maybe`](https://v8docs.nodesource.com/node-8.11/d9/d4b/classv8_1_1_maybe.html) for further details.
+See the documentation for [`v8::Maybe`](https://v8docs.nodesource.com/node-8.16/d9/d4b/classv8_1_1_maybe.html) for further details.
<a name="api_nan_nothing"></a>
### Nan::Nothing
@@ -122,7 +122,7 @@ template<typename T> Nan::Maybe<T> Nan::Just(const T &t);
<a name="api_nan_call"></a>
### Nan::Call()
-A helper method for calling a synchronous [`v8::Function#Call()`](https://v8docs.nodesource.com/node-8.11/d5/d54/classv8_1_1_function.html#a9c3d0e4e13ddd7721fce238aa5b94a11) in a way compatible across supported versions of V8.
+A helper method for calling a synchronous [`v8::Function#Call()`](https://v8docs.nodesource.com/node-8.16/d5/d54/classv8_1_1_function.html#a9c3d0e4e13ddd7721fce238aa5b94a11) in a way compatible across supported versions of V8.
For asynchronous callbacks, use Nan::Callback::Call along with an AsyncResource.
@@ -139,7 +139,7 @@ Nan::MaybeLocal<v8::Value> Nan::Call(const Nan::Callback& callback, int argc, v8
<a name="api_nan_to_detail_string"></a>
### Nan::ToDetailString()
-A helper method for calling [`v8::Value#ToDetailString()`](https://v8docs.nodesource.com/node-8.11/dc/d0a/classv8_1_1_value.html#a2f9770296dc2c8d274bc8cc0dca243e5) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Value#ToDetailString()`](https://v8docs.nodesource.com/node-8.16/dc/d0a/classv8_1_1_value.html#a2f9770296dc2c8d274bc8cc0dca243e5) in a way compatible across supported versions of V8.
Signature:
@@ -151,7 +151,7 @@ Nan::MaybeLocal<v8::String> Nan::ToDetailString(v8::Local<v8::Value> val);
<a name="api_nan_to_array_index"></a>
### Nan::ToArrayIndex()
-A helper method for calling [`v8::Value#ToArrayIndex()`](https://v8docs.nodesource.com/node-8.11/dc/d0a/classv8_1_1_value.html#acc5bbef3c805ec458470c0fcd6f13493) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Value#ToArrayIndex()`](https://v8docs.nodesource.com/node-8.16/dc/d0a/classv8_1_1_value.html#acc5bbef3c805ec458470c0fcd6f13493) in a way compatible across supported versions of V8.
Signature:
@@ -163,7 +163,7 @@ Nan::MaybeLocal<v8::Uint32> Nan::ToArrayIndex(v8::Local<v8::Value> val);
<a name="api_nan_equals"></a>
### Nan::Equals()
-A helper method for calling [`v8::Value#Equals()`](https://v8docs.nodesource.com/node-8.11/dc/d0a/classv8_1_1_value.html#a08fba1d776a59bbf6864b25f9152c64b) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Value#Equals()`](https://v8docs.nodesource.com/node-8.16/dc/d0a/classv8_1_1_value.html#a08fba1d776a59bbf6864b25f9152c64b) in a way compatible across supported versions of V8.
Signature:
@@ -175,7 +175,7 @@ Nan::Maybe<bool> Nan::Equals(v8::Local<v8::Value> a, v8::Local<v8::Value>(b));
<a name="api_nan_new_instance"></a>
### Nan::NewInstance()
-A helper method for calling [`v8::Function#NewInstance()`](https://v8docs.nodesource.com/node-8.11/d5/d54/classv8_1_1_function.html#ae477558b10c14b76ed00e8dbab44ce5b) and [`v8::ObjectTemplate#NewInstance()`](https://v8docs.nodesource.com/node-8.11/db/d5f/classv8_1_1_object_template.html#ad605a7543cfbc5dab54cdb0883d14ae4) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Function#NewInstance()`](https://v8docs.nodesource.com/node-8.16/d5/d54/classv8_1_1_function.html#ae477558b10c14b76ed00e8dbab44ce5b) and [`v8::ObjectTemplate#NewInstance()`](https://v8docs.nodesource.com/node-8.16/db/d5f/classv8_1_1_object_template.html#ad605a7543cfbc5dab54cdb0883d14ae4) in a way compatible across supported versions of V8.
Signature:
@@ -189,7 +189,7 @@ Nan::MaybeLocal<v8::Object> Nan::NewInstance(v8::Local<v8::ObjectTemplate> h);
<a name="api_nan_get_function"></a>
### Nan::GetFunction()
-A helper method for calling [`v8::FunctionTemplate#GetFunction()`](https://v8docs.nodesource.com/node-8.11/d8/d83/classv8_1_1_function_template.html#a56d904662a86eca78da37d9bb0ed3705) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::FunctionTemplate#GetFunction()`](https://v8docs.nodesource.com/node-8.16/d8/d83/classv8_1_1_function_template.html#a56d904662a86eca78da37d9bb0ed3705) in a way compatible across supported versions of V8.
Signature:
@@ -201,7 +201,7 @@ Nan::MaybeLocal<v8::Function> Nan::GetFunction(v8::Local<v8::FunctionTemplate> t
<a name="api_nan_set"></a>
### Nan::Set()
-A helper method for calling [`v8::Object#Set()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a67604ea3734f170c66026064ea808f20) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#Set()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a67604ea3734f170c66026064ea808f20) in a way compatible across supported versions of V8.
Signature:
@@ -218,7 +218,7 @@ Nan::Maybe<bool> Nan::Set(v8::Local<v8::Object> obj,
<a name="api_nan_define_own_property"></a>
### Nan::DefineOwnProperty()
-A helper method for calling [`v8::Object#DefineOwnProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a6f76b2ed605cb8f9185b92de0033a820) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#DefineOwnProperty()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a6f76b2ed605cb8f9185b92de0033a820) in a way compatible across supported versions of V8.
Signature:
@@ -250,7 +250,7 @@ NAN_DEPRECATED Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object> obj,
<a name="api_nan_get"></a>
### Nan::Get()
-A helper method for calling [`v8::Object#Get()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a2565f03e736694f6b1e1cf22a0b4eac2) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#Get()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a2565f03e736694f6b1e1cf22a0b4eac2) in a way compatible across supported versions of V8.
Signature:
@@ -264,7 +264,7 @@ Nan::MaybeLocal<v8::Value> Nan::Get(v8::Local<v8::Object> obj, uint32_t index);
<a name="api_nan_get_property_attribute"></a>
### Nan::GetPropertyAttributes()
-A helper method for calling [`v8::Object#GetPropertyAttributes()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a9b898894da3d1db2714fd9325a54fe57) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#GetPropertyAttributes()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a9b898894da3d1db2714fd9325a54fe57) in a way compatible across supported versions of V8.
Signature:
@@ -278,7 +278,7 @@ Nan::Maybe<v8::PropertyAttribute> Nan::GetPropertyAttributes(
<a name="api_nan_has"></a>
### Nan::Has()
-A helper method for calling [`v8::Object#Has()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab3c3d89ea7c2f9afd08965bd7299a41d) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#Has()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ab3c3d89ea7c2f9afd08965bd7299a41d) in a way compatible across supported versions of V8.
Signature:
@@ -291,7 +291,7 @@ Nan::Maybe<bool> Nan::Has(v8::Local<v8::Object> obj, uint32_t index);
<a name="api_nan_delete"></a>
### Nan::Delete()
-A helper method for calling [`v8::Object#Delete()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a48e4a19b2cedff867eecc73ddb7d377f) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#Delete()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a48e4a19b2cedff867eecc73ddb7d377f) in a way compatible across supported versions of V8.
Signature:
@@ -305,7 +305,7 @@ Nan::Maybe<bool> Nan::Delete(v8::Local<v8::Object> obj, uint32_t index);
<a name="api_nan_get_property_names"></a>
### Nan::GetPropertyNames()
-A helper method for calling [`v8::Object#GetPropertyNames()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#aced885270cfd2c956367b5eedc7fbfe8) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#GetPropertyNames()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#aced885270cfd2c956367b5eedc7fbfe8) in a way compatible across supported versions of V8.
Signature:
@@ -317,7 +317,7 @@ Nan::MaybeLocal<v8::Array> Nan::GetPropertyNames(v8::Local<v8::Object> obj);
<a name="api_nan_get_own_property_names"></a>
### Nan::GetOwnPropertyNames()
-A helper method for calling [`v8::Object#GetOwnPropertyNames()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a79a6e4d66049b9aa648ed4dfdb23e6eb) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#GetOwnPropertyNames()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a79a6e4d66049b9aa648ed4dfdb23e6eb) in a way compatible across supported versions of V8.
Signature:
@@ -329,7 +329,7 @@ Nan::MaybeLocal<v8::Array> Nan::GetOwnPropertyNames(v8::Local<v8::Object> obj);
<a name="api_nan_set_prototype"></a>
### Nan::SetPrototype()
-A helper method for calling [`v8::Object#SetPrototype()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a442706b22fceda6e6d1f632122a9a9f4) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#SetPrototype()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a442706b22fceda6e6d1f632122a9a9f4) in a way compatible across supported versions of V8.
Signature:
@@ -342,7 +342,7 @@ Nan::Maybe<bool> Nan::SetPrototype(v8::Local<v8::Object> obj,
<a name="api_nan_object_proto_to_string"></a>
### Nan::ObjectProtoToString()
-A helper method for calling [`v8::Object#ObjectProtoToString()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab7a92b4dcf822bef72f6c0ac6fea1f0b) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#ObjectProtoToString()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ab7a92b4dcf822bef72f6c0ac6fea1f0b) in a way compatible across supported versions of V8.
Signature:
@@ -354,7 +354,7 @@ Nan::MaybeLocal<v8::String> Nan::ObjectProtoToString(v8::Local<v8::Object> obj);
<a name="api_nan_has_own_property"></a>
### Nan::HasOwnProperty()
-A helper method for calling [`v8::Object#HasOwnProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab7b7245442ca6de1e1c145ea3fd653ff) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#HasOwnProperty()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ab7b7245442ca6de1e1c145ea3fd653ff) in a way compatible across supported versions of V8.
Signature:
@@ -367,7 +367,7 @@ Nan::Maybe<bool> Nan::HasOwnProperty(v8::Local<v8::Object> obj,
<a name="api_nan_has_real_named_property"></a>
### Nan::HasRealNamedProperty()
-A helper method for calling [`v8::Object#HasRealNamedProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ad8b80a59c9eb3c1e6c3cd6c84571f767) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#HasRealNamedProperty()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ad8b80a59c9eb3c1e6c3cd6c84571f767) in a way compatible across supported versions of V8.
Signature:
@@ -380,7 +380,7 @@ Nan::Maybe<bool> Nan::HasRealNamedProperty(v8::Local<v8::Object> obj,
<a name="api_nan_has_real_indexed_property"></a>
### Nan::HasRealIndexedProperty()
-A helper method for calling [`v8::Object#HasRealIndexedProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#af94fc1135a5e74a2193fb72c3a1b9855) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#HasRealIndexedProperty()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#af94fc1135a5e74a2193fb72c3a1b9855) in a way compatible across supported versions of V8.
Signature:
@@ -393,7 +393,7 @@ Nan::Maybe<bool> Nan::HasRealIndexedProperty(v8::Local<v8::Object> obj,
<a name="api_nan_has_real_named_callback_property"></a>
### Nan::HasRealNamedCallbackProperty()
-A helper method for calling [`v8::Object#HasRealNamedCallbackProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#af743b7ea132b89f84d34d164d0668811) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#HasRealNamedCallbackProperty()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#af743b7ea132b89f84d34d164d0668811) in a way compatible across supported versions of V8.
Signature:
@@ -407,7 +407,7 @@ Nan::Maybe<bool> Nan::HasRealNamedCallbackProperty(
<a name="api_nan_get_real_named_property_in_prototype_chain"></a>
### Nan::GetRealNamedPropertyInPrototypeChain()
-A helper method for calling [`v8::Object#GetRealNamedPropertyInPrototypeChain()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a8700b1862e6b4783716964ba4d5e6172) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#GetRealNamedPropertyInPrototypeChain()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a8700b1862e6b4783716964ba4d5e6172) in a way compatible across supported versions of V8.
Signature:
@@ -421,7 +421,7 @@ Nan::MaybeLocal<v8::Value> Nan::GetRealNamedPropertyInPrototypeChain(
<a name="api_nan_get_real_named_property"></a>
### Nan::GetRealNamedProperty()
-A helper method for calling [`v8::Object#GetRealNamedProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a84471a824576a5994fdd0ffcbf99ccc0) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#GetRealNamedProperty()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a84471a824576a5994fdd0ffcbf99ccc0) in a way compatible across supported versions of V8.
Signature:
@@ -434,7 +434,7 @@ Nan::MaybeLocal<v8::Value> Nan::GetRealNamedProperty(v8::Local<v8::Object> obj,
<a name="api_nan_call_as_function"></a>
### Nan::CallAsFunction()
-A helper method for calling [`v8::Object#CallAsFunction()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ad3ffc36f3dfc3592ce2a96bc047ee2cd) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#CallAsFunction()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ad3ffc36f3dfc3592ce2a96bc047ee2cd) in a way compatible across supported versions of V8.
Signature:
@@ -449,7 +449,7 @@ Nan::MaybeLocal<v8::Value> Nan::CallAsFunction(v8::Local<v8::Object> obj,
<a name="api_nan_call_as_constructor"></a>
### Nan::CallAsConstructor()
-A helper method for calling [`v8::Object#CallAsConstructor()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a50d571de50d0b0dfb28795619d07a01b) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#CallAsConstructor()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a50d571de50d0b0dfb28795619d07a01b) in a way compatible across supported versions of V8.
Signature:
@@ -463,7 +463,7 @@ Nan::MaybeLocal<v8::Value> Nan::CallAsConstructor(v8::Local<v8::Object> obj,
<a name="api_nan_get_source_line"></a>
### Nan::GetSourceLine()
-A helper method for calling [`v8::Message#GetSourceLine()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#a849f7a6c41549d83d8159825efccd23a) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Message#GetSourceLine()`](https://v8docs.nodesource.com/node-8.16/d9/d28/classv8_1_1_message.html#a849f7a6c41549d83d8159825efccd23a) in a way compatible across supported versions of V8.
Signature:
@@ -475,7 +475,7 @@ Nan::MaybeLocal<v8::String> Nan::GetSourceLine(v8::Local<v8::Message> msg);
<a name="api_nan_get_line_number"></a>
### Nan::GetLineNumber()
-A helper method for calling [`v8::Message#GetLineNumber()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#adbe46c10a88a6565f2732a2d2adf99b9) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Message#GetLineNumber()`](https://v8docs.nodesource.com/node-8.16/d9/d28/classv8_1_1_message.html#adbe46c10a88a6565f2732a2d2adf99b9) in a way compatible across supported versions of V8.
Signature:
@@ -487,7 +487,7 @@ Nan::Maybe<int> Nan::GetLineNumber(v8::Local<v8::Message> msg);
<a name="api_nan_get_start_column"></a>
### Nan::GetStartColumn()
-A helper method for calling [`v8::Message#GetStartColumn()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#a60ede616ba3822d712e44c7a74487ba6) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Message#GetStartColumn()`](https://v8docs.nodesource.com/node-8.16/d9/d28/classv8_1_1_message.html#a60ede616ba3822d712e44c7a74487ba6) in a way compatible across supported versions of V8.
Signature:
@@ -499,7 +499,7 @@ Nan::Maybe<int> Nan::GetStartColumn(v8::Local<v8::Message> msg);
<a name="api_nan_get_end_column"></a>
### Nan::GetEndColumn()
-A helper method for calling [`v8::Message#GetEndColumn()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#aaa004cf19e529da980bc19fcb76d93be) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Message#GetEndColumn()`](https://v8docs.nodesource.com/node-8.16/d9/d28/classv8_1_1_message.html#aaa004cf19e529da980bc19fcb76d93be) in a way compatible across supported versions of V8.
Signature:
@@ -522,7 +522,7 @@ Nan::MaybeLocal<v8::Object> Nan::CloneElementAt(v8::Local<v8::Array> array, uint
<a name="api_nan_has_private"></a>
### Nan::HasPrivate()
-A helper method for calling [`v8::Object#HasPrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#af68a0b98066cfdeb8f943e98a40ba08d) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#HasPrivate()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#af68a0b98066cfdeb8f943e98a40ba08d) in a way compatible across supported versions of V8.
Signature:
@@ -533,7 +533,7 @@ Nan::Maybe<bool> Nan::HasPrivate(v8::Local<v8::Object> object, v8::Local<v8::Str
<a name="api_nan_get_private"></a>
### Nan::GetPrivate()
-A helper method for calling [`v8::Object#GetPrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a169f2da506acbec34deadd9149a1925a) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#GetPrivate()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a169f2da506acbec34deadd9149a1925a) in a way compatible across supported versions of V8.
Signature:
@@ -544,7 +544,7 @@ Nan::MaybeLocal<v8::Value> Nan::GetPrivate(v8::Local<v8::Object> object, v8::Loc
<a name="api_nan_set_private"></a>
### Nan::SetPrivate()
-A helper method for calling [`v8::Object#SetPrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ace1769b0f3b86bfe9fda1010916360ee) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#SetPrivate()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ace1769b0f3b86bfe9fda1010916360ee) in a way compatible across supported versions of V8.
Signature:
@@ -555,7 +555,7 @@ Nan::Maybe<bool> Nan::SetPrivate(v8::Local<v8::Object> object, v8::Local<v8::Str
<a name="api_nan_delete_private"></a>
### Nan::DeletePrivate()
-A helper method for calling [`v8::Object#DeletePrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a138bb32a304f3982be02ad499693b8fd) in a way compatible across supported versions of V8.
+A helper method for calling [`v8::Object#DeletePrivate()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a138bb32a304f3982be02ad499693b8fd) in a way compatible across supported versions of V8.
Signature:
diff --git a/node_modules/nan/doc/methods.md b/node_modules/nan/doc/methods.md
index b2b26c3..9642d02 100644
--- a/node_modules/nan/doc/methods.md
+++ b/node_modules/nan/doc/methods.md
@@ -37,7 +37,7 @@ In order to expose functionality to JavaScript via a template, you must provide
<a name="api_nan_function_callback_info"></a>
### Nan::FunctionCallbackInfo
-`Nan::FunctionCallbackInfo` should be used in place of [`v8::FunctionCallbackInfo`](https://v8docs.nodesource.com/node-8.11/dd/d0d/classv8_1_1_function_callback_info.html), even with older versions of Node where `v8::FunctionCallbackInfo` does not exist.
+`Nan::FunctionCallbackInfo` should be used in place of [`v8::FunctionCallbackInfo`](https://v8docs.nodesource.com/node-8.16/dd/d0d/classv8_1_1_function_callback_info.html), even with older versions of Node where `v8::FunctionCallbackInfo` does not exist.
Definition:
@@ -56,14 +56,14 @@ template<typename T> class FunctionCallbackInfo {
};
```
-See the [`v8::FunctionCallbackInfo`](https://v8docs.nodesource.com/node-8.11/dd/d0d/classv8_1_1_function_callback_info.html) documentation for usage details on these. See [`Nan::ReturnValue`](#api_nan_return_value) for further information on how to set a return value from methods.
+See the [`v8::FunctionCallbackInfo`](https://v8docs.nodesource.com/node-8.16/dd/d0d/classv8_1_1_function_callback_info.html) documentation for usage details on these. See [`Nan::ReturnValue`](#api_nan_return_value) for further information on how to set a return value from methods.
**Note:** `FunctionCallbackInfo::Callee` is removed in Node.js after `10.0.0` because it is was deprecated in V8. Consider using `info.Data()` to pass any information you need.
<a name="api_nan_property_callback_info"></a>
### Nan::PropertyCallbackInfo
-`Nan::PropertyCallbackInfo` should be used in place of [`v8::PropertyCallbackInfo`](https://v8docs.nodesource.com/node-8.11/d7/dc5/classv8_1_1_property_callback_info.html), even with older versions of Node where `v8::PropertyCallbackInfo` does not exist.
+`Nan::PropertyCallbackInfo` should be used in place of [`v8::PropertyCallbackInfo`](https://v8docs.nodesource.com/node-8.16/d7/dc5/classv8_1_1_property_callback_info.html), even with older versions of Node where `v8::PropertyCallbackInfo` does not exist.
Definition:
@@ -78,12 +78,12 @@ template<typename T> class PropertyCallbackInfo : public PropertyCallbackInfoBas
};
```
-See the [`v8::PropertyCallbackInfo`](https://v8docs.nodesource.com/node-8.11/d7/dc5/classv8_1_1_property_callback_info.html) documentation for usage details on these. See [`Nan::ReturnValue`](#api_nan_return_value) for further information on how to set a return value from property accessor methods.
+See the [`v8::PropertyCallbackInfo`](https://v8docs.nodesource.com/node-8.16/d7/dc5/classv8_1_1_property_callback_info.html) documentation for usage details on these. See [`Nan::ReturnValue`](#api_nan_return_value) for further information on how to set a return value from property accessor methods.
<a name="api_nan_return_value"></a>
### Nan::ReturnValue
-`Nan::ReturnValue` is used in place of [`v8::ReturnValue`](https://v8docs.nodesource.com/node-8.11/da/da7/classv8_1_1_return_value.html) on both [`Nan::FunctionCallbackInfo`](#api_nan_function_callback_info) and [`Nan::PropertyCallbackInfo`](#api_nan_property_callback_info) as the return type of `GetReturnValue()`.
+`Nan::ReturnValue` is used in place of [`v8::ReturnValue`](https://v8docs.nodesource.com/node-8.16/da/da7/classv8_1_1_return_value.html) on both [`Nan::FunctionCallbackInfo`](#api_nan_function_callback_info) and [`Nan::PropertyCallbackInfo`](#api_nan_property_callback_info) as the return type of `GetReturnValue()`.
Example usage:
@@ -118,7 +118,7 @@ template<typename T> class ReturnValue {
};
```
-See the documentation on [`v8::ReturnValue`](https://v8docs.nodesource.com/node-8.11/da/da7/classv8_1_1_return_value.html) for further information on this.
+See the documentation on [`v8::ReturnValue`](https://v8docs.nodesource.com/node-8.16/da/da7/classv8_1_1_return_value.html) for further information on this.
<a name="api_nan_method"></a>
### Method declaration
@@ -478,10 +478,12 @@ Signature:
```c++
void Nan::SetMethod(v8::Local<v8::Object> recv,
const char *name,
- Nan::FunctionCallback callback)
+ Nan::FunctionCallback callback,
+ v8::Local<v8::Value> data = v8::Local<v8::Value>())
void Nan::SetMethod(v8::Local<v8::Template> templ,
const char *name,
- Nan::FunctionCallback callback)
+ Nan::FunctionCallback callback,
+ v8::Local<v8::Value> data = v8::Local<v8::Value>())
```
<a name="api_nan_set_prototype_method"></a>
@@ -494,7 +496,8 @@ Signature:
```c++
void Nan::SetPrototypeMethod(v8::Local<v8::FunctionTemplate> recv,
const char* name,
- Nan::FunctionCallback callback)
+ Nan::FunctionCallback callback,
+ v8::Local<v8::Value> data = v8::Local<v8::Value>())
```
<a name="api_nan_set_accessor"></a>
@@ -522,7 +525,7 @@ bool SetAccessor(v8::Local<v8::Object> obj,
v8::PropertyAttribute attribute = v8::None)
```
-See the V8 [`ObjectTemplate#SetAccessor()`](https://v8docs.nodesource.com/node-8.11/db/d5f/classv8_1_1_object_template.html#aca0ed196f8a9adb1f68b1aadb6c9cd77) and [`Object#SetAccessor()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ae91b3b56b357f285288c89fbddc46d1b) for further information about how to use `Nan::SetAccessor()`.
+See the V8 [`ObjectTemplate#SetAccessor()`](https://v8docs.nodesource.com/node-8.16/db/d5f/classv8_1_1_object_template.html#aca0ed196f8a9adb1f68b1aadb6c9cd77) and [`Object#SetAccessor()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ae91b3b56b357f285288c89fbddc46d1b) for further information about how to use `Nan::SetAccessor()`.
<a name="api_nan_set_named_property_handler"></a>
### Nan::SetNamedPropertyHandler()
@@ -547,7 +550,7 @@ void SetNamedPropertyHandler(v8::Local<v8::ObjectTemplate> tpl,
v8::Local<v8::Value> data = v8::Local<v8::Value>())
```
-See the V8 [`ObjectTemplate#SetNamedPropertyHandler()`](https://v8docs.nodesource.com/node-8.11/db/d5f/classv8_1_1_object_template.html#a33b3ebd7de641f6cc6414b7de01fc1c7) for further information about how to use `Nan::SetNamedPropertyHandler()`.
+See the V8 [`ObjectTemplate#SetNamedPropertyHandler()`](https://v8docs.nodesource.com/node-8.16/db/d5f/classv8_1_1_object_template.html#a33b3ebd7de641f6cc6414b7de01fc1c7) for further information about how to use `Nan::SetNamedPropertyHandler()`.
<a name="api_nan_set_indexed_property_handler"></a>
### Nan::SetIndexedPropertyHandler()
@@ -572,7 +575,7 @@ void SetIndexedPropertyHandler(v8::Local<v8::ObjectTemplate> tpl,
v8::Local<v8::Value> data = v8::Local<v8::Value>())
```
-See the V8 [`ObjectTemplate#SetIndexedPropertyHandler()`](https://v8docs.nodesource.com/node-8.11/db/d5f/classv8_1_1_object_template.html#ac89f06d634add0e890452033f7d17ff1) for further information about how to use `Nan::SetIndexedPropertyHandler()`.
+See the V8 [`ObjectTemplate#SetIndexedPropertyHandler()`](https://v8docs.nodesource.com/node-8.16/db/d5f/classv8_1_1_object_template.html#ac89f06d634add0e890452033f7d17ff1) for further information about how to use `Nan::SetIndexedPropertyHandler()`.
<a name="api_nan_set_template"></a>
### Nan::SetTemplate()
@@ -591,7 +594,7 @@ void Nan::SetTemplate(v8::Local<v8::Template> templ,
v8::PropertyAttribute attributes)
```
-Calls the `Template`'s [`Set()`](https://v8docs.nodesource.com/node-8.11/db/df7/classv8_1_1_template.html#ae3fbaff137557aa6a0233bc7e52214ac).
+Calls the `Template`'s [`Set()`](https://v8docs.nodesource.com/node-8.16/db/df7/classv8_1_1_template.html#ae3fbaff137557aa6a0233bc7e52214ac).
<a name="api_nan_set_prototype_template"></a>
### Nan::SetPrototypeTemplate()
@@ -610,7 +613,7 @@ void Nan::SetPrototypeTemplate(v8::Local<v8::FunctionTemplate> templ,
v8::PropertyAttribute attributes)
```
-Calls the `FunctionTemplate`'s _PrototypeTemplate's_ [`Set()`](https://v8docs.nodesource.com/node-8.11/db/df7/classv8_1_1_template.html#a2db6a56597bf23c59659c0659e564ddf).
+Calls the `FunctionTemplate`'s _PrototypeTemplate's_ [`Set()`](https://v8docs.nodesource.com/node-8.16/db/df7/classv8_1_1_template.html#a2db6a56597bf23c59659c0659e564ddf).
<a name="api_nan_set_instance_template"></a>
### Nan::SetInstanceTemplate()
@@ -629,7 +632,7 @@ void Nan::SetInstanceTemplate(v8::Local<v8::FunctionTemplate> templ,
v8::PropertyAttribute attributes)
```
-Calls the `FunctionTemplate`'s _InstanceTemplate's_ [`Set()`](https://v8docs.nodesource.com/node-8.11/db/df7/classv8_1_1_template.html#a2db6a56597bf23c59659c0659e564ddf).
+Calls the `FunctionTemplate`'s _InstanceTemplate's_ [`Set()`](https://v8docs.nodesource.com/node-8.16/db/df7/classv8_1_1_template.html#a2db6a56597bf23c59659c0659e564ddf).
<a name="api_nan_set_call_handler"></a>
### Nan::SetCallHandler()
@@ -643,7 +646,7 @@ Signature:
void Nan::SetCallHandler(v8::Local<v8::FunctionTemplate> templ, Nan::FunctionCallback callback, v8::Local<v8::Value> data = v8::Local<v8::Value>())
```
-Calls the `FunctionTemplate`'s [`SetCallHandler()`](https://v8docs.nodesource.com/node-8.11/d8/d83/classv8_1_1_function_template.html#ab7574b298db3c27fbc2ed465c08ea2f8).
+Calls the `FunctionTemplate`'s [`SetCallHandler()`](https://v8docs.nodesource.com/node-8.16/d8/d83/classv8_1_1_function_template.html#ab7574b298db3c27fbc2ed465c08ea2f8).
<a name="api_nan_set_call_as_function_handler"></a>
### Nan::SetCallAsFunctionHandler()
@@ -657,5 +660,5 @@ Signature:
void Nan::SetCallAsFunctionHandler(v8::Local<v8::ObjectTemplate> templ, Nan::FunctionCallback callback, v8::Local<v8::Value> data = v8::Local<v8::Value>())
```
-Calls the `ObjectTemplate`'s [`SetCallAsFunctionHandler()`](https://v8docs.nodesource.com/node-8.11/db/d5f/classv8_1_1_object_template.html#a5e9612fc80bf6db8f2da199b9b0bd04e).
+Calls the `ObjectTemplate`'s [`SetCallAsFunctionHandler()`](https://v8docs.nodesource.com/node-8.16/db/d5f/classv8_1_1_object_template.html#a5e9612fc80bf6db8f2da199b9b0bd04e).
diff --git a/node_modules/nan/doc/new.md b/node_modules/nan/doc/new.md
index 359df43..0f28a0e 100644
--- a/node_modules/nan/doc/new.md
+++ b/node_modules/nan/doc/new.md
@@ -15,7 +15,7 @@ NAN provides a `Nan::New()` helper for the creation of new JavaScript objects in
`Nan::New()` should be used to instantiate new JavaScript objects.
-Refer to the specific V8 type in the [V8 documentation](https://v8docs.nodesource.com/node-8.11/d1/d83/classv8_1_1_data.html) for information on the types of arguments required for instantiation.
+Refer to the specific V8 type in the [V8 documentation](https://v8docs.nodesource.com/node-8.16/d1/d83/classv8_1_1_data.html) for information on the types of arguments required for instantiation.
Signatures:
@@ -75,7 +75,7 @@ v8::Local<v8::String> Nan::New<T>(Nan::ExternalOneByteStringResource * value);
v8::Local<v8::RegExp> Nan::New<T>(v8::Local<v8::String> pattern, v8::RegExp::Flags flags);
```
-Note that `Nan::ExternalOneByteStringResource` maps to [`v8::String::ExternalOneByteStringResource`](https://v8docs.nodesource.com/node-8.11/d9/db3/classv8_1_1_string_1_1_external_one_byte_string_resource.html), and `v8::String::ExternalAsciiStringResource` in older versions of V8.
+Note that `Nan::ExternalOneByteStringResource` maps to [`v8::String::ExternalOneByteStringResource`](https://v8docs.nodesource.com/node-8.16/d9/db3/classv8_1_1_string_1_1_external_one_byte_string_resource.html), and `v8::String::ExternalAsciiStringResource` in older versions of V8.
<a name="api_nan_undefined"></a>
@@ -125,7 +125,7 @@ v8::Local<v8::Boolean> Nan::False()
<a name="api_nan_empty_string"></a>
### Nan::EmptyString()
-Call [`v8::String::Empty`](https://v8docs.nodesource.com/node-8.11/d2/db3/classv8_1_1_string.html#a7c1bc8886115d7ee46f1d571dd6ebc6d) to reference the empty string in a way that is compatible across all supported versions of V8.
+Call [`v8::String::Empty`](https://v8docs.nodesource.com/node-8.16/d2/db3/classv8_1_1_string.html#a7c1bc8886115d7ee46f1d571dd6ebc6d) to reference the empty string in a way that is compatible across all supported versions of V8.
Signature:
@@ -137,7 +137,7 @@ v8::Local<v8::String> Nan::EmptyString()
<a name="api_nan_new_one_byte_string"></a>
### Nan::NewOneByteString()
-An implementation of [`v8::String::NewFromOneByte()`](https://v8docs.nodesource.com/node-8.11/d2/db3/classv8_1_1_string.html#a5264d50b96d2c896ce525a734dc10f09) provided for consistent availability and API across supported versions of V8. Allocates a new string from Latin-1 data.
+An implementation of [`v8::String::NewFromOneByte()`](https://v8docs.nodesource.com/node-8.16/d2/db3/classv8_1_1_string.html#a5264d50b96d2c896ce525a734dc10f09) provided for consistent availability and API across supported versions of V8. Allocates a new string from Latin-1 data.
Signature:
diff --git a/node_modules/nan/doc/object_wrappers.md b/node_modules/nan/doc/object_wrappers.md
index 08dd6b5..07d8c05 100644
--- a/node_modules/nan/doc/object_wrappers.md
+++ b/node_modules/nan/doc/object_wrappers.md
@@ -42,7 +42,7 @@ class ObjectWrap {
* attached to detached state it will be freed. Be careful not to access
* the object after making this call as it might be gone!
* (A "weak reference" means an object that only has a
- * persistant handle.)
+ * persistent handle.)
*
* DO NOT CALL THIS FROM DESTRUCTOR
*/
diff --git a/node_modules/nan/doc/persistent.md b/node_modules/nan/doc/persistent.md
index bec9c3f..2e13f6b 100644
--- a/node_modules/nan/doc/persistent.md
+++ b/node_modules/nan/doc/persistent.md
@@ -94,7 +94,7 @@ template<typename T> class PersistentBase {
};
```
-See the V8 documentation for [`PersistentBase`](https://v8docs.nodesource.com/node-8.11/d4/dca/classv8_1_1_persistent_base.html) for further information.
+See the V8 documentation for [`PersistentBase`](https://v8docs.nodesource.com/node-8.16/d4/dca/classv8_1_1_persistent_base.html) for further information.
**Tip:** To get a `v8::Local` reference to the original object back from a `PersistentBase` or `Persistent` object:
@@ -126,7 +126,7 @@ template<typename T> class NonCopyablePersistentTraits {
};
```
-See the V8 documentation for [`NonCopyablePersistentTraits`](https://v8docs.nodesource.com/node-8.11/de/d73/classv8_1_1_non_copyable_persistent_traits.html) for further information.
+See the V8 documentation for [`NonCopyablePersistentTraits`](https://v8docs.nodesource.com/node-8.16/de/d73/classv8_1_1_non_copyable_persistent_traits.html) for further information.
<a name="api_nan_copyable_persistent_traits"></a>
### Nan::CopyablePersistentTraits & v8::CopyablePersistentTraits
@@ -151,7 +151,7 @@ class CopyablePersistentTraits {
};
```
-See the V8 documentation for [`CopyablePersistentTraits`](https://v8docs.nodesource.com/node-8.11/da/d5c/structv8_1_1_copyable_persistent_traits.html) for further information.
+See the V8 documentation for [`CopyablePersistentTraits`](https://v8docs.nodesource.com/node-8.16/da/d5c/structv8_1_1_copyable_persistent_traits.html) for further information.
<a name="api_nan_persistent"></a>
### Nan::Persistent
@@ -204,7 +204,7 @@ template<typename T, typename M> class Persistent : public PersistentBase<T> {
};
```
-See the V8 documentation for [`Persistent`](https://v8docs.nodesource.com/node-8.11/d2/d78/classv8_1_1_persistent.html) for further information.
+See the V8 documentation for [`Persistent`](https://v8docs.nodesource.com/node-8.16/d2/d78/classv8_1_1_persistent.html) for further information.
<a name="api_nan_global"></a>
### Nan::Global
@@ -238,7 +238,7 @@ template<typename T> class Global : public PersistentBase<T> {
};
```
-See the V8 documentation for [`Global`](https://v8docs.nodesource.com/node-8.11/d5/d40/classv8_1_1_global.html) for further information.
+See the V8 documentation for [`Global`](https://v8docs.nodesource.com/node-8.16/d5/d40/classv8_1_1_global.html) for further information.
<a name="api_nan_weak_callback_info"></a>
### Nan::WeakCallbackInfo
@@ -279,7 +279,7 @@ int *data = new int(0);
obj.SetWeak(data, callback, WeakCallbackType::kParameter);
```
-See the V8 documentation for [`WeakCallbackInfo`](https://v8docs.nodesource.com/node-8.11/d8/d06/classv8_1_1_weak_callback_info.html) for further information.
+See the V8 documentation for [`WeakCallbackInfo`](https://v8docs.nodesource.com/node-8.16/d8/d06/classv8_1_1_weak_callback_info.html) for further information.
<a name="api_nan_weak_callback_type"></a>
### Nan::WeakCallbackType
diff --git a/node_modules/nan/doc/scopes.md b/node_modules/nan/doc/scopes.md
index 27ab863..84000ee 100644
--- a/node_modules/nan/doc/scopes.md
+++ b/node_modules/nan/doc/scopes.md
@@ -14,7 +14,7 @@ Also see the V8 Embedders Guide section on [Handles and Garbage Collection](http
<a name="api_nan_handle_scope"></a>
### Nan::HandleScope
-A simple wrapper around [`v8::HandleScope`](https://v8docs.nodesource.com/node-8.11/d3/d95/classv8_1_1_handle_scope.html).
+A simple wrapper around [`v8::HandleScope`](https://v8docs.nodesource.com/node-8.16/d3/d95/classv8_1_1_handle_scope.html).
Definition:
diff --git a/node_modules/nan/doc/script.md b/node_modules/nan/doc/script.md
index 945398f..213320a 100644
--- a/node_modules/nan/doc/script.md
+++ b/node_modules/nan/doc/script.md
@@ -9,7 +9,7 @@ NAN provides a `v8::Script` helpers as the API has changed over the supported ve
<a name="api_nan_compile_script"></a>
### Nan::CompileScript()
-A wrapper around [`v8::ScriptCompiler::Compile()`](https://v8docs.nodesource.com/node-8.11/da/da5/classv8_1_1_script_compiler.html#a93f5072a0db55d881b969e9fc98e564b).
+A wrapper around [`v8::ScriptCompiler::Compile()`](https://v8docs.nodesource.com/node-8.16/da/da5/classv8_1_1_script_compiler.html#a93f5072a0db55d881b969e9fc98e564b).
Note that `Nan::BoundScript` is an alias for `v8::Script`.
diff --git a/node_modules/nan/doc/v8_internals.md b/node_modules/nan/doc/v8_internals.md
index 88bd2de..08dd6d0 100644
--- a/node_modules/nan/doc/v8_internals.md
+++ b/node_modules/nan/doc/v8_internals.md
@@ -48,7 +48,7 @@ Signature:
void Nan::AddGCEpilogueCallback(v8::Isolate::GCEpilogueCallback callback, v8::GCType gc_type_filter = v8::kGCTypeAll)
```
-Calls V8's [`AddGCEpilogueCallback()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a580f976e4290cead62c2fc4dd396be3e).
+Calls V8's [`AddGCEpilogueCallback()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a580f976e4290cead62c2fc4dd396be3e).
<a name="api_nan_remove_gc_epilogue_callback"></a>
### Nan::RemoveGCEpilogueCallback()
@@ -59,7 +59,7 @@ Signature:
void Nan::RemoveGCEpilogueCallback(v8::Isolate::GCEpilogueCallback callback)
```
-Calls V8's [`RemoveGCEpilogueCallback()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#adca9294555a3908e9f23c7bb0f0f284c).
+Calls V8's [`RemoveGCEpilogueCallback()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#adca9294555a3908e9f23c7bb0f0f284c).
<a name="api_nan_add_gc_prologue_callback"></a>
### Nan::AddGCPrologueCallback()
@@ -70,7 +70,7 @@ Signature:
void Nan::AddGCPrologueCallback(v8::Isolate::GCPrologueCallback, v8::GCType gc_type_filter callback)
```
-Calls V8's [`AddGCPrologueCallback()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a6dbef303603ebdb03da6998794ea05b8).
+Calls V8's [`AddGCPrologueCallback()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a6dbef303603ebdb03da6998794ea05b8).
<a name="api_nan_remove_gc_prologue_callback"></a>
### Nan::RemoveGCPrologueCallback()
@@ -81,7 +81,7 @@ Signature:
void Nan::RemoveGCPrologueCallback(v8::Isolate::GCPrologueCallback callback)
```
-Calls V8's [`RemoveGCPrologueCallback()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a5f72c7cda21415ce062bbe5c58abe09e).
+Calls V8's [`RemoveGCPrologueCallback()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a5f72c7cda21415ce062bbe5c58abe09e).
<a name="api_nan_get_heap_statistics"></a>
### Nan::GetHeapStatistics()
@@ -92,7 +92,7 @@ Signature:
void Nan::GetHeapStatistics(v8::HeapStatistics *heap_statistics)
```
-Calls V8's [`GetHeapStatistics()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a5593ac74687b713095c38987e5950b34).
+Calls V8's [`GetHeapStatistics()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a5593ac74687b713095c38987e5950b34).
<a name="api_nan_set_counter_function"></a>
### Nan::SetCounterFunction()
@@ -103,7 +103,7 @@ Signature:
void Nan::SetCounterFunction(v8::CounterLookupCallback cb)
```
-Calls V8's [`SetCounterFunction()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a045d7754e62fa0ec72ae6c259b29af94).
+Calls V8's [`SetCounterFunction()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a045d7754e62fa0ec72ae6c259b29af94).
<a name="api_nan_set_create_histogram_function"></a>
### Nan::SetCreateHistogramFunction()
@@ -114,7 +114,7 @@ Signature:
void Nan::SetCreateHistogramFunction(v8::CreateHistogramCallback cb)
```
-Calls V8's [`SetCreateHistogramFunction()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a542d67e85089cb3f92aadf032f99e732).
+Calls V8's [`SetCreateHistogramFunction()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a542d67e85089cb3f92aadf032f99e732).
<a name="api_nan_set_add_histogram_sample_function"></a>
### Nan::SetAddHistogramSampleFunction()
@@ -125,7 +125,7 @@ Signature:
void Nan::SetAddHistogramSampleFunction(v8::AddHistogramSampleCallback cb)
```
-Calls V8's [`SetAddHistogramSampleFunction()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#aeb420b690bc2c216882d6fdd00ddd3ea).
+Calls V8's [`SetAddHistogramSampleFunction()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#aeb420b690bc2c216882d6fdd00ddd3ea).
<a name="api_nan_idle_notification"></a>
### Nan::IdleNotification()
@@ -136,7 +136,7 @@ Signature:
bool Nan::IdleNotification(int idle_time_in_ms)
```
-Calls V8's [`IdleNotification()` or `IdleNotificationDeadline()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#ad6a2a02657f5425ad460060652a5a118) depending on V8 version.
+Calls V8's [`IdleNotification()` or `IdleNotificationDeadline()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#ad6a2a02657f5425ad460060652a5a118) depending on V8 version.
<a name="api_nan_low_memory_notification"></a>
### Nan::LowMemoryNotification()
@@ -147,7 +147,7 @@ Signature:
void Nan::LowMemoryNotification()
```
-Calls V8's [`LowMemoryNotification()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a24647f61d6b41f69668094bdcd6ea91f).
+Calls V8's [`LowMemoryNotification()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a24647f61d6b41f69668094bdcd6ea91f).
<a name="api_nan_context_disposed_notification"></a>
### Nan::ContextDisposedNotification()
@@ -158,7 +158,7 @@ Signature:
void Nan::ContextDisposedNotification()
```
-Calls V8's [`ContextDisposedNotification()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#ad7f5dc559866343fe6cd8db1f134d48b).
+Calls V8's [`ContextDisposedNotification()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#ad7f5dc559866343fe6cd8db1f134d48b).
<a name="api_nan_get_internal_field_pointer"></a>
### Nan::GetInternalFieldPointer()
@@ -171,7 +171,7 @@ Signature:
void* Nan::GetInternalFieldPointer(v8::Local<v8::Object> object, int index)
```
-Calls the Object's [`GetAlignedPointerFromInternalField()` or `GetPointerFromInternalField()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a580ea84afb26c005d6762eeb9e3c308f) depending on the version of V8.
+Calls the Object's [`GetAlignedPointerFromInternalField()` or `GetPointerFromInternalField()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#a580ea84afb26c005d6762eeb9e3c308f) depending on the version of V8.
<a name="api_nan_set_internal_field_pointer"></a>
### Nan::SetInternalFieldPointer()
@@ -184,7 +184,7 @@ Signature:
void Nan::SetInternalFieldPointer(v8::Local<v8::Object> object, int index, void* value)
```
-Calls the Object's [`SetAlignedPointerInInternalField()` or `SetPointerInInternalField()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab3c57184263cf29963ef0017bec82281) depending on the version of V8.
+Calls the Object's [`SetAlignedPointerInInternalField()` or `SetPointerInInternalField()`](https://v8docs.nodesource.com/node-8.16/db/d85/classv8_1_1_object.html#ab3c57184263cf29963ef0017bec82281) depending on the version of V8.
<a name="api_nan_adjust_external_memory"></a>
### Nan::AdjustExternalMemory()
@@ -195,5 +195,5 @@ Signature:
int Nan::AdjustExternalMemory(int bytesChange)
```
-Calls V8's [`AdjustAmountOfExternalAllocatedMemory()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#ae1a59cac60409d3922582c4af675473e).
+Calls V8's [`AdjustAmountOfExternalAllocatedMemory()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#ae1a59cac60409d3922582c4af675473e).
diff --git a/node_modules/nan/doc/v8_misc.md b/node_modules/nan/doc/v8_misc.md
index 8e2db20..1bd46d3 100644
--- a/node_modules/nan/doc/v8_misc.md
+++ b/node_modules/nan/doc/v8_misc.md
@@ -12,7 +12,7 @@
Converts an object to a UTF-8-encoded character array. If conversion to a string fails (e.g. due to an exception in the toString() method of the object) then the length() method returns 0 and the * operator returns NULL. The underlying memory used for this object is managed by the object.
-An implementation of [`v8::String::Utf8Value`](https://v8docs.nodesource.com/node-8.11/d4/d1b/classv8_1_1_string_1_1_utf8_value.html) that is consistent across all supported versions of V8.
+An implementation of [`v8::String::Utf8Value`](https://v8docs.nodesource.com/node-8.16/d4/d1b/classv8_1_1_string_1_1_utf8_value.html) that is consistent across all supported versions of V8.
Definition:
@@ -31,7 +31,7 @@ class Nan::Utf8String {
<a name="api_nan_get_current_context"></a>
### Nan::GetCurrentContext()
-A call to [`v8::Isolate::GetCurrent()->GetCurrentContext()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a81c7a1ed7001ae2a65e89107f75fd053) that works across all supported versions of V8.
+A call to [`v8::Isolate::GetCurrent()->GetCurrentContext()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a81c7a1ed7001ae2a65e89107f75fd053) that works across all supported versions of V8.
Signature:
@@ -42,7 +42,7 @@ v8::Local<v8::Context> Nan::GetCurrentContext()
<a name="api_nan_set_isolate_data"></a>
### Nan::SetIsolateData()
-A helper to provide a consistent API to [`v8::Isolate#SetData()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#a7acadfe7965997e9c386a05f098fbe36).
+A helper to provide a consistent API to [`v8::Isolate#SetData()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#a7acadfe7965997e9c386a05f098fbe36).
Signature:
@@ -54,7 +54,7 @@ void Nan::SetIsolateData(v8::Isolate *isolate, T *data)
<a name="api_nan_get_isolate_data"></a>
### Nan::GetIsolateData()
-A helper to provide a consistent API to [`v8::Isolate#GetData()`](https://v8docs.nodesource.com/node-8.11/d5/dda/classv8_1_1_isolate.html#aabd223436bc1100a787dadaa024c6257).
+A helper to provide a consistent API to [`v8::Isolate#GetData()`](https://v8docs.nodesource.com/node-8.16/d5/dda/classv8_1_1_isolate.html#aabd223436bc1100a787dadaa024c6257).
Signature:
diff --git a/node_modules/nan/nan.h b/node_modules/nan/nan.h
index 514115d..648e6e2 100644
--- a/node_modules/nan/nan.h
+++ b/node_modules/nan/nan.h
@@ -13,7 +13,7 @@
*
* MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
*
- * Version 2.14.0: current Node 12.2.0, Node 12: 0.12.18, Node 10: 0.10.48, iojs: 3.3.1
+ * Version 2.14.1: current Node 14.0.0, Node 0.12: 0.12.18, Node 0.10: 0.10.48, iojs: 3.3.1
*
* See https://github.com/nodejs/nan for the latest update to this file
**********************************************************************************/
@@ -39,6 +39,8 @@
#define NODE_10_0_MODULE_VERSION 64
#define NODE_11_0_MODULE_VERSION 67
#define NODE_12_0_MODULE_VERSION 72
+#define NODE_13_0_MODULE_VERSION 79
+#define NODE_14_0_MODULE_VERSION 83
#ifdef _MSC_VER
# define NAN_HAS_CPLUSPLUS_11 (_MSC_VER >= 1800)
@@ -2141,10 +2143,7 @@ class AsyncProgressWorkerBase : public AsyncBareProgressWorker<T> {
private:
void SendProgress_(const T *data, size_t count) {
T *new_data = new T[count];
- {
- T *it = new_data;
- std::copy(data, data + count, it);
- }
+ std::copy(data, data + count, new_data);
uv_mutex_lock(&this->async_lock);
T *old_data = asyncdata_;
@@ -2263,10 +2262,7 @@ class AsyncProgressQueueWorker : public AsyncBareProgressQueueWorker<T> {
private:
void SendProgress_(const T *data, size_t count) {
T *new_data = new T[count];
- {
- T *it = new_data;
- std::copy(data, data + count, it);
- }
+ std::copy(data, data + count, new_data);
uv_mutex_lock(&async_lock);
asyncdata_.push(std::pair<T*, size_t>(new_data, count));
@@ -2474,9 +2470,10 @@ template <typename T, template <typename> class HandleType>
inline void SetMethod(
HandleType<T> recv
, const char *name
- , FunctionCallback callback) {
+ , FunctionCallback callback
+ , v8::Local<v8::Value> data = v8::Local<v8::Value>()) {
HandleScope scope;
- v8::Local<v8::FunctionTemplate> t = New<v8::FunctionTemplate>(callback);
+ v8::Local<v8::FunctionTemplate> t = New<v8::FunctionTemplate>(callback, data);
v8::Local<v8::String> fn_name = New(name).ToLocalChecked();
t->SetClassName(fn_name);
// Note(@agnat): Pass an empty T* as discriminator. See note on
@@ -2486,11 +2483,13 @@ inline void SetMethod(
inline void SetPrototypeMethod(
v8::Local<v8::FunctionTemplate> recv
- , const char* name, FunctionCallback callback) {
+ , const char* name
+ , FunctionCallback callback
+ , v8::Local<v8::Value> data = v8::Local<v8::Value>()) {
HandleScope scope;
v8::Local<v8::FunctionTemplate> t = New<v8::FunctionTemplate>(
callback
- , v8::Local<v8::Value>()
+ , data
, New<v8::Signature>(recv));
v8::Local<v8::String> fn_name = New(name).ToLocalChecked();
recv->PrototypeTemplate()->Set(fn_name, t);
@@ -2812,7 +2811,7 @@ struct Tap {
t_.Reset(To<v8::Object>(t).ToLocalChecked());
}
- ~Tap() { t_.Reset(); } // not sure if neccessary
+ ~Tap() { t_.Reset(); } // not sure if necessary
inline void plan(int i) {
HandleScope scope;
diff --git a/node_modules/nan/nan_object_wrap.h b/node_modules/nan/nan_object_wrap.h
index 386affa..78712f9 100644
--- a/node_modules/nan/nan_object_wrap.h
+++ b/node_modules/nan/nan_object_wrap.h
@@ -100,7 +100,7 @@ class ObjectWrap {
* attached to detached state it will be freed. Be careful not to access
* the object after making this call as it might be gone!
* (A "weak reference" means an object that only has a
- * persistant handle.)
+ * persistent handle.)
*
* DO NOT CALL THIS FROM DESTRUCTOR
*/
diff --git a/node_modules/nan/nan_typedarray_contents.h b/node_modules/nan/nan_typedarray_contents.h
index d28ae32..c6ac8a4 100644
--- a/node_modules/nan/nan_typedarray_contents.h
+++ b/node_modules/nan/nan_typedarray_contents.h
@@ -31,7 +31,13 @@ class TypedArrayContents {
v8::Local<v8::ArrayBuffer> buffer = array->Buffer();
length = byte_length / sizeof(T);
- data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;
+// Actually it's 7.9 here but this would lead to ABI issues with Node.js 13
+// using 7.8 till 13.2.0.
+#if (V8_MAJOR_VERSION >= 8)
+ data = static_cast<char*>(buffer->GetBackingStore()->Data()) + byte_offset;
+#else
+ data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;
+#endif
}
#else
diff --git a/node_modules/nan/package.json b/node_modules/nan/package.json
index 8742e66..ec16910 100644
--- a/node_modules/nan/package.json
+++ b/node_modules/nan/package.json
@@ -1,8 +1,8 @@
{
"_from": "nan@^2.13.2",
- "_id": "nan@2.14.0",
+ "_id": "nan@2.14.1",
"_inBundle": false,
- "_integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "_integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
"_location": "/nan",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/node-sass"
],
- "_resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "_shasum": "7818f722027b2459a86f0295d434d1fc2336c52c",
+ "_resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+ "_shasum": "d7be34dfa3105b91494c3147089315eff8874b01",
"_spec": "nan@^2.13.2",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/node-sass",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/node-sass",
"bugs": {
"url": "https://github.com/nodejs/nan/issues"
},
@@ -69,7 +69,7 @@
}
],
"deprecated": false,
- "description": "Native Abstractions for Node.js: C++ header for Node 0.8 -> 11 compatibility",
+ "description": "Native Abstractions for Node.js: C++ header for Node 0.8 -> 14 compatibility",
"devDependencies": {
"bindings": "~1.2.1",
"commander": "^2.8.1",
@@ -94,5 +94,5 @@
"test": "tap --gc --stderr test/js/*-test.js",
"test:worker": "node --experimental-worker test/tap-as-worker.js --gc --stderr test/js/*-test.js"
},
- "version": "2.14.0"
+ "version": "2.14.1"
}
diff --git a/node_modules/nan/tools/1to2.js b/node_modules/nan/tools/1to2.js
index 337f8bf..6af2505 100755
--- a/node_modules/nan/tools/1to2.js
+++ b/node_modules/nan/tools/1to2.js
@@ -264,7 +264,7 @@ function replace() {
default:
}
- /* Value converstion */
+ /* Value conversion */
switch (arguments[groups[6][0]]) {
case 'Boolean':
case 'Int32':
diff --git a/node_modules/node-sass/CHANGELOG.md b/node_modules/node-sass/CHANGELOG.md
index f4c666c..2cafacc 100644
--- a/node_modules/node-sass/CHANGELOG.md
+++ b/node_modules/node-sass/CHANGELOG.md
@@ -1,3 +1,7 @@
+## v4.14.0
+
+https://github.com/sass/node-sass/releases/tag/v4.14.0
+
## v4.13.1
https://github.com/sass/node-sass/releases/tag/v4.13.1
diff --git a/node_modules/node-sass/README.md b/node_modules/node-sass/README.md
index 1fbea16..aac88e1 100644
--- a/node_modules/node-sass/README.md
+++ b/node_modules/node-sass/README.md
@@ -4,6 +4,7 @@
NodeJS | Minimum node-sass version | Node Module
--------|--------------------------|------------
+Node 14 | 4.14+ | 83
Node 13 | 4.13+ | 79
Node 12 | 4.12+ | 72
Node 11 | 4.10+ | 67
diff --git a/node_modules/node-sass/lib/extensions.js b/node_modules/node-sass/lib/extensions.js
index 1e344c4..eec0ee2 100644
--- a/node_modules/node-sass/lib/extensions.js
+++ b/node_modules/node-sass/lib/extensions.js
@@ -79,6 +79,7 @@ function getHumanNodeVersion(abi) {
case 67: return 'Node.js 11.x';
case 72: return 'Node.js 12.x';
case 79: return 'Node.js 13.x';
+ case 83: return 'Node.js 14.x';
default: return false;
}
}
diff --git a/node_modules/node-sass/package.json b/node_modules/node-sass/package.json
index b73f748..41fe3e4 100644
--- a/node_modules/node-sass/package.json
+++ b/node_modules/node-sass/package.json
@@ -1,27 +1,27 @@
{
- "_from": "node-sass@4.13.1",
- "_id": "node-sass@4.13.1",
+ "_from": "node-sass@4.14.1",
+ "_id": "node-sass@4.14.1",
"_inBundle": false,
- "_integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==",
+ "_integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
"_location": "/node-sass",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
- "raw": "node-sass@4.13.1",
+ "raw": "node-sass@4.14.1",
"name": "node-sass",
"escapedName": "node-sass",
- "rawSpec": "4.13.1",
+ "rawSpec": "4.14.1",
"saveSpec": null,
- "fetchSpec": "4.13.1"
+ "fetchSpec": "4.14.1"
},
"_requiredBy": [
"#USER",
"/"
],
- "_resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz",
- "_shasum": "9db5689696bb2eec2c32b98bfea4c7a2e992d0a3",
- "_spec": "node-sass@4.13.1",
+ "_resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+ "_shasum": "99c87ec2efb7047ed638fb4c9db7f3a42e2217b5",
+ "_spec": "node-sass@4.14.1",
"_where": "/Users/austingebauer/Workspace/personal-website/themes/devise",
"author": {
"name": "Andrew Nesbitt",
@@ -50,7 +50,7 @@
"node-gyp": "^3.8.0",
"npmlog": "^4.0.0",
"request": "^2.88.0",
- "sass-graph": "^2.2.4",
+ "sass-graph": "2.2.5",
"stdout-stream": "^1.4.0",
"true-case-path": "^1.0.2"
},
@@ -91,7 +91,7 @@
"scss",
"style"
],
- "libsass": "3.5.4",
+ "libsass": "3.5.5",
"license": "MIT",
"main": "lib/index.js",
"name": "node-sass",
@@ -111,5 +111,5 @@
"prepublish": "not-in-install && node scripts/prepublish.js || in-install",
"test": "mocha test/{*,**/**}.js"
},
- "version": "4.13.1"
+ "version": "4.14.1"
}
diff --git a/node_modules/node-sass/vendor/darwin-x64-64/binding.node b/node_modules/node-sass/vendor/darwin-x64-64/binding.node
new file mode 100644
index 0000000..fa1613a
--- /dev/null
+++ b/node_modules/node-sass/vendor/darwin-x64-64/binding.node
Binary files differ
diff --git a/node_modules/node-sass/vendor/darwin-x64-79/binding.node b/node_modules/node-sass/vendor/darwin-x64-79/binding.node
deleted file mode 100644
index 74c1776..0000000
--- a/node_modules/node-sass/vendor/darwin-x64-79/binding.node
+++ /dev/null
Binary files differ
diff --git a/node_modules/os-locale/index.js b/node_modules/os-locale/index.js
deleted file mode 100644
index 2c8a006..0000000
--- a/node_modules/os-locale/index.js
+++ /dev/null
@@ -1,127 +0,0 @@
-'use strict';
-var childProcess = require('child_process');
-var execFileSync = childProcess.execFileSync;
-var lcid = require('lcid');
-var defaultOpts = {spawn: true};
-var cache;
-
-function fallback() {
- cache = 'en_US';
- return cache;
-}
-
-function getEnvLocale(env) {
- env = env || process.env;
- var ret = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;
- cache = getLocale(ret);
- return ret;
-}
-
-function parseLocale(x) {
- var env = x.split('\n').reduce(function (env, def) {
- def = def.split('=');
- env[def[0]] = def[1];
- return env;
- }, {});
- return getEnvLocale(env);
-}
-
-function getLocale(str) {
- return (str && str.replace(/[.:].*/, '')) || fallback();
-}
-
-module.exports = function (opts, cb) {
- if (typeof opts === 'function') {
- cb = opts;
- opts = defaultOpts;
- } else {
- opts = opts || defaultOpts;
- }
-
- if (cache || getEnvLocale() || opts.spawn === false) {
- setImmediate(cb, null, cache);
- return;
- }
-
- var getAppleLocale = function () {
- childProcess.execFile('defaults', ['read', '-g', 'AppleLocale'], function (err, stdout) {
- if (err) {
- fallback();
- return;
- }
-
- cache = stdout.trim() || fallback();
- cb(null, cache);
- });
- };
-
- if (process.platform === 'win32') {
- childProcess.execFile('wmic', ['os', 'get', 'locale'], function (err, stdout) {
- if (err) {
- fallback();
- return;
- }
-
- var lcidCode = parseInt(stdout.replace('Locale', ''), 16);
- cache = lcid.from(lcidCode) || fallback();
- cb(null, cache);
- });
- } else {
- childProcess.execFile('locale', function (err, stdout) {
- if (err) {
- fallback();
- return;
- }
-
- var res = parseLocale(stdout);
-
- if (!res && process.platform === 'darwin') {
- getAppleLocale();
- return;
- }
-
- cache = getLocale(res);
- cb(null, cache);
- });
- }
-};
-
-module.exports.sync = function (opts) {
- opts = opts || defaultOpts;
-
- if (cache || getEnvLocale() || !execFileSync || opts.spawn === false) {
- return cache;
- }
-
- if (process.platform === 'win32') {
- var stdout;
-
- try {
- stdout = execFileSync('wmic', ['os', 'get', 'locale'], {encoding: 'utf8'});
- } catch (err) {
- return fallback();
- }
-
- var lcidCode = parseInt(stdout.replace('Locale', ''), 16);
- cache = lcid.from(lcidCode) || fallback();
- return cache;
- }
-
- var res;
-
- try {
- res = parseLocale(execFileSync('locale', {encoding: 'utf8'}));
- } catch (err) {}
-
- if (!res && process.platform === 'darwin') {
- try {
- cache = execFileSync('defaults', ['read', '-g', 'AppleLocale'], {encoding: 'utf8'}).trim() || fallback();
- return cache;
- } catch (err) {
- return fallback();
- }
- }
-
- cache = getLocale(res);
- return cache;
-};
diff --git a/node_modules/os-locale/package.json b/node_modules/os-locale/package.json
deleted file mode 100644
index 523ab6c..0000000
--- a/node_modules/os-locale/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "_from": "os-locale@^1.4.0",
- "_id": "os-locale@1.4.0",
- "_inBundle": false,
- "_integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "_location": "/os-locale",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "os-locale@^1.4.0",
- "name": "os-locale",
- "escapedName": "os-locale",
- "rawSpec": "^1.4.0",
- "saveSpec": null,
- "fetchSpec": "^1.4.0"
- },
- "_requiredBy": [
- "/yargs"
- ],
- "_resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "_shasum": "20f9f17ae29ed345e8bde583b13d2009803c14d9",
- "_spec": "os-locale@^1.4.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "bugs": {
- "url": "https://github.com/sindresorhus/os-locale/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "lcid": "^1.0.0"
- },
- "deprecated": false,
- "description": "Get the system locale",
- "devDependencies": {
- "ava": "*",
- "require-uncached": "^1.0.2",
- "xo": "*"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js"
- ],
- "homepage": "https://github.com/sindresorhus/os-locale#readme",
- "keywords": [
- "locale",
- "lang",
- "language",
- "system",
- "os",
- "string",
- "str",
- "user",
- "country",
- "id",
- "identifier",
- "region"
- ],
- "license": "MIT",
- "name": "os-locale",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/os-locale.git"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "version": "1.4.0"
-}
diff --git a/node_modules/os-locale/readme.md b/node_modules/os-locale/readme.md
deleted file mode 100644
index b80a0bd..0000000
--- a/node_modules/os-locale/readme.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# os-locale [![Build Status](https://travis-ci.org/sindresorhus/os-locale.svg?branch=master)](https://travis-ci.org/sindresorhus/os-locale)
-
-> Get the system [locale](http://en.wikipedia.org/wiki/Locale)
-
-Useful for localizing your module or app.
-
-POSIX systems: The returned locale refers to the [`LC_MESSAGE`](http://www.gnu.org/software/libc/manual/html_node/Locale-Categories.html#Locale-Categories) category, suitable for selecting the language used in the user interface for message translation.
-
-
-## Install
-
-```
-$ npm install --save os-locale
-```
-
-
-## Usage
-
-```js
-var osLocale = require('os-locale');
-
-osLocale(function (err, locale) {
- console.log(locale);
- //=> 'en_US'
-});
-```
-
-
-## API
-
-### osLocale([options], callback(error, locale))
-
-### osLocale.sync([options])
-
-Returns the locale.
-
-#### options.spawn
-
-Type: `boolean`
-Default: `true`
-
-Set to `false` to avoid spawning subprocesses and instead only resolve the locale from environment variables.
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/p-limit/index.d.ts b/node_modules/p-limit/index.d.ts
new file mode 100644
index 0000000..6bbfad4
--- /dev/null
+++ b/node_modules/p-limit/index.d.ts
@@ -0,0 +1,38 @@
+export interface Limit {
+ /**
+ @param fn - Promise-returning/async function.
+ @param arguments - Any arguments to pass through to `fn`. Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a lot of functions.
+ @returns The promise returned by calling `fn(...arguments)`.
+ */
+ <Arguments extends unknown[], ReturnType>(
+ fn: (...arguments: Arguments) => PromiseLike<ReturnType> | ReturnType,
+ ...arguments: Arguments
+ ): Promise<ReturnType>;
+
+ /**
+ The number of promises that are currently running.
+ */
+ readonly activeCount: number;
+
+ /**
+ The number of promises that are waiting to run (i.e. their internal `fn` was not called yet).
+ */
+ readonly pendingCount: number;
+
+ /**
+ Discard pending promises that are waiting to run.
+
+ This might be useful if you want to teardown the queue at the end of your program's lifecycle or discard any function calls referencing an intermediary state of your app.
+
+ Note: This does not cancel promises that are already running.
+ */
+ clearQueue(): void;
+}
+
+/**
+Run multiple promise-returning & async functions with limited concurrency.
+
+@param concurrency - Concurrency limit. Minimum: `1`.
+@returns A `limit` function.
+*/
+export default function pLimit(concurrency: number): Limit;
diff --git a/node_modules/p-limit/index.js b/node_modules/p-limit/index.js
new file mode 100644
index 0000000..6a72a4c
--- /dev/null
+++ b/node_modules/p-limit/index.js
@@ -0,0 +1,57 @@
+'use strict';
+const pTry = require('p-try');
+
+const pLimit = concurrency => {
+ if (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {
+ return Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));
+ }
+
+ const queue = [];
+ let activeCount = 0;
+
+ const next = () => {
+ activeCount--;
+
+ if (queue.length > 0) {
+ queue.shift()();
+ }
+ };
+
+ const run = (fn, resolve, ...args) => {
+ activeCount++;
+
+ const result = pTry(fn, ...args);
+
+ resolve(result);
+
+ result.then(next, next);
+ };
+
+ const enqueue = (fn, resolve, ...args) => {
+ if (activeCount < concurrency) {
+ run(fn, resolve, ...args);
+ } else {
+ queue.push(run.bind(null, fn, resolve, ...args));
+ }
+ };
+
+ const generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));
+ Object.defineProperties(generator, {
+ activeCount: {
+ get: () => activeCount
+ },
+ pendingCount: {
+ get: () => queue.length
+ },
+ clearQueue: {
+ value: () => {
+ queue.length = 0;
+ }
+ }
+ });
+
+ return generator;
+};
+
+module.exports = pLimit;
+module.exports.default = pLimit;
diff --git a/node_modules/p-limit/license b/node_modules/p-limit/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/p-limit/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/p-limit/package.json b/node_modules/p-limit/package.json
new file mode 100644
index 0000000..1f1bf3e
--- /dev/null
+++ b/node_modules/p-limit/package.json
@@ -0,0 +1,84 @@
+{
+ "_from": "p-limit@^2.0.0",
+ "_id": "p-limit@2.3.0",
+ "_inBundle": false,
+ "_integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "_location": "/p-limit",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "p-limit@^2.0.0",
+ "name": "p-limit",
+ "escapedName": "p-limit",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/p-locate"
+ ],
+ "_resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "_shasum": "3dd33c647a214fdfffd835933eb086da0dc21db1",
+ "_spec": "p-limit@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/p-locate",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/p-limit/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "deprecated": false,
+ "description": "Run multiple promise-returning & async functions with limited concurrency",
+ "devDependencies": {
+ "ava": "^1.2.1",
+ "delay": "^4.1.0",
+ "in-range": "^1.0.0",
+ "random-int": "^1.0.0",
+ "time-span": "^2.0.0",
+ "tsd-check": "^0.3.0",
+ "xo": "^0.24.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "homepage": "https://github.com/sindresorhus/p-limit#readme",
+ "keywords": [
+ "promise",
+ "limit",
+ "limited",
+ "concurrency",
+ "throttle",
+ "throat",
+ "rate",
+ "batch",
+ "ratelimit",
+ "task",
+ "queue",
+ "async",
+ "await",
+ "promises",
+ "bluebird"
+ ],
+ "license": "MIT",
+ "name": "p-limit",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/p-limit.git"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd-check"
+ },
+ "version": "2.3.0"
+}
diff --git a/node_modules/p-limit/readme.md b/node_modules/p-limit/readme.md
new file mode 100644
index 0000000..64aa476
--- /dev/null
+++ b/node_modules/p-limit/readme.md
@@ -0,0 +1,101 @@
+# p-limit [![Build Status](https://travis-ci.org/sindresorhus/p-limit.svg?branch=master)](https://travis-ci.org/sindresorhus/p-limit)
+
+> Run multiple promise-returning & async functions with limited concurrency
+
+## Install
+
+```
+$ npm install p-limit
+```
+
+## Usage
+
+```js
+const pLimit = require('p-limit');
+
+const limit = pLimit(1);
+
+const input = [
+ limit(() => fetchSomething('foo')),
+ limit(() => fetchSomething('bar')),
+ limit(() => doSomething())
+];
+
+(async () => {
+ // Only one promise is run at once
+ const result = await Promise.all(input);
+ console.log(result);
+})();
+```
+
+## API
+
+### pLimit(concurrency)
+
+Returns a `limit` function.
+
+#### concurrency
+
+Type: `number`\
+Minimum: `1`\
+Default: `Infinity`
+
+Concurrency limit.
+
+### limit(fn, ...args)
+
+Returns the promise returned by calling `fn(...args)`.
+
+#### fn
+
+Type: `Function`
+
+Promise-returning/async function.
+
+#### args
+
+Any arguments to pass through to `fn`.
+
+Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a *lot* of functions.
+
+### limit.activeCount
+
+The number of promises that are currently running.
+
+### limit.pendingCount
+
+The number of promises that are waiting to run (i.e. their internal `fn` was not called yet).
+
+### limit.clearQueue()
+
+Discard pending promises that are waiting to run.
+
+This might be useful if you want to teardown the queue at the end of your program's lifecycle or discard any function calls referencing an intermediary state of your app.
+
+Note: This does not cancel promises that are already running.
+
+## FAQ
+
+### How is this different from the [`p-queue`](https://github.com/sindresorhus/p-queue) package?
+
+This package is only about limiting the number of concurrent executions, while `p-queue` is a fully featured queue implementation with lots of different options, introspection, and ability to pause the queue.
+
+## Related
+
+- [p-queue](https://github.com/sindresorhus/p-queue) - Promise queue with concurrency control
+- [p-throttle](https://github.com/sindresorhus/p-throttle) - Throttle promise-returning & async functions
+- [p-debounce](https://github.com/sindresorhus/p-debounce) - Debounce promise-returning & async functions
+- [p-all](https://github.com/sindresorhus/p-all) - Run promise-returning & async functions concurrently with optional limited concurrency
+- [More…](https://github.com/sindresorhus/promise-fun)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-p-limit?utm_source=npm-p-limit&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/p-locate/index.js b/node_modules/p-locate/index.js
new file mode 100644
index 0000000..4bd08aa
--- /dev/null
+++ b/node_modules/p-locate/index.js
@@ -0,0 +1,34 @@
+'use strict';
+const pLimit = require('p-limit');
+
+class EndError extends Error {
+ constructor(value) {
+ super();
+ this.value = value;
+ }
+}
+
+// The input can also be a promise, so we `Promise.resolve()` it
+const testElement = (el, tester) => Promise.resolve(el).then(tester);
+
+// The input can also be a promise, so we `Promise.all()` them both
+const finder = el => Promise.all(el).then(val => val[1] === true && Promise.reject(new EndError(val[0])));
+
+module.exports = (iterable, tester, opts) => {
+ opts = Object.assign({
+ concurrency: Infinity,
+ preserveOrder: true
+ }, opts);
+
+ const limit = pLimit(opts.concurrency);
+
+ // Start all the promises concurrently with optional limit
+ const items = [...iterable].map(el => [el, limit(testElement, el, tester)]);
+
+ // Check the promises either serially or concurrently
+ const checkLimit = pLimit(opts.preserveOrder ? 1 : Infinity);
+
+ return Promise.all(items.map(el => checkLimit(finder, el)))
+ .then(() => {})
+ .catch(err => err instanceof EndError ? err.value : Promise.reject(err));
+};
diff --git a/node_modules/p-locate/license b/node_modules/p-locate/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/p-locate/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/p-locate/package.json b/node_modules/p-locate/package.json
new file mode 100644
index 0000000..772d52b
--- /dev/null
+++ b/node_modules/p-locate/package.json
@@ -0,0 +1,83 @@
+{
+ "_from": "p-locate@^3.0.0",
+ "_id": "p-locate@3.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "_location": "/p-locate",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "p-locate@^3.0.0",
+ "name": "p-locate",
+ "escapedName": "p-locate",
+ "rawSpec": "^3.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.0.0"
+ },
+ "_requiredBy": [
+ "/locate-path"
+ ],
+ "_resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "_shasum": "322d69a05c0264b25997d9f40cd8a891ab0064a4",
+ "_spec": "p-locate@^3.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/locate-path",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/p-locate/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "deprecated": false,
+ "description": "Get the first fulfilled promise that satisfies the provided testing function",
+ "devDependencies": {
+ "ava": "*",
+ "delay": "^3.0.0",
+ "in-range": "^1.0.0",
+ "time-span": "^2.0.0",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/p-locate#readme",
+ "keywords": [
+ "promise",
+ "locate",
+ "find",
+ "finder",
+ "search",
+ "searcher",
+ "test",
+ "array",
+ "collection",
+ "iterable",
+ "iterator",
+ "race",
+ "fulfilled",
+ "fastest",
+ "async",
+ "await",
+ "promises",
+ "bluebird"
+ ],
+ "license": "MIT",
+ "name": "p-locate",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/p-locate.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/p-locate/readme.md b/node_modules/p-locate/readme.md
new file mode 100644
index 0000000..3b0173b
--- /dev/null
+++ b/node_modules/p-locate/readme.md
@@ -0,0 +1,88 @@
+# p-locate [![Build Status](https://travis-ci.org/sindresorhus/p-locate.svg?branch=master)](https://travis-ci.org/sindresorhus/p-locate)
+
+> Get the first fulfilled promise that satisfies the provided testing function
+
+Think of it like an async version of [`Array#find`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find).
+
+
+## Install
+
+```
+$ npm install p-locate
+```
+
+
+## Usage
+
+Here we find the first file that exists on disk, in array order.
+
+```js
+const pathExists = require('path-exists');
+const pLocate = require('p-locate');
+
+const files = [
+ 'unicorn.png',
+ 'rainbow.png', // Only this one actually exists on disk
+ 'pony.png'
+];
+
+(async () => {
+ const foundPath = await pLocate(files, file => pathExists(file));
+
+ console.log(foundPath);
+ //=> 'rainbow'
+})();
+```
+
+*The above is just an example. Use [`locate-path`](https://github.com/sindresorhus/locate-path) if you need this.*
+
+
+## API
+
+### pLocate(input, tester, [options])
+
+Returns a `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`.
+
+#### input
+
+Type: `Iterable<Promise|any>`
+
+#### tester(element)
+
+Type: `Function`
+
+Expected to return a `Promise<boolean>` or boolean.
+
+#### options
+
+Type: `Object`
+
+##### concurrency
+
+Type: `number`<br>
+Default: `Infinity`<br>
+Minimum: `1`
+
+Number of concurrently pending promises returned by `tester`.
+
+##### preserveOrder
+
+Type: `boolean`<br>
+Default: `true`
+
+Preserve `input` order when searching.
+
+Disable this to improve performance if you don't care about the order.
+
+
+## Related
+
+- [p-map](https://github.com/sindresorhus/p-map) - Map over promises concurrently
+- [p-filter](https://github.com/sindresorhus/p-filter) - Filter promises concurrently
+- [p-any](https://github.com/sindresorhus/p-any) - Wait for any promise to be fulfilled
+- [More…](https://github.com/sindresorhus/promise-fun)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/p-try/index.d.ts b/node_modules/p-try/index.d.ts
new file mode 100644
index 0000000..2a7319e
--- /dev/null
+++ b/node_modules/p-try/index.d.ts
@@ -0,0 +1,39 @@
+declare const pTry: {
+ /**
+ Start a promise chain.
+
+ @param fn - The function to run to start the promise chain.
+ @param arguments - Arguments to pass to `fn`.
+ @returns The value of calling `fn(...arguments)`. If the function throws an error, the returned `Promise` will be rejected with that error.
+
+ @example
+ ```
+ import pTry = require('p-try');
+
+ (async () => {
+ try {
+ const value = await pTry(() => {
+ return synchronousFunctionThatMightThrow();
+ });
+ console.log(value);
+ } catch (error) {
+ console.error(error);
+ }
+ })();
+ ```
+ */
+ <ValueType, ArgumentsType extends unknown[]>(
+ fn: (...arguments: ArgumentsType) => PromiseLike<ValueType> | ValueType,
+ ...arguments: ArgumentsType
+ ): Promise<ValueType>;
+
+ // TODO: remove this in the next major version, refactor the whole definition to:
+ // declare function pTry<ValueType, ArgumentsType extends unknown[]>(
+ // fn: (...arguments: ArgumentsType) => PromiseLike<ValueType> | ValueType,
+ // ...arguments: ArgumentsType
+ // ): Promise<ValueType>;
+ // export = pTry;
+ default: typeof pTry;
+};
+
+export = pTry;
diff --git a/node_modules/p-try/index.js b/node_modules/p-try/index.js
new file mode 100644
index 0000000..db858da
--- /dev/null
+++ b/node_modules/p-try/index.js
@@ -0,0 +1,9 @@
+'use strict';
+
+const pTry = (fn, ...arguments_) => new Promise(resolve => {
+ resolve(fn(...arguments_));
+});
+
+module.exports = pTry;
+// TODO: remove this in the next major version
+module.exports.default = pTry;
diff --git a/node_modules/p-try/license b/node_modules/p-try/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/p-try/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/p-try/package.json b/node_modules/p-try/package.json
new file mode 100644
index 0000000..64f0080
--- /dev/null
+++ b/node_modules/p-try/package.json
@@ -0,0 +1,74 @@
+{
+ "_from": "p-try@^2.0.0",
+ "_id": "p-try@2.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "_location": "/p-try",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "p-try@^2.0.0",
+ "name": "p-try",
+ "escapedName": "p-try",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/p-limit"
+ ],
+ "_resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "_shasum": "cb2868540e313d61de58fafbe35ce9004d5540e6",
+ "_spec": "p-try@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/p-limit",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/p-try/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "`Start a promise chain",
+ "devDependencies": {
+ "ava": "^1.4.1",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "homepage": "https://github.com/sindresorhus/p-try#readme",
+ "keywords": [
+ "promise",
+ "try",
+ "resolve",
+ "function",
+ "catch",
+ "async",
+ "await",
+ "promises",
+ "settled",
+ "ponyfill",
+ "polyfill",
+ "shim",
+ "bluebird"
+ ],
+ "license": "MIT",
+ "name": "p-try",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/p-try.git"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "version": "2.2.0"
+}
diff --git a/node_modules/p-try/readme.md b/node_modules/p-try/readme.md
new file mode 100644
index 0000000..4d7bd64
--- /dev/null
+++ b/node_modules/p-try/readme.md
@@ -0,0 +1,58 @@
+# p-try [![Build Status](https://travis-ci.org/sindresorhus/p-try.svg?branch=master)](https://travis-ci.org/sindresorhus/p-try)
+
+> Start a promise chain
+
+[How is it useful?](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/)
+
+
+## Install
+
+```
+$ npm install p-try
+```
+
+
+## Usage
+
+```js
+const pTry = require('p-try');
+
+(async () => {
+ try {
+ const value = await pTry(() => {
+ return synchronousFunctionThatMightThrow();
+ });
+ console.log(value);
+ } catch (error) {
+ console.error(error);
+ }
+})();
+```
+
+
+## API
+
+### pTry(fn, ...arguments)
+
+Returns a `Promise` resolved with the value of calling `fn(...arguments)`. If the function throws an error, the returned `Promise` will be rejected with that error.
+
+Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a *lot* of functions.
+
+#### fn
+
+The function to run to start the promise chain.
+
+#### arguments
+
+Arguments to pass to `fn`.
+
+
+## Related
+
+- [p-finally](https://github.com/sindresorhus/p-finally) - `Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome
+- [More…](https://github.com/sindresorhus/promise-fun)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/psl/data/rules.json b/node_modules/psl/data/rules.json
index 0ebfff2..e19abdc 100644
--- a/node_modules/psl/data/rules.json
+++ b/node_modules/psl/data/rules.json
@@ -576,9 +576,10 @@
"*.ck",
"!www.ck",
"cl",
-"gov.cl",
-"gob.cl",
+"aprendemas.cl",
"co.cl",
+"gob.cl",
+"gov.cl",
"mil.cl",
"cm",
"co.cm",
@@ -767,7 +768,17 @@
"eu",
"fi",
"aland.fi",
-"*.fj",
+"fj",
+"ac.fj",
+"biz.fj",
+"com.fj",
+"gov.fj",
+"info.fj",
+"mil.fj",
+"name.fj",
+"net.fj",
+"org.fj",
+"pro.fj",
"*.fk",
"fm",
"fo",
@@ -6026,6 +6037,7 @@
"الجزائر",
"مصر",
"ею",
+"ευ",
"موريتانيا",
"გე",
"ελ",
@@ -6712,7 +6724,6 @@
"lego",
"lexus",
"lgbt",
-"liaison",
"lidl",
"life",
"lifeinsurance",
@@ -7166,7 +7177,6 @@
"virgin",
"visa",
"vision",
-"vistaprint",
"viva",
"vivo",
"vlaanderen",
@@ -7498,6 +7508,7 @@
"certmgr.org",
"xenapponazure.com",
"discourse.group",
+"discourse.team",
"virtueeldomein.nl",
"cleverapps.io",
"*.lcl.dev",
@@ -8054,6 +8065,7 @@
"vladimir.su",
"vologda.su",
"channelsdvr.net",
+"u.channelsdvr.net",
"fastly-terrarium.com",
"fastlylb.net",
"map.fastlylb.net",
@@ -8526,6 +8538,7 @@
"nom.ai",
"nom.al",
"nym.by",
+"nom.bz",
"nym.bz",
"nom.cl",
"nym.ec",
@@ -8547,6 +8560,7 @@
"nym.li",
"nym.lt",
"nym.lu",
+"nom.lv",
"nym.me",
"nom.mk",
"nym.mn",
@@ -8608,6 +8622,7 @@
"byen.site",
"pubtls.org",
"qualifioapp.com",
+"qbuser.com",
"instantcloud.cn",
"ras.ru",
"qa2.com",
@@ -8653,6 +8668,7 @@
"my-firewall.org",
"myfirewall.org",
"spdns.org",
+"senseering.net",
"biz.ua",
"co.ua",
"pp.ua",
@@ -8767,6 +8783,8 @@
"inc.hk",
"virtualuser.de",
"virtual-user.de",
+"urown.cloud",
+"dnsupdate.info",
"lib.de.us",
"2038.io",
"router.management",
@@ -8780,6 +8798,11 @@
"wedeploy.sh",
"remotewd.com",
"wmflabs.org",
+"myforum.community",
+"community-pro.de",
+"diskussionsbereich.de",
+"community-pro.net",
+"meinforum.net",
"half.host",
"xnbay.com",
"u2.xnbay.com",
@@ -8807,6 +8830,5 @@
"bss.design",
"basicserver.io",
"virtualserver.io",
-"site.builder.nu",
"enterprisecloud.nu"
] \ No newline at end of file
diff --git a/node_modules/psl/dist/psl.js b/node_modules/psl/dist/psl.js
index bcbebed..f4b9b89 100644
--- a/node_modules/psl/dist/psl.js
+++ b/node_modules/psl/dist/psl.js
@@ -577,9 +577,10 @@ module.exports=[
"*.ck",
"!www.ck",
"cl",
-"gov.cl",
-"gob.cl",
+"aprendemas.cl",
"co.cl",
+"gob.cl",
+"gov.cl",
"mil.cl",
"cm",
"co.cm",
@@ -768,7 +769,17 @@ module.exports=[
"eu",
"fi",
"aland.fi",
-"*.fj",
+"fj",
+"ac.fj",
+"biz.fj",
+"com.fj",
+"gov.fj",
+"info.fj",
+"mil.fj",
+"name.fj",
+"net.fj",
+"org.fj",
+"pro.fj",
"*.fk",
"fm",
"fo",
@@ -6027,6 +6038,7 @@ module.exports=[
"الجزائر",
"مصر",
"ею",
+"ευ",
"موريتانيا",
"გე",
"ελ",
@@ -6713,7 +6725,6 @@ module.exports=[
"lego",
"lexus",
"lgbt",
-"liaison",
"lidl",
"life",
"lifeinsurance",
@@ -7167,7 +7178,6 @@ module.exports=[
"virgin",
"visa",
"vision",
-"vistaprint",
"viva",
"vivo",
"vlaanderen",
@@ -7499,6 +7509,7 @@ module.exports=[
"certmgr.org",
"xenapponazure.com",
"discourse.group",
+"discourse.team",
"virtueeldomein.nl",
"cleverapps.io",
"*.lcl.dev",
@@ -8055,6 +8066,7 @@ module.exports=[
"vladimir.su",
"vologda.su",
"channelsdvr.net",
+"u.channelsdvr.net",
"fastly-terrarium.com",
"fastlylb.net",
"map.fastlylb.net",
@@ -8527,6 +8539,7 @@ module.exports=[
"nom.ai",
"nom.al",
"nym.by",
+"nom.bz",
"nym.bz",
"nom.cl",
"nym.ec",
@@ -8548,6 +8561,7 @@ module.exports=[
"nym.li",
"nym.lt",
"nym.lu",
+"nom.lv",
"nym.me",
"nom.mk",
"nym.mn",
@@ -8609,6 +8623,7 @@ module.exports=[
"byen.site",
"pubtls.org",
"qualifioapp.com",
+"qbuser.com",
"instantcloud.cn",
"ras.ru",
"qa2.com",
@@ -8654,6 +8669,7 @@ module.exports=[
"my-firewall.org",
"myfirewall.org",
"spdns.org",
+"senseering.net",
"biz.ua",
"co.ua",
"pp.ua",
@@ -8768,6 +8784,8 @@ module.exports=[
"inc.hk",
"virtualuser.de",
"virtual-user.de",
+"urown.cloud",
+"dnsupdate.info",
"lib.de.us",
"2038.io",
"router.management",
@@ -8781,6 +8799,11 @@ module.exports=[
"wedeploy.sh",
"remotewd.com",
"wmflabs.org",
+"myforum.community",
+"community-pro.de",
+"diskussionsbereich.de",
+"community-pro.net",
+"meinforum.net",
"half.host",
"xnbay.com",
"u2.xnbay.com",
@@ -8808,7 +8831,6 @@ module.exports=[
"bss.design",
"basicserver.io",
"virtualserver.io",
-"site.builder.nu",
"enterprisecloud.nu"
]
},{}],2:[function(require,module,exports){
diff --git a/node_modules/psl/dist/psl.min.js b/node_modules/psl/dist/psl.min.js
index f294e87..d5c787e 100644
--- a/node_modules/psl/dist/psl.min.js
+++ b/node_modules/psl/dist/psl.min.js
@@ -1 +1 @@
-!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).psl=a()}}(function(){return function s(m,t,u){function r(o,a){if(!t[o]){if(!m[o]){var i="function"==typeof require&&require;if(!a&&i)return i(o,!0);if(p)return p(o,!0);var e=new Error("Cannot find module '"+o+"'");throw e.code="MODULE_NOT_FOUND",e}var n=t[o]={exports:{}};m[o][0].call(n.exports,function(a){return r(m[o][1][a]||a)},n,n.exports,s,m,t,u)}return t[o].exports}for(var p="function"==typeof require&&require,a=0;a<u.length;a++)r(u[a]);return r}({1:[function(a,o,i){o.exports=["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","com.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","net.ar","org.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","education.tas.edu.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","cri.br","cuiaba.br","curitiba.br","def.br","ecn.br","eco.br","edu.br","emp.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","gov.cl","gob.cl","co.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","name.cy","net.cy","org.cy","parliament.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","com.dz","org.dz","net.dz","gov.dz","edu.dz","asso.dz","pol.dz","art.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","*.fj","*.fk","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个人.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","edu.ky","gov.ky","com.ky","org.ky","net.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","com.my","net.my","org.my","gov.my","edu.my","mil.my","name.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","net.ss","org.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","gov.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","intl.tn","nat.tn","net.tn","org.tn","info.tn","perso.tn","tourism.tn","edunet.tn","rnrt.tn","rns.tn","rnu.tn","mincom.tn","agrinet.tn","defense.tn","turen.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","dominic.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.ri.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","org.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","бел","中国","中國","الجزائر","مصر","ею","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","*.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afamilycompany","afl","africa","agakhan","agency","aig","aigo","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","budapest","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","caseih","cash","casino","catering","catholic","cba","cbn","cbre","cbs","ceb","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","duck","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","esurance","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glade","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","intel","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","iveco","jaguar","java","jcb","jcp","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","liaison","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","lupin","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","metlife","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","mutual","nab","nadex","nagoya","nationwide","natura","navy","nba","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","qvc","racing","radio","raid","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","spreadbetting","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiftcover","swiss","sydney","symantec","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","vistaprint","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","大众汽车","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","工行","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手表","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","珠宝","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","adobeaemcloud.com","adobeaemcloud.net","*.dev.adobeaemcloud.com","beep.pl","barsy.ca","*.compute.estate","*.alces.network","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","amsw.nl","t3l3p0rt.net","tele.amune.org","apigee.io","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","myfritz.net","*.awdev.ca","*.advisor.ws","b-data.io","backplaneapp.io","balena-devices.com","app.banzaicloud.io","betainabox.com","bnr.la","blackbaudcdn.net","boomla.net","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","mycd.eu","carrd.co","crd.co","uwu.ai","ae.org","ar.com","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.com","gb.net","hu.com","hu.net","jp.net","jpn.com","kr.com","mex.com","no.com","qc.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","uy.com","za.bz","za.com","africa.com","gr.com","in.net","us.org","co.com","c.la","certmgr.org","xenapponazure.com","discourse.group","virtueeldomein.nl","cleverapps.io","*.lcl.dev","*.stg.dev","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","cloudera.site","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cloudeity.net","cnpy.gdn","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","edgestack.me","debian.net","dedyn.io","dnshome.de","online.th","shop.th","drayddns.com","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","en-root.fr","mytuleap.com","onred.one","staging.onred.one","enonic.io","customer.enonic.io","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastpanel.direct","fastvps-server.com","fhapp.xyz","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","flynnhub.com","flynnhosting.net","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","service.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","lab.ms","github.io","githubusercontent.com","gitlab.io","glitch.me","lolipop.io","cloudapps.digital","london.cloudapps.digital","homeoffice.gov.uk","ro.im","shop.ro","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","cloudfunctions.net","cloud.goog","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","awsmppl.com","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","hepforge.org","herokuapp.com","herokussl.com","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","bpl.biz","orx.biz","ng.city","biz.gl","ng.ink","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","ng.school","sch.so","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","ipifony.net","mein-iserv.de","test-iserv.de","iserv.dev","iobb.net","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","oya.to","co.krd","edu.krd","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkitools.space","linkyard.cloud","linkyard-cloud.ch","members.linode.com","nodebalancer.linode.com","we.bs","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","uklugs.org","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","miniserver.com","memset.net","cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","ui.nabu.casa","pony.club","of.fashion","on.fashion","of.football","in.london","of.london","for.men","and.mom","for.mom","for.one","for.sale","of.work","to.work","nctu.me","bitballoon.com","netlify.com","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","nodum.co","nodum.io","pcloud.host","nyc.mn","nom.ae","nom.af","nom.ai","nom.al","nym.by","nym.bz","nom.cl","nym.ec","nom.gd","nom.ge","nom.gl","nym.gr","nom.gt","nym.gy","nym.hk","nom.hn","nym.ie","nom.im","nom.ke","nym.kz","nym.la","nym.lc","nom.li","nym.li","nym.lt","nym.lu","nym.me","nom.mk","nym.mn","nym.mx","nom.nu","nym.nz","nym.pe","nym.pt","nom.pw","nom.qa","nym.ro","nom.rs","nom.si","nym.sk","nom.st","nym.su","nym.sx","nom.tj","nym.tw","nom.ug","nom.uy","nom.vc","nom.vg","static.observableusercontent.com","cya.gg","cloudycluster.net","nid.io","opencraft.hosting","operaunite.com","skygearapp.com","outsystemscloud.com","ownprovider.com","own.pm","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","on-web.fr","*.platform.sh","*.platformsh.site","dyn53.io","co.bn","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","qualifioapp.com","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","ptplus.fit","wellbeingzone.co.uk","git-pages.rit.edu","sandcats.io","logoip.de","logoip.com","schokokeks.net","gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","biz.ua","co.ua","pp.ua","shiftedit.io","myshopblocks.com","shopitsite.com","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","stackhero-network.com","static.land","dev.static.land","sites.static.land","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","applicationcloud.io","scapp.io","*.s5y.io","*.sensiosite.cloud","syncloud.it","diskstation.me","dscloud.biz","dscloud.me","dscloud.mobi","dsmynas.com","dsmynas.net","dsmynas.org","familyds.com","familyds.net","familyds.org","i234.me","myds.me","synology.me","vpnplus.to","direct.quickconnect.to","taifun-dns.de","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","edugit.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","arvo.network","azimuth.network","bloxcms.com","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","virtualuser.de","virtual-user.de","lib.de.us","2038.io","router.management","v-info.info","voorloper.cloud","v.ua","wafflecell.com","*.webhare.dev","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","wmflabs.org","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","nohost.me","noho.st","za.net","za.org","now.sh","bss.design","basicserver.io","virtualserver.io","site.builder.nu","enterprisecloud.nu"]},{}],2:[function(a,o,r){"use strict";var p=a("punycode"),k={};k.rules=a("./data/rules.json").map(function(a){return{rule:a,suffix:a.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:"*"===a.charAt(0),exception:"!"===a.charAt(0)}}),k.endsWith=function(a,o){return-1!==a.indexOf(o,a.length-o.length)},k.findRule=function(a){var i=p.toASCII(a);return k.rules.reduce(function(a,o){return-1===o.punySuffix&&(o.punySuffix=p.toASCII(o.suffix)),k.endsWith(i,"."+o.punySuffix)||i===o.punySuffix?o:a},null)},r.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},k.validate=function(a){var o=p.toASCII(a);if(o.length<1)return"DOMAIN_TOO_SHORT";if(255<o.length)return"DOMAIN_TOO_LONG";for(var i,e=o.split("."),n=0;n<e.length;++n){if(!(i=e[n]).length)return"LABEL_TOO_SHORT";if(63<i.length)return"LABEL_TOO_LONG";if("-"===i.charAt(0))return"LABEL_STARTS_WITH_DASH";if("-"===i.charAt(i.length-1))return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-]+$/.test(i))return"LABEL_INVALID_CHARS"}},r.parse=function(a){if("string"!=typeof a)throw new TypeError("Domain name must be a string.");var o=a.slice(0).toLowerCase();"."===o.charAt(o.length-1)&&(o=o.slice(0,o.length-1));var i=k.validate(o);if(i)return{input:a,error:{message:r.errorCodes[i],code:i}};var e={input:a,tld:null,sld:null,domain:null,subdomain:null,listed:!1},n=o.split(".");if("local"===n[n.length-1])return e;function s(){return/xn--/.test(o)&&(e.domain&&(e.domain=p.toASCII(e.domain)),e.subdomain&&(e.subdomain=p.toASCII(e.subdomain))),e}var m=k.findRule(o);if(!m)return n.length<2?e:(e.tld=n.pop(),e.sld=n.pop(),e.domain=[e.sld,e.tld].join("."),n.length&&(e.subdomain=n.pop()),s());e.listed=!0;var t=m.suffix.split("."),u=n.slice(0,n.length-t.length);return m.exception&&u.push(t.shift()),e.tld=t.join("."),u.length?(m.wildcard&&(t.unshift(u.pop()),e.tld=t.join(".")),u.length&&(e.sld=u.pop(),e.domain=[e.sld,e.tld].join("."),u.length&&(e.subdomain=u.join("."))),s()):s()},r.get=function(a){return a&&r.parse(a).domain||null},r.isValid=function(a){var o=r.parse(a);return Boolean(o.domain&&o.listed)}},{"./data/rules.json":1,punycode:3}],3:[function(a,T,D){(function(S){!function(a){var o="object"==typeof D&&D&&!D.nodeType&&D,i="object"==typeof T&&T&&!T.nodeType&&T,e="object"==typeof S&&S;e.global!==e&&e.window!==e&&e.self!==e||(a=e);var n,s,d=2147483647,b=36,y=1,f=26,m=38,t=700,v=72,w=128,z="-",u=/^xn--/,r=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,k={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=b-y,x=Math.floor,q=String.fromCharCode;function A(a){throw new RangeError(k[a])}function l(a,o){for(var i=a.length,e=[];i--;)e[i]=o(a[i]);return e}function g(a,o){var i=a.split("@"),e="";return 1<i.length&&(e=i[0]+"@",a=i[1]),e+l((a=a.replace(p,".")).split("."),o).join(".")}function O(a){for(var o,i,e=[],n=0,s=a.length;n<s;)55296<=(o=a.charCodeAt(n++))&&o<=56319&&n<s?56320==(64512&(i=a.charCodeAt(n++)))?e.push(((1023&o)<<10)+(1023&i)+65536):(e.push(o),n--):e.push(o);return e}function _(a){return l(a,function(a){var o="";return 65535<a&&(o+=q((a-=65536)>>>10&1023|55296),a=56320|1023&a),o+=q(a)}).join("")}function L(a,o){return a+22+75*(a<26)-((0!=o)<<5)}function I(a,o,i){var e=0;for(a=i?x(a/t):a>>1,a+=x(a/o);c*f>>1<a;e+=b)a=x(a/c);return x(e+(c+1)*a/(a+m))}function h(a){var o,i,e,n,s,m,t,u,r,p,k,c=[],l=a.length,g=0,h=w,j=v;for((i=a.lastIndexOf(z))<0&&(i=0),e=0;e<i;++e)128<=a.charCodeAt(e)&&A("not-basic"),c.push(a.charCodeAt(e));for(n=0<i?i+1:0;n<l;){for(s=g,m=1,t=b;l<=n&&A("invalid-input"),k=a.charCodeAt(n++),(b<=(u=k-48<10?k-22:k-65<26?k-65:k-97<26?k-97:b)||u>x((d-g)/m))&&A("overflow"),g+=u*m,!(u<(r=t<=j?y:j+f<=t?f:t-j));t+=b)m>x(d/(p=b-r))&&A("overflow"),m*=p;j=I(g-s,o=c.length+1,0==s),x(g/o)>d-h&&A("overflow"),h+=x(g/o),g%=o,c.splice(g++,0,h)}return _(c)}function j(a){var o,i,e,n,s,m,t,u,r,p,k,c,l,g,h,j=[];for(c=(a=O(a)).length,o=w,s=v,m=i=0;m<c;++m)(k=a[m])<128&&j.push(q(k));for(e=n=j.length,n&&j.push(z);e<c;){for(t=d,m=0;m<c;++m)o<=(k=a[m])&&k<t&&(t=k);for(t-o>x((d-i)/(l=e+1))&&A("overflow"),i+=(t-o)*l,o=t,m=0;m<c;++m)if((k=a[m])<o&&++i>d&&A("overflow"),k==o){for(u=i,r=b;!(u<(p=r<=s?y:s+f<=r?f:r-s));r+=b)h=u-p,g=b-p,j.push(q(L(p+h%g,0))),u=x(h/g);j.push(q(L(u,0))),s=I(i,l,e==n),i=0,++e}++i,++o}return j.join("")}if(n={version:"1.4.1",ucs2:{decode:O,encode:_},decode:h,encode:j,toASCII:function(a){return g(a,function(a){return r.test(a)?"xn--"+j(a):a})},toUnicode:function(a){return g(a,function(a){return u.test(a)?h(a.slice(4).toLowerCase()):a})}},0,o&&i)if(T.exports==o)i.exports=n;else for(s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);else a.punycode=n}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[2])(2)});
+!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).psl=a()}}(function(){return function s(m,t,u){function r(o,a){if(!t[o]){if(!m[o]){var i="function"==typeof require&&require;if(!a&&i)return i(o,!0);if(p)return p(o,!0);var e=new Error("Cannot find module '"+o+"'");throw e.code="MODULE_NOT_FOUND",e}var n=t[o]={exports:{}};m[o][0].call(n.exports,function(a){return r(m[o][1][a]||a)},n,n.exports,s,m,t,u)}return t[o].exports}for(var p="function"==typeof require&&require,a=0;a<u.length;a++)r(u[a]);return r}({1:[function(a,o,i){o.exports=["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","com.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","net.ar","org.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","education.tas.edu.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","cri.br","cuiaba.br","curitiba.br","def.br","ecn.br","eco.br","edu.br","emp.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","aprendemas.cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","name.cy","net.cy","org.cy","parliament.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","com.dz","org.dz","net.dz","gov.dz","edu.dz","asso.dz","pol.dz","art.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个人.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","edu.ky","gov.ky","com.ky","org.ky","net.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","com.my","net.my","org.my","gov.my","edu.my","mil.my","name.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","net.ss","org.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","gov.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","intl.tn","nat.tn","net.tn","org.tn","info.tn","perso.tn","tourism.tn","edunet.tn","rnrt.tn","rns.tn","rnu.tn","mincom.tn","agrinet.tn","defense.tn","turen.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","dominic.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.ri.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","org.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","*.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afamilycompany","afl","africa","agakhan","agency","aig","aigo","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","budapest","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","caseih","cash","casino","catering","catholic","cba","cbn","cbre","cbs","ceb","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","duck","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","esurance","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glade","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","intel","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","iveco","jaguar","java","jcb","jcp","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","lupin","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","metlife","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","mutual","nab","nadex","nagoya","nationwide","natura","navy","nba","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","qvc","racing","radio","raid","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","spreadbetting","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiftcover","swiss","sydney","symantec","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","大众汽车","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","工行","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手表","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","珠宝","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","adobeaemcloud.com","adobeaemcloud.net","*.dev.adobeaemcloud.com","beep.pl","barsy.ca","*.compute.estate","*.alces.network","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","amsw.nl","t3l3p0rt.net","tele.amune.org","apigee.io","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","myfritz.net","*.awdev.ca","*.advisor.ws","b-data.io","backplaneapp.io","balena-devices.com","app.banzaicloud.io","betainabox.com","bnr.la","blackbaudcdn.net","boomla.net","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","mycd.eu","carrd.co","crd.co","uwu.ai","ae.org","ar.com","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.com","gb.net","hu.com","hu.net","jp.net","jpn.com","kr.com","mex.com","no.com","qc.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","uy.com","za.bz","za.com","africa.com","gr.com","in.net","us.org","co.com","c.la","certmgr.org","xenapponazure.com","discourse.group","discourse.team","virtueeldomein.nl","cleverapps.io","*.lcl.dev","*.stg.dev","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","cloudera.site","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cloudeity.net","cnpy.gdn","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","edgestack.me","debian.net","dedyn.io","dnshome.de","online.th","shop.th","drayddns.com","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","en-root.fr","mytuleap.com","onred.one","staging.onred.one","enonic.io","customer.enonic.io","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastpanel.direct","fastvps-server.com","fhapp.xyz","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","flynnhub.com","flynnhosting.net","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","service.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","lab.ms","github.io","githubusercontent.com","gitlab.io","glitch.me","lolipop.io","cloudapps.digital","london.cloudapps.digital","homeoffice.gov.uk","ro.im","shop.ro","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","cloudfunctions.net","cloud.goog","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","awsmppl.com","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","hepforge.org","herokuapp.com","herokussl.com","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","bpl.biz","orx.biz","ng.city","biz.gl","ng.ink","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","ng.school","sch.so","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","ipifony.net","mein-iserv.de","test-iserv.de","iserv.dev","iobb.net","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","oya.to","co.krd","edu.krd","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkitools.space","linkyard.cloud","linkyard-cloud.ch","members.linode.com","nodebalancer.linode.com","we.bs","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","uklugs.org","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","miniserver.com","memset.net","cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","ui.nabu.casa","pony.club","of.fashion","on.fashion","of.football","in.london","of.london","for.men","and.mom","for.mom","for.one","for.sale","of.work","to.work","nctu.me","bitballoon.com","netlify.com","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","nodum.co","nodum.io","pcloud.host","nyc.mn","nom.ae","nom.af","nom.ai","nom.al","nym.by","nom.bz","nym.bz","nom.cl","nym.ec","nom.gd","nom.ge","nom.gl","nym.gr","nom.gt","nym.gy","nym.hk","nom.hn","nym.ie","nom.im","nom.ke","nym.kz","nym.la","nym.lc","nom.li","nym.li","nym.lt","nym.lu","nom.lv","nym.me","nom.mk","nym.mn","nym.mx","nom.nu","nym.nz","nym.pe","nym.pt","nom.pw","nom.qa","nym.ro","nom.rs","nom.si","nym.sk","nom.st","nym.su","nym.sx","nom.tj","nym.tw","nom.ug","nom.uy","nom.vc","nom.vg","static.observableusercontent.com","cya.gg","cloudycluster.net","nid.io","opencraft.hosting","operaunite.com","skygearapp.com","outsystemscloud.com","ownprovider.com","own.pm","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","on-web.fr","*.platform.sh","*.platformsh.site","dyn53.io","co.bn","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","qualifioapp.com","qbuser.com","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","ptplus.fit","wellbeingzone.co.uk","git-pages.rit.edu","sandcats.io","logoip.de","logoip.com","schokokeks.net","gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","senseering.net","biz.ua","co.ua","pp.ua","shiftedit.io","myshopblocks.com","shopitsite.com","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","stackhero-network.com","static.land","dev.static.land","sites.static.land","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","applicationcloud.io","scapp.io","*.s5y.io","*.sensiosite.cloud","syncloud.it","diskstation.me","dscloud.biz","dscloud.me","dscloud.mobi","dsmynas.com","dsmynas.net","dsmynas.org","familyds.com","familyds.net","familyds.org","i234.me","myds.me","synology.me","vpnplus.to","direct.quickconnect.to","taifun-dns.de","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","edugit.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","arvo.network","azimuth.network","bloxcms.com","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","virtualuser.de","virtual-user.de","urown.cloud","dnsupdate.info","lib.de.us","2038.io","router.management","v-info.info","voorloper.cloud","v.ua","wafflecell.com","*.webhare.dev","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","wmflabs.org","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","nohost.me","noho.st","za.net","za.org","now.sh","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"]},{}],2:[function(a,o,r){"use strict";var p=a("punycode"),k={};k.rules=a("./data/rules.json").map(function(a){return{rule:a,suffix:a.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:"*"===a.charAt(0),exception:"!"===a.charAt(0)}}),k.endsWith=function(a,o){return-1!==a.indexOf(o,a.length-o.length)},k.findRule=function(a){var i=p.toASCII(a);return k.rules.reduce(function(a,o){return-1===o.punySuffix&&(o.punySuffix=p.toASCII(o.suffix)),k.endsWith(i,"."+o.punySuffix)||i===o.punySuffix?o:a},null)},r.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},k.validate=function(a){var o=p.toASCII(a);if(o.length<1)return"DOMAIN_TOO_SHORT";if(255<o.length)return"DOMAIN_TOO_LONG";for(var i,e=o.split("."),n=0;n<e.length;++n){if(!(i=e[n]).length)return"LABEL_TOO_SHORT";if(63<i.length)return"LABEL_TOO_LONG";if("-"===i.charAt(0))return"LABEL_STARTS_WITH_DASH";if("-"===i.charAt(i.length-1))return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-]+$/.test(i))return"LABEL_INVALID_CHARS"}},r.parse=function(a){if("string"!=typeof a)throw new TypeError("Domain name must be a string.");var o=a.slice(0).toLowerCase();"."===o.charAt(o.length-1)&&(o=o.slice(0,o.length-1));var i=k.validate(o);if(i)return{input:a,error:{message:r.errorCodes[i],code:i}};var e={input:a,tld:null,sld:null,domain:null,subdomain:null,listed:!1},n=o.split(".");if("local"===n[n.length-1])return e;function s(){return/xn--/.test(o)&&(e.domain&&(e.domain=p.toASCII(e.domain)),e.subdomain&&(e.subdomain=p.toASCII(e.subdomain))),e}var m=k.findRule(o);if(!m)return n.length<2?e:(e.tld=n.pop(),e.sld=n.pop(),e.domain=[e.sld,e.tld].join("."),n.length&&(e.subdomain=n.pop()),s());e.listed=!0;var t=m.suffix.split("."),u=n.slice(0,n.length-t.length);return m.exception&&u.push(t.shift()),e.tld=t.join("."),u.length?(m.wildcard&&(t.unshift(u.pop()),e.tld=t.join(".")),u.length&&(e.sld=u.pop(),e.domain=[e.sld,e.tld].join("."),u.length&&(e.subdomain=u.join("."))),s()):s()},r.get=function(a){return a&&r.parse(a).domain||null},r.isValid=function(a){var o=r.parse(a);return Boolean(o.domain&&o.listed)}},{"./data/rules.json":1,punycode:3}],3:[function(a,T,D){(function(S){!function(a){var o="object"==typeof D&&D&&!D.nodeType&&D,i="object"==typeof T&&T&&!T.nodeType&&T,e="object"==typeof S&&S;e.global!==e&&e.window!==e&&e.self!==e||(a=e);var n,s,d=2147483647,b=36,y=1,f=26,m=38,t=700,v=72,w=128,z="-",u=/^xn--/,r=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,k={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=b-y,x=Math.floor,q=String.fromCharCode;function A(a){throw new RangeError(k[a])}function l(a,o){for(var i=a.length,e=[];i--;)e[i]=o(a[i]);return e}function g(a,o){var i=a.split("@"),e="";return 1<i.length&&(e=i[0]+"@",a=i[1]),e+l((a=a.replace(p,".")).split("."),o).join(".")}function O(a){for(var o,i,e=[],n=0,s=a.length;n<s;)55296<=(o=a.charCodeAt(n++))&&o<=56319&&n<s?56320==(64512&(i=a.charCodeAt(n++)))?e.push(((1023&o)<<10)+(1023&i)+65536):(e.push(o),n--):e.push(o);return e}function _(a){return l(a,function(a){var o="";return 65535<a&&(o+=q((a-=65536)>>>10&1023|55296),a=56320|1023&a),o+=q(a)}).join("")}function L(a,o){return a+22+75*(a<26)-((0!=o)<<5)}function I(a,o,i){var e=0;for(a=i?x(a/t):a>>1,a+=x(a/o);c*f>>1<a;e+=b)a=x(a/c);return x(e+(c+1)*a/(a+m))}function h(a){var o,i,e,n,s,m,t,u,r,p,k,c=[],l=a.length,g=0,h=w,j=v;for((i=a.lastIndexOf(z))<0&&(i=0),e=0;e<i;++e)128<=a.charCodeAt(e)&&A("not-basic"),c.push(a.charCodeAt(e));for(n=0<i?i+1:0;n<l;){for(s=g,m=1,t=b;l<=n&&A("invalid-input"),k=a.charCodeAt(n++),(b<=(u=k-48<10?k-22:k-65<26?k-65:k-97<26?k-97:b)||u>x((d-g)/m))&&A("overflow"),g+=u*m,!(u<(r=t<=j?y:j+f<=t?f:t-j));t+=b)m>x(d/(p=b-r))&&A("overflow"),m*=p;j=I(g-s,o=c.length+1,0==s),x(g/o)>d-h&&A("overflow"),h+=x(g/o),g%=o,c.splice(g++,0,h)}return _(c)}function j(a){var o,i,e,n,s,m,t,u,r,p,k,c,l,g,h,j=[];for(c=(a=O(a)).length,o=w,s=v,m=i=0;m<c;++m)(k=a[m])<128&&j.push(q(k));for(e=n=j.length,n&&j.push(z);e<c;){for(t=d,m=0;m<c;++m)o<=(k=a[m])&&k<t&&(t=k);for(t-o>x((d-i)/(l=e+1))&&A("overflow"),i+=(t-o)*l,o=t,m=0;m<c;++m)if((k=a[m])<o&&++i>d&&A("overflow"),k==o){for(u=i,r=b;!(u<(p=r<=s?y:s+f<=r?f:r-s));r+=b)h=u-p,g=b-p,j.push(q(L(p+h%g,0))),u=x(h/g);j.push(q(L(u,0))),s=I(i,l,e==n),i=0,++e}++i,++o}return j.join("")}if(n={version:"1.4.1",ucs2:{decode:O,encode:_},decode:h,encode:j,toASCII:function(a){return g(a,function(a){return r.test(a)?"xn--"+j(a):a})},toUnicode:function(a){return g(a,function(a){return u.test(a)?h(a.slice(4).toLowerCase()):a})}},0,o&&i)if(T.exports==o)i.exports=n;else for(s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);else a.punycode=n}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[2])(2)});
diff --git a/node_modules/psl/package.json b/node_modules/psl/package.json
index c627c64..a5230f9 100644
--- a/node_modules/psl/package.json
+++ b/node_modules/psl/package.json
@@ -1,8 +1,8 @@
{
"_from": "psl@^1.1.28",
- "_id": "psl@1.7.0",
+ "_id": "psl@1.8.0",
"_inBundle": false,
- "_integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==",
+ "_integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
"_location": "/psl",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/tough-cookie"
],
- "_resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
- "_shasum": "f1c4c47a8ef97167dea5d6bbf4816d736e884a3c",
+ "_resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "_shasum": "9326f8bcfb013adcc005fdff056acce020e51c24",
"_spec": "psl@^1.1.28",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/tough-cookie",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/tough-cookie",
"author": {
"name": "Lupo Montero",
"email": "lupomontero@gmail.com",
@@ -41,14 +41,14 @@
"eslint-config-hapi": "^12.0.0",
"eslint-plugin-hapi": "^4.1.0",
"karma": "^4.4.1",
- "karma-browserify": "^6.1.0",
+ "karma-browserify": "^7.0.0",
"karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.5",
"karma-phantomjs-launcher": "^1.0.4",
- "mocha": "^6.2.2",
+ "mocha": "^7.1.1",
"phantomjs-prebuilt": "^2.1.16",
- "request": "^2.88.0",
- "uglify-js": "^3.7.3",
+ "request": "^2.88.2",
+ "uglify-js": "^3.8.0",
"watchify": "^3.11.1"
},
"homepage": "https://github.com/lupomontero/psl#readme",
@@ -73,5 +73,5 @@
"test": "mocha test && karma start ./karma.conf.js --single-run",
"watch": "mocha test --watch"
},
- "version": "1.7.0"
+ "version": "1.8.0"
}
diff --git a/node_modules/require-main-filename/.npmignore b/node_modules/require-main-filename/.npmignore
deleted file mode 100644
index 6f9fe6b..0000000
--- a/node_modules/require-main-filename/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-.DS_Store
-.nyc_output
diff --git a/node_modules/require-main-filename/.travis.yml b/node_modules/require-main-filename/.travis.yml
deleted file mode 100644
index ab61ce7..0000000
--- a/node_modules/require-main-filename/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-os:
- - linux
-node_js:
- - "0.10"
- - "0.12"
- - "4.1"
- - "node"
diff --git a/node_modules/require-main-filename/CHANGELOG.md b/node_modules/require-main-filename/CHANGELOG.md
new file mode 100644
index 0000000..717d59e
--- /dev/null
+++ b/node_modules/require-main-filename/CHANGELOG.md
@@ -0,0 +1,26 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="2.0.0"></a>
+# [2.0.0](https://github.com/yargs/require-main-filename/compare/v1.0.2...v2.0.0) (2019-01-28)
+
+
+### Chores
+
+* drop support for Node 0.10 ([#11](https://github.com/yargs/require-main-filename/issues/11)) ([87f4e13](https://github.com/yargs/require-main-filename/commit/87f4e13))
+
+
+### BREAKING CHANGES
+
+* drop support for Node 0.10/0.12
+
+
+
+<a name="1.0.2"></a>
+## [1.0.2](https://github.com/yargs/require-main-filename/compare/v1.0.1...v1.0.2) (2017-06-16)
+
+
+### Bug Fixes
+
+* add files to package.json ([#4](https://github.com/yargs/require-main-filename/issues/4)) ([fa29988](https://github.com/yargs/require-main-filename/commit/fa29988))
diff --git a/node_modules/require-main-filename/package.json b/node_modules/require-main-filename/package.json
index d9baf21..accd5b5 100644
--- a/node_modules/require-main-filename/package.json
+++ b/node_modules/require-main-filename/package.json
@@ -1,27 +1,27 @@
{
- "_from": "require-main-filename@^1.0.1",
- "_id": "require-main-filename@1.0.1",
+ "_from": "require-main-filename@^2.0.0",
+ "_id": "require-main-filename@2.0.0",
"_inBundle": false,
- "_integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "_integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"_location": "/require-main-filename",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "require-main-filename@^1.0.1",
+ "raw": "require-main-filename@^2.0.0",
"name": "require-main-filename",
"escapedName": "require-main-filename",
- "rawSpec": "^1.0.1",
+ "rawSpec": "^2.0.0",
"saveSpec": null,
- "fetchSpec": "^1.0.1"
+ "fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/yargs"
],
- "_resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "_shasum": "97f717b69d48784f5f526a6c5aa8ffdda055a4d1",
- "_spec": "require-main-filename@^1.0.1",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
+ "_resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "_shasum": "d0b329ecc7cc0f61649f62215be69af54aa8989b",
+ "_spec": "require-main-filename@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
"author": {
"name": "Ben Coe",
"email": "ben@npmjs.com"
@@ -33,10 +33,14 @@
"deprecated": false,
"description": "shim for require.main.filename() that works in as many environments as possible",
"devDependencies": {
- "chai": "^3.5.0",
- "standard": "^6.0.5",
- "tap": "^5.2.0"
+ "chai": "^4.0.0",
+ "standard": "^10.0.3",
+ "standard-version": "^4.0.0",
+ "tap": "^11.0.0"
},
+ "files": [
+ "index.js"
+ ],
"homepage": "https://github.com/yargs/require-main-filename#readme",
"keywords": [
"require",
@@ -52,7 +56,8 @@
},
"scripts": {
"pretest": "standard",
+ "release": "standard-version",
"test": "tap --coverage test.js"
},
- "version": "1.0.1"
+ "version": "2.0.0"
}
diff --git a/node_modules/require-main-filename/test.js b/node_modules/require-main-filename/test.js
deleted file mode 100644
index d89e7dc..0000000
--- a/node_modules/require-main-filename/test.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/* global describe, it */
-
-var requireMainFilename = require('./')
-
-require('tap').mochaGlobals()
-require('chai').should()
-
-describe('require-main-filename', function () {
- it('returns require.main.filename in normal circumstances', function () {
- requireMainFilename().should.match(/test\.js/)
- })
-
- it('should use children[0].filename when running on iisnode', function () {
- var main = {
- filename: 'D:\\Program Files (x86)\\iisnode\\interceptor.js',
- children: [ {filename: 'D:\\home\\site\\wwwroot\\server.js'} ]
- }
- requireMainFilename({
- main: main
- }).should.match(/server\.js/)
- })
-
- it('should not use children[0] if no children exist', function () {
- var main = {
- filename: 'D:\\Program Files (x86)\\iisnode\\interceptor.js',
- children: []
- }
- requireMainFilename({
- main: main
- }).should.match(/interceptor\.js/)
- })
-
- it('should default to process.cwd() if require.main is undefined', function () {
- requireMainFilename({}).should.match(/require-main-filename/)
- })
-})
diff --git a/node_modules/resolve/.editorconfig b/node_modules/resolve/.editorconfig
new file mode 100644
index 0000000..bc228f8
--- /dev/null
+++ b/node_modules/resolve/.editorconfig
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 150
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[*.json]
+max_line_length = off
+
+[Makefile]
+max_line_length = off
diff --git a/node_modules/resolve/lib/async.js b/node_modules/resolve/lib/async.js
index 66500c8..06aa458 100644
--- a/node_modules/resolve/lib/async.js
+++ b/node_modules/resolve/lib/async.js
@@ -5,6 +5,8 @@ var nodeModulesPaths = require('./node-modules-paths.js');
var normalizeOptions = require('./normalize-options.js');
var isCore = require('./is-core');
+var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
+
var defaultIsFile = function isFile(file, cb) {
fs.stat(file, function (err, stat) {
if (!err) {
@@ -25,12 +27,16 @@ var defaultIsDir = function isDirectory(dir, cb) {
});
};
-var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts, cb) {
+var defaultRealpath = function realpath(x, cb) {
+ realpathFS(x, function (realpathErr, realPath) {
+ if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);
+ else cb(null, realpathErr ? x : realPath);
+ });
+};
+
+var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {
if (opts && opts.preserveSymlinks === false) {
- fs.realpath(x, function (realPathErr, realPath) {
- if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr);
- else cb(null, realPathErr ? x : realPath);
- });
+ realpath(x, cb);
} else {
cb(null, x);
}
@@ -63,6 +69,7 @@ module.exports = function resolve(x, options, callback) {
var isFile = opts.isFile || defaultIsFile;
var isDirectory = opts.isDirectory || defaultIsDir;
var readFile = opts.readFile || fs.readFile;
+ var realpath = opts.realpath || defaultRealpath;
var packageIterator = opts.packageIterator;
var extensions = opts.extensions || ['.js'];
@@ -74,7 +81,8 @@ module.exports = function resolve(x, options, callback) {
// ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
var absoluteStart = path.resolve(basedir);
- maybeUnwrapSymlink(
+ maybeRealpath(
+ realpath,
absoluteStart,
opts,
function (err, realStart) {
@@ -96,7 +104,7 @@ module.exports = function resolve(x, options, callback) {
} else loadNodeModules(x, basedir, function (err, n, pkg) {
if (err) cb(err);
else if (n) {
- return maybeUnwrapSymlink(n, opts, function (err, realN) {
+ return maybeRealpath(realpath, n, opts, function (err, realN) {
if (err) {
cb(err);
} else {
@@ -117,7 +125,7 @@ module.exports = function resolve(x, options, callback) {
else loadAsDirectory(res, function (err, d, pkg) {
if (err) cb(err);
else if (d) {
- maybeUnwrapSymlink(d, opts, function (err, realD) {
+ maybeRealpath(realpath, d, opts, function (err, realD) {
if (err) {
cb(err);
} else {
@@ -181,7 +189,7 @@ module.exports = function resolve(x, options, callback) {
}
if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null);
- maybeUnwrapSymlink(dir, opts, function (unwrapErr, pkgdir) {
+ maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {
if (unwrapErr) return loadpkg(path.dirname(dir), cb);
var pkgfile = path.join(pkgdir, 'package.json');
isFile(pkgfile, function (err, ex) {
@@ -209,7 +217,7 @@ module.exports = function resolve(x, options, callback) {
fpkg = opts.package;
}
- maybeUnwrapSymlink(x, opts, function (unwrapErr, pkgdir) {
+ maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) {
if (unwrapErr) return cb(unwrapErr);
var pkgfile = path.join(pkgdir, 'package.json');
isFile(pkgfile, function (err, ex) {
diff --git a/node_modules/resolve/lib/core.json b/node_modules/resolve/lib/core.json
index d5c85d2..d51b70b 100644
--- a/node_modules/resolve/lib/core.json
+++ b/node_modules/resolve/lib/core.json
@@ -16,7 +16,7 @@
"events": true,
"freelist": "< 6",
"fs": true,
- "fs/promises": ">= 10 && < 10.1",
+ "fs/promises": [">= 10 && < 10.1", ">= 14"],
"_http_agent": ">= 0.11.1",
"_http_client": ">= 0.11.1",
"_http_common": ">= 0.11.1",
diff --git a/node_modules/resolve/lib/sync.js b/node_modules/resolve/lib/sync.js
index b278837..da74e19 100644
--- a/node_modules/resolve/lib/sync.js
+++ b/node_modules/resolve/lib/sync.js
@@ -5,6 +5,8 @@ var caller = require('./caller.js');
var nodeModulesPaths = require('./node-modules-paths.js');
var normalizeOptions = require('./normalize-options.js');
+var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
+
var defaultIsFile = function isFile(file) {
try {
var stat = fs.statSync(file);
@@ -25,19 +27,24 @@ var defaultIsDir = function isDirectory(dir) {
return stat.isDirectory();
};
-var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts) {
- if (opts && opts.preserveSymlinks === false) {
- try {
- return fs.realpathSync(x);
- } catch (realPathErr) {
- if (realPathErr.code !== 'ENOENT') {
- throw realPathErr;
- }
+var defaultRealpathSync = function realpathSync(x) {
+ try {
+ return realpathFS(x);
+ } catch (realpathErr) {
+ if (realpathErr.code !== 'ENOENT') {
+ throw realpathErr;
}
}
return x;
};
+var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {
+ if (opts && opts.preserveSymlinks === false) {
+ return realpathSync(x);
+ }
+ return x;
+};
+
var getPackageCandidates = function getPackageCandidates(x, start, opts) {
var dirs = nodeModulesPaths(start, opts, x);
for (var i = 0; i < dirs.length; i++) {
@@ -55,6 +62,7 @@ module.exports = function resolveSync(x, options) {
var isFile = opts.isFile || defaultIsFile;
var readFileSync = opts.readFileSync || fs.readFileSync;
var isDirectory = opts.isDirectory || defaultIsDir;
+ var realpathSync = opts.realpathSync || defaultRealpathSync;
var packageIterator = opts.packageIterator;
var extensions = opts.extensions || ['.js'];
@@ -64,18 +72,18 @@ module.exports = function resolveSync(x, options) {
opts.paths = opts.paths || [];
// ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
- var absoluteStart = maybeUnwrapSymlink(path.resolve(basedir), opts);
+ var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);
if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
var res = path.resolve(absoluteStart, x);
if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';
var m = loadAsFileSync(res) || loadAsDirectorySync(res);
- if (m) return maybeUnwrapSymlink(m, opts);
+ if (m) return maybeRealpathSync(realpathSync, m, opts);
} else if (isCore(x)) {
return x;
} else {
var n = loadNodeModulesSync(x, absoluteStart);
- if (n) return maybeUnwrapSymlink(n, opts);
+ if (n) return maybeRealpathSync(realpathSync, n, opts);
}
var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
@@ -112,7 +120,7 @@ module.exports = function resolveSync(x, options) {
}
if ((/[/\\]node_modules[/\\]*$/).test(dir)) return;
- var pkgfile = path.join(maybeUnwrapSymlink(dir, opts), 'package.json');
+ var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');
if (!isFile(pkgfile)) {
return loadpkg(path.dirname(dir));
@@ -133,7 +141,7 @@ module.exports = function resolveSync(x, options) {
}
function loadAsDirectorySync(x) {
- var pkgfile = path.join(maybeUnwrapSymlink(x, opts), '/package.json');
+ var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');
if (isFile(pkgfile)) {
try {
var body = readFileSync(pkgfile, 'UTF8');
diff --git a/node_modules/resolve/package.json b/node_modules/resolve/package.json
index 7945d90..825e8c7 100644
--- a/node_modules/resolve/package.json
+++ b/node_modules/resolve/package.json
@@ -1,8 +1,8 @@
{
"_from": "resolve@^1.10.0",
- "_id": "resolve@1.15.1",
+ "_id": "resolve@1.17.0",
"_inBundle": false,
- "_integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+ "_integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
"_location": "/resolve",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/normalize-package-data"
],
- "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
- "_shasum": "27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8",
+ "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "_shasum": "b25941b54968231cc2d1bb76a79cb7f2c0bf8444",
"_spec": "resolve@^1.10.0",
- "_where": "/Users/austingebauer/Workspace/personal-website/themes/hugo-dev-theme/node_modules/normalize-package-data",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/normalize-package-data",
"author": {
"name": "James Halliday",
"email": "mail@substack.net",
@@ -43,7 +43,7 @@
"object-keys": "^1.1.1",
"safe-publish-latest": "^1.1.4",
"tap": "0.4.13",
- "tape": "^5.0.0-next.4"
+ "tape": "^5.0.0-next.5"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -72,5 +72,5 @@
"test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test",
"tests-only": "tape test/*.js"
},
- "version": "1.15.1"
+ "version": "1.17.0"
}
diff --git a/node_modules/resolve/readme.markdown b/node_modules/resolve/readme.markdown
index 60c20d9..5e1aea3 100644
--- a/node_modules/resolve/readme.markdown
+++ b/node_modules/resolve/readme.markdown
@@ -61,6 +61,8 @@ options are:
* opts.isDirectory - function to asynchronously test whether a directory exists
+* opts.realpath - function to asynchronously resolve a potential symlink to its real path
+
* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field
* pkg - package data
* pkgfile - path to package.json
@@ -119,6 +121,13 @@ default `opts` values:
return cb(err);
});
},
+ realpath: function realpath(file, cb) {
+ var realpath = typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
+ realpath(file, function (realPathErr, realPath) {
+ if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr);
+ else cb(null, realPathErr ? file : realPath);
+ });
+ },
moduleDirectory: 'node_modules',
preserveSymlinks: true
}
@@ -141,6 +150,8 @@ options are:
* opts.isDirectory - function to synchronously test whether a directory exists
+* opts.realpathSync - function to synchronously resolve a potential symlink to its real path
+
* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field
* pkg - package data
* dir - directory for package.json (Note: the second argument will change to "pkgfile" in v2)
@@ -198,6 +209,17 @@ default `opts` values:
}
return stat.isDirectory();
},
+ realpathSync: function realpathSync(file) {
+ try {
+ var realpath = typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
+ return realpath(file);
+ } catch (realPathErr) {
+ if (realPathErr.code !== 'ENOENT') {
+ throw realPathErr;
+ }
+ }
+ return file;
+ },
moduleDirectory: 'node_modules',
preserveSymlinks: true
}
diff --git a/node_modules/resolve/test/mock.js b/node_modules/resolve/test/mock.js
index d4f57a3..b9f17fe 100644
--- a/node_modules/resolve/test/mock.js
+++ b/node_modules/resolve/test/mock.js
@@ -22,6 +22,9 @@ test('mock', function (t) {
},
readFile: function (file, cb) {
cb(null, files[path.resolve(file)]);
+ },
+ realpath: function (file, cb) {
+ cb(null, file);
}
};
}
@@ -70,6 +73,9 @@ test('mock from package', function (t) {
'package': { main: 'bar' },
readFile: function (file, cb) {
cb(null, files[file]);
+ },
+ realpath: function (file, cb) {
+ cb(null, file);
}
};
}
@@ -121,6 +127,9 @@ test('mock package', function (t) {
},
readFile: function (file, cb) {
cb(null, files[path.resolve(file)]);
+ },
+ realpath: function (file, cb) {
+ cb(null, file);
}
};
}
@@ -157,6 +166,9 @@ test('mock package from package', function (t) {
'package': { main: 'bar' },
readFile: function (file, cb) {
cb(null, files[path.resolve(file)]);
+ },
+ realpath: function (file, cb) {
+ cb(null, file);
}
};
}
@@ -167,3 +179,61 @@ test('mock package from package', function (t) {
t.equal(pkg && pkg.main, './baz.js');
});
});
+
+test('symlinked', function (t) {
+ t.plan(4);
+
+ var files = {};
+ files[path.resolve('/foo/bar/baz.js')] = 'beep';
+ files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep';
+
+ var dirs = {};
+ dirs[path.resolve('/foo/bar')] = true;
+ dirs[path.resolve('/foo/bar/symlinked')] = true;
+
+ function opts(basedir) {
+ return {
+ preserveSymlinks: false,
+ basedir: path.resolve(basedir),
+ isFile: function (file, cb) {
+ cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+ },
+ isDirectory: function (dir, cb) {
+ cb(null, !!dirs[path.resolve(dir)]);
+ },
+ readFile: function (file, cb) {
+ cb(null, files[path.resolve(file)]);
+ },
+ realpath: function (file, cb) {
+ var resolved = path.resolve(file);
+
+ if (resolved.indexOf('symlinked') >= 0) {
+ cb(null, resolved);
+ return;
+ }
+
+ var ext = path.extname(resolved);
+
+ if (ext) {
+ var dir = path.dirname(resolved);
+ var base = path.basename(resolved);
+ cb(null, path.join(dir, 'symlinked', base));
+ } else {
+ cb(null, path.join(resolved, 'symlinked'));
+ }
+ }
+ };
+ }
+
+ resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) return t.fail(err);
+ t.equal(res, path.resolve('/foo/bar/symlinked/baz.js'));
+ t.equal(pkg, undefined);
+ });
+
+ resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) return t.fail(err);
+ t.equal(res, path.resolve('/foo/bar/symlinked/baz.js'));
+ t.equal(pkg, undefined);
+ });
+});
diff --git a/node_modules/resolve/test/mock_sync.js b/node_modules/resolve/test/mock_sync.js
index af06ae1..fcf8114 100644
--- a/node_modules/resolve/test/mock_sync.js
+++ b/node_modules/resolve/test/mock_sync.js
@@ -22,6 +22,9 @@ test('mock', function (t) {
},
readFileSync: function (file) {
return files[path.resolve(file)];
+ },
+ realpathSync: function (file) {
+ return file;
}
};
}
@@ -69,6 +72,9 @@ test('mock package', function (t) {
},
readFileSync: function (file) {
return files[path.resolve(file)];
+ },
+ realpathSync: function (file) {
+ return file;
}
};
}
@@ -78,3 +84,58 @@ test('mock package', function (t) {
path.resolve('/foo/node_modules/bar/baz.js')
);
});
+
+test('symlinked', function (t) {
+ t.plan(2);
+
+ var files = {};
+ files[path.resolve('/foo/bar/baz.js')] = 'beep';
+ files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep';
+
+ var dirs = {};
+ dirs[path.resolve('/foo/bar')] = true;
+ dirs[path.resolve('/foo/bar/symlinked')] = true;
+
+ function opts(basedir) {
+ return {
+ preserveSymlinks: false,
+ basedir: path.resolve(basedir),
+ isFile: function (file) {
+ return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
+ },
+ isDirectory: function (dir) {
+ return !!dirs[path.resolve(dir)];
+ },
+ readFileSync: function (file) {
+ return files[path.resolve(file)];
+ },
+ realpathSync: function (file) {
+ var resolved = path.resolve(file);
+
+ if (resolved.indexOf('symlinked') >= 0) {
+ return resolved;
+ }
+
+ var ext = path.extname(resolved);
+
+ if (ext) {
+ var dir = path.dirname(resolved);
+ var base = path.basename(resolved);
+ return path.join(dir, 'symlinked', base);
+ } else {
+ return path.join(resolved, 'symlinked');
+ }
+ }
+ };
+ }
+
+ t.equal(
+ resolve.sync('./baz', opts('/foo/bar')),
+ path.resolve('/foo/bar/symlinked/baz.js')
+ );
+
+ t.equal(
+ resolve.sync('./baz.js', opts('/foo/bar')),
+ path.resolve('/foo/bar/symlinked/baz.js')
+ );
+});
diff --git a/node_modules/sass-graph/package.json b/node_modules/sass-graph/package.json
index aa67ed7..5a5a4c7 100644
--- a/node_modules/sass-graph/package.json
+++ b/node_modules/sass-graph/package.json
@@ -1,27 +1,27 @@
{
- "_from": "sass-graph@^2.2.4",
- "_id": "sass-graph@2.2.4",
+ "_from": "sass-graph@2.2.5",
+ "_id": "sass-graph@2.2.5",
"_inBundle": false,
- "_integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+ "_integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
"_location": "/sass-graph",
"_phantomChildren": {},
"_requested": {
- "type": "range",
+ "type": "version",
"registry": true,
- "raw": "sass-graph@^2.2.4",
+ "raw": "sass-graph@2.2.5",
"name": "sass-graph",
"escapedName": "sass-graph",
- "rawSpec": "^2.2.4",
+ "rawSpec": "2.2.5",
"saveSpec": null,
- "fetchSpec": "^2.2.4"
+ "fetchSpec": "2.2.5"
},
"_requiredBy": [
"/node-sass"
],
- "_resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
- "_shasum": "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49",
- "_spec": "sass-graph@^2.2.4",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/node-sass",
+ "_resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+ "_shasum": "a981c87446b8319d96dce0671e487879bd24c2e8",
+ "_spec": "sass-graph@2.2.5",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/node-sass",
"author": {
"name": "xzyfer"
},
@@ -36,7 +36,7 @@
"glob": "^7.0.0",
"lodash": "^4.0.0",
"scss-tokenizer": "^0.2.3",
- "yargs": "^7.0.0"
+ "yargs": "^13.3.2"
},
"deprecated": false,
"description": "Parse sass files and extract a graph of imports",
@@ -71,5 +71,5 @@
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "nyc mocha"
},
- "version": "2.2.4"
+ "version": "2.2.5"
}
diff --git a/node_modules/signal-exit/CHANGELOG.md b/node_modules/signal-exit/CHANGELOG.md
index e2f70d2..ed104f4 100644
--- a/node_modules/signal-exit/CHANGELOG.md
+++ b/node_modules/signal-exit/CHANGELOG.md
@@ -1,7 +1,15 @@
-# Change Log
+# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+### [3.0.3](https://github.com/tapjs/signal-exit/compare/v3.0.2...v3.0.3) (2020-03-26)
+
+
+### Bug Fixes
+
+* patch `SIGHUP` to `SIGINT` when on Windows ([cfd1046](https://github.com/tapjs/signal-exit/commit/cfd1046079af4f0e44f93c69c237a09de8c23ef2))
+* **ci:** use Travis for Windows builds ([007add7](https://github.com/tapjs/signal-exit/commit/007add793d2b5ae3c382512103adbf321768a0b8))
+
<a name="3.0.1"></a>
## [3.0.1](https://github.com/tapjs/signal-exit/compare/v3.0.0...v3.0.1) (2016-09-08)
diff --git a/node_modules/signal-exit/README.md b/node_modules/signal-exit/README.md
index 8ebccab..9f8eb59 100644
--- a/node_modules/signal-exit/README.md
+++ b/node_modules/signal-exit/README.md
@@ -3,7 +3,6 @@
[![Build Status](https://travis-ci.org/tapjs/signal-exit.png)](https://travis-ci.org/tapjs/signal-exit)
[![Coverage](https://coveralls.io/repos/tapjs/signal-exit/badge.svg?branch=master)](https://coveralls.io/r/tapjs/signal-exit?branch=master)
[![NPM version](https://img.shields.io/npm/v/signal-exit.svg)](https://www.npmjs.com/package/signal-exit)
-[![Windows Tests](https://img.shields.io/appveyor/ci/bcoe/signal-exit/master.svg?label=Windows%20Tests)](https://ci.appveyor.com/project/bcoe/signal-exit)
[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
When you want to fire an event no matter how a process exits:
diff --git a/node_modules/signal-exit/index.js b/node_modules/signal-exit/index.js
index 337f691..6b6c43a 100644
--- a/node_modules/signal-exit/index.js
+++ b/node_modules/signal-exit/index.js
@@ -3,6 +3,7 @@
// ignored, since we can never get coverage for them.
var assert = require('assert')
var signals = require('./signals.js')
+var isWin = /^win/i.test(process.platform)
var EE = require('events')
/* istanbul ignore if */
@@ -92,6 +93,11 @@ signals.forEach(function (sig) {
/* istanbul ignore next */
emit('afterexit', null, sig)
/* istanbul ignore next */
+ if (isWin && sig === 'SIGHUP') {
+ // "SIGHUP" throws an `ENOSYS` error on Windows,
+ // so use a supported signal instead
+ sig = 'SIGINT'
+ }
process.kill(process.pid, sig)
}
}
diff --git a/node_modules/signal-exit/package.json b/node_modules/signal-exit/package.json
index 6f48bc2..746c3d9 100644
--- a/node_modules/signal-exit/package.json
+++ b/node_modules/signal-exit/package.json
@@ -1,8 +1,8 @@
{
"_from": "signal-exit@^3.0.0",
- "_id": "signal-exit@3.0.2",
+ "_id": "signal-exit@3.0.3",
"_inBundle": false,
- "_integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "_integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
"_location": "/signal-exit",
"_phantomChildren": {},
"_requested": {
@@ -19,10 +19,10 @@
"/gauge",
"/loud-rejection"
],
- "_resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "_shasum": "b5fdc08f1287ea1178628e415e25132b73646c6d",
+ "_resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "_shasum": "a1410c2edd8f077b08b4e253c8eacfcaf057461c",
"_spec": "signal-exit@^3.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/loud-rejection",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/loud-rejection",
"author": {
"name": "Ben Coe",
"email": "ben@npmjs.com"
@@ -37,7 +37,7 @@
"chai": "^3.5.0",
"coveralls": "^2.11.10",
"nyc": "^8.1.0",
- "standard": "^7.1.2",
+ "standard": "^8.1.0",
"standard-version": "^2.3.0",
"tap": "^8.0.1"
},
@@ -63,5 +63,5 @@
"release": "standard-version",
"test": "tap --timeout=240 ./test/*.js --cov"
},
- "version": "3.0.2"
+ "version": "3.0.3"
}
diff --git a/node_modules/spdx-correct/index.js b/node_modules/spdx-correct/index.js
index 8e0e5ae..c51a79f 100644
--- a/node_modules/spdx-correct/index.js
+++ b/node_modules/spdx-correct/index.js
@@ -49,6 +49,7 @@ var transpositions = [
['GNU GENERAL PUBLIC LICENSE', 'GPL'],
['MTI', 'MIT'],
['Mozilla Public License', 'MPL'],
+ ['Universal Permissive License', 'UPL'],
['WTH', 'WTF'],
['-License', '']
]
@@ -138,6 +139,26 @@ var transforms = [
function (argument) {
return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause')
},
+ // e.g. 'New BSD license'
+ function (argument) {
+ return argument.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')
+ },
+ // e.g. 'Simplified BSD license'
+ function (argument) {
+ return argument.replace(/\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')
+ },
+ // e.g. 'Free BSD license'
+ function (argument) {
+ return argument.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')
+ },
+ // e.g. 'Clear BSD license'
+ function (argument) {
+ return argument.replace(/\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')
+ },
+ // e.g. 'Old BSD License'
+ function (argument) {
+ return argument.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')
+ },
// e.g. 'BY-NC-4.0'
function (argument) {
return 'CC-' + argument
diff --git a/node_modules/spdx-correct/package.json b/node_modules/spdx-correct/package.json
index e7ddfd5..de6c059 100644
--- a/node_modules/spdx-correct/package.json
+++ b/node_modules/spdx-correct/package.json
@@ -1,8 +1,8 @@
{
"_from": "spdx-correct@^3.0.0",
- "_id": "spdx-correct@3.1.0",
+ "_id": "spdx-correct@3.1.1",
"_inBundle": false,
- "_integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "_integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
"_location": "/spdx-correct",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/validate-npm-package-license"
],
- "_resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "_shasum": "fb83e504445268f154b074e218c87c003cd31df4",
+ "_resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "_shasum": "dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9",
"_spec": "spdx-correct@^3.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/validate-npm-package-license",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/validate-npm-package-license",
"author": {
"name": "Kyle E. Mitchell",
"email": "kyle@kemitchell.com",
@@ -84,5 +84,5 @@
"lint": "standard && standard-markdown README.md",
"test": "defence README.md | replace-require-self | node && node test.js"
},
- "version": "3.1.0"
+ "version": "3.1.1"
}
diff --git a/node_modules/spdx-exceptions/index.json b/node_modules/spdx-exceptions/index.json
index 1063ebd..f88f088 100644
--- a/node_modules/spdx-exceptions/index.json
+++ b/node_modules/spdx-exceptions/index.json
@@ -15,6 +15,9 @@
"GCC-exception-2.0",
"GCC-exception-3.1",
"gnu-javamail-exception",
+ "GPL-3.0-linking-exception",
+ "GPL-3.0-linking-source-exception",
+ "GPL-CC-1.0",
"i2p-gpl-java-exception",
"Libtool-exception",
"Linux-syscall-note",
@@ -22,6 +25,7 @@
"LZMA-exception",
"mif-exception",
"Nokia-Qt-exception-1.1",
+ "OCaml-LGPL-linking-exception",
"OCCT-exception-1.0",
"OpenJDK-assembly-exception-1.0",
"openvpn-openssl-exception",
@@ -29,6 +33,8 @@
"Qt-GPL-exception-1.0",
"Qt-LGPL-exception-1.1",
"Qwt-exception-1.0",
+ "Swift-exception",
"u-boot-exception-2.0",
+ "Universal-FOSS-exception-1.0",
"WxWindows-exception-3.1"
]
diff --git a/node_modules/spdx-exceptions/package.json b/node_modules/spdx-exceptions/package.json
index 551250d..d60c6ab 100644
--- a/node_modules/spdx-exceptions/package.json
+++ b/node_modules/spdx-exceptions/package.json
@@ -1,8 +1,8 @@
{
"_from": "spdx-exceptions@^2.1.0",
- "_id": "spdx-exceptions@2.2.0",
+ "_id": "spdx-exceptions@2.3.0",
"_inBundle": false,
- "_integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "_integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
"_location": "/spdx-exceptions",
"_phantomChildren": {},
"_requested": {
@@ -18,10 +18,10 @@
"_requiredBy": [
"/spdx-expression-parse"
],
- "_resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "_shasum": "2ea450aee74f2a89bfb94519c07fcd6f41322977",
+ "_resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "_shasum": "3f28ce1a77a00372683eade4a433183527a2163d",
"_spec": "spdx-exceptions@^2.1.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/spdx-expression-parse",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/spdx-expression-parse",
"author": {
"name": "The Linux Foundation"
},
@@ -38,6 +38,9 @@
],
"deprecated": false,
"description": "list of SPDX standard license exceptions",
+ "files": [
+ "index.json"
+ ],
"homepage": "https://github.com/kemitchell/spdx-exceptions.json#readme",
"license": "CC-BY-3.0",
"name": "spdx-exceptions",
@@ -45,5 +48,8 @@
"type": "git",
"url": "git+https://github.com/kemitchell/spdx-exceptions.json.git"
},
- "version": "2.2.0"
+ "scripts": {
+ "build": "node build.js"
+ },
+ "version": "2.3.0"
}
diff --git a/node_modules/spdx-expression-parse/README.md b/node_modules/spdx-expression-parse/README.md
index 514895b..9406462 100644
--- a/node_modules/spdx-expression-parse/README.md
+++ b/node_modules/spdx-expression-parse/README.md
@@ -39,7 +39,7 @@ The syntax comes from the [Software Package Data eXchange (SPDX)](https://spdx.o
The bulk of the SPDX standard describes syntax and semantics of XML metadata files. This package implements two lightweight, plain-text components of that larger standard:
-1. The [license list](https://spdx.org/licenses), a mapping from specific string identifiers, like `Apache-2.0`, to standard form license texts and bolt-on license exceptions. The [spdx-license-ids](https://www.npmjs.com/package/spdx-exceptions) and [spdx-exceptions](https://www.npmjs.com/package/spdx-license-ids) packages implement the license list. `spdx-expression-parse` depends on and `require()`s them.
+1. The [license list](https://spdx.org/licenses), a mapping from specific string identifiers, like `Apache-2.0`, to standard form license texts and bolt-on license exceptions. The [spdx-license-ids](https://www.npmjs.com/package/spdx-license-ids) and [spdx-exceptions](https://www.npmjs.com/package/spdx-exceptions) packages implement the license list. `spdx-expression-parse` depends on and `require()`s them.
Any license identifier from the license list is a valid license expression:
diff --git a/node_modules/spdx-expression-parse/package.json b/node_modules/spdx-expression-parse/package.json
index 496f680..a9edde2 100644
--- a/node_modules/spdx-expression-parse/package.json
+++ b/node_modules/spdx-expression-parse/package.json
@@ -1,8 +1,8 @@
{
"_from": "spdx-expression-parse@^3.0.0",
- "_id": "spdx-expression-parse@3.0.0",
+ "_id": "spdx-expression-parse@3.0.1",
"_inBundle": false,
- "_integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "_integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"_location": "/spdx-expression-parse",
"_phantomChildren": {},
"_requested": {
@@ -19,14 +19,14 @@
"/spdx-correct",
"/validate-npm-package-license"
],
- "_resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "_shasum": "99e119b7a5da00e05491c9fa338b7904823b41d0",
+ "_resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "_shasum": "cf70f50482eefdc98e3ce0a6833e4a53ceeba679",
"_spec": "spdx-expression-parse@^3.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/validate-npm-package-license",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/validate-npm-package-license",
"author": {
"name": "Kyle E. Mitchell",
"email": "kyle@kemitchell.com",
- "url": "http://kemitchell.com"
+ "url": "https://kemitchell.com"
},
"bugs": {
"url": "https://github.com/jslicense/spdx-expression-parse.js/issues"
@@ -59,10 +59,9 @@
"deprecated": false,
"description": "parse SPDX license expressions",
"devDependencies": {
- "defence-cli": "^2.0.1",
- "mocha": "^3.4.2",
+ "defence-cli": "^3.0.1",
"replace-require-self": "^1.0.0",
- "standard": "^10.0.2"
+ "standard": "^14.1.0"
},
"files": [
"AUTHORS",
@@ -89,9 +88,9 @@
},
"scripts": {
"lint": "standard",
- "test": "npm run test:mocha && npm run test:readme",
- "test:mocha": "mocha test/index.js",
- "test:readme": "defence -i javascript README.md | replace-require-self | node"
+ "test": "npm run test:suite && npm run test:readme",
+ "test:readme": "defence -i javascript README.md | replace-require-self | node",
+ "test:suite": "node test.js"
},
- "version": "3.0.0"
+ "version": "3.0.1"
}
diff --git a/node_modules/spdx-expression-parse/parse.js b/node_modules/spdx-expression-parse/parse.js
index a4a52ce..5a00b45 100644
--- a/node_modules/spdx-expression-parse/parse.js
+++ b/node_modules/spdx-expression-parse/parse.js
@@ -60,7 +60,7 @@ module.exports = function (tokens) {
if (t.type === 'LICENSEREF') {
next()
string += 'LicenseRef-' + t.string
- return {license: string}
+ return { license: string }
}
index = begin
}
@@ -69,7 +69,7 @@ module.exports = function (tokens) {
var t = token()
if (t && t.type === 'LICENSE') {
next()
- var node = {license: t.string}
+ var node = { license: t.string }
if (parseOperator('+')) {
node.plus = true
}
diff --git a/node_modules/spdx-expression-parse/scan.js b/node_modules/spdx-expression-parse/scan.js
index d0567f4..b74fce2 100644
--- a/node_modules/spdx-expression-parse/scan.js
+++ b/node_modules/spdx-expression-parse/scan.js
@@ -70,14 +70,14 @@ module.exports = function (source) {
function documentRef () {
if (read('DocumentRef-')) {
var string = expectIdstring()
- return {type: 'DOCUMENTREF', string: string}
+ return { type: 'DOCUMENTREF', string: string }
}
}
function licenseRef () {
if (read('LicenseRef-')) {
var string = expectIdstring()
- return {type: 'LICENSEREF', string: string}
+ return { type: 'LICENSEREF', string: string }
}
}
diff --git a/node_modules/which-module/CHANGELOG.md b/node_modules/which-module/CHANGELOG.md
index 6c8f5f2..863d469 100644
--- a/node_modules/which-module/CHANGELOG.md
+++ b/node_modules/which-module/CHANGELOG.md
@@ -2,6 +2,21 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+<a name="2.0.0"></a>
+# [2.0.0](https://github.com/nexdrew/which-module/compare/v1.0.0...v2.0.0) (2017-05-01)
+
+
+### Features
+
+* remove Node < 4 from official testing/support ([#22](https://github.com/nexdrew/which-module/issues/22)) ([ee7aff4](https://github.com/nexdrew/which-module/commit/ee7aff4))
+
+
+### BREAKING CHANGES
+
+* Node 0.10 or 0.12 no longer supported, please update to Node 4+ or use which-module@1.0.0
+
+
+
<a name="1.0.0"></a>
# 1.0.0 (2016-06-06)
diff --git a/node_modules/which-module/package.json b/node_modules/which-module/package.json
index 8144189..9ebe146 100644
--- a/node_modules/which-module/package.json
+++ b/node_modules/which-module/package.json
@@ -1,27 +1,27 @@
{
- "_from": "which-module@^1.0.0",
- "_id": "which-module@1.0.0",
+ "_from": "which-module@^2.0.0",
+ "_id": "which-module@2.0.0",
"_inBundle": false,
- "_integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "_integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"_location": "/which-module",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "which-module@^1.0.0",
+ "raw": "which-module@^2.0.0",
"name": "which-module",
"escapedName": "which-module",
- "rawSpec": "^1.0.0",
+ "rawSpec": "^2.0.0",
"saveSpec": null,
- "fetchSpec": "^1.0.0"
+ "fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/yargs"
],
- "_resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "_shasum": "bba63ca861948994ff307736089e3b96026c2a4f",
- "_spec": "which-module@^1.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
+ "_resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "_shasum": "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a",
+ "_spec": "which-module@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
"author": {
"name": "nexdrew"
},
@@ -32,11 +32,11 @@
"deprecated": false,
"description": "Find the module object for something that was require()d",
"devDependencies": {
- "ava": "^0.15.2",
- "coveralls": "^2.11.9",
- "nyc": "^6.4.4",
- "standard": "^7.1.2",
- "standard-version": "^2.3.0"
+ "ava": "^0.19.1",
+ "coveralls": "^2.13.1",
+ "nyc": "^10.3.0",
+ "standard": "^10.0.2",
+ "standard-version": "^4.0.0"
},
"files": [
"index.js"
@@ -64,5 +64,5 @@
"release": "standard-version",
"test": "nyc ava"
},
- "version": "1.0.0"
+ "version": "2.0.0"
}
diff --git a/node_modules/wrap-ansi/index.js b/node_modules/wrap-ansi/index.js
index ff62543..5038bb0 100755
--- a/node_modules/wrap-ansi/index.js
+++ b/node_modules/wrap-ansi/index.js
@@ -1,68 +1,42 @@
'use strict';
-var stringWidth = require('string-width');
-var stripAnsi = require('strip-ansi');
-
-var ESCAPES = [
- '\u001b',
- '\u009b'
-];
-
-var END_CODE = 39;
-
-var ESCAPE_CODES = {
- 0: 0,
- 1: 22,
- 2: 22,
- 3: 23,
- 4: 24,
- 7: 27,
- 8: 28,
- 9: 29,
- 30: 39,
- 31: 39,
- 32: 39,
- 33: 39,
- 34: 39,
- 35: 39,
- 36: 39,
- 37: 39,
- 90: 39,
- 40: 49,
- 41: 49,
- 42: 49,
- 43: 49,
- 44: 49,
- 45: 49,
- 46: 49,
- 47: 49
-};
+const stringWidth = require('string-width');
+const stripAnsi = require('strip-ansi');
+const ansiStyles = require('ansi-styles');
+
+const ESCAPES = new Set([
+ '\u001B',
+ '\u009B'
+]);
+
+const END_CODE = 39;
+
+const wrapAnsi = code => `${ESCAPES.values().next().value}[${code}m`;
-function wrapAnsi(code) {
- return ESCAPES[0] + '[' + code + 'm';
-}
+// Calculate the length of words split on ' ', ignoring
+// the extra characters added by ansi escape codes
+const wordLengths = string => string.split(' ').map(character => stringWidth(character));
-// calculate the length of words split on ' ', ignoring
-// the extra characters added by ansi escape codes.
-function wordLengths(str) {
- return str.split(' ').map(function (s) {
- return stringWidth(s);
- });
-}
+// Wrap a long word across multiple rows
+// Ansi escape codes do not count towards length
+const wrapWord = (rows, word, columns) => {
+ const characters = [...word];
-// wrap a long word across multiple rows.
-// ansi escape codes do not count towards length.
-function wrapWord(rows, word, cols) {
- var insideEscape = false;
- var visible = stripAnsi(rows[rows.length - 1]).length;
+ let insideEscape = false;
+ let visible = stringWidth(stripAnsi(rows[rows.length - 1]));
- for (var i = 0; i < word.length; i++) {
- var x = word[i];
+ for (const [index, character] of characters.entries()) {
+ const characterLength = stringWidth(character);
- rows[rows.length - 1] += x;
+ if (visible + characterLength <= columns) {
+ rows[rows.length - 1] += character;
+ } else {
+ rows.push(character);
+ visible = 0;
+ }
- if (ESCAPES.indexOf(x) !== -1) {
+ if (ESCAPES.has(character)) {
insideEscape = true;
- } else if (insideEscape && x === 'm') {
+ } else if (insideEscape && character === 'm') {
insideEscape = false;
continue;
}
@@ -71,98 +45,144 @@ function wrapWord(rows, word, cols) {
continue;
}
- visible++;
+ visible += characterLength;
- if (visible >= cols && i < word.length - 1) {
+ if (visible === columns && index < characters.length - 1) {
rows.push('');
visible = 0;
}
}
- // it's possible that the last row we copy over is only
- // ansi escape characters, handle this edge-case.
+ // It's possible that the last row we copy over is only
+ // ansi escape characters, handle this edge-case
if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {
rows[rows.length - 2] += rows.pop();
}
-}
+};
+
+// Trims spaces from a string ignoring invisible sequences
+const stringVisibleTrimSpacesRight = str => {
+ const words = str.split(' ');
+ let last = words.length;
+
+ while (last > 0) {
+ if (stringWidth(words[last - 1]) > 0) {
+ break;
+ }
+
+ last--;
+ }
+
+ if (last === words.length) {
+ return str;
+ }
+
+ return words.slice(0, last).join(' ') + words.slice(last).join('');
+};
-// the wrap-ansi module can be invoked
-// in either 'hard' or 'soft' wrap mode.
+// The wrap-ansi module can be invoked
+// in either 'hard' or 'soft' wrap mode
//
// 'hard' will never allow a string to take up more
-// than cols characters.
+// than columns characters
//
-// 'soft' allows long words to expand past the column length.
-function exec(str, cols, opts) {
- var options = opts || {};
+// 'soft' allows long words to expand past the column length
+const exec = (string, columns, options = {}) => {
+ if (options.trim !== false && string.trim() === '') {
+ return '';
+ }
+
+ let pre = '';
+ let ret = '';
+ let escapeCode;
+
+ const lengths = wordLengths(string);
+ let rows = [''];
- var pre = '';
- var ret = '';
- var escapeCode;
+ for (const [index, word] of string.split(' ').entries()) {
+ if (options.trim !== false) {
+ rows[rows.length - 1] = rows[rows.length - 1].trimLeft();
+ }
- var lengths = wordLengths(str);
- var words = str.split(' ');
- var rows = [''];
+ let rowLength = stringWidth(rows[rows.length - 1]);
- for (var i = 0, word; (word = words[i]) !== undefined; i++) {
- var rowLength = stringWidth(rows[rows.length - 1]);
+ if (index !== 0) {
+ if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
+ // If we start with a new word but the current row length equals the length of the columns, add a new row
+ rows.push('');
+ rowLength = 0;
+ }
- if (rowLength) {
- rows[rows.length - 1] += ' ';
- rowLength++;
+ if (rowLength > 0 || options.trim === false) {
+ rows[rows.length - 1] += ' ';
+ rowLength++;
+ }
}
- // in 'hard' wrap mode, the length of a line is
- // never allowed to extend past 'cols'.
- if (lengths[i] > cols && options.hard) {
- if (rowLength) {
+ // In 'hard' wrap mode, the length of a line is
+ // never allowed to extend past 'columns'
+ if (options.hard && lengths[index] > columns) {
+ const remainingColumns = (columns - rowLength);
+ const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);
+ const breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);
+ if (breaksStartingNextLine < breaksStartingThisLine) {
rows.push('');
}
- wrapWord(rows, word, cols);
+
+ wrapWord(rows, word, columns);
continue;
}
- if (rowLength + lengths[i] > cols && rowLength > 0) {
- if (options.wordWrap === false && rowLength < cols) {
- wrapWord(rows, word, cols);
+ if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {
+ if (options.wordWrap === false && rowLength < columns) {
+ wrapWord(rows, word, columns);
continue;
}
rows.push('');
}
+ if (rowLength + lengths[index] > columns && options.wordWrap === false) {
+ wrapWord(rows, word, columns);
+ continue;
+ }
+
rows[rows.length - 1] += word;
}
- pre = rows.map(function (r) {
- return r.trim();
- }).join('\n');
+ if (options.trim !== false) {
+ rows = rows.map(stringVisibleTrimSpacesRight);
+ }
- for (var j = 0; j < pre.length; j++) {
- var y = pre[j];
+ pre = rows.join('\n');
- ret += y;
+ for (const [index, character] of [...pre].entries()) {
+ ret += character;
- if (ESCAPES.indexOf(y) !== -1) {
- var code = parseFloat(/[0-9][^m]*/.exec(pre.slice(j, j + 4)));
+ if (ESCAPES.has(character)) {
+ const code = parseFloat(/\d[^m]*/.exec(pre.slice(index, index + 4)));
escapeCode = code === END_CODE ? null : code;
}
- if (escapeCode && ESCAPE_CODES[escapeCode]) {
- if (pre[j + 1] === '\n') {
- ret += wrapAnsi(ESCAPE_CODES[escapeCode]);
- } else if (y === '\n') {
+ const code = ansiStyles.codes.get(Number(escapeCode));
+
+ if (escapeCode && code) {
+ if (pre[index + 1] === '\n') {
+ ret += wrapAnsi(code);
+ } else if (character === '\n') {
ret += wrapAnsi(escapeCode);
}
}
}
return ret;
-}
+};
-// for each line break, invoke the method separately.
-module.exports = function (str, cols, opts) {
- return String(str).split('\n').map(function (substr) {
- return exec(substr, cols, opts);
- }).join('\n');
+// For each newline, invoke the method separately
+module.exports = (string, columns, options) => {
+ return String(string)
+ .normalize()
+ .split('\n')
+ .map(line => exec(line, columns, options))
+ .join('\n');
};
diff --git a/node_modules/wrap-ansi/license b/node_modules/wrap-ansi/license
index 654d0bf..e7af2f7 100644
--- a/node_modules/wrap-ansi/license
+++ b/node_modules/wrap-ansi/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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:
+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 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.
+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/wrap-ansi/node_modules/ansi-regex/index.js b/node_modules/wrap-ansi/node_modules/ansi-regex/index.js
new file mode 100644
index 0000000..c254480
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-regex/index.js
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = options => {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+
+ const pattern = [
+ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
+ '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
+ ].join('|');
+
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
diff --git a/node_modules/wrap-ansi/node_modules/ansi-regex/license b/node_modules/wrap-ansi/node_modules/ansi-regex/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-regex/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/wrap-ansi/node_modules/ansi-regex/package.json b/node_modules/wrap-ansi/node_modules/ansi-regex/package.json
new file mode 100644
index 0000000..edd03e8
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-regex/package.json
@@ -0,0 +1,85 @@
+{
+ "_from": "ansi-regex@^4.1.0",
+ "_id": "ansi-regex@4.1.0",
+ "_inBundle": false,
+ "_integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "_location": "/wrap-ansi/ansi-regex",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "ansi-regex@^4.1.0",
+ "name": "ansi-regex",
+ "escapedName": "ansi-regex",
+ "rawSpec": "^4.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^4.1.0"
+ },
+ "_requiredBy": [
+ "/wrap-ansi/strip-ansi"
+ ],
+ "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "_shasum": "8b9f8f08cf1acb843756a839ca8c7e3168c51997",
+ "_spec": "ansi-regex@^4.1.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/wrap-ansi/node_modules/strip-ansi",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Regular expression for matching ANSI escape codes",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/ansi-regex#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "text",
+ "regex",
+ "regexp",
+ "re",
+ "match",
+ "test",
+ "find",
+ "pattern"
+ ],
+ "license": "MIT",
+ "name": "ansi-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-regex.git"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "view-supported": "node fixtures/view-codes.js"
+ },
+ "version": "4.1.0"
+}
diff --git a/node_modules/wrap-ansi/node_modules/ansi-regex/readme.md b/node_modules/wrap-ansi/node_modules/ansi-regex/readme.md
new file mode 100644
index 0000000..d19c446
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-regex/readme.md
@@ -0,0 +1,87 @@
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
+
+> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&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>
+
+---
+
+
+## Install
+
+```
+$ npm install ansi-regex
+```
+
+
+## Usage
+
+```js
+const ansiRegex = require('ansi-regex');
+
+ansiRegex().test('\u001B[4mcake\u001B[0m');
+//=> true
+
+ansiRegex().test('cake');
+//=> false
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex());
+//=> ['\u001B[4m', '\u001B[0m']
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
+//=> ['\u001B[4m']
+
+'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
+//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
+```
+
+
+## API
+
+### ansiRegex([options])
+
+Returns a regex for matching ANSI escape codes.
+
+#### options
+
+##### onlyFirst
+
+Type: `boolean`<br>
+Default: `false` *(Matches any ANSI escape codes in a string)*
+
+Match only the first ANSI escape.
+
+
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/wrap-ansi/node_modules/ansi-styles/index.js b/node_modules/wrap-ansi/node_modules/ansi-styles/index.js
new file mode 100644
index 0000000..90a871c
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-styles/index.js
@@ -0,0 +1,165 @@
+'use strict';
+const colorConvert = require('color-convert');
+
+const wrapAnsi16 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${code + offset}m`;
+};
+
+const wrapAnsi256 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};5;${code}m`;
+};
+
+const wrapAnsi16m = (fn, offset) => function () {
+ const rgb = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
+
+function assembleStyles() {
+ const codes = new Map();
+ const styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+
+ // Bright color
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ };
+
+ // Fix humans
+ styles.color.grey = styles.color.gray;
+
+ for (const groupName of Object.keys(styles)) {
+ const group = styles[groupName];
+
+ for (const styleName of Object.keys(group)) {
+ const style = group[styleName];
+
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
+
+ group[styleName] = styles[styleName];
+
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+
+ const ansi2ansi = n => n;
+ const rgb2rgb = (r, g, b) => [r, g, b];
+
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
+
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
+
+ for (let key of Object.keys(colorConvert)) {
+ if (typeof colorConvert[key] !== 'object') {
+ continue;
+ }
+
+ const suite = colorConvert[key];
+
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
+
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
+
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
+
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
+
+ return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
diff --git a/node_modules/wrap-ansi/node_modules/ansi-styles/license b/node_modules/wrap-ansi/node_modules/ansi-styles/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-styles/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/wrap-ansi/node_modules/ansi-styles/package.json b/node_modules/wrap-ansi/node_modules/ansi-styles/package.json
new file mode 100644
index 0000000..22d3f09
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-styles/package.json
@@ -0,0 +1,88 @@
+{
+ "_from": "ansi-styles@^3.2.0",
+ "_id": "ansi-styles@3.2.1",
+ "_inBundle": false,
+ "_integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "_location": "/wrap-ansi/ansi-styles",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "ansi-styles@^3.2.0",
+ "name": "ansi-styles",
+ "escapedName": "ansi-styles",
+ "rawSpec": "^3.2.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.2.0"
+ },
+ "_requiredBy": [
+ "/wrap-ansi"
+ ],
+ "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "_shasum": "41fbb20243e50b12be0f04b8dedbf07520ce841d",
+ "_spec": "ansi-styles@^3.2.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/wrap-ansi",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "ava": {
+ "require": "babel-polyfill"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-styles/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "deprecated": false,
+ "description": "ANSI escape codes for styling strings in the terminal",
+ "devDependencies": {
+ "ava": "*",
+ "babel-polyfill": "^6.23.0",
+ "svg-term-cli": "^2.1.1",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/ansi-styles#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "name": "ansi-styles",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-styles.git"
+ },
+ "scripts": {
+ "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+ "test": "xo && ava"
+ },
+ "version": "3.2.1"
+}
diff --git a/node_modules/wrap-ansi/node_modules/ansi-styles/readme.md b/node_modules/wrap-ansi/node_modules/ansi-styles/readme.md
new file mode 100644
index 0000000..3158e2d
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/ansi-styles/readme.md
@@ -0,0 +1,147 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" width="900">
+
+
+## Install
+
+```
+$ npm install ansi-styles
+```
+
+
+## Usage
+
+```js
+const style = require('ansi-styles');
+
+console.log(`${style.green.open}Hello world!${style.green.close}`);
+
+
+// Color conversion between 16/256/truecolor
+// NOTE: If conversion goes to 16 colors or 256 colors, the original color
+// may be degraded to fit that color palette. This means terminals
+// that do not support 16 million colors will best-match the
+// original color.
+console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
+console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
+console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close);
+```
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Advanced usage
+
+By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `style.modifier`
+- `style.color`
+- `style.bgColor`
+
+###### Example
+
+```js
+console.log(style.color.green.open);
+```
+
+Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
+
+###### Example
+
+```js
+console.log(style.codes.get(36));
+//=> 39
+```
+
+
+## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
+
+`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
+
+To use these, call the associated conversion function with the intended output, for example:
+
+```js
+style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
+style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
+
+style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+
+style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
+style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
+```
+
+
+## Related
+
+- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.js b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 0000000..d506327
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/yargs/node_modules/camelcase/license b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license
index 654d0bf..654d0bf 100644
--- a/node_modules/yargs/node_modules/camelcase/license
+++ b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license
diff --git a/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/package.json b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 0000000..97a3169
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,77 @@
+{
+ "_from": "is-fullwidth-code-point@^2.0.0",
+ "_id": "is-fullwidth-code-point@2.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "_location": "/wrap-ansi/is-fullwidth-code-point",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "is-fullwidth-code-point@^2.0.0",
+ "name": "is-fullwidth-code-point",
+ "escapedName": "is-fullwidth-code-point",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/wrap-ansi/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "_shasum": "a3b30a5c4f199183167aaab93beefae3ddfb654f",
+ "_spec": "is-fullwidth-code-point@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/wrap-ansi/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "name": "is-fullwidth-code-point",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/readme.md b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 0000000..093b028
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/wrap-ansi/node_modules/string-width/index.js b/node_modules/wrap-ansi/node_modules/string-width/index.js
new file mode 100644
index 0000000..33c9d6c
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/string-width/index.js
@@ -0,0 +1,39 @@
+'use strict';
+const stripAnsi = require('strip-ansi');
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+const emojiRegex = require('emoji-regex')();
+
+module.exports = input => {
+ input = input.replace(emojiRegex, ' ');
+
+ if (typeof input !== 'string' || input.length === 0) {
+ return 0;
+ }
+
+ input = stripAnsi(input);
+
+ let width = 0;
+
+ for (let i = 0; i < input.length; i++) {
+ const code = input.codePointAt(i);
+
+ // Ignore control characters
+ if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
+ continue;
+ }
+
+ // Ignore combining characters
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ }
+
+ // Surrogates
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint(code) ? 2 : 1;
+ }
+
+ return width;
+};
diff --git a/node_modules/wrap-ansi/node_modules/string-width/license b/node_modules/wrap-ansi/node_modules/string-width/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/string-width/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/wrap-ansi/node_modules/string-width/package.json b/node_modules/wrap-ansi/node_modules/string-width/package.json
new file mode 100644
index 0000000..01ed86a
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/string-width/package.json
@@ -0,0 +1,88 @@
+{
+ "_from": "string-width@^3.0.0",
+ "_id": "string-width@3.1.0",
+ "_inBundle": false,
+ "_integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "_location": "/wrap-ansi/string-width",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "string-width@^3.0.0",
+ "name": "string-width",
+ "escapedName": "string-width",
+ "rawSpec": "^3.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.0.0"
+ },
+ "_requiredBy": [
+ "/wrap-ansi"
+ ],
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "_shasum": "22767be21b62af1081574306f69ac51b62203961",
+ "_spec": "string-width@^3.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/wrap-ansi",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "deprecated": false,
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "^1.0.1",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "name": "string-width",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.1.0"
+}
diff --git a/node_modules/wrap-ansi/node_modules/string-width/readme.md b/node_modules/wrap-ansi/node_modules/string-width/readme.md
new file mode 100644
index 0000000..d39d95f
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/string-width/readme.md
@@ -0,0 +1,45 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+
+stringWidth('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+// => 5
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/wrap-ansi/node_modules/strip-ansi/index.d.ts b/node_modules/wrap-ansi/node_modules/strip-ansi/index.d.ts
new file mode 100644
index 0000000..44e954d
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/strip-ansi/index.d.ts
@@ -0,0 +1,15 @@
+/**
+Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
+
+@example
+```
+import stripAnsi from 'strip-ansi';
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+*/
+export default function stripAnsi(string: string): string;
diff --git a/node_modules/wrap-ansi/node_modules/strip-ansi/index.js b/node_modules/wrap-ansi/node_modules/strip-ansi/index.js
new file mode 100644
index 0000000..9788c96
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/strip-ansi/index.js
@@ -0,0 +1,7 @@
+'use strict';
+const ansiRegex = require('ansi-regex');
+
+const stripAnsi = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+
+module.exports = stripAnsi;
+module.exports.default = stripAnsi;
diff --git a/node_modules/wrap-ansi/node_modules/strip-ansi/license b/node_modules/wrap-ansi/node_modules/strip-ansi/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/strip-ansi/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/wrap-ansi/node_modules/strip-ansi/package.json b/node_modules/wrap-ansi/node_modules/strip-ansi/package.json
new file mode 100644
index 0000000..d52386c
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/strip-ansi/package.json
@@ -0,0 +1,87 @@
+{
+ "_from": "strip-ansi@^5.0.0",
+ "_id": "strip-ansi@5.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "_location": "/wrap-ansi/strip-ansi",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "strip-ansi@^5.0.0",
+ "name": "strip-ansi",
+ "escapedName": "strip-ansi",
+ "rawSpec": "^5.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^5.0.0"
+ },
+ "_requiredBy": [
+ "/wrap-ansi",
+ "/wrap-ansi/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "_shasum": "8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae",
+ "_spec": "strip-ansi@^5.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/wrap-ansi",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/strip-ansi/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "deprecated": false,
+ "description": "Strip ANSI escape codes from a string",
+ "devDependencies": {
+ "ava": "^1.3.1",
+ "tsd-check": "^0.5.0",
+ "xo": "^0.24.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "homepage": "https://github.com/chalk/strip-ansi#readme",
+ "keywords": [
+ "strip",
+ "trim",
+ "remove",
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "name": "strip-ansi",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/strip-ansi.git"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd-check"
+ },
+ "version": "5.2.0"
+}
diff --git a/node_modules/wrap-ansi/node_modules/strip-ansi/readme.md b/node_modules/wrap-ansi/node_modules/strip-ansi/readme.md
new file mode 100644
index 0000000..8681fe8
--- /dev/null
+++ b/node_modules/wrap-ansi/node_modules/strip-ansi/readme.md
@@ -0,0 +1,61 @@
+# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
+
+> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=readme">Get professional support for 'strip-ansi' 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>
+
+---
+
+## Install
+
+```
+$ npm install strip-ansi
+```
+
+
+## Usage
+
+```js
+const stripAnsi = require('strip-ansi');
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Related
+
+- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/wrap-ansi/package.json b/node_modules/wrap-ansi/package.json
index 4a2edbb..b7a5630 100644
--- a/node_modules/wrap-ansi/package.json
+++ b/node_modules/wrap-ansi/package.json
@@ -1,27 +1,30 @@
{
- "_from": "wrap-ansi@^2.0.0",
- "_id": "wrap-ansi@2.1.0",
+ "_from": "wrap-ansi@^5.1.0",
+ "_id": "wrap-ansi@5.1.0",
"_inBundle": false,
- "_integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "_integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"_location": "/wrap-ansi",
- "_phantomChildren": {},
+ "_phantomChildren": {
+ "color-convert": "1.9.3",
+ "emoji-regex": "7.0.3"
+ },
"_requested": {
"type": "range",
"registry": true,
- "raw": "wrap-ansi@^2.0.0",
+ "raw": "wrap-ansi@^5.1.0",
"name": "wrap-ansi",
"escapedName": "wrap-ansi",
- "rawSpec": "^2.0.0",
+ "rawSpec": "^5.1.0",
"saveSpec": null,
- "fetchSpec": "^2.0.0"
+ "fetchSpec": "^5.1.0"
},
"_requiredBy": [
"/cliui"
],
- "_resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "_shasum": "d8fc3d284dd05794fe84973caecdd1cf824fdd85",
- "_spec": "wrap-ansi@^2.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/cliui",
+ "_resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "_shasum": "1fd1f67235d5b6d0fee781056001bfb694c03b09",
+ "_spec": "wrap-ansi@^5.1.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/cliui",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@@ -32,22 +35,22 @@
},
"bundleDependencies": false,
"dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
},
"deprecated": false,
"description": "Wordwrap a string with ANSI escape codes",
"devDependencies": {
- "ava": "^0.16.0",
- "chalk": "^1.1.0",
- "coveralls": "^2.11.4",
- "has-ansi": "^2.0.0",
- "nyc": "^6.2.1",
- "strip-ansi": "^3.0.0",
- "xo": "*"
+ "ava": "^1.2.1",
+ "chalk": "^2.4.2",
+ "coveralls": "^3.0.3",
+ "has-ansi": "^3.0.0",
+ "nyc": "^13.3.0",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
},
"files": [
"index.js"
@@ -81,36 +84,13 @@
"text"
],
"license": "MIT",
- "maintainers": [
- {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- {
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "jbnicolai.com"
- },
- {
- "name": "JD Ballard",
- "email": "i.am.qix@gmail.com",
- "url": "github.com/qix-"
- },
- {
- "name": "Benjamin Coe",
- "email": "ben@npmjs.com",
- "url": "github.com/bcoe"
- }
- ],
"name": "wrap-ansi",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/wrap-ansi.git"
},
"scripts": {
- "coveralls": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
},
- "version": "2.1.0"
+ "version": "5.1.0"
}
diff --git a/node_modules/wrap-ansi/readme.md b/node_modules/wrap-ansi/readme.md
index 59fc96b..73b87de 100644
--- a/node_modules/wrap-ansi/readme.md
+++ b/node_modules/wrap-ansi/readme.md
@@ -1,12 +1,12 @@
# wrap-ansi [![Build Status](https://travis-ci.org/chalk/wrap-ansi.svg?branch=master)](https://travis-ci.org/chalk/wrap-ansi) [![Coverage Status](https://coveralls.io/repos/github/chalk/wrap-ansi/badge.svg?branch=master)](https://coveralls.io/github/chalk/wrap-ansi?branch=master)
-> Wordwrap a string with [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles)
+> Wordwrap a string with [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles)
## Install
```
-$ npm install --save wrap-ansi
+$ npm install wrap-ansi
```
@@ -24,6 +24,20 @@ console.log(wrapAnsi(input, 20));
<img width="331" src="screenshot.png">
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-wrap_ansi?utm_source=npm-wrap-ansi&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>
+
+---
+
## API
@@ -45,6 +59,8 @@ Number of columns to wrap the text to.
#### options
+Type: `Object`
+
##### hard
Type: `boolean`<br>
@@ -59,6 +75,13 @@ Default: `true`
By default, an attempt is made to split words at spaces, ensuring that they don't extend past the configured columns. If wordWrap is `false`, each column will instead be completely filled splitting words as necessary.
+##### trim
+
+Type: `boolean`<br>
+Default: `true`
+
+Whitespace on all lines is removed by default. Set this option to `false` if you don't want to trim.
+
## Related
@@ -68,6 +91,18 @@ By default, an attempt is made to split words at spaces, ensuring that they don'
- [jsesc](https://github.com/mathiasbynens/jsesc) - Generate ASCII-only output from Unicode strings. Useful for creating test fixtures.
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+- [Benjamin Coe](https://github.com/bcoe)
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
## License
-MIT © [Sindre Sorhus](https://sindresorhus.com)
+MIT
diff --git a/node_modules/y18n/CHANGELOG.md b/node_modules/y18n/CHANGELOG.md
new file mode 100644
index 0000000..c259076
--- /dev/null
+++ b/node_modules/y18n/CHANGELOG.md
@@ -0,0 +1,21 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="4.0.0"></a>
+# [4.0.0](https://github.com/yargs/y18n/compare/v3.2.1...v4.0.0) (2017-10-10)
+
+
+### Bug Fixes
+
+* allow support for falsy values like 0 in tagged literal ([#45](https://github.com/yargs/y18n/issues/45)) ([c926123](https://github.com/yargs/y18n/commit/c926123))
+
+
+### Features
+
+* **__:** added tagged template literal support ([#44](https://github.com/yargs/y18n/issues/44)) ([0598daf](https://github.com/yargs/y18n/commit/0598daf))
+
+
+### BREAKING CHANGES
+
+* **__:** dropping Node 0.10/Node 0.12 support
diff --git a/node_modules/y18n/README.md b/node_modules/y18n/README.md
index 9859458..826474f 100644
--- a/node_modules/y18n/README.md
+++ b/node_modules/y18n/README.md
@@ -4,6 +4,7 @@
[![Coverage Status][coveralls-image]][coveralls-url]
[![NPM version][npm-image]][npm-url]
[![js-standard-style][standard-image]][standard-url]
+[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
The bare-bones internationalization library used by yargs.
@@ -23,6 +24,19 @@ output:
`my awesome string foo`
+_using tagged template literals_
+
+```js
+var __ = require('y18n').__
+var str = 'foo'
+
+console.log(__`my awesome string ${str}`)
+```
+
+output:
+
+`my awesome string foo`
+
_pluralization support:_
```js
@@ -60,6 +74,10 @@ Create an instance of y18n with the config provided, options include:
Print a localized string, `%s` will be replaced with `arg`s.
+This function can also be used as a tag for a template literal. You can use it
+like this: <code>__&#96;hello ${'world'}&#96;</code>. This will be equivalent to
+`__('hello %s', 'world')`.
+
### y18n.\_\_n(singularString, pluralString, count, arg, arg, arg)
Print a localized string with appropriate pluralization. If `%d` is provided
diff --git a/node_modules/y18n/index.js b/node_modules/y18n/index.js
index 91b159e..d720681 100644
--- a/node_modules/y18n/index.js
+++ b/node_modules/y18n/index.js
@@ -16,6 +16,9 @@ function Y18N (opts) {
}
Y18N.prototype.__ = function () {
+ if (typeof arguments[0] !== 'string') {
+ return this._taggedLiteral.apply(this, arguments)
+ }
var args = Array.prototype.slice.call(arguments)
var str = args.shift()
var cb = function () {} // start with noop.
@@ -40,6 +43,19 @@ Y18N.prototype.__ = function () {
return util.format.apply(util, [this.cache[this.locale][str] || str].concat(args))
}
+Y18N.prototype._taggedLiteral = function (parts) {
+ var args = arguments
+ var str = ''
+ parts.forEach(function (part, i) {
+ var arg = args[i + 1]
+ str += part
+ if (typeof arg !== 'undefined') {
+ str += '%s'
+ }
+ })
+ return this.__.apply(null, [str].concat([].slice.call(arguments, 1)))
+}
+
Y18N.prototype._enqueueWrite = function (work) {
this.writeQueue.push(work)
if (this.writeQueue.length === 1) this._processWriteQueue()
diff --git a/node_modules/y18n/package.json b/node_modules/y18n/package.json
index 8fd7046..c6c4814 100644
--- a/node_modules/y18n/package.json
+++ b/node_modules/y18n/package.json
@@ -1,27 +1,27 @@
{
- "_from": "y18n@^3.2.1",
- "_id": "y18n@3.2.1",
+ "_from": "y18n@^4.0.0",
+ "_id": "y18n@4.0.0",
"_inBundle": false,
- "_integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "_integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"_location": "/y18n",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "y18n@^3.2.1",
+ "raw": "y18n@^4.0.0",
"name": "y18n",
"escapedName": "y18n",
- "rawSpec": "^3.2.1",
+ "rawSpec": "^4.0.0",
"saveSpec": null,
- "fetchSpec": "^3.2.1"
+ "fetchSpec": "^4.0.0"
},
"_requiredBy": [
"/yargs"
],
- "_resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "_shasum": "6d15fba884c08679c0d77e88e7759e811e07fa41",
- "_spec": "y18n@^3.2.1",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
+ "_resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "_shasum": "95ef94f85ecc81d007c264e190a120f0a3c8566b",
+ "_spec": "y18n@^4.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
"author": {
"name": "Ben Coe",
"email": "ben@npmjs.com"
@@ -33,12 +33,13 @@
"deprecated": false,
"description": "the bare-bones internationalization library used by yargs",
"devDependencies": {
- "chai": "^3.4.1",
- "coveralls": "^2.11.6",
- "mocha": "^2.3.4",
- "nyc": "^6.1.1",
+ "chai": "^4.0.1",
+ "coveralls": "^3.0.0",
+ "mocha": "^4.0.1",
+ "nyc": "^11.0.1",
"rimraf": "^2.5.0",
- "standard": "^5.4.1"
+ "standard": "^10.0.0-beta.0",
+ "standard-version": "^4.2.0"
},
"files": [
"index.js"
@@ -59,7 +60,8 @@
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
"pretest": "standard",
+ "release": "standard-version",
"test": "nyc mocha"
},
- "version": "3.2.1"
+ "version": "4.0.0"
}
diff --git a/node_modules/yargs-parser/CHANGELOG.md b/node_modules/yargs-parser/CHANGELOG.md
index cd060f3..df11c00 100644
--- a/node_modules/yargs-parser/CHANGELOG.md
+++ b/node_modules/yargs-parser/CHANGELOG.md
@@ -1,7 +1,305 @@
-# Change Log
+# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+### [13.1.1](https://www.github.com/yargs/yargs-parser/compare/v13.1.0...v13.1.1) (2019-06-10)
+
+
+### Bug Fixes
+
+* convert values to strings when tokenizing ([#167](https://www.github.com/yargs/yargs-parser/issues/167)) ([57b7883](https://www.github.com/yargs/yargs-parser/commit/57b7883))
+* nargs should allow duplicates when duplicate-arguments-array=false ([#164](https://www.github.com/yargs/yargs-parser/issues/164)) ([47ccb0b](https://www.github.com/yargs/yargs-parser/commit/47ccb0b))
+* should populate "_" when given config with "short-option-groups" false ([#179](https://www.github.com/yargs/yargs-parser/issues/179)) ([6055974](https://www.github.com/yargs/yargs-parser/commit/6055974))
+
+## [13.1.0](https://github.com/yargs/yargs-parser/compare/v13.0.0...v13.1.0) (2019-05-05)
+
+
+### Features
+
+* add `strip-aliased` and `strip-dashed` configuration options. ([#172](https://github.com/yargs/yargs-parser/issues/172)) ([a3936aa](https://github.com/yargs/yargs-parser/commit/a3936aa))
+* support boolean which do not consume next argument. ([#171](https://github.com/yargs/yargs-parser/issues/171)) ([0ae7fcb](https://github.com/yargs/yargs-parser/commit/0ae7fcb))
+
+
+
+<a name="13.0.0"></a>
+# [13.0.0](https://github.com/yargs/yargs-parser/compare/v12.0.0...v13.0.0) (2019-02-02)
+
+
+### Features
+
+* don't coerce number from string with leading '0' or '+' ([#158](https://github.com/yargs/yargs-parser/issues/158)) ([18d0fd5](https://github.com/yargs/yargs-parser/commit/18d0fd5))
+
+
+### BREAKING CHANGES
+
+* options with leading '+' or '0' now parse as strings
+
+
+
+<a name="12.0.0"></a>
+# [12.0.0](https://github.com/yargs/yargs-parser/compare/v11.1.1...v12.0.0) (2019-01-29)
+
+
+### Bug Fixes
+
+* better handling of quoted strings ([#153](https://github.com/yargs/yargs-parser/issues/153)) ([2fb71b2](https://github.com/yargs/yargs-parser/commit/2fb71b2))
+
+
+### Features
+
+* default value is now used if no right-hand value provided for numbers/strings ([#156](https://github.com/yargs/yargs-parser/issues/156)) ([5a7c46a](https://github.com/yargs/yargs-parser/commit/5a7c46a))
+
+
+### BREAKING CHANGES
+
+* a flag with no right-hand value no longer populates defaulted options with `undefined`.
+* quotes at beginning and endings of strings are not removed during parsing.
+
+
+
+<a name="11.1.1"></a>
+## [11.1.1](https://github.com/yargs/yargs-parser/compare/v11.1.0...v11.1.1) (2018-11-19)
+
+
+### Bug Fixes
+
+* ensure empty string is added into argv._ ([#140](https://github.com/yargs/yargs-parser/issues/140)) ([79cda98](https://github.com/yargs/yargs-parser/commit/79cda98))
+
+
+### Reverts
+
+* make requiresArg work in conjunction with arrays ([#136](https://github.com/yargs/yargs-parser/issues/136)) ([f4a3063](https://github.com/yargs/yargs-parser/commit/f4a3063))
+
+
+
+<a name="11.1.0"></a>
+# [11.1.0](https://github.com/yargs/yargs-parser/compare/v11.0.0...v11.1.0) (2018-11-10)
+
+
+### Bug Fixes
+
+* handling of one char alias ([#139](https://github.com/yargs/yargs-parser/issues/139)) ([ee56e31](https://github.com/yargs/yargs-parser/commit/ee56e31))
+
+
+### Features
+
+* add halt-at-non-option configuration option ([#130](https://github.com/yargs/yargs-parser/issues/130)) ([a849fce](https://github.com/yargs/yargs-parser/commit/a849fce))
+
+
+
+<a name="11.0.0"></a>
+# [11.0.0](https://github.com/yargs/yargs-parser/compare/v10.1.0...v11.0.0) (2018-10-06)
+
+
+### Bug Fixes
+
+* flatten-duplicate-arrays:false for more than 2 arrays ([#128](https://github.com/yargs/yargs-parser/issues/128)) ([2bc395f](https://github.com/yargs/yargs-parser/commit/2bc395f))
+* hyphenated flags combined with dot notation broke parsing ([#131](https://github.com/yargs/yargs-parser/issues/131)) ([dc788da](https://github.com/yargs/yargs-parser/commit/dc788da))
+* make requiresArg work in conjunction with arrays ([#136](https://github.com/yargs/yargs-parser/issues/136)) ([77ae1d4](https://github.com/yargs/yargs-parser/commit/77ae1d4))
+
+
+### Chores
+
+* update dependencies ([6dc42a1](https://github.com/yargs/yargs-parser/commit/6dc42a1))
+
+
+### Features
+
+* also add camelCase array options ([#125](https://github.com/yargs/yargs-parser/issues/125)) ([08c0117](https://github.com/yargs/yargs-parser/commit/08c0117))
+* array.type can now be provided, supporting coercion ([#132](https://github.com/yargs/yargs-parser/issues/132)) ([4b8cfce](https://github.com/yargs/yargs-parser/commit/4b8cfce))
+
+
+### BREAKING CHANGES
+
+* drops Node 4 support
+* the argv object is now populated differently (correctly) when hyphens and dot notation are used in conjunction.
+
+
+
+<a name="10.1.0"></a>
+# [10.1.0](https://github.com/yargs/yargs-parser/compare/v10.0.0...v10.1.0) (2018-06-29)
+
+
+### Features
+
+* add `set-placeholder-key` configuration ([#123](https://github.com/yargs/yargs-parser/issues/123)) ([19386ee](https://github.com/yargs/yargs-parser/commit/19386ee))
+
+
+
+<a name="10.0.0"></a>
+# [10.0.0](https://github.com/yargs/yargs-parser/compare/v9.0.2...v10.0.0) (2018-04-04)
+
+
+### Bug Fixes
+
+* do not set boolean flags if not defined in `argv` ([#119](https://github.com/yargs/yargs-parser/issues/119)) ([f6e6599](https://github.com/yargs/yargs-parser/commit/f6e6599))
+
+
+### BREAKING CHANGES
+
+* `boolean` flags defined without a `default` value will now behave like other option type and won't be set in the parsed results when the user doesn't set the corresponding CLI arg.
+
+Previous behavior:
+```js
+var parse = require('yargs-parser');
+
+parse('--flag', {boolean: ['flag']});
+// => { _: [], flag: true }
+
+parse('--no-flag', {boolean: ['flag']});
+// => { _: [], flag: false }
+
+parse('', {boolean: ['flag']});
+// => { _: [], flag: false }
+```
+
+New behavior:
+```js
+var parse = require('yargs-parser');
+
+parse('--flag', {boolean: ['flag']});
+// => { _: [], flag: true }
+
+parse('--no-flag', {boolean: ['flag']});
+// => { _: [], flag: false }
+
+parse('', {boolean: ['flag']});
+// => { _: [] } => flag not set similarly to other option type
+```
+
+
+
+<a name="9.0.2"></a>
+## [9.0.2](https://github.com/yargs/yargs-parser/compare/v9.0.1...v9.0.2) (2018-01-20)
+
+
+### Bug Fixes
+
+* nargs was still aggressively consuming too many arguments ([9b28aad](https://github.com/yargs/yargs-parser/commit/9b28aad))
+
+
+
+<a name="9.0.1"></a>
+## [9.0.1](https://github.com/yargs/yargs-parser/compare/v9.0.0...v9.0.1) (2018-01-20)
+
+
+### Bug Fixes
+
+* nargs was consuming too many arguments ([4fef206](https://github.com/yargs/yargs-parser/commit/4fef206))
+
+
+
+<a name="9.0.0"></a>
+# [9.0.0](https://github.com/yargs/yargs-parser/compare/v8.1.0...v9.0.0) (2018-01-20)
+
+
+### Features
+
+* narg arguments no longer consume flag arguments ([#114](https://github.com/yargs/yargs-parser/issues/114)) ([60bb9b3](https://github.com/yargs/yargs-parser/commit/60bb9b3))
+
+
+### BREAKING CHANGES
+
+* arguments of form --foo, -abc, will no longer be consumed by nargs
+
+
+
+<a name="8.1.0"></a>
+# [8.1.0](https://github.com/yargs/yargs-parser/compare/v8.0.0...v8.1.0) (2017-12-20)
+
+
+### Bug Fixes
+
+* allow null config values ([#108](https://github.com/yargs/yargs-parser/issues/108)) ([d8b14f9](https://github.com/yargs/yargs-parser/commit/d8b14f9))
+* ensure consistent parsing of dot-notation arguments ([#102](https://github.com/yargs/yargs-parser/issues/102)) ([c9bd79c](https://github.com/yargs/yargs-parser/commit/c9bd79c))
+* implement [@antoniom](https://github.com/antoniom)'s fix for camel-case expansion ([3087e1d](https://github.com/yargs/yargs-parser/commit/3087e1d))
+* only run coercion functions once, despite aliases. ([#76](https://github.com/yargs/yargs-parser/issues/76)) ([#103](https://github.com/yargs/yargs-parser/issues/103)) ([507aaef](https://github.com/yargs/yargs-parser/commit/507aaef))
+* scientific notation circumvented bounds check ([#110](https://github.com/yargs/yargs-parser/issues/110)) ([3571f57](https://github.com/yargs/yargs-parser/commit/3571f57))
+* tokenizer should ignore spaces at the beginning of the argString ([#106](https://github.com/yargs/yargs-parser/issues/106)) ([f34ead9](https://github.com/yargs/yargs-parser/commit/f34ead9))
+
+
+### Features
+
+* make combining arrays a configurable option ([#111](https://github.com/yargs/yargs-parser/issues/111)) ([c8bf536](https://github.com/yargs/yargs-parser/commit/c8bf536))
+* merge array from arguments with array from config ([#83](https://github.com/yargs/yargs-parser/issues/83)) ([806ddd6](https://github.com/yargs/yargs-parser/commit/806ddd6))
+
+
+
+<a name="8.0.0"></a>
+# [8.0.0](https://github.com/yargs/yargs-parser/compare/v7.0.0...v8.0.0) (2017-10-05)
+
+
+### Bug Fixes
+
+* Ignore multiple spaces between arguments. ([#100](https://github.com/yargs/yargs-parser/issues/100)) ([d137227](https://github.com/yargs/yargs-parser/commit/d137227))
+
+
+### Features
+
+* allow configuration of prefix for boolean negation ([#94](https://github.com/yargs/yargs-parser/issues/94)) ([00bde7d](https://github.com/yargs/yargs-parser/commit/00bde7d))
+* reworking how numbers are parsed ([#104](https://github.com/yargs/yargs-parser/issues/104)) ([fba00eb](https://github.com/yargs/yargs-parser/commit/fba00eb))
+
+
+### BREAKING CHANGES
+
+* strings that fail `Number.isSafeInteger()` are no longer coerced into numbers.
+
+
+
+<a name="7.0.0"></a>
+# [7.0.0](https://github.com/yargs/yargs-parser/compare/v6.0.1...v7.0.0) (2017-05-02)
+
+
+### Chores
+
+* revert populate-- logic ([#91](https://github.com/yargs/yargs-parser/issues/91)) ([6003e6d](https://github.com/yargs/yargs-parser/commit/6003e6d))
+
+
+### BREAKING CHANGES
+
+* populate-- now defaults to false.
+
+
+
+<a name="6.0.1"></a>
+## [6.0.1](https://github.com/yargs/yargs-parser/compare/v6.0.0...v6.0.1) (2017-05-01)
+
+
+### Bug Fixes
+
+* default '--' to undefined when not provided; this is closer to the array API ([#90](https://github.com/yargs/yargs-parser/issues/90)) ([4e739cc](https://github.com/yargs/yargs-parser/commit/4e739cc))
+
+
+
+<a name="6.0.0"></a>
+# [6.0.0](https://github.com/yargs/yargs-parser/compare/v4.2.1...v6.0.0) (2017-05-01)
+
+
+### Bug Fixes
+
+* environment variables should take precedence over config file ([#81](https://github.com/yargs/yargs-parser/issues/81)) ([76cee1f](https://github.com/yargs/yargs-parser/commit/76cee1f))
+* parsing hints should apply for dot notation keys ([#86](https://github.com/yargs/yargs-parser/issues/86)) ([3e47d62](https://github.com/yargs/yargs-parser/commit/3e47d62))
+
+
+### Chores
+
+* upgrade to newest version of camelcase ([#87](https://github.com/yargs/yargs-parser/issues/87)) ([f1903aa](https://github.com/yargs/yargs-parser/commit/f1903aa))
+
+
+### Features
+
+* add -- option which allows arguments after the -- flag to be returned separated from positional arguments ([#84](https://github.com/yargs/yargs-parser/issues/84)) ([2572ca8](https://github.com/yargs/yargs-parser/commit/2572ca8))
+* when parsing stops, we now populate "--" by default ([#88](https://github.com/yargs/yargs-parser/issues/88)) ([cd666db](https://github.com/yargs/yargs-parser/commit/cd666db))
+
+
+### BREAKING CHANGES
+
+* rather than placing arguments in "_", when parsing is stopped via "--"; we now populate an array called "--" by default.
+* camelcase now requires Node 4+.
+* environment variables will now override config files (args, env, config-file, config-object)
+
+
+
<a name="5.0.0"></a>
# [5.0.0](https://github.com/yargs/yargs-parser/compare/v4.2.1...v5.0.0) (2017-02-18)
diff --git a/node_modules/yargs-parser/README.md b/node_modules/yargs-parser/README.md
index 6d5916c..dde9f84 100644
--- a/node_modules/yargs-parser/README.md
+++ b/node_modules/yargs-parser/README.md
@@ -1,9 +1,8 @@
# yargs-parser
-[![Build Status](https://travis-ci.org/yargs/yargs-parser.png)](https://travis-ci.org/yargs/yargs-parser)
+[![Build Status](https://travis-ci.org/yargs/yargs-parser.svg)](https://travis-ci.org/yargs/yargs-parser)
[![Coverage Status](https://coveralls.io/repos/yargs/yargs-parser/badge.svg?branch=)](https://coveralls.io/r/yargs/yargs-parser?branch=master)
[![NPM version](https://img.shields.io/npm/v/yargs-parser.svg)](https://www.npmjs.com/package/yargs-parser)
-[![Windows Tests](https://img.shields.io/appveyor/ci/bcoe/yargs-parser/master.svg?label=Windows%20Tests)](https://ci.appveyor.com/project/bcoe/yargs-parser)
[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
@@ -11,7 +10,7 @@ The mighty option parser used by [yargs](https://github.com/yargs/yargs).
visit the [yargs website](http://yargs.js.org/) for more examples, and thorough usage instructions.
-<img width="250" src="https://github.com/yargs/yargs-parser/blob/master/yargs-logo.png">
+<img width="250" src="https://raw.githubusercontent.com/yargs/yargs-parser/master/yargs-logo.png">
## Example
@@ -59,25 +58,31 @@ Parses command line arguments returning a simple mapping of keys and values.
* `args`: a string or array of strings representing the options to parse.
* `opts`: provide a set of hints indicating how `args` should be parsed:
* `opts.alias`: an object representing the set of aliases for a key: `{alias: {foo: ['f']}}`.
- * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.
+ * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.<br>
+ Indicate that keys should be parsed as an array and coerced to booleans / numbers:<br>
+ `{array: [{ key: 'foo', boolean: true }, {key: 'bar', number: true}]}`.
* `opts.boolean`: arguments should be parsed as booleans: `{boolean: ['x', 'y']}`.
- * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed).
* `opts.coerce`: provide a custom synchronous function that returns a coerced value from the argument provided
- (or throws an error), e.g. `{coerce: {foo: function (arg) {return modifiedArg}}}`.
+ (or throws an error). For arrays the function is called only once for the entire array:<br>
+ `{coerce: {foo: function (arg) {return modifiedArg}}}`.
+ * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed).
+ * `opts.configObjects`: configuration objects to parse, their properties will be set as arguments:<br>
+ `{configObjects: [{'x': 5, 'y': 33}, {'z': 44}]}`.
+ * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)).
* `opts.count`: indicate a key that should be used as a counter, e.g., `-vvv` = `{v: 3}`.
* `opts.default`: provide default values for keys: `{default: {x: 33, y: 'hello world!'}}`.
* `opts.envPrefix`: environment variables (`process.env`) with the prefix provided should be parsed.
* `opts.narg`: specify that a key requires `n` arguments: `{narg: {x: 2}}`.
* `opts.normalize`: `path.normalize()` will be applied to values set to this key.
- * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`).
- * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)).
* `opts.number`: keys should be treated as numbers.
+ * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`).
**returns:**
* `obj`: an object representing the parsed value of `args`
* `key/value`: key value pairs for each argument and their aliases.
* `_`: an array representing the positional arguments.
+ * [optional] `--`: an array with arguments after the end-of-options flag `--`.
### require('yargs-parser').detailed(args, opts={})
@@ -100,6 +105,7 @@ yargs engine.
* `configuration`: the configuration loaded from the `yargs` stanza in package.json.
<a name="configuration"></a>
+
### Configuration
The yargs-parser applies several automated transformations on the keys provided
@@ -209,6 +215,14 @@ node example.js --no-foo
{ _: [], "no-foo": true }
```
+### combine arrays
+
+* default: `false`
+* key: `combine-arrays`
+
+Should arrays be combined when provided by both command line arguments and
+a configuration file.
+
### duplicate arguments array
* default: `true`
@@ -247,6 +261,131 @@ node example.js -x 1 2 -x 3 4
{ _: [], x: [[1, 2], [3, 4]] }
```
+### negation prefix
+
+* default: `no-`
+* key: `negation-prefix`
+
+The prefix to use for negated boolean variables.
+
+```sh
+node example.js --no-foo
+{ _: [], foo: false }
+```
+
+_if set to `quux`:_
+
+```sh
+node example.js --quuxfoo
+{ _: [], foo: false }
+```
+
+### populate --
+
+* default: `false`.
+* key: `populate--`
+
+Should unparsed flags be stored in `--` or `_`.
+
+_If disabled:_
+
+```sh
+node example.js a -b -- x y
+{ _: [ 'a', 'x', 'y' ], b: true }
+```
+
+_If enabled:_
+
+```sh
+node example.js a -b -- x y
+{ _: [ 'a' ], '--': [ 'x', 'y' ], b: true }
+```
+
+### set placeholder key
+
+* default: `false`.
+* key: `set-placeholder-key`.
+
+Should a placeholder be added for keys not set via the corresponding CLI argument?
+
+_If disabled:_
+
+```sh
+node example.js -a 1 -c 2
+{ _: [], a: 1, c: 2 }
+```
+
+_If enabled:_
+
+```sh
+node example.js -a 1 -c 2
+{ _: [], a: 1, b: undefined, c: 2 }
+```
+
+### halt at non-option
+
+* default: `false`.
+* key: `halt-at-non-option`.
+
+Should parsing stop at the first positional argument? This is similar to how e.g. `ssh` parses its command line.
+
+_If disabled:_
+
+```sh
+node example.js -a run b -x y
+{ _: [ 'b' ], a: 'run', x: 'y' }
+```
+
+_If enabled:_
+
+```sh
+node example.js -a run b -x y
+{ _: [ 'b', '-x', 'y' ], a: 'run' }
+```
+
+### strip aliased
+
+* default: `false`
+* key: `strip-aliased`
+
+Should aliases be removed before returning results?
+
+_If disabled:_
+
+```sh
+node example.js --test-field 1
+{ _: [], 'test-field': 1, testField: 1, 'test-alias': 1, testAlias: 1 }
+```
+
+_If enabled:_
+
+```sh
+node example.js --test-field 1
+{ _: [], 'test-field': 1, testField: 1 }
+```
+
+### strip dashed
+
+* default: `false`
+* key: `strip-dashed`
+
+Should dashed keys be removed before returning results? This option has no effect if
+`camel-case-exansion` is disabled.
+
+_If disabled:_
+
+```sh
+node example.js --test-field 1
+{ _: [], 'test-field': 1, testField: 1 }
+```
+
+_If enabled:_
+
+```sh
+node example.js --test-field 1
+{ _: [], testField: 1 }
+```
+
## Special Thanks
The yargs project evolves from optimist and minimist. It owes its
diff --git a/node_modules/yargs-parser/index.js b/node_modules/yargs-parser/index.js
index b71faf5..f9ee824 100644
--- a/node_modules/yargs-parser/index.js
+++ b/node_modules/yargs-parser/index.js
@@ -1,4 +1,5 @@
var camelCase = require('camelcase')
+var decamelize = require('decamelize')
var path = require('path')
var tokenizeArgString = require('./lib/tokenize-arg-string')
var util = require('util')
@@ -8,25 +9,33 @@ function parse (args, opts) {
// allow a string argument to be passed in rather
// than an argv array.
args = tokenizeArgString(args)
+
// aliases might have transitive relationships, normalize this.
var aliases = combineAliases(opts.alias || {})
- var configuration = assign({
+ var configuration = Object.assign({
'short-option-groups': true,
'camel-case-expansion': true,
'dot-notation': true,
'parse-numbers': true,
'boolean-negation': true,
+ 'negation-prefix': 'no-',
'duplicate-arguments-array': true,
- 'flatten-duplicate-arrays': true
+ 'flatten-duplicate-arrays': true,
+ 'populate--': false,
+ 'combine-arrays': false,
+ 'set-placeholder-key': false,
+ 'halt-at-non-option': false,
+ 'strip-aliased': false,
+ 'strip-dashed': false
}, opts.configuration)
var defaults = opts.default || {}
var configObjects = opts.configObjects || []
var envPrefix = opts.envPrefix
+ var notFlagsOption = configuration['populate--']
+ var notFlagsArgv = notFlagsOption ? '--' : '_'
var newAliases = {}
// allow a i18n handler to be passed in, default to a fake one (util.format).
- var __ = opts.__ || function (str) {
- return util.format.apply(util, Array.prototype.slice.call(arguments))
- }
+ var __ = opts.__ || util.format
var error = null
var flags = {
aliases: {},
@@ -39,40 +48,66 @@ function parse (args, opts) {
configs: {},
defaulted: {},
nargs: {},
- coercions: {}
+ coercions: {},
+ keys: []
}
var negative = /^-[0-9]+(\.[0-9]+)?/
+ var negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)')
+
+ ;[].concat(opts.array).filter(Boolean).forEach(function (opt) {
+ var key = opt.key || opt
+
+ // assign to flags[bools|strings|numbers]
+ const assignment = Object.keys(opt).map(function (key) {
+ return ({
+ boolean: 'bools',
+ string: 'strings',
+ number: 'numbers'
+ })[key]
+ }).filter(Boolean).pop()
+
+ // assign key to be coerced
+ if (assignment) {
+ flags[assignment][key] = true
+ }
- ;[].concat(opts.array).filter(Boolean).forEach(function (key) {
flags.arrays[key] = true
+ flags.keys.push(key)
})
;[].concat(opts.boolean).filter(Boolean).forEach(function (key) {
flags.bools[key] = true
+ flags.keys.push(key)
})
;[].concat(opts.string).filter(Boolean).forEach(function (key) {
flags.strings[key] = true
+ flags.keys.push(key)
})
;[].concat(opts.number).filter(Boolean).forEach(function (key) {
flags.numbers[key] = true
+ flags.keys.push(key)
})
;[].concat(opts.count).filter(Boolean).forEach(function (key) {
flags.counts[key] = true
+ flags.keys.push(key)
})
;[].concat(opts.normalize).filter(Boolean).forEach(function (key) {
flags.normalize[key] = true
+ flags.keys.push(key)
})
Object.keys(opts.narg || {}).forEach(function (k) {
flags.nargs[k] = opts.narg[k]
+ flags.keys.push(k)
})
Object.keys(opts.coerce || {}).forEach(function (k) {
flags.coercions[k] = opts.coerce[k]
+ flags.keys.push(k)
})
if (Array.isArray(opts.config) || typeof opts.config === 'string') {
@@ -99,15 +134,13 @@ function parse (args, opts) {
var argv = { _: [] }
Object.keys(flags.bools).forEach(function (key) {
- setArg(key, !(key in defaults) ? false : defaults[key])
- setDefaulted(key)
+ if (Object.prototype.hasOwnProperty.call(defaults, key)) {
+ setArg(key, defaults[key])
+ setDefaulted(key)
+ }
})
var notFlags = []
- if (args.indexOf('--') !== -1) {
- notFlags = args.slice(args.indexOf('--') + 1)
- args = args.slice(0, args.indexOf('--'))
- }
for (var i = 0; i < args.length; i++) {
var arg = args[i]
@@ -118,7 +151,7 @@ function parse (args, opts) {
var next
var value
- // -- seperated by =
+ // -- separated by =
if (arg.match(/^--.+=/) || (
!configuration['short-option-groups'] && arg.match(/^-.+=/)
)) {
@@ -138,13 +171,13 @@ function parse (args, opts) {
} else {
setArg(m[1], m[2])
}
- } else if (arg.match(/^--no-.+/) && configuration['boolean-negation']) {
- key = arg.match(/^--no-(.+)/)[1]
+ } else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {
+ key = arg.match(negatedBoolean)[1]
setArg(key, false)
// -- seperated by space.
} else if (arg.match(/^--.+/) || (
- !configuration['short-option-groups'] && arg.match(/^-.+/)
+ !configuration['short-option-groups'] && arg.match(/^-[^-]+/)
)) {
key = arg.match(/^--?(.+)/)[1]
@@ -155,7 +188,7 @@ function parse (args, opts) {
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
i = eatArray(i, key, args)
} else {
- next = args[i + 1]
+ next = flags.nargs[key] === 0 ? undefined : args[i + 1]
if (next !== undefined && (!next.match(/^-/) ||
next.match(negative)) &&
@@ -167,7 +200,7 @@ function parse (args, opts) {
setArg(key, next)
i++
} else {
- setArg(key, defaultForType(guessType(key, flags)))
+ setArg(key, defaultValue(key))
}
}
@@ -187,7 +220,7 @@ function parse (args, opts) {
setArg(key, next)
i++
} else {
- setArg(key, defaultForType(guessType(key, flags)))
+ setArg(key, defaultValue(key))
}
} else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
letters = arg.slice(1, -1).split('')
@@ -234,7 +267,7 @@ function parse (args, opts) {
broken = true
break
} else {
- setArg(letters[j], defaultForType(guessType(letters[j], flags)))
+ setArg(letters[j], defaultValue(letters[j]))
}
}
@@ -260,14 +293,18 @@ function parse (args, opts) {
setArg(key, next)
i++
} else {
- setArg(key, defaultForType(guessType(key, flags)))
+ setArg(key, defaultValue(key))
}
}
}
+ } else if (arg === '--') {
+ notFlags = args.slice(i + 1)
+ break
+ } else if (configuration['halt-at-non-option']) {
+ notFlags = args.slice(i)
+ break
} else {
- argv._.push(
- flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
- )
+ argv._.push(maybeCoerceNumber('_', arg))
}
}
@@ -283,28 +320,58 @@ function parse (args, opts) {
setConfigObjects()
applyDefaultsAndAliases(argv, flags.aliases, defaults)
applyCoercions(argv)
+ if (configuration['set-placeholder-key']) setPlaceholderKeys(argv)
// for any counts either not in args or without an explicit default, set to 0
Object.keys(flags.counts).forEach(function (key) {
if (!hasKey(argv, key.split('.'))) setArg(key, 0)
})
+ // '--' defaults to undefined.
+ if (notFlagsOption && notFlags.length) argv[notFlagsArgv] = []
notFlags.forEach(function (key) {
- argv._.push(key)
+ argv[notFlagsArgv].push(key)
})
+ if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {
+ Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {
+ delete argv[key]
+ })
+ }
+
+ if (configuration['strip-aliased']) {
+ // XXX Switch to [].concat(...Object.values(aliases)) once node.js 6 is dropped
+ ;[].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {
+ if (configuration['camel-case-expansion']) {
+ delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]
+ }
+
+ delete argv[alias]
+ })
+ }
+
// how many arguments should we consume, based
// on the nargs option?
function eatNargs (i, key, args) {
- var toEat = checkAllAliases(key, flags.nargs)
+ var ii
+ const toEat = checkAllAliases(key, flags.nargs)
+
+ // nargs will not consume flag arguments, e.g., -abc, --foo,
+ // and terminates when one is observed.
+ var available = 0
+ for (ii = i + 1; ii < args.length; ii++) {
+ if (!args[ii].match(/^-[^0-9]/)) available++
+ else break
+ }
- if (args.length - (i + 1) < toEat) error = Error(__('Not enough arguments following: %s', key))
+ if (available < toEat) error = Error(__('Not enough arguments following: %s', key))
- for (var ii = i + 1; ii < (toEat + i + 1); ii++) {
+ const consumed = Math.min(available, toEat)
+ for (ii = i + 1; ii < (consumed + i + 1); ii++) {
setArg(key, args[ii])
}
- return (i + toEat)
+ return (i + consumed)
}
// if an option is an array, eat all non-hyphenated arguments
@@ -341,10 +408,11 @@ function parse (args, opts) {
function setArg (key, val) {
unsetDefaulted(key)
- if (/-/.test(key) && !(flags.aliases[key] && flags.aliases[key].length) && configuration['camel-case-expansion']) {
- var c = camelCase(key)
- flags.aliases[key] = [c]
- newAliases[c] = true
+ if (/-/.test(key) && configuration['camel-case-expansion']) {
+ var alias = key.split('.').map(function (prop) {
+ return camelCase(prop)
+ }).join('.')
+ addNewAlias(key, alias)
}
var value = processValue(key, val)
@@ -353,7 +421,7 @@ function parse (args, opts) {
setKey(argv, splitKey, value)
// handle populating aliases of the full key
- if (flags.aliases[key]) {
+ if (flags.aliases[key] && flags.aliases[key].forEach) {
flags.aliases[key].forEach(function (x) {
x = x.split('.')
setKey(argv, x, value)
@@ -389,17 +457,31 @@ function parse (args, opts) {
}
}
+ function addNewAlias (key, alias) {
+ if (!(flags.aliases[key] && flags.aliases[key].length)) {
+ flags.aliases[key] = [alias]
+ newAliases[alias] = true
+ }
+ if (!(flags.aliases[alias] && flags.aliases[alias].length)) {
+ addNewAlias(alias, key)
+ }
+ }
+
function processValue (key, val) {
+ // strings may be quoted, clean this up as we assign values.
+ if (typeof val === 'string' &&
+ (val[0] === "'" || val[0] === '"') &&
+ val[val.length - 1] === val[0]
+ ) {
+ val = val.substring(1, val.length - 1)
+ }
+
// handle parsing boolean arguments --foo=true --bar false.
if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {
if (typeof val === 'string') val = val === 'true'
}
- var value = val
- if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.coercions)) {
- if (isNumber(val)) value = Number(val)
- if (!isUndefined(val) && !isNumber(val) && checkAllAliases(key, flags.numbers)) value = NaN
- }
+ var value = maybeCoerceNumber(key, val)
// increment a count given as arg (either no value or value parsed as boolean)
if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {
@@ -414,6 +496,16 @@ function parse (args, opts) {
return value
}
+ function maybeCoerceNumber (key, value) {
+ if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.coercions)) {
+ const shouldCoerceNumber = isNumber(value) && configuration['parse-numbers'] && (
+ Number.isSafeInteger(Math.floor(value))
+ )
+ if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) value = Number(value)
+ }
+ return value
+ }
+
// set args from config.json file, this should be
// applied last so that defaults can be applied.
function setConfig (argv) {
@@ -462,13 +554,13 @@ function parse (args, opts) {
// if the value is an inner object and we have dot-notation
// enabled, treat inner objects in config the same as
// heavily nested dot notations (foo.bar.apple).
- if (typeof value === 'object' && !Array.isArray(value) && configuration['dot-notation']) {
+ if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {
// if the value is an object but not an array, check nested object
setConfigObject(value, fullKey)
} else {
// setting arguments via CLI takes precedence over
// values within the config file.
- if (!hasKey(argv, fullKey.split('.')) || (flags.defaulted[fullKey])) {
+ if (!hasKey(argv, fullKey.split('.')) || (flags.defaulted[fullKey]) || (flags.arrays[fullKey] && configuration['combine-arrays'])) {
setArg(fullKey, value)
}
}
@@ -506,18 +598,33 @@ function parse (args, opts) {
function applyCoercions (argv) {
var coerce
+ var applied = {}
Object.keys(argv).forEach(function (key) {
- coerce = checkAllAliases(key, flags.coercions)
- if (typeof coerce === 'function') {
- try {
- argv[key] = coerce(argv[key])
- } catch (err) {
- error = err
+ if (!applied.hasOwnProperty(key)) { // If we haven't already coerced this option via one of its aliases
+ coerce = checkAllAliases(key, flags.coercions)
+ if (typeof coerce === 'function') {
+ try {
+ var value = coerce(argv[key])
+ ;([].concat(flags.aliases[key] || [], key)).forEach(ali => {
+ applied[ali] = argv[ali] = value
+ })
+ } catch (err) {
+ error = err
+ }
}
}
})
}
+ function setPlaceholderKeys (argv) {
+ flags.keys.forEach((key) => {
+ // don't set placeholder keys for dot notation options 'foo.bar'.
+ if (~key.indexOf('.')) return
+ if (typeof argv[key] === 'undefined') argv[key] = undefined
+ })
+ return argv
+ }
+
function applyDefaultsAndAliases (obj, aliases, defaults) {
Object.keys(defaults).forEach(function (key) {
if (!hasKey(obj, key.split('.'))) {
@@ -551,22 +658,51 @@ function parse (args, opts) {
if (!configuration['dot-notation']) keys = [keys.join('.')]
- keys.slice(0, -1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {}
- o = o[key]
+ keys.slice(0, -1).forEach(function (key, index) {
+ // TODO(bcoe): in the next major version of yargs, switch to
+ // Object.create(null) for dot notation:
+ key = sanitizeKey(key)
+
+ if (typeof o === 'object' && o[key] === undefined) {
+ o[key] = {}
+ }
+
+ if (typeof o[key] !== 'object' || Array.isArray(o[key])) {
+ // ensure that o[key] is an array, and that the last item is an empty object.
+ if (Array.isArray(o[key])) {
+ o[key].push({})
+ } else {
+ o[key] = [o[key], {}]
+ }
+
+ // we want to update the empty object at the end of the o[key] array, so set o to that object
+ o = o[key][o[key].length - 1]
+ } else {
+ o = o[key]
+ }
})
- var key = keys[keys.length - 1]
+ // TODO(bcoe): in the next major version of yargs, switch to
+ // Object.create(null) for dot notation:
+ const key = sanitizeKey(keys[keys.length - 1])
- var isTypeArray = checkAllAliases(key, flags.arrays)
- var isValueArray = Array.isArray(value)
- var duplicate = configuration['duplicate-arguments-array']
+ const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays)
+ const isValueArray = Array.isArray(value)
+ let duplicate = configuration['duplicate-arguments-array']
+
+ // nargs has higher priority than duplicate
+ if (!duplicate && checkAllAliases(key, flags.nargs)) {
+ duplicate = true
+ if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {
+ o[key] = undefined
+ }
+ }
if (value === increment) {
o[key] = increment(o[key])
} else if (Array.isArray(o[key])) {
if (duplicate && isTypeArray && isValueArray) {
- o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : [o[key]].concat([value])
+ o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value])
} else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {
o[key] = value
} else {
@@ -582,8 +718,8 @@ function parse (args, opts) {
}
// extend the aliases list with inferred aliases.
- function extendAliases () {
- Array.prototype.slice.call(arguments).forEach(function (obj) {
+ function extendAliases (...args) {
+ args.forEach(function (obj) {
Object.keys(obj || {}).forEach(function (key) {
// short-circuit if we've already added a key
// to the aliases array, for example it might
@@ -595,8 +731,20 @@ function parse (args, opts) {
flags.aliases[key].concat(key).forEach(function (x) {
if (/-/.test(x) && configuration['camel-case-expansion']) {
var c = camelCase(x)
- flags.aliases[key].push(c)
- newAliases[c] = true
+ if (c !== key && flags.aliases[key].indexOf(c) === -1) {
+ flags.aliases[key].push(c)
+ newAliases[c] = true
+ }
+ }
+ })
+ // For "--optionName", also set argv['option-name']
+ flags.aliases[key].concat(key).forEach(function (x) {
+ if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {
+ var c = decamelize(x, '-')
+ if (c !== key && flags.aliases[key].indexOf(c) === -1) {
+ flags.aliases[key].push(c)
+ newAliases[c] = true
+ }
}
})
flags.aliases[key].forEach(function (x) {
@@ -632,6 +780,18 @@ function parse (args, opts) {
})
}
+ // make a best effor to pick a default value
+ // for an option based on name and type.
+ function defaultValue (key) {
+ if (!checkAllAliases(key, flags.bools) &&
+ !checkAllAliases(key, flags.counts) &&
+ `${key}` in defaults) {
+ return defaults[key]
+ } else {
+ return defaultForType(guessType(key))
+ }
+ }
+
// return a default value, given the type of a flag.,
// e.g., key of type 'string' will default to '', rather than 'true'.
function defaultForType (type) {
@@ -646,7 +806,7 @@ function parse (args, opts) {
}
// given a flag, enforce a default type.
- function guessType (key, flags) {
+ function guessType (key) {
var type = 'boolean'
if (checkAllAliases(key, flags.strings)) type = 'string'
@@ -657,10 +817,14 @@ function parse (args, opts) {
}
function isNumber (x) {
- if (!configuration['parse-numbers']) return false
+ if (x === null || x === undefined) return false
+ // if loaded from config, may already be a number.
if (typeof x === 'number') return true
+ // hexadecimal.
if (/^0x[0-9a-f]+$/i.test(x)) return true
- return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x)
+ // don't treat 0123 as a number; as it drops the leading '0'.
+ if (x.length > 1 && x[0] === '0') return false
+ return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x)
}
function isUndefined (num) {
@@ -723,20 +887,6 @@ function combineAliases (aliases) {
return combined
}
-function assign (defaults, configuration) {
- var o = {}
- configuration = configuration || {}
-
- Object.keys(defaults).forEach(function (k) {
- o[k] = defaults[k]
- })
- Object.keys(configuration).forEach(function (k) {
- o[k] = configuration[k]
- })
-
- return o
-}
-
// this function should only be called when a count is given as an arg
// it is NOT called to set a default value
// thus we can start the count at 1 instead of 0
@@ -756,4 +906,11 @@ Parser.detailed = function (args, opts) {
return parse(args.slice(), opts)
}
+// TODO(bcoe): in the next major version of yargs, switch to
+// Object.create(null) for dot notation:
+function sanitizeKey (key) {
+ if (key === '__proto__') return '___proto___'
+ return key
+}
+
module.exports = Parser
diff --git a/node_modules/yargs-parser/lib/tokenize-arg-string.js b/node_modules/yargs-parser/lib/tokenize-arg-string.js
index 23d39e1..fe05e27 100644
--- a/node_modules/yargs-parser/lib/tokenize-arg-string.js
+++ b/node_modules/yargs-parser/lib/tokenize-arg-string.js
@@ -1,18 +1,26 @@
// take an un-split argv string and tokenize it.
module.exports = function (argString) {
- if (Array.isArray(argString)) return argString
+ if (Array.isArray(argString)) {
+ return argString.map(e => typeof e !== 'string' ? e + '' : e)
+ }
+
+ argString = argString.trim()
var i = 0
+ var prevC = null
var c = null
var opening = null
var args = []
for (var ii = 0; ii < argString.length; ii++) {
+ prevC = c
c = argString.charAt(ii)
// split on spaces unless we're in quotes.
if (c === ' ' && !opening) {
- i++
+ if (!(prevC === ' ')) {
+ i++
+ }
continue
}
@@ -20,10 +28,8 @@ module.exports = function (argString) {
// opening or closing single and double quotes.
if (c === opening) {
opening = null
- continue
} else if ((c === "'" || c === '"') && !opening) {
opening = c
- continue
}
if (!args[i]) args[i] = ''
diff --git a/node_modules/yargs-parser/node_modules/camelcase/index.d.ts b/node_modules/yargs-parser/node_modules/camelcase/index.d.ts
new file mode 100644
index 0000000..58f2069
--- /dev/null
+++ b/node_modules/yargs-parser/node_modules/camelcase/index.d.ts
@@ -0,0 +1,63 @@
+declare namespace camelcase {
+ interface Options {
+ /**
+ Uppercase the first character: `foo-bar` → `FooBar`.
+
+ @default false
+ */
+ readonly pascalCase?: boolean;
+ }
+}
+
+declare const camelcase: {
+ /**
+ Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`.
+
+ @param input - String to convert to camel case.
+
+ @example
+ ```
+ import camelCase = require('camelcase');
+
+ camelCase('foo-bar');
+ //=> 'fooBar'
+
+ camelCase('foo_bar');
+ //=> 'fooBar'
+
+ camelCase('Foo-Bar');
+ //=> 'fooBar'
+
+ camelCase('Foo-Bar', {pascalCase: true});
+ //=> 'FooBar'
+
+ camelCase('--foo.bar', {pascalCase: false});
+ //=> 'fooBar'
+
+ camelCase('foo bar');
+ //=> 'fooBar'
+
+ console.log(process.argv[3]);
+ //=> '--foo-bar'
+ camelCase(process.argv[3]);
+ //=> 'fooBar'
+
+ camelCase(['foo', 'bar']);
+ //=> 'fooBar'
+
+ camelCase(['__foo__', '--bar'], {pascalCase: true});
+ //=> 'FooBar'
+ ```
+ */
+ (input: string | ReadonlyArray<string>, options?: camelcase.Options): string;
+
+ // TODO: Remove this for the next major release, refactor the whole definition to:
+ // declare function camelcase(
+ // input: string | ReadonlyArray<string>,
+ // options?: camelcase.Options
+ // ): string;
+ // export = camelcase;
+ default: typeof camelcase;
+};
+
+export = camelcase;
diff --git a/node_modules/yargs-parser/node_modules/camelcase/index.js b/node_modules/yargs-parser/node_modules/camelcase/index.js
index 5670f73..579f99b 100644
--- a/node_modules/yargs-parser/node_modules/camelcase/index.js
+++ b/node_modules/yargs-parser/node_modules/camelcase/index.js
@@ -1,56 +1,76 @@
'use strict';
-function preserveCamelCase(str) {
- var isLastCharLower = false;
+const preserveCamelCase = string => {
+ let isLastCharLower = false;
+ let isLastCharUpper = false;
+ let isLastLastCharUpper = false;
- for (var i = 0; i < str.length; i++) {
- var c = str.charAt(i);
+ for (let i = 0; i < string.length; i++) {
+ const character = string[i];
- if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) {
- str = str.substr(0, i) + '-' + str.substr(i);
+ if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {
+ string = string.slice(0, i) + '-' + string.slice(i);
isLastCharLower = false;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = true;
i++;
+ } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {
+ string = string.slice(0, i - 1) + '-' + string.slice(i - 1);
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = false;
+ isLastCharLower = true;
} else {
- isLastCharLower = (c.toLowerCase() === c);
+ isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;
}
}
- return str;
-}
+ return string;
+};
-module.exports = function () {
- var str = [].map.call(arguments, function (str) {
- return str.trim();
- }).filter(function (str) {
- return str.length;
- }).join('-');
+const camelCase = (input, options) => {
+ if (!(typeof input === 'string' || Array.isArray(input))) {
+ throw new TypeError('Expected the input to be `string | string[]`');
+ }
- if (!str.length) {
- return '';
+ options = Object.assign({
+ pascalCase: false
+ }, options);
+
+ const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;
+
+ if (Array.isArray(input)) {
+ input = input.map(x => x.trim())
+ .filter(x => x.length)
+ .join('-');
+ } else {
+ input = input.trim();
}
- if (str.length === 1) {
- return str.toLowerCase();
+ if (input.length === 0) {
+ return '';
}
- if (!(/[_.\- ]+/).test(str)) {
- if (str === str.toUpperCase()) {
- return str.toLowerCase();
- }
+ if (input.length === 1) {
+ return options.pascalCase ? input.toUpperCase() : input.toLowerCase();
+ }
- if (str[0] !== str[0].toLowerCase()) {
- return str[0].toLowerCase() + str.slice(1);
- }
+ const hasUpperCase = input !== input.toLowerCase();
- return str;
+ if (hasUpperCase) {
+ input = preserveCamelCase(input);
}
- str = preserveCamelCase(str);
+ input = input
+ .replace(/^[_.\- ]+/, '')
+ .toLowerCase()
+ .replace(/[_.\- ]+(\w|$)/g, (_, p1) => p1.toUpperCase())
+ .replace(/\d+(\w|$)/g, m => m.toUpperCase());
- return str
- .replace(/^[_.\- ]+/, '')
- .toLowerCase()
- .replace(/[_.\- ]+(\w|$)/g, function (m, p1) {
- return p1.toUpperCase();
- });
+ return postProcess(input);
};
+
+module.exports = camelCase;
+// TODO: Remove this for the next major release
+module.exports.default = camelCase;
diff --git a/node_modules/yargs-parser/node_modules/camelcase/license b/node_modules/yargs-parser/node_modules/camelcase/license
index 654d0bf..e7af2f7 100644
--- a/node_modules/yargs-parser/node_modules/camelcase/license
+++ b/node_modules/yargs-parser/node_modules/camelcase/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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:
+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 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.
+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/yargs-parser/node_modules/camelcase/package.json b/node_modules/yargs-parser/node_modules/camelcase/package.json
index 84b7683..93de4c2 100644
--- a/node_modules/yargs-parser/node_modules/camelcase/package.json
+++ b/node_modules/yargs-parser/node_modules/camelcase/package.json
@@ -1,47 +1,49 @@
{
- "_from": "camelcase@^3.0.0",
- "_id": "camelcase@3.0.0",
+ "_from": "camelcase@^5.0.0",
+ "_id": "camelcase@5.3.1",
"_inBundle": false,
- "_integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "_integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"_location": "/yargs-parser/camelcase",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "camelcase@^3.0.0",
+ "raw": "camelcase@^5.0.0",
"name": "camelcase",
"escapedName": "camelcase",
- "rawSpec": "^3.0.0",
+ "rawSpec": "^5.0.0",
"saveSpec": null,
- "fetchSpec": "^3.0.0"
+ "fetchSpec": "^5.0.0"
},
"_requiredBy": [
"/yargs-parser"
],
- "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "_shasum": "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a",
- "_spec": "camelcase@^3.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs-parser",
+ "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "_shasum": "e3c9b31569e106811df242f715725a1f4c494320",
+ "_spec": "camelcase@^5.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs-parser",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
+ "url": "sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/camelcase/issues"
},
"bundleDependencies": false,
"deprecated": false,
- "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar",
+ "description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "ava": "^1.4.1",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/camelcase#readme",
"keywords": [
@@ -56,7 +58,9 @@
"separator",
"string",
"text",
- "convert"
+ "convert",
+ "pascalcase",
+ "pascal-case"
],
"license": "MIT",
"name": "camelcase",
@@ -65,7 +69,7 @@
"url": "git+https://github.com/sindresorhus/camelcase.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "3.0.0"
+ "version": "5.3.1"
}
diff --git a/node_modules/yargs-parser/node_modules/camelcase/readme.md b/node_modules/yargs-parser/node_modules/camelcase/readme.md
index 080b2a1..fde2726 100644
--- a/node_modules/yargs-parser/node_modules/camelcase/readme.md
+++ b/node_modules/yargs-parser/node_modules/camelcase/readme.md
@@ -1,12 +1,25 @@
# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase)
-> Convert a dash/dot/underscore/space separated string to camelCase: `foo-bar` → `fooBar`
+> Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-camelcase?utm_source=npm-camelcase&utm_medium=referral&utm_campaign=readme">Get professional support for 'camelcase' 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>
+
+---
## Install
```
-$ npm install --save camelcase
+$ npm install camelcase
```
@@ -24,10 +37,10 @@ camelCase('foo_bar');
camelCase('Foo-Bar');
//=> 'fooBar'
-camelCase('--foo.bar');
-//=> 'fooBar'
+camelCase('Foo-Bar', {pascalCase: true});
+//=> 'FooBar'
-camelCase('__foo__bar__');
+camelCase('--foo.bar', {pascalCase: false});
//=> 'fooBar'
camelCase('foo bar');
@@ -38,20 +51,49 @@ console.log(process.argv[3]);
camelCase(process.argv[3]);
//=> 'fooBar'
-camelCase('foo', 'bar');
+camelCase(['foo', 'bar']);
//=> 'fooBar'
-camelCase('__foo__', '--bar');
-//=> 'fooBar'
+camelCase(['__foo__', '--bar'], {pascalCase: true});
+//=> 'FooBar'
```
+## API
+
+### camelCase(input, [options])
+
+#### input
+
+Type: `string` `string[]`
+
+String to convert to camel case.
+
+#### options
+
+Type: `Object`
+
+##### pascalCase
+
+Type: `boolean`<br>
+Default: `false`
+
+Uppercase the first character: `foo-bar` → `FooBar`
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
## Related
- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module
- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase
+- [titleize](https://github.com/sindresorhus/titleize) - Capitalize every word in string
+- [humanize-string](https://github.com/sindresorhus/humanize-string) - Convert a camelized/dasherized/underscored string into a humanized one
## License
-MIT © [Sindre Sorhus](http://sindresorhus.com)
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/yargs-parser/package.json b/node_modules/yargs-parser/package.json
index ceb45b6..701334b 100644
--- a/node_modules/yargs-parser/package.json
+++ b/node_modules/yargs-parser/package.json
@@ -1,27 +1,27 @@
{
- "_from": "yargs-parser@^5.0.0",
- "_id": "yargs-parser@5.0.0",
+ "_from": "yargs-parser@^13.1.2",
+ "_id": "yargs-parser@13.1.2",
"_inBundle": false,
- "_integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+ "_integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"_location": "/yargs-parser",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "yargs-parser@^5.0.0",
+ "raw": "yargs-parser@^13.1.2",
"name": "yargs-parser",
"escapedName": "yargs-parser",
- "rawSpec": "^5.0.0",
+ "rawSpec": "^13.1.2",
"saveSpec": null,
- "fetchSpec": "^5.0.0"
+ "fetchSpec": "^13.1.2"
},
"_requiredBy": [
"/yargs"
],
- "_resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
- "_shasum": "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a",
- "_spec": "yargs-parser@^5.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
+ "_resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "_shasum": "130f09702ebaeef2650d54ce6e3e5706f7a4fb38",
+ "_spec": "yargs-parser@^13.1.2",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
"author": {
"name": "Ben Coe",
"email": "ben@npmjs.com"
@@ -31,17 +31,21 @@
},
"bundleDependencies": false,
"dependencies": {
- "camelcase": "^3.0.0"
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
},
"deprecated": false,
"description": "the mighty option parser used by yargs",
"devDependencies": {
- "chai": "^3.5.0",
- "coveralls": "^2.11.12",
- "mocha": "^3.0.1",
- "nyc": "^10.0.0",
- "standard": "^8.0.0",
- "standard-version": "^4.0.0"
+ "chai": "^4.2.0",
+ "coveralls": "^3.0.2",
+ "mocha": "^5.2.0",
+ "nyc": "^14.1.0",
+ "standard": "^12.0.1",
+ "standard-version": "^6.0.0"
+ },
+ "engine": {
+ "node": ">=6"
},
"files": [
"lib",
@@ -67,9 +71,9 @@
},
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
- "pretest": "standard",
+ "posttest": "standard",
"release": "standard-version",
"test": "nyc mocha test/*.js"
},
- "version": "5.0.0"
+ "version": "13.1.2"
}
diff --git a/node_modules/yargs/CHANGELOG.md b/node_modules/yargs/CHANGELOG.md
index eadcd6a..d789870 100644
--- a/node_modules/yargs/CHANGELOG.md
+++ b/node_modules/yargs/CHANGELOG.md
@@ -1,7 +1,421 @@
-# Change Log
+# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+## [13.3.0](https://www.github.com/yargs/yargs/compare/v13.2.4...v13.3.0) (2019-06-10)
+
+
+### Bug Fixes
+
+* **deps:** yargs-parser update addressing several parsing bugs ([#1357](https://www.github.com/yargs/yargs/issues/1357)) ([e230d5b](https://www.github.com/yargs/yargs/commit/e230d5b))
+
+
+### Features
+
+* **i18n:** swap out os-locale dependency for simple inline implementation ([#1356](https://www.github.com/yargs/yargs/issues/1356)) ([4dfa19b](https://www.github.com/yargs/yargs/commit/4dfa19b))
+* support defaultDescription for positional arguments ([812048c](https://www.github.com/yargs/yargs/commit/812048c))
+
+### [13.2.4](https://github.com/yargs/yargs/compare/v13.2.3...v13.2.4) (2019-05-13)
+
+
+### Bug Fixes
+
+* **i18n:** rename unclear 'implication failed' to 'missing dependent arguments' ([#1317](https://github.com/yargs/yargs/issues/1317)) ([bf46813](https://github.com/yargs/yargs/commit/bf46813))
+
+
+
+### [13.2.3](https://github.com/yargs/yargs/compare/v13.2.2...v13.2.3) (2019-05-05)
+
+
+### Bug Fixes
+
+* **deps:** upgrade cliui for compatibility with latest chalk. ([#1330](https://github.com/yargs/yargs/issues/1330)) ([b20db65](https://github.com/yargs/yargs/commit/b20db65))
+* address issues with dutch translation ([#1316](https://github.com/yargs/yargs/issues/1316)) ([0295132](https://github.com/yargs/yargs/commit/0295132))
+
+
+### Tests
+
+* accept differently formatted output ([#1327](https://github.com/yargs/yargs/issues/1327)) ([c294d1b](https://github.com/yargs/yargs/commit/c294d1b))
+
+
+
+## [13.2.2](https://github.com/yargs/yargs/compare/v13.2.1...v13.2.2) (2019-03-06)
+
+
+
+## [13.2.1](https://github.com/yargs/yargs/compare/v13.2.0...v13.2.1) (2019-02-18)
+
+
+### Bug Fixes
+
+* add zsh script to files array ([3180224](https://github.com/yargs/yargs/commit/3180224))
+* support options/sub-commands in zsh completion ([0a96394](https://github.com/yargs/yargs/commit/0a96394))
+
+
+# [13.2.0](https://github.com/yargs/yargs/compare/v13.1.0...v13.2.0) (2019-02-15)
+
+
+### Features
+
+* zsh auto completion ([#1292](https://github.com/yargs/yargs/issues/1292)) ([16c5d25](https://github.com/yargs/yargs/commit/16c5d25)), closes [#1156](https://github.com/yargs/yargs/issues/1156)
+
+
+<a name="13.1.0"></a>
+# [13.1.0](https://github.com/yargs/yargs/compare/v13.0.0...v13.1.0) (2019-02-12)
+
+
+### Features
+
+* add applyBeforeValidation, for applying sync middleware before validation ([5be206a](https://github.com/yargs/yargs/commit/5be206a))
+
+
+
+<a name="13.0.0"></a>
+# [13.0.0](https://github.com/yargs/yargs/compare/v12.0.5...v13.0.0) (2019-02-02)
+
+
+### Bug Fixes
+
+* **deps:** Update os-locale to avoid security vulnerability ([#1270](https://github.com/yargs/yargs/issues/1270)) ([27bf739](https://github.com/yargs/yargs/commit/27bf739))
+* **validation:** Use the error as a message when none exists otherwise ([#1268](https://github.com/yargs/yargs/issues/1268)) ([0510fe6](https://github.com/yargs/yargs/commit/0510fe6))
+* better bash path completion ([#1272](https://github.com/yargs/yargs/issues/1272)) ([da75ea2](https://github.com/yargs/yargs/commit/da75ea2))
+* middleware added multiple times due to reference bug ([#1282](https://github.com/yargs/yargs/issues/1282)) ([64af518](https://github.com/yargs/yargs/commit/64af518))
+
+
+### Chores
+
+* ~drop Node 6 from testing matrix ([#1287](https://github.com/yargs/yargs/issues/1287)) ([ef16792](https://github.com/yargs/yargs/commit/ef16792))~
+ * _opting to not drop Node 6 support until April, [see](https://github.com/nodejs/Release)._
+* update dependencies ([#1284](https://github.com/yargs/yargs/issues/1284)) ([f25de4f](https://github.com/yargs/yargs/commit/f25de4f))
+
+
+### Features
+
+* Add `.parserConfiguration()` method, deprecating package.json config ([#1262](https://github.com/yargs/yargs/issues/1262)) ([3c6869a](https://github.com/yargs/yargs/commit/3c6869a))
+* adds config option for sorting command output ([#1256](https://github.com/yargs/yargs/issues/1256)) ([6916ce9](https://github.com/yargs/yargs/commit/6916ce9))
+* options/positionals with leading '+' and '0' no longer parse as numbers ([#1286](https://github.com/yargs/yargs/issues/1286)) ([e9dc3aa](https://github.com/yargs/yargs/commit/e9dc3aa))
+* support promises in middleware ([f3a4e4f](https://github.com/yargs/yargs/commit/f3a4e4f))
+
+
+### BREAKING CHANGES
+
+* options with leading '+' or '0' now parse as strings
+* dropping Node 6 which hits end of life in April 2019
+* see [yargs-parser@12.0.0 CHANGELOG](https://github.com/yargs/yargs-parser/blob/master/CHANGELOG.md#breaking-changes)
+* we now warn if the yargs stanza package.json is used.
+
+
+
+<a name="12.0.5"></a>
+## [12.0.5](https://github.com/yargs/yargs/compare/v12.0.4...v12.0.5) (2018-11-19)
+
+
+### Bug Fixes
+
+* allows camel-case, variadic arguments, and strict mode to be combined ([#1247](https://github.com/yargs/yargs/issues/1247)) ([eacc035](https://github.com/yargs/yargs/commit/eacc035))
+
+
+
+<a name="12.0.4"></a>
+## [12.0.4](https://github.com/yargs/yargs/compare/v12.0.3...v12.0.4) (2018-11-10)
+
+
+### Bug Fixes
+
+* don't load config when processing positionals ([5d0dc92](https://github.com/yargs/yargs/commit/5d0dc92))
+
+
+
+<a name="12.0.3"></a>
+## [12.0.3](https://github.com/yargs/yargs/compare/v12.0.2...v12.0.3) (2018-10-06)
+
+
+### Bug Fixes
+
+* $0 contains first arg in bundled electron apps ([#1206](https://github.com/yargs/yargs/issues/1206)) ([567820b](https://github.com/yargs/yargs/commit/567820b))
+* accept single function for middleware ([66fd6f7](https://github.com/yargs/yargs/commit/66fd6f7)), closes [#1214](https://github.com/yargs/yargs/issues/1214) [#1214](https://github.com/yargs/yargs/issues/1214)
+* hide `hidden` options from help output even if they are in a group ([#1221](https://github.com/yargs/yargs/issues/1221)) ([da54028](https://github.com/yargs/yargs/commit/da54028))
+* improve Norwegian Bokmål translations ([#1208](https://github.com/yargs/yargs/issues/1208)) ([a458fa4](https://github.com/yargs/yargs/commit/a458fa4))
+* improve Norwegian Nynorsk translations ([#1207](https://github.com/yargs/yargs/issues/1207)) ([d422eb5](https://github.com/yargs/yargs/commit/d422eb5))
+
+
+
+<a name="12.0.2"></a>
+## [12.0.2](https://github.com/yargs/yargs/compare/v12.0.1...v12.0.2) (2018-09-04)
+
+
+### Bug Fixes
+
+* middleware should work regardless of when method is called ([664b265](https://github.com/yargs/yargs/commit/664b265)), closes [#1178](https://github.com/yargs/yargs/issues/1178)
+* translation not working when using __ with a single parameter ([#1183](https://github.com/yargs/yargs/issues/1183)) ([f449aea](https://github.com/yargs/yargs/commit/f449aea))
+* upgrade os-locale to version that addresses license issue ([#1195](https://github.com/yargs/yargs/issues/1195)) ([efc0970](https://github.com/yargs/yargs/commit/efc0970))
+
+
+
+<a name="12.0.1"></a>
+## [12.0.1](https://github.com/yargs/yargs/compare/v12.0.0...v12.0.1) (2018-06-29)
+
+
+
+<a name="12.0.0"></a>
+# [12.0.0](https://github.com/yargs/yargs/compare/v11.1.0...v12.0.0) (2018-06-26)
+
+
+### Bug Fixes
+
+* .argv and .parse() now invoke identical code path ([#1126](https://github.com/yargs/yargs/issues/1126)) ([f13ebf4](https://github.com/yargs/yargs/commit/f13ebf4))
+* remove the trailing white spaces from the help output ([#1090](https://github.com/yargs/yargs/issues/1090)) ([3f0746c](https://github.com/yargs/yargs/commit/3f0746c))
+* **completion:** Avoid default command and recommendations during completion ([#1123](https://github.com/yargs/yargs/issues/1123)) ([036e7c5](https://github.com/yargs/yargs/commit/036e7c5))
+
+
+### Chores
+
+* test Node.js 6, 8 and 10 ([#1160](https://github.com/yargs/yargs/issues/1160)) ([84f9d2b](https://github.com/yargs/yargs/commit/84f9d2b))
+* upgrade to version of yargs-parser that does not populate value for unset boolean ([#1104](https://github.com/yargs/yargs/issues/1104)) ([d4705f4](https://github.com/yargs/yargs/commit/d4705f4))
+
+
+### Features
+
+* add support for global middleware, useful for shared tasks like metrics ([#1119](https://github.com/yargs/yargs/issues/1119)) ([9d71ac7](https://github.com/yargs/yargs/commit/9d71ac7))
+* allow setting scriptName $0 ([#1143](https://github.com/yargs/yargs/issues/1143)) ([a2f2eae](https://github.com/yargs/yargs/commit/a2f2eae))
+* remove `setPlaceholderKeys` ([#1105](https://github.com/yargs/yargs/issues/1105)) ([6ee2c82](https://github.com/yargs/yargs/commit/6ee2c82))
+
+
+### BREAKING CHANGES
+
+* Options absent from `argv` (not set via CLI argument) are now absent from the parsed result object rather than being set with `undefined`
+* drop Node 4 from testing matrix, such that we'll gradually start drifting away from supporting Node 4.
+* yargs-parser does not populate 'false' when boolean flag is not passed
+* tests that assert against help output will need to be updated
+
+
+
+<a name="11.1.0"></a>
+# [11.1.0](https://github.com/yargs/yargs/compare/v11.0.0...v11.1.0) (2018-03-04)
+
+
+### Bug Fixes
+
+* choose correct config directory when require.main does not exist ([#1056](https://github.com/yargs/yargs/issues/1056)) ([a04678c](https://github.com/yargs/yargs/commit/a04678c))
+
+
+### Features
+
+* allow hidden options to be displayed with --show-hidden ([#1061](https://github.com/yargs/yargs/issues/1061)) ([ea862ae](https://github.com/yargs/yargs/commit/ea862ae))
+* extend *.rc files in addition to json ([#1080](https://github.com/yargs/yargs/issues/1080)) ([11691a6](https://github.com/yargs/yargs/commit/11691a6))
+
+
+
+<a name="11.0.0"></a>
+# [11.0.0](https://github.com/yargs/yargs/compare/v10.1.2...v11.0.0) (2018-01-22)
+
+
+### Bug Fixes
+
+* Set implicit nargs=1 when type=number requiresArg=true ([#1050](https://github.com/yargs/yargs/issues/1050)) ([2b56812](https://github.com/yargs/yargs/commit/2b56812))
+
+
+### Features
+
+* requiresArg is now simply an alias for nargs(1) ([#1054](https://github.com/yargs/yargs/issues/1054)) ([a3ddacc](https://github.com/yargs/yargs/commit/a3ddacc))
+
+
+### BREAKING CHANGES
+
+* requiresArg now has significantly different error output, matching nargs.
+
+
+
+<a name="10.1.2"></a>
+## [10.1.2](https://github.com/yargs/yargs/compare/v10.1.1...v10.1.2) (2018-01-17)
+
+
+### Bug Fixes
+
+* requiresArg should only be enforced if argument exists ([#1043](https://github.com/yargs/yargs/issues/1043)) ([fbf41ae](https://github.com/yargs/yargs/commit/fbf41ae))
+
+
+
+<a name="10.1.1"></a>
+## [10.1.1](https://github.com/yargs/yargs/compare/v10.1.0...v10.1.1) (2018-01-09)
+
+
+### Bug Fixes
+
+* Add `dirname` sanity check on `findUp` ([#1036](https://github.com/yargs/yargs/issues/1036)) ([331d103](https://github.com/yargs/yargs/commit/331d103))
+
+
+
+<a name="10.1.0"></a>
+# [10.1.0](https://github.com/yargs/yargs/compare/v10.0.3...v10.1.0) (2018-01-01)
+
+
+### Bug Fixes
+
+* 'undefined' should be taken to mean no argument was provided ([#1015](https://github.com/yargs/yargs/issues/1015)) ([c679e90](https://github.com/yargs/yargs/commit/c679e90))
+
+
+### Features
+
+* add missing simple chinese locale strings ([#1004](https://github.com/yargs/yargs/issues/1004)) ([3cc24ec](https://github.com/yargs/yargs/commit/3cc24ec))
+* add Norwegian Nynorsk translations ([#1028](https://github.com/yargs/yargs/issues/1028)) ([a5ac213](https://github.com/yargs/yargs/commit/a5ac213))
+* async command handlers ([#1001](https://github.com/yargs/yargs/issues/1001)) ([241124b](https://github.com/yargs/yargs/commit/241124b))
+* middleware ([#881](https://github.com/yargs/yargs/issues/881)) ([77b8dbc](https://github.com/yargs/yargs/commit/77b8dbc))
+
+
+
+<a name="10.0.3"></a>
+## [10.0.3](https://github.com/yargs/yargs/compare/v10.0.2...v10.0.3) (2017-10-21)
+
+
+### Bug Fixes
+
+* parse array rather than string, so that quotes are safe ([#993](https://github.com/yargs/yargs/issues/993)) ([c351685](https://github.com/yargs/yargs/commit/c351685))
+
+
+
+<a name="10.0.2"></a>
+## [10.0.2](https://github.com/yargs/yargs/compare/v10.0.1...v10.0.2) (2017-10-21)
+
+
+### Bug Fixes
+
+* fix tiny spacing issue with usage ([#992](https://github.com/yargs/yargs/issues/992)) ([7871327](https://github.com/yargs/yargs/commit/7871327))
+
+
+
+<a name="10.0.1"></a>
+## [10.0.1](https://github.com/yargs/yargs/compare/v10.0.0...v10.0.1) (2017-10-19)
+
+
+### Bug Fixes
+
+* help strings for nested commands were missing parent commands ([#990](https://github.com/yargs/yargs/issues/990)) ([cd1ca15](https://github.com/yargs/yargs/commit/cd1ca15))
+* use correct completion command in generated completion script ([#988](https://github.com/yargs/yargs/issues/988)) ([3c8ac1d](https://github.com/yargs/yargs/commit/3c8ac1d))
+
+
+
+<a name="10.0.0"></a>
+# [10.0.0](https://github.com/yargs/yargs/compare/v9.1.0...v10.0.0) (2017-10-18)
+
+
+### Bug Fixes
+
+* config and normalize can be disabled with false ([#952](https://github.com/yargs/yargs/issues/952)) ([3bb8771](https://github.com/yargs/yargs/commit/3bb8771))
+* less eager help command execution ([#972](https://github.com/yargs/yargs/issues/972)) ([8c1d7bf](https://github.com/yargs/yargs/commit/8c1d7bf))
+* the positional argument parse was clobbering global flag arguments ([#984](https://github.com/yargs/yargs/issues/984)) ([7e58453](https://github.com/yargs/yargs/commit/7e58453))
+
+
+### Features
+
+* .usage() can now be used to configure a default command ([#975](https://github.com/yargs/yargs/issues/975)) ([7269531](https://github.com/yargs/yargs/commit/7269531))
+* hidden options are now explicitly indicated using "hidden" flag ([#962](https://github.com/yargs/yargs/issues/962)) ([280d0d6](https://github.com/yargs/yargs/commit/280d0d6))
+* introduce .positional() for configuring positional arguments ([#967](https://github.com/yargs/yargs/issues/967)) ([cb16460](https://github.com/yargs/yargs/commit/cb16460))
+* replace $0 with file basename ([#983](https://github.com/yargs/yargs/issues/983)) ([20bb99b](https://github.com/yargs/yargs/commit/20bb99b))
+
+
+### BREAKING CHANGES
+
+* .usage() no longer accepts an options object as the second argument. It can instead be used as an alias for configuring a default command.
+* previously hidden options were simply implied using a falsy description
+* help command now only executes if it's the last positional in argv._
+
+
+
+<a name="9.1.0"></a>
+# [9.1.0](https://github.com/yargs/yargs/compare/v9.0.1...v9.1.0) (2017-09-25)
+
+
+### Bug Fixes
+
+* **command:** Run default cmd even if the only cmd ([#950](https://github.com/yargs/yargs/issues/950)) ([7b22203](https://github.com/yargs/yargs/commit/7b22203))
+
+
+### Features
+
+* multiple usage calls are now collected, not replaced ([#958](https://github.com/yargs/yargs/issues/958)) ([74a38b2](https://github.com/yargs/yargs/commit/74a38b2))
+
+
+
+<a name="9.0.1"></a>
+## [9.0.1](https://github.com/yargs/yargs/compare/v9.0.0...v9.0.1) (2017-09-17)
+
+
+### Bug Fixes
+
+* implications fails only displayed once ([#954](https://github.com/yargs/yargs/issues/954)) ([ac8088b](https://github.com/yargs/yargs/commit/ac8088b))
+
+
+
+<a name="9.0.0"></a>
+# [9.0.0](https://github.com/yargs/yargs/compare/v8.0.2...v9.0.0) (2017-09-03)
+
+
+### Bug Fixes
+
+* 'undefined' default value for choices resulted in validation failing ([782b896](https://github.com/yargs/yargs/commit/782b896))
+* address bug with handling of arrays of implications ([c240661](https://github.com/yargs/yargs/commit/c240661))
+* defaulting keys to 'undefined' interfered with conflicting key logic ([a8e0cff](https://github.com/yargs/yargs/commit/a8e0cff))
+* don't bother calling JSON.stringify() on string default values ([#891](https://github.com/yargs/yargs/issues/891)) ([628be21](https://github.com/yargs/yargs/commit/628be21))
+* exclude positional arguments from completion output ([#927](https://github.com/yargs/yargs/issues/927)) ([71c7ec7](https://github.com/yargs/yargs/commit/71c7ec7))
+* strict mode should not fail for hidden options ([#949](https://github.com/yargs/yargs/issues/949)) ([0e0c58d](https://github.com/yargs/yargs/commit/0e0c58d))
+
+
+### Features
+
+* allow implies and conflicts to accept array values ([#922](https://github.com/yargs/yargs/issues/922)) ([abdc7da](https://github.com/yargs/yargs/commit/abdc7da))
+* allow parse with no arguments as alias for yargs.argv ([#944](https://github.com/yargs/yargs/issues/944)) ([a9f03e7](https://github.com/yargs/yargs/commit/a9f03e7))
+* enable .help() and .version() by default ([#912](https://github.com/yargs/yargs/issues/912)) ([1ef44e0](https://github.com/yargs/yargs/commit/1ef44e0))
+* to allow both undefined and nulls, for benefit of TypeScript ([#945](https://github.com/yargs/yargs/issues/945)) ([792564d](https://github.com/yargs/yargs/commit/792564d))
+
+
+### BREAKING CHANGES
+
+* version() and help() are now enabled by default, and show up in help output; the implicit help command can no longer be enabled/disabled independently from the help command itself (which can now be disabled).
+* parse() now behaves as an alias for .argv, unless a parseCallback is provided.
+
+
+
+<a name="8.0.2"></a>
+## [8.0.2](https://github.com/yargs/yargs/compare/v8.0.1...v8.0.2) (2017-06-12)
+
+
+
+<a name="8.0.1"></a>
+## [8.0.1](https://github.com/yargs/yargs/compare/v8.0.0...v8.0.1) (2017-05-02)
+
+
+
+<a name="8.0.0"></a>
+# [8.0.0](https://github.com/yargs/yargs/compare/v7.1.0...v8.0.0) (2017-05-01)
+
+
+### Bug Fixes
+
+* commands are now applied in order, from left to right ([#857](https://github.com/yargs/yargs/issues/857)) ([baba863](https://github.com/yargs/yargs/commit/baba863))
+* help now takes precedence over command recommendation ([#866](https://github.com/yargs/yargs/issues/866)) ([17e3567](https://github.com/yargs/yargs/commit/17e3567))
+* positional arguments now work if no handler is provided to inner command ([#864](https://github.com/yargs/yargs/issues/864)) ([e28ded3](https://github.com/yargs/yargs/commit/e28ded3))
+
+
+### Chores
+
+* upgrade yargs-parser ([#867](https://github.com/yargs/yargs/issues/867)) ([8f9c6c6](https://github.com/yargs/yargs/commit/8f9c6c6))
+
+
+### Features
+
+* allow extends to inherit from a module ([#865](https://github.com/yargs/yargs/issues/865)) ([89456d9](https://github.com/yargs/yargs/commit/89456d9))
+* allow strict mode to be disabled ([#840](https://github.com/yargs/yargs/issues/840)) ([6f78c05](https://github.com/yargs/yargs/commit/6f78c05))
+
+
+### BREAKING CHANGES
+
+* extends functionality now always loads the JSON provided, rather than reading from a specific key
+* Node 4+ is now required; this will allow us to start updating our dependencies.
+* the first argument to strict() is now used to enable/disable its functionality, rather than controlling whether or not it is global.
+
+
+
<a name="7.1.0"></a>
# [7.1.0](https://github.com/yargs/yargs/compare/v7.0.2...v7.1.0) (2017-04-13)
@@ -427,7 +841,7 @@ All notable changes to this project will be documented in this file. See [standa
- [#308](https://github.com/bcoe/yargs/pull/308) Yargs now handles environment variables (@nexdrew)
- [#302](https://github.com/bcoe/yargs/pull/302) Add Indonesian translation (@rilut)
- [#300](https://github.com/bcoe/yargs/pull/300) Add Turkish translation (@feyzo)
-- [#298](https://github.com/bcoe/yargs/pull/298) Add Norwegian Bokmål translation (@sindresorhus)
+- [#298](https://github.com/bcoe/yargs/pull/298) Add Norwegian Bokmål translation (@sindresorhus)
- [#297](https://github.com/bcoe/yargs/pull/297) Fix for layout of cjk characters (@disjukr)
- [#296](https://github.com/bcoe/yargs/pull/296) Add Korean translation (@disjukr)
diff --git a/node_modules/yargs/README.md b/node_modules/yargs/README.md
index 4887915..6b7d096 100644
--- a/node_modules/yargs/README.md
+++ b/node_modules/yargs/README.md
@@ -1,2005 +1,112 @@
- yargs
-========
-
-Yargs be a node.js library fer hearties tryin' ter parse optstrings.
-
-With yargs, ye be havin' a map that leads straight to yer treasure! Treasure of course, being a simple option hash.
+<p align="center">
+ <img width="250" src="/yargs-logo.png">
+</p>
+<h1 align="center"> Yargs </h1>
+<p align="center">
+ <b >Yargs be a node.js library fer hearties tryin' ter parse optstrings</b>
+</p>
+<br>
[![Build Status][travis-image]][travis-url]
[![Coverage Status][coveralls-image]][coveralls-url]
[![NPM version][npm-image]][npm-url]
-[![Windows Tests][windows-image]][windows-url]
[![js-standard-style][standard-image]][standard-url]
[![Conventional Commits][conventional-commits-image]][conventional-commits-url]
-[![Gitter][gitter-image]][gitter-url]
-
-> Yargs is the official successor to optimist. Please feel free to submit issues and pull requests. If you'd like to contribute and don't know where to start, have a look at [the issue list](https://github.com/yargs/yargs/issues) :)
-
-examples
-========
-
-With yargs, the options be just a hash!
--------------------------------------------------------------------
-
-plunder.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs').argv;
-
-if (argv.ships > 3 && argv.distance < 53.5) {
- console.log('Plunder more riffiwobbles!');
-} else {
- console.log('Retreat from the xupptumblers!');
-}
-````
-
-***
-
- $ ./plunder.js --ships=4 --distance=22
- Plunder more riffiwobbles!
-
- $ ./plunder.js --ships 12 --distance 98.7
- Retreat from the xupptumblers!
-
-![Joe was one optimistic pirate.](https://i.imgur.com/4WFGVJ9.png)
-
-But don't walk the plank just yet! There be more! You can do short options:
--------------------------------------------------
-
-short.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs').argv;
-console.log('(%d,%d)', argv.x, argv.y);
-````
-
-***
-
- $ ./short.js -x 10 -y 21
- (10,21)
-
-And booleans, both long, short, and even grouped:
-----------------------------------
-
-bool.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs').argv;
-
-if (argv.s) {
- process.stdout.write(argv.fr ? 'Le perroquet dit: ' : 'The parrot says: ');
-}
-console.log(
- (argv.fr ? 'couac' : 'squawk') + (argv.p ? '!' : '')
-);
-````
-
-***
-
- $ ./bool.js -s
- The parrot says: squawk
-
- $ ./bool.js -sp
- The parrot says: squawk!
-
- $ ./bool.js -sp --fr
- Le perroquet dit: couac!
-
-And non-hyphenated options too! Just use `argv._`!
--------------------------------------------------
-
-nonopt.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs').argv;
-console.log('(%d,%d)', argv.x, argv.y);
-console.log(argv._);
-````
-
-***
-
- $ ./nonopt.js -x 6.82 -y 3.35 rum
- (6.82,3.35)
- [ 'rum' ]
-
- $ ./nonopt.js "me hearties" -x 0.54 yo -y 1.12 ho
- (0.54,1.12)
- [ 'me hearties', 'yo', 'ho' ]
-
-Yargs even counts your booleans!
-----------------------------------------------------------------------
-
-count.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .count('verbose')
- .alias('v', 'verbose')
- .argv;
-
-VERBOSE_LEVEL = argv.verbose;
-
-function WARN() { VERBOSE_LEVEL >= 0 && console.log.apply(console, arguments); }
-function INFO() { VERBOSE_LEVEL >= 1 && console.log.apply(console, arguments); }
-function DEBUG() { VERBOSE_LEVEL >= 2 && console.log.apply(console, arguments); }
-
-WARN("Showing only important stuff");
-INFO("Showing semi-important stuff too");
-DEBUG("Extra chatty mode");
-````
-
-***
- $ node count.js
- Showing only important stuff
-
- $ node count.js -v
- Showing only important stuff
- Showing semi-important stuff too
-
- $ node count.js -vv
- Showing only important stuff
- Showing semi-important stuff too
- Extra chatty mode
-
- $ node count.js -v --verbose
- Showing only important stuff
- Showing semi-important stuff too
- Extra chatty mode
-
-Tell users how to use yer options and make demands.
--------------------------------------------------
-
-area.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .usage('Usage: $0 -w [num] -h [num]')
- .demandOption(['w','h'])
- .argv;
-
-console.log("The area is:", argv.w * argv.h);
-````
-
-***
-
- $ ./area.js -w 55 -h 11
- The area is: 605
-
- $ node ./area.js -w 4.91 -w 2.51
- Usage: area.js -w [num] -h [num]
-
- Options:
- -w [required]
- -h [required]
-
- Missing required arguments: h
-
-After yer demands have been met, demand more! Ask for non-hyphenated arguments!
------------------------------------------
-
-demand_count.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .demandCommand(2)
- .argv;
-console.dir(argv);
-````
-
-***
-
- $ ./demand_count.js a
-
- Not enough non-option arguments: got 1, need at least 2
-
- $ ./demand_count.js a b
- { _: [ 'a', 'b' ], '$0': 'demand_count.js' }
-
- $ ./demand_count.js a b c
- { _: [ 'a', 'b', 'c' ], '$0': 'demand_count.js' }
-
-EVEN MORE SHIVER ME TIMBERS!
-------------------
-
-default_singles.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .default('x', 10)
- .default('y', 10)
- .argv
-;
-console.log(argv.x + argv.y);
-````
-
-***
-
- $ ./default_singles.js -x 5
- 15
-
-default_hash.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .default({ x : 10, y : 10 })
- .argv
-;
-console.log(argv.x + argv.y);
-````
-
-***
-
- $ ./default_hash.js -y 7
- 17
-
-And if you really want to get all descriptive about it...
----------------------------------------------------------
-
-boolean_single.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .boolean('v')
- .argv
-;
-console.dir(argv.v);
-console.dir(argv._);
-````
-
-***
-
- $ ./boolean_single.js -v "me hearties" yo ho
- true
- [ 'me hearties', 'yo', 'ho' ]
-
-
-boolean_double.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .boolean(['x','y','z'])
- .argv
-;
-console.dir([ argv.x, argv.y, argv.z ]);
-console.dir(argv._);
-````
-
-***
-
- $ ./boolean_double.js -x -z one two three
- [ true, false, true ]
- [ 'one', 'two', 'three' ]
-
-Yargs is here to help you...
----------------------------
-
-Ye can describe parameters fer help messages and set aliases. Yargs figures
-out how ter format a handy help string automatically.
-
-line_count.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .usage('Usage: $0 <command> [options]')
- .command('count', 'Count the lines in a file')
- .example('$0 count -f foo.js', 'count the lines in the given file')
- .alias('f', 'file')
- .nargs('f', 1)
- .describe('f', 'Load a file')
- .demandOption(['f'])
- .help('h')
- .alias('h', 'help')
- .epilog('copyright 2015')
- .argv;
-
-var fs = require('fs');
-var s = fs.createReadStream(argv.file);
-
-var lines = 0;
-s.on('data', function (buf) {
- lines += buf.toString().match(/\n/g).length;
-});
-
-s.on('end', function () {
- console.log(lines);
-});
-````
-
-***
- $ node line_count.js count
- Usage: line_count.js <command> [options]
-
- Commands:
- count Count the lines in a file
-
- Options:
- -f, --file Load a file [required]
- -h, --help Show help [boolean]
-
- Examples:
- line_count.js count -f foo.js count the lines in the given file
-
- copyright 2015
-
- Missing required arguments: f
-
- $ node line_count.js count --file line_count.js
- 26
-
- $ node line_count.js count -f line_count.js
- 26
-
-methods
-=======
-
-By itself,
-
-````javascript
-require('yargs').argv
-````
-
-will use the `process.argv` array to construct the `argv` object.
-
-You can pass in the `process.argv` yourself:
-
-````javascript
-require('yargs')([ '-x', '1', '-y', '2' ]).argv
-````
-
-or use `.parse()` to do the same thing:
-
-````javascript
-require('yargs').parse([ '-x', '1', '-y', '2' ])
-````
-
-The rest of these methods below come in just before the terminating `.argv`.
-
-<a name="alias"></a>.alias(key, alias)
-------------------
-
-Set key names as equivalent such that updates to a key will propagate to aliases
-and vice-versa.
-
-Optionally `.alias()` can take an object that maps keys to aliases.
-Each key of this object should be the canonical version of the option, and each
-value should be a string or an array of strings.
-
-.argv
------
-
-Get the arguments as a plain old object.
-
-Arguments without a corresponding flag show up in the `argv._` array.
-
-The script name or node command is available at `argv.$0` similarly to how `$0`
-works in bash or perl.
-
-If `yargs` is executed in an environment that embeds node and there's no script name (e.g.
-[Electron](http://electron.atom.io/) or [nw.js](http://nwjs.io/)), it will ignore the first parameter since it
-expects it to be the script name. In order to override this behavior, use `.parse(process.argv.slice(1))`
-instead of `.argv` and the first parameter won't be ignored.
-
-<a name="array"></a>.array(key)
-----------
-
-Tell the parser to interpret `key` as an array. If `.array('foo')` is set,
-`--foo foo bar` will be parsed as `['foo', 'bar']` rather than as `'foo'`.
-
-<a name="boolean"></a>.boolean(key)
--------------
-
-Interpret `key` as a boolean. If a non-flag option follows `key` in
-`process.argv`, that string won't get set as the value of `key`.
-
-`key` will default to `false`, unless a `default(key, undefined)` is
-explicitly set.
-
-If `key` is an array, interpret all the elements as booleans.
-
-.check(fn, [global=true])
-----------
-
-Check that certain conditions are met in the provided arguments.
-
-`fn` is called with two arguments, the parsed `argv` hash and an array of options and their aliases.
-
-If `fn` throws or returns a non-truthy value, show the thrown error, usage information, and
-exit.
-
-`global` indicates whether `check()` should be enabled both
-at the top-level and for each sub-command.
-
-<a name="choices"></a>.choices(key, choices)
-----------------------
-
-Limit valid values for `key` to a predefined set of `choices`, given as an array
-or as an individual value.
-
-```js
-var argv = require('yargs')
- .alias('i', 'ingredient')
- .describe('i', 'choose your sandwich ingredients')
- .choices('i', ['peanut-butter', 'jelly', 'banana', 'pickles'])
- .help('help')
- .argv
-```
-
-If this method is called multiple times, all enumerated values will be merged
-together. Choices are generally strings or numbers, and value matching is
-case-sensitive.
-
-Optionally `.choices()` can take an object that maps multiple keys to their
-choices.
-
-Choices can also be specified as `choices` in the object given to `option()`.
-
-```js
-var argv = require('yargs')
- .option('size', {
- alias: 's',
- describe: 'choose a size',
- choices: ['xs', 's', 'm', 'l', 'xl']
- })
- .argv
-```
-
-<a name="coerce"></a>.coerce(key, fn)
-----------------
-
-Provide a synchronous function to coerce or transform the value(s) given on the
-command line for `key`.
-
-The coercion function should accept one argument, representing the parsed value
-from the command line, and should return a new value or throw an error. The
-returned value will be used as the value for `key` (or one of its aliases) in
-`argv`.
-
-If the function throws, the error will be treated as a validation
-failure, delegating to either a custom [`.fail()`](#fail) handler or printing
-the error message in the console.
-
-Coercion will be applied to a value after
-all other modifications, such as [`.normalize()`](#normalize).
-
-_Examples:_
-
-```js
-var argv = require('yargs')
- .coerce('file', function (arg) {
- return require('fs').readFileSync(arg, 'utf8')
- })
- .argv
-```
-
-Optionally `.coerce()` can take an object that maps several keys to their
-respective coercion function.
-
-```js
-var argv = require('yargs')
- .coerce({
- date: Date.parse,
- json: JSON.parse
- })
- .argv
-```
-
-You can also map the same function to several keys at one time. Just pass an
-array of keys as the first argument to `.coerce()`:
-
-```js
-var path = require('path')
-var argv = require('yargs')
- .coerce(['src', 'dest'], path.resolve)
- .argv
-```
-
-If you are using dot-notion or arrays, .e.g., `user.email` and `user.password`,
-coercion will be applied to the final object that has been parsed:
-
-```js
-// --user.name Batman --user.password 123
-// gives us: {name: 'batman', password: '[SECRET]'}
-var argv = require('yargs')
- .option('user')
- .coerce('user', opt => {
- opt.name = opt.name.toLowerCase()
- opt.password = '[SECRET]'
- return opt
- })
- .argv
-```
-
-.command(cmd, desc, [builder], [handler])
------------------------------------------
-.command(cmd, desc, [module])
------------------------------
-.command(module)
-----------------
-
-Define the commands exposed by your application.
-
-`cmd` should be a string representing the command or an array of strings
-representing the command and its aliases. Read more about command aliases in the
-subsection below.
-
-Use `desc` to provide a description for each command your application accepts (the
-values stored in `argv._`). Set `desc` to `false` to create a hidden command.
-Hidden commands don't show up in the help output and aren't available for
-completion.
-
-Optionally, you can provide a `builder` object to give hints about the
-options that your command accepts:
-
-```js
-yargs
- .command('get', 'make a get HTTP request', {
- url: {
- alias: 'u',
- default: 'http://yargs.js.org/'
- }
- })
- .help()
- .argv
-```
-
-`builder` can also be a function. This function is executed
-with a `yargs` instance, and can be used to provide _advanced_ command specific help:
-
-```js
-yargs
- .command('get', 'make a get HTTP request', function (yargs) {
- return yargs.option('url', {
- alias: 'u',
- default: 'http://yargs.js.org/'
- })
- })
- .help()
- .argv
-```
-
-You can also provide a handler function, which will be executed with the
-parsed `argv` object:
-
-```js
-yargs
- .command(
- 'get',
- 'make a get HTTP request',
- function (yargs) {
- return yargs.option('u', {
- alias: 'url',
- describe: 'the URL to make an HTTP request to'
- })
- },
- function (argv) {
- console.log(argv.url)
- }
- )
- .help()
- .argv
-```
-
-### Default Commands
-
-To specify a default command use the character `*`. A default command
-will be run if the positional arguments provided match no known
-commands:
-
-```js
-const argv = require('yargs')
- .command('*', 'the default command', () => {}, (argv) => {
- console.log('this command will be run by default')
- })
-```
-
-The command defined above will be executed if the program
-is run with `./my-cli.js --x=22`.
-
-Default commands can also be used as a command alias, like so:
-
-```js
-const argv = require('yargs')
- .command(['serve', '*'], 'the serve command', () => {}, (argv) => {
- console.log('this command will be run by default')
- })
-```
-
-The command defined above will be executed if the program
-is run with `./my-cli.js --x=22`, or with `./my-cli.js serve --x=22`.
-
-### Positional Arguments
-
-Commands can accept _optional_ and _required_ positional arguments. Required
-positional arguments take the form `<foo>`, and optional arguments
-take the form `[bar]`. The parsed positional arguments will be populated in
-`argv`:
-
-```js
-yargs.command('get <source> [proxy]', 'make a get HTTP request')
- .help()
- .argv
-```
-
-#### Positional Argument Aliases
-
-Aliases can be provided for positional arguments using the `|` character.
-As an example, suppose our application allows either a username _or_
-an email as the first argument:
-
-```js
-yargs.command('get <username|email> [password]', 'fetch a user by username or email.')
- .help()
- .argv
-```
-
-In this way, both `argv.username` and `argv.email` would be populated with the
-same value when the command is executed.
-
-#### Variadic Positional Arguments
-
-The last positional argument can optionally accept an array of
-values, by using the `..` operator:
-
-```js
-yargs.command('download <url> [files..]', 'download several files')
- .help()
- .argv
-```
-
-### Command Execution
-
-When a command is given on the command line, yargs will execute the following:
-
-1. push the command into the current context
-2. reset non-global configuration
-3. apply command configuration via the `builder`, if given
-4. parse and validate args from the command line, including positional args
-5. if validation succeeds, run the `handler` function, if given
-6. pop the command from the current context
-
-### Command Aliases
-
-You can define aliases for a command by putting the command and all of its
-aliases into an array.
-
-Alternatively, a command module may specify an `aliases` property, which may be
-a string or an array of strings. All aliases defined via the `command` property
-and the `aliases` property will be concatenated together.
-
-The first element in the array is considered the canonical command, which may
-define positional arguments, and the remaining elements in the array are
-considered aliases. Aliases inherit positional args from the canonical command,
-and thus any positional args defined in the aliases themselves are ignored.
-
-If either the canonical command or any of its aliases are given on the command
-line, the command will be executed.
-
-```js
-#!/usr/bin/env node
-require('yargs')
- .command(['start [app]', 'run', 'up'], 'Start up an app', {}, (argv) => {
- console.log('starting up the', argv.app || 'default', 'app')
- })
- .command({
- command: 'configure <key> [value]',
- aliases: ['config', 'cfg'],
- desc: 'Set a config variable',
- builder: (yargs) => yargs.default('value', 'true'),
- handler: (argv) => {
- console.log(`setting ${argv.key} to ${argv.value}`)
- }
- })
- .demandCommand()
- .help()
- .wrap(72)
- .argv
-```
-
-```
-$ ./svc.js help
-Commands:
- start [app] Start up an app [aliases: run, up]
- configure <key> [value] Set a config variable [aliases: config, cfg]
-
-Options:
- --help Show help [boolean]
-
-$ ./svc.js cfg concurrency 4
-setting concurrency to 4
-
-$ ./svc.js run web
-starting up the web app
-```
-
-### Providing a Command Module
-
-For complicated commands you can pull the logic into a module. A module
-simply needs to export:
-
-* `exports.command`: string (or array of strings) that executes this command when given on the command line, first string may contain positional args
-* `exports.aliases`: array of strings (or a single string) representing aliases of `exports.command`, positional args defined in an alias are ignored
-* `exports.describe`: string used as the description for the command in help text, use `false` for a hidden command
-* `exports.builder`: object declaring the options the command accepts, or a function accepting and returning a yargs instance
-* `exports.handler`: a function which will be passed the parsed argv.
-
-```js
-// my-module.js
-exports.command = 'get <source> [proxy]'
-
-exports.describe = 'make a get HTTP request'
-
-exports.builder = {
- banana: {
- default: 'cool'
- },
- batman: {
- default: 'sad'
- }
-}
-
-exports.handler = function (argv) {
- // do something with argv.
-}
-```
-
-You then register the module like so:
-
-```js
-yargs.command(require('my-module'))
- .help()
- .argv
-```
-
-Or if the module does not export `command` and `describe` (or if you just want to override them):
-
-```js
-yargs.command('get <source> [proxy]', 'make a get HTTP request', require('my-module'))
- .help()
- .argv
-```
-
-.commandDir(directory, [opts])
-------------------------------
-
-Apply command modules from a directory relative to the module calling this method.
-
-This allows you to organize multiple commands into their own modules under a
-single directory and apply all of them at once instead of calling
-`.command(require('./dir/module'))` multiple times.
-
-By default, it ignores subdirectories. This is so you can use a directory
-structure to represent your command hierarchy, where each command applies its
-subcommands using this method in its builder function. See the example below.
-
-Note that yargs assumes all modules in the given directory are command modules
-and will error if non-command modules are encountered. In this scenario, you
-can either move your module to a different directory or use the `exclude` or
-`visit` option to manually filter it out. More on that below.
-
-`directory` is a relative directory path as a string (required).
-
-`opts` is an options object (optional). The following options are valid:
-
-- `recurse`: boolean, default `false`
-
- Look for command modules in all subdirectories and apply them as a flattened
- (non-hierarchical) list.
-
-- `extensions`: array of strings, default `['js']`
-
- The types of files to look for when requiring command modules.
-
-- `visit`: function
-
- A synchronous function called for each command module encountered. Accepts
- `commandObject`, `pathToFile`, and `filename` as arguments. Returns
- `commandObject` to include the command; any falsy value to exclude/skip it.
-
-- `include`: RegExp or function
-
- Whitelist certain modules. See [`require-directory` whitelisting](https://www.npmjs.com/package/require-directory#whitelisting) for details.
-
-- `exclude`: RegExp or function
-
- Blacklist certain modules. See [`require-directory` blacklisting](https://www.npmjs.com/package/require-directory#blacklisting) for details.
-
-### Example command hierarchy using `.commandDir()`
-
-Desired CLI:
-
-```sh
-$ myapp --help
-$ myapp init
-$ myapp remote --help
-$ myapp remote add base http://yargs.js.org
-$ myapp remote prune base
-$ myapp remote prune base fork whatever
-```
-
-Directory structure:
-
-```
-myapp/
-├─ cli.js
-└─ cmds/
- ├─ init.js
- ├─ remote.js
- └─ remote_cmds/
- ├─ add.js
- └─ prune.js
-```
-
-cli.js:
-
-```js
-#!/usr/bin/env node
-require('yargs')
- .commandDir('cmds')
- .demandCommand()
- .help()
- .argv
-```
-
-cmds/init.js:
-
-```js
-exports.command = 'init [dir]'
-exports.desc = 'Create an empty repo'
-exports.builder = {
- dir: {
- default: '.'
- }
-}
-exports.handler = function (argv) {
- console.log('init called for dir', argv.dir)
-}
-```
-
-cmds/remote.js:
-
-```js
-exports.command = 'remote <command>'
-exports.desc = 'Manage set of tracked repos'
-exports.builder = function (yargs) {
- return yargs.commandDir('remote_cmds')
-}
-exports.handler = function (argv) {}
-```
-
-cmds/remote_cmds/add.js:
+[![Slack][slack-image]][slack-url]
-```js
-exports.command = 'add <name> <url>'
-exports.desc = 'Add remote named <name> for repo at url <url>'
-exports.builder = {}
-exports.handler = function (argv) {
- console.log('adding remote %s at url %s', argv.name, argv.url)
-}
-```
-
-cmds/remote_cmds/prune.js:
-
-```js
-exports.command = 'prune <name> [names..]'
-exports.desc = 'Delete tracked branches gone stale for remotes'
-exports.builder = {}
-exports.handler = function (argv) {
- console.log('pruning remotes %s', [].concat(argv.name).concat(argv.names).join(', '))
-}
-```
-
-.completion([cmd], [description], [fn])
----------------------------------------
-
-Enable bash-completion shortcuts for commands and options.
-
-`cmd`: When present in `argv._`, will result in the `.bashrc` completion script
-being outputted. To enable bash completions, concat the generated script to your
-`.bashrc` or `.bash_profile`.
-
-`description`: Provide a description in your usage instructions for the command
-that generates bash completion scripts.
-
-`fn`: Rather than relying on yargs' default completion functionality, which
-shiver me timbers is pretty awesome, you can provide your own completion
-method.
-
-If invoked without parameters, `.completion()` will make `completion` the command to output
-the completion script.
-
-```js
-var argv = require('yargs')
- .completion('completion', function(current, argv) {
- // 'current' is the current command being completed.
- // 'argv' is the parsed arguments so far.
- // simply return an array of completions.
- return [
- 'foo',
- 'bar'
- ];
- })
- .argv;
-```
-
-You can also provide asynchronous completions.
-
-```js
-var argv = require('yargs')
- .completion('completion', function(current, argv, done) {
- setTimeout(function() {
- done([
- 'apple',
- 'banana'
- ]);
- }, 500);
- })
- .argv;
-```
-
-But wait, there's more! You can return an asynchronous promise.
-
-```js
-var argv = require('yargs')
- .completion('completion', function(current, argv, done) {
- return new Promise(function (resolve, reject) {
- setTimeout(function () {
- resolve(['apple', 'banana'])
- }, 10)
- })
- })
- .argv;
-```
-
-<a name="config"></a>.config([key], [description], [parseFn])
--------------------------------------------------------------
-.config(object)
----------------
-
-Tells the parser that if the option specified by `key` is passed in, it
-should be interpreted as a path to a JSON config file. The file is loaded
-and parsed, and its properties are set as arguments. Because the file is
-loaded using Node's require(), the filename MUST end in `.json` to be
-interpreted correctly.
-
-If invoked without parameters, `.config()` will make `--config` the option to pass the JSON config file.
-
-An optional `description` can be provided to customize the config (`key`) option
-in the usage string.
-
-An optional `parseFn` can be used to provide a custom parser. The parsing
-function must be synchronous, and should return an object containing
-key value pairs or an error.
-
-```js
-var argv = require('yargs')
- .config('settings', function (configPath) {
- return JSON.parse(fs.readFileSync(configPath, 'utf-8'))
- })
- .argv
-```
-
-You can also pass an explicit configuration `object`, it will be parsed
-and its properties will be set as arguments.
-
-```js
-var argv = require('yargs')
- .config({foo: 1, bar: 2})
- .argv
-console.log(argv)
-```
-
-```
-$ node test.js
-{ _: [],
- foo: 1,
- bar: 2,
- '$0': 'test.js' }
-```
-
-Note that a configuration object may extend from a JSON file using the `"extends"` property. When doing so, the `"extends"` value should be a path (relative or absolute) to the extended JSON file.
-
-<a name="conflicts"></a>.conflicts(x, y)
-----------------------------------------------
+## Description :
+Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface.
-Given the key `x` is set, the key `y` must not be set.
+It gives you:
-Optionally `.conflicts()` can accept an object specifying multiple conflicting keys.
+* commands and (grouped) options (`my-program.js serve --port=5000`).
+* a dynamically generated help menu based on your arguments.
-<a name="count"></a>.count(key)
-------------
+> <img width="400" src="/screen.png">
-Interpret `key` as a boolean flag, but set its parsed value to the number of
-flag occurrences rather than `true` or `false`. Default value is thus `0`.
+* bash-completion shortcuts for commands and options.
+* and [tons more](/docs/api.md).
-<a name="default"></a>.default(key, value, [description])
----------------------------------------------------------
-.defaults(key, value, [description])
-------------------------------------
+## Installation
-**Note:** The `.defaults()` alias is deprecated. It will be
-removed in the next major version.
-
-Set `argv[key]` to `value` if no option was specified in `process.argv`.
-
-Optionally `.default()` can take an object that maps keys to default values.
-
-But wait, there's more! The default value can be a `function` which returns
-a value. The name of the function will be used in the usage string:
-
-```js
-var argv = require('yargs')
- .default('random', function randomValue() {
- return Math.random() * 256;
- }).argv;
-```
-
-Optionally, `description` can also be provided and will take precedence over
-displaying the value in the usage instructions:
-
-```js
-.default('timeout', 60000, '(one-minute)')
-```
-
-<a name="demand"></a>.demand(count, [max], [msg]) [DEPRECATED]
---------------------
-
-`demand()` has been deprecated, please instead see [`demandOption()`](#demandOption) and
-[`demandCommand()`](#demandCommand).
-
-<a name="demandOption"></a>.demandOption(key, [msg | boolean])
-------------------------------
-.demandOption(key, msg)
-------------------------------
-
-If `key` is a string, show the usage information and exit if `key` wasn't
-specified in `process.argv`.
-
-If `key` is an array, demand each element.
-
-If a `msg` string is given, it will be printed when the argument is missing, instead of the standard error message.
-
-```javascript
-// demand an array of keys to be provided
-require('yargs')
- .option('run', {
- alias: 'r',
- describe: 'run your program'
- })
- .option('path', {
- alias: 'p',
- describe: 'provide a path to file'
- })
- .option('spec', {
- alias: 's',
- describe: 'program specifications'
- })
- .demandOption(['run', 'path'], 'Please provide both run and path arguments to work with this tool')
- .help()
- .argv
-```
-which will provide the following output:
+Stable version:
```bash
-Options:
- --run, -r run your program [required]
- --path, -p provide a path to file [required]
- --spec, -s program specifications
- --help Show help [boolean]
-
- Missing required arguments: run, path
- Please provide both run and path arguments to work with this tool
-```
-
-If a `boolean` value is given, it controls whether the option is demanded;
-this is useful when using `.options()` to specify command line parameters.
-
-```javascript
-// demand individual options within the option constructor
-require('yargs')
- .options({
- 'run': {
- alias: 'r',
- describe: 'run your program',
- demandOption: true
- },
- 'path': {
- alias: 'p',
- describe: 'provide a path to file',
- demandOption: true
- },
- 'spec': {
- alias: 's',
- describe: 'program specifications'
- }
- })
- .help()
- .argv
-```
-which will provide the following output:
-```bash
-Options:
- --run, -r run your program [required]
- --path, -p provide a path to file [required]
- --spec, -s program specifications
- --help Show help [boolean]
-
-Missing required arguments: run, path
+npm i yargs
```
-<a name="demandCommand"></a>.demandCommand([min=1], [minMsg])
-------------------------------
-.demandCommand([min=1], [max], [minMsg], [maxMsg])
-------------------------------
-
-Demand in context of commands. You can demand a minimum and a maximum number a user can have within your program, as well as provide corresponding error messages if either of the demands is not met.
-```javascript
-require('yargs')
- .command({
- command: 'configure <key> [value]',
- aliases: ['config', 'cfg'],
- desc: 'Set a config variable',
- builder: (yargs) => yargs.default('value', 'true'),
- handler: (argv) => {
- console.log(`setting ${argv.key} to ${argv.value}`)
- }
- })
- // provide a minimum demand and a minimum demand message
- .demandCommand(1, 'You need at least one command before moving on')
- .help()
- .argv
-```
-
-which will provide the following output:
-
+Bleeding edge version with the most recent features:
```bash
-Commands:
- configure <key> [value] Set a config variable [aliases: config, cfg]
-
-Options:
- --help Show help [boolean]
-
-You need at least one command before moving on
-```
-
-_Note: in `minMsg` and `maxMsg`, every occurrence of `$0` will be replaced
-with the observed value, and every instance of `$1` will be replaced with the
-expected value._
-
-<a name="describe"></a>.describe(key, desc)
---------------------
-
-Describe a `key` for the generated usage information.
-
-Optionally `.describe()` can take an object that maps keys to descriptions.
-
-.detectLocale(boolean)
------------
-
-Should yargs attempt to detect the os' locale? Defaults to `true`.
-
-.env([prefix])
---------------
-
-Tell yargs to parse environment variables matching the given prefix and apply
-them to argv as though they were command line arguments.
-
-Use the "__" separator in the environment variable to indicate nested options.
-(e.g. prefix_nested__foo => nested.foo)
-
-If this method is called with no argument or with an empty string or with `true`,
-then all env vars will be applied to argv.
-
-Program arguments are defined in this order of precedence:
-
-1. Command line args
-2. Env vars
-3. Config file/objects
-4. Configured defaults
-
-```js
-var argv = require('yargs')
- .env('MY_PROGRAM')
- .option('f', {
- alias: 'fruit-thing',
- default: 'apple'
- })
- .argv
-console.log(argv)
-```
-
-```
-$ node fruity.js
-{ _: [],
- f: 'apple',
- 'fruit-thing': 'apple',
- fruitThing: 'apple',
- '$0': 'fruity.js' }
-```
-
-```
-$ MY_PROGRAM_FRUIT_THING=banana node fruity.js
-{ _: [],
- fruitThing: 'banana',
- f: 'banana',
- 'fruit-thing': 'banana',
- '$0': 'fruity.js' }
-```
-
-```
-$ MY_PROGRAM_FRUIT_THING=banana node fruity.js -f cat
-{ _: [],
- f: 'cat',
- 'fruit-thing': 'cat',
- fruitThing: 'cat',
- '$0': 'fruity.js' }
-```
-
-Env var parsing is disabled by default, but you can also explicitly disable it
-by calling `.env(false)`, e.g. if you need to undo previous configuration.
-
-.epilog(str)
-------------
-.epilogue(str)
---------------
-
-A message to print at the end of the usage instructions, e.g.
-
-```js
-var argv = require('yargs')
- .epilogue('for more information, find our manual at http://example.com');
-```
-
-.example(cmd, desc)
--------------------
-
-Give some example invocations of your program. Inside `cmd`, the string
-`$0` will get interpolated to the current script name or node command for the
-present script similar to how `$0` works in bash or perl.
-Examples will be printed out as part of the help message.
-
-<a name="exitprocess"></a>.exitProcess(enable)
-----------------------------------
-
-By default, yargs exits the process when the user passes a help flag, uses the
-`.version` functionality, or when validation fails. Calling
-`.exitProcess(false)` disables this behavior, enabling further actions after
-yargs have been validated.
-
-<a name="fail"></a>.fail(fn)
----------
-
-Method to execute when a failure occurs, rather than printing the failure message.
-
-`fn` is called with the failure message that would have been printed, the
-`Error` instance originally thrown and yargs state when the failure
-occured.
-
-```js
-var argv = require('yargs')
- .fail(function (msg, err, yargs) {
- if (err) throw err // preserve stack
- console.error('You broke it!')
- console.error(msg)
- console.error('You should be doing', yargs.help())
- process.exit(1)
- })
- .argv
-```
-
-.getCompletion(args, done);
----------------------------
-
-Allows to programmatically get completion choices for any line.
-
-`args`: An array of the words in the command line to complete.
-
-`done`: The callback to be called with the resulting completions.
-
-For example:
-
-```js
-require('yargs')
- .option('foobar')
- .option('foobaz')
- .completion()
- .getCompletion(['./test.js', '--foo'], function (completions) {
- console.log(completions)
- })
-```
-
-Outputs the same completion choices as `./test.js --foo`<kbd>TAB</kbd>: `--foobar` and `--foobaz`
-
-<a name="global"></a>.global(globals, [global=true])
-------------
-
-Indicate that an option (or group of options) should not be reset when a command
-is executed, as an example:
-
-```js
-var argv = require('yargs')
- .option('a', {
- alias: 'all',
- default: true,
- global: false
- })
- .option('n', {
- alias: 'none',
- default: true,
- global: false
- })
- .command('foo', 'foo command', function (yargs) {
- return yargs.option('b', {
- alias: 'bar'
- })
- })
- .help('help')
- .global('a')
- .argv
-```
-
-If the `foo` command is executed the `all` option will remain, but the `none`
-option will have been eliminated.
-
-Options default to being global.
-
-<a name="group"></a>.group(key(s), groupName)
---------------------
-
-Given a key, or an array of keys, places options under an alternative heading
-when displaying usage instructions, e.g.,
-
-```js
-var yargs = require('yargs')(['--help'])
- .help()
- .group('batman', 'Heroes:')
- .describe('batman', "world's greatest detective")
- .wrap(null)
- .argv
-```
-***
- Heroes:
- --batman world's greatest detective
-
- Options:
- --help Show help [boolean]
-
-<a name="help"></a>.help()
------------------------------------------
-.help([option | boolean])
------------------------------------------
-.help([option, [description | boolean]])
------------------------------------------
-.help([option, [description, [boolean]]])
------------------------------------------
-
-Add an option (e.g. `--help`) and implicit command that displays the usage
-string and exits the process.
-
-If present, the `description` parameter customizes the description of
-the help option in the usage string.
-
-If a boolean argument is provided, it will enable or disable the use of an
-implicit command. The implicit command is enabled by default, but it can be
-disabled by passing `false`.
-
-Note that any multi-char aliases (e.g. `help`) used for the help option will
-also be used for the implicit command. If there are no multi-char aliases (e.g.
-`h`), then all single-char aliases will be used for the command.
-
-If invoked without parameters, `.help()` will use `--help` as the option and
-`help` as the implicit command to trigger help output.
-
-Example:
-
-```js
-var yargs = require("yargs")(['--help'])
- .usage("$0 -operand1 number -operand2 number -operation [add|subtract]")
- .help()
- .argv
-```
-
-Later on, `argv` can be retrieved with `yargs.argv`.
-
-<a name="implies"></a>.implies(x, y)
---------------
-
-Given the key `x` is set, it is required that the key `y` is set.
-
-Optionally `.implies()` can accept an object specifying multiple implications.
-
-.locale()
----------
-
-Return the locale that yargs is currently using.
-
-By default, yargs will auto-detect the operating system's locale so that
-yargs-generated help content will display in the user's language.
-
-To override this behavior with a static locale, pass the desired locale as a
-string to this method (see below).
-
-.locale(locale)
----------------
-
-Override the auto-detected locale from the user's operating system with a static
-locale. Note that the OS locale can be modified by setting/exporting the `LC_ALL`
-environment variable.
-
-```js
-var argv = require('yargs')
- .usage('./$0 - follow ye instructions true')
- .option('option', {
- alias: 'o',
- describe: "'tis a mighty fine option",
- demandOption: true
- })
- .command('run', "Arrr, ya best be knowin' what yer doin'")
- .example('$0 run foo', "shiver me timbers, here's an example for ye")
- .help('help')
- .wrap(70)
- .locale('pirate')
- .argv
+npm i yargs@next
```
-***
-
-```shell
-./test.js - follow ye instructions true
-
-Choose yer command:
- run Arrr, ya best be knowin' what yer doin'
-
-Options for me hearties!
- --option, -o 'tis a mighty fine option [requi-yar-ed]
- --help Parlay this here code of conduct [boolean]
-
-Ex. marks the spot:
- test.js run foo shiver me timbers, here's an example for ye
-
-Ye be havin' to set the followin' argument land lubber: option
-```
-
-Locales currently supported:
-
-* **de:** German.
-* **en:** American English.
-* **es:** Spanish.
-* **fr:** French.
-* **hi:** Hindi.
-* **hu:** Hungarian.
-* **id:** Indonesian.
-* **it:** Italian.
-* **ja:** Japanese.
-* **ko:** Korean.
-* **nb:** Norwegian Bokmål.
-* **pirate:** American Pirate.
-* **pl:** Polish.
-* **pt:** Portuguese.
-* **pt_BR:** Brazilian Portuguese.
-* **ru:** Russian.
-* **th:** Thai.
-* **tr:** Turkish.
-* **zh_CN:** Chinese.
-
-To submit a new translation for yargs:
-
-1. use `./locales/en.json` as a starting point.
-2. submit a pull request with the new locale file.
-
-*The [Microsoft Terminology Search](http://www.microsoft.com/Language/en-US/Search.aspx) can be useful for finding the correct terminology in your locale.*
-
-<a name="nargs"></a>.nargs(key, count)
------------
-
-The number of arguments that should be consumed after a key. This can be a
-useful hint to prevent parsing ambiguity. For example:
-
-```js
-var argv = require('yargs')
- .nargs('token', 1)
- .parse(['--token', '-my-token']);
-```
-
-parses as:
-
-`{ _: [], token: '-my-token', '$0': 'node test' }`
-
-Optionally `.nargs()` can take an object of `key`/`narg` pairs.
-
-<a name="normalize"></a>.normalize(key)
----------------
-
-The key provided represents a path and should have `path.normalize()` applied.
-
-<a name="number"></a>.number(key)
-------------
-
-Tell the parser to always interpret `key` as a number.
-
-If `key` is an array, all elements will be parsed as numbers.
-
-If the option is given on the command line without a value, `argv` will be
-populated with `undefined`.
-
-If the value given on the command line cannot be parsed as a number, `argv` will
-be populated with `NaN`.
-
-Note that decimals, hexadecimals, and scientific notation are all accepted.
-
-```js
-var argv = require('yargs')
- .number('n')
- .number(['width', 'height'])
- .argv
-```
-
-.option(key, [opt])
------------------
-.options(key, [opt])
-------------------
-
-This method can be used to make yargs aware of options that _could_
-exist. You can also pass an `opt` object which can hold further
-customization, like `.alias()`, `.demandOption()` etc. for that option.
-
-For example:
-
-````javascript
-var argv = require('yargs')
- .option('f', {
- alias: 'file',
- demandOption: true,
- default: '/etc/passwd',
- describe: 'x marks the spot',
- type: 'string'
- })
- .argv
-;
-````
-
-is the same as
-
-````javascript
-var argv = require('yargs')
- .alias('f', 'file')
- .demandOption('f')
- .default('f', '/etc/passwd')
- .describe('f', 'x marks the spot')
- .string('f')
- .argv
-;
-````
+## Usage :
-Optionally `.options()` can take an object that maps keys to `opt` parameters.
+### Simple Example
````javascript
-var argv = require('yargs')
- .options({
- 'f': {
- alias: 'file',
- demandOption: true,
- default: '/etc/passwd',
- describe: 'x marks the spot',
- type: 'string'
- }
- })
- .argv
-;
-````
-
-Valid `opt` keys include:
-
-- `alias`: string or array of strings, alias(es) for the canonical option key, see [`alias()`](#alias)
-- `array`: boolean, interpret option as an array, see [`array()`](#array)
-- `boolean`: boolean, interpret option as a boolean flag, see [`boolean()`](#boolean)
-- `choices`: value or array of values, limit valid option arguments to a predefined set, see [`choices()`](#choices)
-- `coerce`: function, coerce or transform parsed command line values into another value, see [`coerce()`](#coerce)
-- `config`: boolean, interpret option as a path to a JSON config file, see [`config()`](#config)
-- `configParser`: function, provide a custom config parsing function, see [`config()`](#config)
-- `conflicts`: string or object, require certain keys not to be set, see [`conflicts()`](#conflicts)
-- `count`: boolean, interpret option as a count of boolean flags, see [`count()`](#count)
-- `default`: value, set a default value for the option, see [`default()`](#default)
-- `defaultDescription`: string, use this description for the default value in help content, see [`default()`](#default)
-- `demandOption`: boolean or string, demand the option be given, with optional error message, see [`demandOption()`](#demandOption)
-- `desc`/`describe`/`description`: string, the option description for help content, see [`describe()`](#describe)
-- `global`: boolean, indicate that this key should not be [reset](#reset) when a command is invoked, see [`global()`](#global)
-- `group`: string, when displaying usage instructions place the option under an alternative group heading, see [`group()`](#group)
-- `implies`: string or object, require certain keys to be set, see [`implies()`](#implies)
-- `nargs`: number, specify how many arguments should be consumed for the option, see [`nargs()`](#nargs)
-- `normalize`: boolean, apply `path.normalize()` to the option, see [`normalize()`](#normalize)
-- `number`: boolean, interpret option as a number, [`number()`](#number)
-- `requiresArg`: boolean, require the option be specified with a value, see [`requiresArg()`](#requiresArg)
-- `skipValidation`: boolean, skips validation if the option is present, see [`skipValidation()`](#skipValidation)
-- `string`: boolean, interpret option as a string, see [`string()`](#string)
-- `type`: one of the following strings
- - `'array'`: synonymous for `array: true`, see [`array()`](#array)
- - `'boolean'`: synonymous for `boolean: true`, see [`boolean()`](#boolean)
- - `'count'`: synonymous for `count: true`, see [`count()`](#count)
- - `'number'`: synonymous for `number: true`, see [`number()`](#number)
- - `'string'`: synonymous for `string: true`, see [`string()`](#string)
-
-.parse(args, [context], [parseCallback])
-------------
-
-Parse `args` instead of `process.argv`. Returns the `argv` object.
-`args` may either be a pre-processed argv array, or a raw argument string.
-
-A `context` object can optionally be given as the second argument to `parse()`, providing a
-useful mechanism for passing state information to commands:
-
-```js
-const parser = yargs
- .command('lunch-train <restaurant>', 'start lunch train', function () {}, function (argv) {
- console.log(argv.restaurant, argv.time)
- })
- .parse("lunch-train rudy's", {time: '12:15'})
-```
-
-A `parseCallback` can also be provided to `.parse()`. If a callback is given, it will be invoked with three arguments:
-
-1. `err`: populated if any validation errors raised while parsing.
-2. `argv`: the parsed argv object.
-3. `output`: any text that would have been output to the terminal, had a
- callback not been provided.
-
-```js
-// providing the `fn` argument to `parse()` runs yargs in headless mode, this
-// makes it easy to use yargs in contexts other than the CLI, e.g., writing
-// a chat-bot.
-const parser = yargs
- .command('lunch-train <restaurant> <time>', 'start lunch train', function () {}, function (argv) {
- api.scheduleLunch(argv.restaurant, moment(argv.time))
- })
- .help()
-
-parser.parse(bot.userText, function (err, argv, output) {
- if (output) bot.respond(output)
-})
-```
-
-***Note:*** Providing a callback to `parse()` disables the [`exitProcess` setting](#exitprocess) until after the callback is invoked.
-
-.pkgConf(key, [cwd])
-------------
-
-Similar to [`config()`](#config), indicates that yargs should interpret the object from the specified key in package.json
-as a configuration object.
-
-`cwd` can optionally be provided, the package.json will be read
-from this location.
-
-Note that a configuration stanza in package.json may extend from an identically keyed stanza in another package.json file using the `"extends"` property. When doing so, the `"extends"` value should be a path (relative or absolute) to the extended package.json file.
-
-.recommendCommands()
----------------------------
-
-Should yargs provide suggestions regarding similar commands if no matching
-command is found?
-
-.require(key, [msg | boolean])
-------------------------------
-.required(key, [msg | boolean])
-------------------------------
-
-An alias for [`demand()`](#demand). See docs there.
-
-<a name="requiresArg"></a>.requiresArg(key)
------------------
-
-Specifies either a single option key (string), or an array of options that
-must be followed by option values. If any option value is missing, show the
-usage information and exit.
-
-The default behavior is to set the value of any key not followed by an
-option value to `true`.
-
-<a name="reset"></a>.reset()
---------
-
-Reset the argument object built up so far. This is useful for
-creating nested command line interfaces. Use [global](#global)
-to specify keys that should not be reset.
-
-```js
-var yargs = require('yargs')
- .usage('$0 command')
- .command('hello', 'hello command')
- .command('world', 'world command')
- .demandCommand(1, 'must provide a valid command'),
- argv = yargs.argv,
- command = argv._[0];
-
-if (command === 'hello') {
- yargs.reset()
- .usage('$0 hello')
- .help('h')
- .example('$0 hello', 'print the hello message!')
- .argv
-
- console.log('hello!');
-} else if (command === 'world'){
- yargs.reset()
- .usage('$0 world')
- .help('h')
- .example('$0 world', 'print the world message!')
- .argv
+#!/usr/bin/env node
+const argv = require('yargs').argv
- console.log('world!');
+if (argv.ships > 3 && argv.distance < 53.5) {
+ console.log('Plunder more riffiwobbles!')
} else {
- yargs.showHelp();
+ console.log('Retreat from the xupptumblers!')
}
-```
-
-.showCompletionScript()
-----------------------
-
-Generate a bash completion script. Users of your application can install this
-script in their `.bashrc`, and yargs will provide completion shortcuts for
-commands and options.
-
-.showHelp(consoleLevel='error')
----------------------------
-
-Print the usage data using the [`console`](https://nodejs.org/api/console.html) function `consoleLevel` for printing.
-
-Example:
-
-```js
-var yargs = require("yargs")
- .usage("$0 -operand1 number -operand2 number -operation [add|subtract]");
-yargs.showHelp(); //prints to stderr using console.error()
-```
-
-Or, to print the usage data to `stdout` instead, you can specify the use of `console.log`:
-
-```js
-yargs.showHelp("log"); //prints to stdout using console.log()
-```
-
-Later on, `argv` can be retrieved with `yargs.argv`.
-
-.showHelpOnFail(enable, [message])
-----------------------------------
-
-By default, yargs outputs a usage string if any error is detected. Use the
-`.showHelpOnFail()` method to customize this behavior. If `enable` is `false`,
-the usage string is not output. If the `message` parameter is present, this
-message is output after the error message.
-
-line_count.js:
-
-````javascript
-#!/usr/bin/env node
-var argv = require('yargs')
- .usage('Count the lines in a file.\nUsage: $0 -f <file>')
- .demandOption('f')
- .alias('f', 'file')
- .describe('f', 'Load a file')
- .string('f')
- .showHelpOnFail(false, 'Specify --help for available options')
- .help('help')
- .argv;
-
-// etc.
````
-***
-
-```
-$ node line_count.js
-Missing argument value: f
+```bash
+$ ./plunder.js --ships=4 --distance=22
+Plunder more riffiwobbles!
-Specify --help for available options
+$ ./plunder.js --ships 12 --distance 98.7
+Retreat from the xupptumblers!
```
-<a name="skipValidation"></a>.skipValidation(key)
------------------
+### Complex Example
-Specifies either a single option key (string), or an array of options.
-If any of the options is present, yargs validation is skipped.
-
-.strict([global=true])
----------
-
-Any command-line argument given that is not demanded, or does not have a
-corresponding description, will be reported as an error.
-
-`global` indicates whether `strict()` should be enabled both
-at the top-level and for each sub-command.
-
-<a name="string"></a>.string(key)
-------------
-
-Tell the parser logic not to interpret `key` as a number or boolean.
-This can be useful if you need to preserve leading zeros in an input.
-
-If `key` is an array, interpret all the elements as strings.
-
-`.string('_')` will result in non-hyphenated arguments being interpreted as strings,
-regardless of whether they resemble numbers.
-
-.updateLocale(obj)
-------------------
-.updateStrings(obj)
-------------------
-
-Override the default strings used by yargs with the key/value
-pairs provided in `obj`:
-
-```js
-var argv = require('yargs')
- .command('run', 'the run command')
- .help('help')
- .updateStrings({
- 'Commands:': 'My Commands -->\n'
+```javascript
+#!/usr/bin/env node
+require('yargs') // eslint-disable-line
+ .command('serve [port]', 'start the server', (yargs) => {
+ yargs
+ .positional('port', {
+ describe: 'port to bind on',
+ default: 5000
+ })
+ }, (argv) => {
+ if (argv.verbose) console.info(`start server on :${argv.port}`)
+ serve(argv.port)
})
- .wrap(null)
- .argv
-```
-
-***
-
-```shell
-My Commands -->
-
- run the run command
-
-Options:
- --help Show help [boolean]
-```
-
-If you explicitly specify a `locale()`, you should do so *before* calling
-`updateStrings()`.
-
-.usage(message, [opts])
----------------------
-
-Set a usage message to show which commands to use. Inside `message`, the string
-`$0` will get interpolated to the current script name or node command for the
-present script similar to how `$0` works in bash or perl.
-
-`opts` is optional and acts like calling `.options(opts)`.
-
-<a name="version"></a>.version([option], [description], [version])
-----------------------------------------
-
-Add an option (e.g. `--version`) that displays the version number (given by the
-`version` parameter) and exits the process.
-
-If no arguments are passed to `version` (`.version()`), yargs will parse the `package.json`
-of your module and use its `version` value. The default value of `option` is `--version`.
-
-You can provide a `function` for version, rather than a string.
-This is useful if you want to use a version stored in a location other than package.json:
-
-```js
-var argv = require('yargs')
- .version(function() {
- return require('../lib/version').version;
+ .option('verbose', {
+ alias: 'v',
+ default: false
})
- .argv;
+ .argv
```
-<a name="wrap"></a>.wrap(columns)
---------------
-
-Format usage output to wrap at `columns` many columns.
-
-By default wrap will be set to `Math.min(80, windowWidth)`. Use `.wrap(null)` to
-specify no column limit (no right-align). Use `.wrap(yargs.terminalWidth())` to
-maximize the width of yargs' usage instructions.
-
-parsing tricks
-==============
-
-stop parsing
-------------
-
-Use `--` to stop parsing flags and stuff the remainder into `argv._`.
-
- $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4
- { _: [ '-c', '3', '-d', '4' ],
- a: 1,
- b: 2,
- '$0': 'examples/reflect.js' }
-
-negate fields
--------------
-
-If you want to explicitly set a field to false instead of just leaving it
-undefined or to override a default you can do `--no-key`.
-
- $ node examples/reflect.js -a --no-b
- { _: [], a: true, b: false, '$0': 'examples/reflect.js' }
-
-numbers
--------
+Run the example above with `--help` to see the help for the application.
-Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to
-one. This way you can just `net.createConnection(argv.port)` and you can add
-numbers out of `argv` with `+` without having that mean concatenation,
-which is super frustrating.
+## Community :
-duplicates
-----------
-
-If you specify a flag multiple times it will get turned into an array containing
-all the values in order.
-
- $ node examples/reflect.js -x 5 -x 8 -x 0
- { _: [], x: [ 5, 8, 0 ], '$0': 'examples/reflect.js' }
-
-dot notation
-------------
-
-When you use dots (`.`s) in argument names, an implicit object path is assumed.
-This lets you organize arguments into nested objects.
-
- $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5
- { _: [],
- foo: { bar: { baz: 33 }, quux: 5 },
- '$0': 'examples/reflect.js' }
-
-short numbers
--------------
-
-Short numeric `-n5` style arguments work too:
-
- $ node examples/reflect.js -n123 -m456
- { _: [], n: 123, m: 456, '$0': 'examples/reflect.js' }
-
-installation
-============
-
-With [npm](https://github.com/npm/npm), just do:
-
- npm install yargs
-
-or clone this project on github:
-
- git clone http://github.com/yargs/yargs.git
-
-To run the tests with npm, just do:
-
- npm test
-
-configuration
-=============
-
-Using the `yargs` stanza in your `package.json` you can turn on and off
-some of yargs' parsing features:
-
-```json
-{
- "yargs": {
- "short-option-groups": true,
- "camel-case-expansion": true,
- "dot-notation": true,
- "parse-numbers": true,
- "boolean-negation": true
- }
-}
-```
+Having problems? want to contribute? join our [community slack](http://devtoolscommunity.herokuapp.com).
-See the [yargs-parser](https://github.com/yargs/yargs-parser#configuration) module
-for detailed documentation of this feature.
+## Documentation :
-inspired by
-===========
+### Table of Contents
-This module is loosely inspired by Perl's
-[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).
+* [Yargs' API](/docs/api.md)
+* [Examples](/docs/examples.md)
+* [Parsing Tricks](/docs/tricks.md)
+ * [Stop the Parser](/docs/tricks.md#stop)
+ * [Negating Boolean Arguments](/docs/tricks.md#negate)
+ * [Numbers](/docs/tricks.md#numbers)
+ * [Arrays](/docs/tricks.md#arrays)
+ * [Objects](/docs/tricks.md#objects)
+* [Advanced Topics](/docs/advanced.md)
+ * [Composing Your App Using Commands](/docs/advanced.md#commands)
+ * [Building Configurable CLI Apps](/docs/advanced.md#configuration)
+ * [Customizing Yargs' Parser](/docs/advanced.md#customizing)
+* [Contributing](/contributing.md)
[travis-url]: https://travis-ci.org/yargs/yargs
[travis-image]: https://img.shields.io/travis/yargs/yargs/master.svg
@@ -2007,11 +114,9 @@ This module is loosely inspired by Perl's
[coveralls-image]: https://img.shields.io/coveralls/yargs/yargs.svg
[npm-url]: https://www.npmjs.com/package/yargs
[npm-image]: https://img.shields.io/npm/v/yargs.svg
-[windows-url]: https://ci.appveyor.com/project/bcoe/yargs-ljwvf
-[windows-image]: https://img.shields.io/appveyor/ci/bcoe/yargs-ljwvf/master.svg?label=Windows%20Tests
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg
[standard-url]: http://standardjs.com/
[conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg
[conventional-commits-url]: https://conventionalcommits.org/
-[gitter-image]: https://img.shields.io/gitter/room/nwjs/nw.js.svg?maxAge=2592000
-[gitter-url]: https://gitter.im/yargs/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link
+[slack-image]: http://devtoolscommunity.herokuapp.com/badge.svg
+[slack-url]: http://devtoolscommunity.herokuapp.com
diff --git a/node_modules/yargs/completion.sh.hbs b/node_modules/yargs/completion.sh.hbs
deleted file mode 100644
index 14445b8..0000000
--- a/node_modules/yargs/completion.sh.hbs
+++ /dev/null
@@ -1,28 +0,0 @@
-###-begin-{{app_name}}-completions-###
-#
-# yargs command completion script
-#
-# Installation: {{app_path}} completion >> ~/.bashrc
-# or {{app_path}} completion >> ~/.bash_profile on OSX.
-#
-_yargs_completions()
-{
- local cur_word args type_list
-
- cur_word="${COMP_WORDS[COMP_CWORD]}"
- args=("${COMP_WORDS[@]}")
-
- # ask yargs to generate completions.
- type_list=$({{app_path}} --get-yargs-completions "${args[@]}")
-
- COMPREPLY=( $(compgen -W "${type_list}" -- ${cur_word}) )
-
- # if no match was found, fall back to filename completion
- if [ ${#COMPREPLY[@]} -eq 0 ]; then
- COMPREPLY=( $(compgen -f -- "${cur_word}" ) )
- fi
-
- return 0
-}
-complete -F _yargs_completions {{app_name}}
-###-end-{{app_name}}-completions-###
diff --git a/node_modules/yargs/index.js b/node_modules/yargs/index.js
index 37450cf..dfed54b 100644
--- a/node_modules/yargs/index.js
+++ b/node_modules/yargs/index.js
@@ -1,3 +1,4 @@
+'use strict'
// classic singleton yargs API, to use yargs
// without running as a singleton do:
// require('yargs/yargs')(process.argv.slice(2))
@@ -21,7 +22,7 @@ function Argv (processArgs, cwd) {
to get a parsed version of process.argv.
*/
function singletonify (inst) {
- Object.keys(inst).forEach(function (key) {
+ Object.keys(inst).forEach((key) => {
if (key === 'argv') {
Argv.__defineGetter__(key, inst.__lookupGetter__(key))
} else {
diff --git a/node_modules/yargs/lib/apply-extends.js b/node_modules/yargs/lib/apply-extends.js
index ec751b0..1436b65 100644
--- a/node_modules/yargs/lib/apply-extends.js
+++ b/node_modules/yargs/lib/apply-extends.js
@@ -1,13 +1,14 @@
-var fs = require('fs')
-var path = require('path')
-var assign = require('./assign')
-var YError = require('./yerror')
-var previouslyVisitedConfigs = []
+'use strict'
+const fs = require('fs')
+const path = require('path')
+const YError = require('./yerror')
-function checkForCircularExtends (path) {
- if (previouslyVisitedConfigs.indexOf(path) > -1) {
- throw new YError("Circular extended configurations: '" + path + "'.")
+let previouslyVisitedConfigs = []
+
+function checkForCircularExtends (cfgPath) {
+ if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) {
+ throw new YError(`Circular extended configurations: '${cfgPath}'.`)
}
}
@@ -15,27 +16,38 @@ function getPathToDefaultConfig (cwd, pathToExtend) {
return path.resolve(cwd, pathToExtend)
}
-function applyExtends (config, cwd, subKey) {
- var defaultConfig = {}
+function applyExtends (config, cwd) {
+ let defaultConfig = {}
if (config.hasOwnProperty('extends')) {
- var pathToDefault = getPathToDefaultConfig(cwd, config.extends)
+ if (typeof config.extends !== 'string') return defaultConfig
+ const isPath = /\.json|\..*rc$/.test(config.extends)
+ let pathToDefault = null
+ if (!isPath) {
+ try {
+ pathToDefault = require.resolve(config.extends)
+ } catch (err) {
+ // most likely this simply isn't a module.
+ }
+ } else {
+ pathToDefault = getPathToDefaultConfig(cwd, config.extends)
+ }
+ // maybe the module uses key for some other reason,
+ // err on side of caution.
+ if (!pathToDefault && !isPath) return config
checkForCircularExtends(pathToDefault)
previouslyVisitedConfigs.push(pathToDefault)
- delete config.extends
- defaultConfig = JSON.parse(fs.readFileSync(pathToDefault, 'utf8'))
- if (subKey) {
- defaultConfig = defaultConfig[subKey] || {}
- }
- defaultConfig = applyExtends(defaultConfig, path.dirname(pathToDefault), subKey)
+ defaultConfig = isPath ? JSON.parse(fs.readFileSync(pathToDefault, 'utf8')) : require(config.extends)
+ delete config.extends
+ defaultConfig = applyExtends(defaultConfig, path.dirname(pathToDefault))
}
previouslyVisitedConfigs = []
- return assign(defaultConfig, config)
+ return Object.assign({}, defaultConfig, config)
}
module.exports = applyExtends
diff --git a/node_modules/yargs/lib/argsert.js b/node_modules/yargs/lib/argsert.js
index d3e72fc..f310b4e 100644
--- a/node_modules/yargs/lib/argsert.js
+++ b/node_modules/yargs/lib/argsert.js
@@ -1,20 +1,23 @@
+'use strict'
+
+// hoisted due to circular dependency on command.
+module.exports = argsert
const command = require('./command')()
const YError = require('./yerror')
const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']
-
-module.exports = function (expected, callerArguments, length) {
+function argsert (expected, callerArguments, length) {
// TODO: should this eventually raise an exception.
try {
// preface the argument description with "cmd", so
// that we can run it through yargs' command parser.
- var position = 0
- var parsed = {demanded: [], optional: []}
+ let position = 0
+ let parsed = { demanded: [], optional: [] }
if (typeof expected === 'object') {
length = callerArguments
callerArguments = expected
} else {
- parsed = command.parseCommand('cmd ' + expected)
+ parsed = command.parseCommand(`cmd ${expected}`)
}
const args = [].slice.call(callerArguments)
@@ -22,33 +25,27 @@ module.exports = function (expected, callerArguments, length) {
length = length || args.length
if (length < parsed.demanded.length) {
- throw new YError('Not enough arguments provided. Expected ' + parsed.demanded.length +
- ' but received ' + args.length + '.')
+ throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`)
}
const totalCommands = parsed.demanded.length + parsed.optional.length
if (length > totalCommands) {
- throw new YError('Too many arguments provided. Expected max ' + totalCommands +
- ' but received ' + length + '.')
+ throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`)
}
- parsed.demanded.forEach(function (demanded) {
+ parsed.demanded.forEach((demanded) => {
const arg = args.shift()
const observedType = guessType(arg)
- const matchingTypes = demanded.cmd.filter(function (type) {
- return type === observedType || type === '*'
- })
+ const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*')
if (matchingTypes.length === 0) argumentTypeError(observedType, demanded.cmd, position, false)
position += 1
})
- parsed.optional.forEach(function (optional) {
+ parsed.optional.forEach((optional) => {
if (args.length === 0) return
const arg = args.shift()
const observedType = guessType(arg)
- const matchingTypes = optional.cmd.filter(function (type) {
- return type === observedType || type === '*'
- })
+ const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*')
if (matchingTypes.length === 0) argumentTypeError(observedType, optional.cmd, position, true)
position += 1
})
@@ -67,6 +64,5 @@ function guessType (arg) {
}
function argumentTypeError (observedType, allowedTypes, position, optional) {
- throw new YError('Invalid ' + (positionName[position] || 'manyith') + ' argument.' +
- ' Expected ' + allowedTypes.join(' or ') + ' but received ' + observedType + '.')
+ throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`)
}
diff --git a/node_modules/yargs/lib/assign.js b/node_modules/yargs/lib/assign.js
deleted file mode 100644
index 7d5a3ce..0000000
--- a/node_modules/yargs/lib/assign.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// lazy Object.assign logic that only works for merging
-// two objects; eventually we should replace this with Object.assign.
-module.exports = function assign (defaults, configuration) {
- var o = {}
- configuration = configuration || {}
-
- Object.keys(defaults).forEach(function (k) {
- o[k] = defaults[k]
- })
- Object.keys(configuration).forEach(function (k) {
- o[k] = configuration[k]
- })
-
- return o
-}
diff --git a/node_modules/yargs/lib/command.js b/node_modules/yargs/lib/command.js
index c49555a..895423a 100644
--- a/node_modules/yargs/lib/command.js
+++ b/node_modules/yargs/lib/command.js
@@ -1,65 +1,62 @@
-const path = require('path')
+'use strict'
+
const inspect = require('util').inspect
-const camelCase = require('camelcase')
+const isPromise = require('./is-promise')
+const { applyMiddleware, commandMiddlewareFactory } = require('./middleware')
+const path = require('path')
+const Parser = require('yargs-parser')
-const DEFAULT_MARKER = '*'
+const DEFAULT_MARKER = /(^\*)|(^\$0)/
// handles parsing positional arguments,
// and populating argv with said positional
// arguments.
-module.exports = function (yargs, usage, validation) {
+module.exports = function command (yargs, usage, validation, globalMiddleware) {
const self = {}
+ let handlers = {}
+ let aliasMap = {}
+ let defaultCommand
+ globalMiddleware = globalMiddleware || []
+
+ self.addHandler = function addHandler (cmd, description, builder, handler, commandMiddleware) {
+ let aliases = []
+ const middlewares = commandMiddlewareFactory(commandMiddleware)
+ handler = handler || (() => {})
- var handlers = {}
- var aliasMap = {}
- var defaultCommand
- self.addHandler = function (cmd, description, builder, handler) {
- var aliases = []
if (Array.isArray(cmd)) {
aliases = cmd.slice(1)
cmd = cmd[0]
} else if (typeof cmd === 'object') {
- var command = (Array.isArray(cmd.command) || typeof cmd.command === 'string') ? cmd.command : moduleName(cmd)
+ let command = (Array.isArray(cmd.command) || typeof cmd.command === 'string') ? cmd.command : moduleName(cmd)
if (cmd.aliases) command = [].concat(command).concat(cmd.aliases)
- self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler)
+ self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares)
return
}
// allow a module to be provided instead of separate builder and handler
if (typeof builder === 'object' && builder.builder && typeof builder.handler === 'function') {
- self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler)
+ self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares)
return
}
// parse positionals out of cmd string
- var parsedCommand = self.parseCommand(cmd)
+ const parsedCommand = self.parseCommand(cmd)
// remove positional args from aliases only
- aliases = aliases.map(function (alias) {
- return self.parseCommand(alias).cmd
- })
+ aliases = aliases.map(alias => self.parseCommand(alias).cmd)
// check for default and filter out '*''
- var isDefault = false
- var parsedAliases = [parsedCommand.cmd].concat(aliases).filter(function (c) {
- if (c === DEFAULT_MARKER) {
+ let isDefault = false
+ const parsedAliases = [parsedCommand.cmd].concat(aliases).filter((c) => {
+ if (DEFAULT_MARKER.test(c)) {
isDefault = true
return false
}
return true
})
- // short-circuit if default with no aliases
- if (isDefault && parsedAliases.length === 0) {
- defaultCommand = {
- original: cmd.replace(DEFAULT_MARKER, '').trim(),
- handler: handler,
- builder: builder || {},
- demanded: parsedCommand.demanded,
- optional: parsedCommand.optional
- }
- return
- }
+ // standardize on $0 for default command.
+ if (parsedAliases.length === 0 && isDefault) parsedAliases.push('$0')
// shift cmd and aliases after filtering out '*'
if (isDefault) {
@@ -69,7 +66,7 @@ module.exports = function (yargs, usage, validation) {
}
// populate aliasMap
- aliases.forEach(function (alias) {
+ aliases.forEach((alias) => {
aliasMap[alias] = parsedCommand.cmd
})
@@ -79,8 +76,10 @@ module.exports = function (yargs, usage, validation) {
handlers[parsedCommand.cmd] = {
original: cmd,
- handler: handler,
+ description: description,
+ handler,
builder: builder || {},
+ middlewares: middlewares || [],
demanded: parsedCommand.demanded,
optional: parsedCommand.optional
}
@@ -88,16 +87,16 @@ module.exports = function (yargs, usage, validation) {
if (isDefault) defaultCommand = handlers[parsedCommand.cmd]
}
- self.addDirectory = function (dir, context, req, callerFile, opts) {
+ self.addDirectory = function addDirectory (dir, context, req, callerFile, opts) {
opts = opts || {}
// disable recursion to support nested directories of subcommands
if (typeof opts.recurse !== 'boolean') opts.recurse = false
// exclude 'json', 'coffee' from require-directory defaults
if (!Array.isArray(opts.extensions)) opts.extensions = ['js']
// allow consumer to define their own visitor function
- const parentVisit = typeof opts.visit === 'function' ? opts.visit : function (o) { return o }
+ const parentVisit = typeof opts.visit === 'function' ? opts.visit : o => o
// call addHandler via visitor function
- opts.visit = function (obj, joined, filename) {
+ opts.visit = function visit (obj, joined, filename) {
const visited = parentVisit(obj, joined, filename)
// allow consumer to skip modules with their own visitor
if (visited) {
@@ -117,7 +116,7 @@ module.exports = function (yargs, usage, validation) {
// if module was not require()d and no name given, throw error
function moduleName (obj) {
const mod = require('which-module')(obj)
- if (!mod) throw new Error('No command name given for module: ' + inspect(obj))
+ if (!mod) throw new Error(`No command name given for module: ${inspect(obj)}`)
return commandFromFilename(mod.filename)
}
@@ -127,66 +126,62 @@ module.exports = function (yargs, usage, validation) {
}
function extractDesc (obj) {
- for (var keys = ['describe', 'description', 'desc'], i = 0, l = keys.length, test; i < l; i++) {
+ for (let keys = ['describe', 'description', 'desc'], i = 0, l = keys.length, test; i < l; i++) {
test = obj[keys[i]]
if (typeof test === 'string' || typeof test === 'boolean') return test
}
return false
}
- self.parseCommand = function (cmd) {
- var extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' ')
- var splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/)
- var bregex = /\.*[\][<>]/g
- var parsedCommand = {
+ self.parseCommand = function parseCommand (cmd) {
+ const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' ')
+ const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/)
+ const bregex = /\.*[\][<>]/g
+ const parsedCommand = {
cmd: (splitCommand.shift()).replace(bregex, ''),
demanded: [],
optional: []
}
- splitCommand.forEach(function (cmd, i) {
- var variadic = false
+ splitCommand.forEach((cmd, i) => {
+ let variadic = false
cmd = cmd.replace(/\s/g, '')
if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) variadic = true
if (/^\[/.test(cmd)) {
parsedCommand.optional.push({
cmd: cmd.replace(bregex, '').split('|'),
- variadic: variadic
+ variadic
})
} else {
parsedCommand.demanded.push({
cmd: cmd.replace(bregex, '').split('|'),
- variadic: variadic
+ variadic
})
}
})
return parsedCommand
}
- self.getCommands = function () {
- return Object.keys(handlers).concat(Object.keys(aliasMap))
- }
+ self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap))
- self.getCommandHandlers = function () {
- return handlers
- }
+ self.getCommandHandlers = () => handlers
- self.hasDefaultCommand = function () {
- return !!defaultCommand
- }
+ self.hasDefaultCommand = () => !!defaultCommand
- self.runCommand = function (command, yargs, parsed) {
- var aliases = parsed.aliases
- var commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand
- var currentContext = yargs.getContext()
- var numFiles = currentContext.files.length
- var parentCommands = currentContext.commands.slice()
+ self.runCommand = function runCommand (command, yargs, parsed, commandIndex) {
+ let aliases = parsed.aliases
+ const commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand
+ const currentContext = yargs.getContext()
+ let numFiles = currentContext.files.length
+ const parentCommands = currentContext.commands.slice()
// what does yargs look like after the buidler is run?
- var innerArgv = parsed.argv
- var innerYargs = null
- var positionalMap = {}
-
- if (command) currentContext.commands.push(command)
+ let innerArgv = parsed.argv
+ let innerYargs = null
+ let positionalMap = {}
+ if (command) {
+ currentContext.commands.push(command)
+ currentContext.fullCommands.push(commandHandler.original)
+ }
if (typeof commandHandler.builder === 'function') {
// a function can be provided, which builds
// up a yargs chain and possibly returns it.
@@ -196,10 +191,13 @@ module.exports = function (yargs, usage, validation) {
// original command string as usage() for consistent behavior with
// options object below.
if (yargs.parsed === false) {
- if (typeof yargs.getUsageInstance().getUsage() === 'undefined') {
- yargs.usage('$0 ' + (parentCommands.length ? parentCommands.join(' ') + ' ' : '') + commandHandler.original)
+ if (shouldUpdateUsage(yargs)) {
+ yargs.getUsageInstance().usage(
+ usageFromParentCommandsCommandHandler(parentCommands, commandHandler),
+ commandHandler.description
+ )
}
- innerArgv = innerYargs ? innerYargs._parseArgs(null, null, true) : yargs._parseArgs(null, null, true)
+ innerArgv = innerYargs ? innerYargs._parseArgs(null, null, true, commandIndex) : yargs._parseArgs(null, null, true, commandIndex)
} else {
innerArgv = yargs.parsed.argv
}
@@ -210,11 +208,16 @@ module.exports = function (yargs, usage, validation) {
// as a short hand, an object can instead be provided, specifying
// the options that a command takes.
innerYargs = yargs.reset(parsed.aliases)
- innerYargs.usage('$0 ' + (parentCommands.length ? parentCommands.join(' ') + ' ' : '') + commandHandler.original)
- Object.keys(commandHandler.builder).forEach(function (key) {
+ if (shouldUpdateUsage(innerYargs)) {
+ innerYargs.getUsageInstance().usage(
+ usageFromParentCommandsCommandHandler(parentCommands, commandHandler),
+ commandHandler.description
+ )
+ }
+ Object.keys(commandHandler.builder).forEach((key) => {
innerYargs.option(key, commandHandler.builder[key])
})
- innerArgv = innerYargs._parseArgs(null, null, true)
+ innerArgv = innerYargs._parseArgs(null, null, true, commandIndex)
aliases = innerYargs.parsed.aliases
}
@@ -222,90 +225,190 @@ module.exports = function (yargs, usage, validation) {
positionalMap = populatePositionals(commandHandler, innerArgv, currentContext, yargs)
}
+ const middlewares = globalMiddleware.slice(0).concat(commandHandler.middlewares || [])
+ applyMiddleware(innerArgv, yargs, middlewares, true)
+
// we apply validation post-hoc, so that custom
// checks get passed populated positional arguments.
if (!yargs._hasOutput()) yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error)
if (commandHandler.handler && !yargs._hasOutput()) {
yargs._setHasOutput()
- commandHandler.handler(innerArgv)
+
+ innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false)
+
+ const handlerResult = isPromise(innerArgv)
+ ? innerArgv.then(argv => commandHandler.handler(argv))
+ : commandHandler.handler(innerArgv)
+
+ if (isPromise(handlerResult)) {
+ handlerResult.catch(error =>
+ yargs.getUsageInstance().fail(null, error)
+ )
+ }
}
- if (command) currentContext.commands.pop()
+ if (command) {
+ currentContext.commands.pop()
+ currentContext.fullCommands.pop()
+ }
numFiles = currentContext.files.length - numFiles
if (numFiles > 0) currentContext.files.splice(numFiles * -1, numFiles)
return innerArgv
}
+ function shouldUpdateUsage (yargs) {
+ return !yargs.getUsageInstance().getUsageDisabled() &&
+ yargs.getUsageInstance().getUsage().length === 0
+ }
+
+ function usageFromParentCommandsCommandHandler (parentCommands, commandHandler) {
+ const c = DEFAULT_MARKER.test(commandHandler.original) ? commandHandler.original.replace(DEFAULT_MARKER, '').trim() : commandHandler.original
+ const pc = parentCommands.filter((c) => { return !DEFAULT_MARKER.test(c) })
+ pc.push(c)
+ return `$0 ${pc.join(' ')}`
+ }
+
+ self.runDefaultBuilderOn = function (yargs) {
+ if (shouldUpdateUsage(yargs)) {
+ // build the root-level command string from the default string.
+ const commandString = DEFAULT_MARKER.test(defaultCommand.original)
+ ? defaultCommand.original : defaultCommand.original.replace(/^[^[\]<>]*/, '$0 ')
+ yargs.getUsageInstance().usage(
+ commandString,
+ defaultCommand.description
+ )
+ }
+ const builder = defaultCommand.builder
+ if (typeof builder === 'function') {
+ builder(yargs)
+ } else {
+ Object.keys(builder).forEach((key) => {
+ yargs.option(key, builder[key])
+ })
+ }
+ }
+
// transcribe all positional arguments "command <foo> <bar> [apple]"
// onto argv.
function populatePositionals (commandHandler, argv, context, yargs) {
argv._ = argv._.slice(context.commands.length) // nuke the current commands
- var demanded = commandHandler.demanded.slice(0)
- var optional = commandHandler.optional.slice(0)
- var positionalMap = {}
+ const demanded = commandHandler.demanded.slice(0)
+ const optional = commandHandler.optional.slice(0)
+ const positionalMap = {}
validation.positionalCount(demanded.length, argv._.length)
while (demanded.length) {
- var demand = demanded.shift()
- populatePositional(demand, argv, yargs, positionalMap)
+ const demand = demanded.shift()
+ populatePositional(demand, argv, positionalMap)
}
while (optional.length) {
- var maybe = optional.shift()
- populatePositional(maybe, argv, yargs, positionalMap)
+ const maybe = optional.shift()
+ populatePositional(maybe, argv, positionalMap)
}
argv._ = context.commands.concat(argv._)
+
+ postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original))
+
return positionalMap
}
- // populate a single positional argument and its
- // aliases onto argv.
- function populatePositional (positional, argv, yargs, positionalMap) {
- // "positional" consists of the positional.cmd, an array representing
- // the positional's name and aliases, and positional.variadic
- // indicating whether or not it is a variadic array.
- var variadics = null
- var value = null
- for (var i = 0, cmd; (cmd = positional.cmd[i]) !== undefined; i++) {
- if (positional.variadic) {
- if (variadics) argv[cmd] = variadics.slice(0)
- else argv[cmd] = variadics = argv._.splice(0)
- } else {
- if (!value && !argv._.length) continue
- if (value) argv[cmd] = value
- else argv[cmd] = value = argv._.shift()
- }
- positionalMap[cmd] = true
- postProcessPositional(yargs, argv, cmd)
- addCamelCaseExpansions(argv, cmd)
+ function populatePositional (positional, argv, positionalMap, parseOptions) {
+ const cmd = positional.cmd[0]
+ if (positional.variadic) {
+ positionalMap[cmd] = argv._.splice(0).map(String)
+ } else {
+ if (argv._.length) positionalMap[cmd] = [String(argv._.shift())]
}
}
- // TODO move positional arg logic to yargs-parser and remove this duplication
- function postProcessPositional (yargs, argv, key) {
- var coerce = yargs.getOptions().coerce[key]
- if (typeof coerce === 'function') {
- try {
- argv[key] = coerce(argv[key])
- } catch (err) {
- yargs.getUsageInstance().fail(err.message, err)
- }
+ // we run yargs-parser against the positional arguments
+ // applying the same parsing logic used for flags.
+ function postProcessPositionals (argv, positionalMap, parseOptions) {
+ // combine the parsing hints we've inferred from the command
+ // string with explicitly configured parsing hints.
+ const options = Object.assign({}, yargs.getOptions())
+ options.default = Object.assign(parseOptions.default, options.default)
+ options.alias = Object.assign(parseOptions.alias, options.alias)
+ options.array = options.array.concat(parseOptions.array)
+ delete options.config // don't load config when processing positionals.
+
+ const unparsed = []
+ Object.keys(positionalMap).forEach((key) => {
+ positionalMap[key].map((value) => {
+ unparsed.push(`--${key}`)
+ unparsed.push(value)
+ })
+ })
+
+ // short-circuit parse.
+ if (!unparsed.length) return
+
+ const parsed = Parser.detailed(unparsed, options)
+
+ if (parsed.error) {
+ yargs.getUsageInstance().fail(parsed.error.message, parsed.error)
+ } else {
+ // only copy over positional keys (don't overwrite
+ // flag arguments that were already parsed).
+ const positionalKeys = Object.keys(positionalMap)
+ Object.keys(positionalMap).forEach((key) => {
+ [].push.apply(positionalKeys, parsed.aliases[key])
+ })
+
+ Object.keys(parsed.argv).forEach((key) => {
+ if (positionalKeys.indexOf(key) !== -1) {
+ // any new aliases need to be placed in positionalMap, which
+ // is used for validation.
+ if (!positionalMap[key]) positionalMap[key] = parsed.argv[key]
+ argv[key] = parsed.argv[key]
+ }
+ })
}
}
- function addCamelCaseExpansions (argv, option) {
- if (/-/.test(option)) {
- const cc = camelCase(option)
- if (typeof argv[option] === 'object') argv[cc] = argv[option].slice(0)
- else argv[cc] = argv[option]
+ self.cmdToParseOptions = function (cmdString) {
+ const parseOptions = {
+ array: [],
+ default: {},
+ alias: {},
+ demand: {}
}
+
+ const parsed = self.parseCommand(cmdString)
+ parsed.demanded.forEach((d) => {
+ const cmds = d.cmd.slice(0)
+ const cmd = cmds.shift()
+ if (d.variadic) {
+ parseOptions.array.push(cmd)
+ parseOptions.default[cmd] = []
+ }
+ cmds.forEach((c) => {
+ parseOptions.alias[cmd] = c
+ })
+ parseOptions.demand[cmd] = true
+ })
+
+ parsed.optional.forEach((o) => {
+ const cmds = o.cmd.slice(0)
+ const cmd = cmds.shift()
+ if (o.variadic) {
+ parseOptions.array.push(cmd)
+ parseOptions.default[cmd] = []
+ }
+ cmds.forEach((c) => {
+ parseOptions.alias[cmd] = c
+ })
+ })
+
+ return parseOptions
}
- self.reset = function () {
+ self.reset = () => {
handlers = {}
aliasMap = {}
defaultCommand = undefined
@@ -316,14 +419,14 @@ module.exports = function (yargs, usage, validation) {
// the state of commands such that
// we can apply .parse() multiple times
// with the same yargs instance.
- var frozen
- self.freeze = function () {
+ let frozen
+ self.freeze = () => {
frozen = {}
frozen.handlers = handlers
frozen.aliasMap = aliasMap
frozen.defaultCommand = defaultCommand
}
- self.unfreeze = function () {
+ self.unfreeze = () => {
handlers = frozen.handlers
aliasMap = frozen.aliasMap
defaultCommand = frozen.defaultCommand
diff --git a/node_modules/yargs/lib/completion-templates.js b/node_modules/yargs/lib/completion-templates.js
new file mode 100644
index 0000000..43714fb
--- /dev/null
+++ b/node_modules/yargs/lib/completion-templates.js
@@ -0,0 +1,49 @@
+exports.completionShTemplate =
+`###-begin-{{app_name}}-completions-###
+#
+# yargs command completion script
+#
+# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc
+# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.
+#
+_yargs_completions()
+{
+ local cur_word args type_list
+
+ cur_word="\${COMP_WORDS[COMP_CWORD]}"
+ args=("\${COMP_WORDS[@]}")
+
+ # ask yargs to generate completions.
+ type_list=$({{app_path}} --get-yargs-completions "\${args[@]}")
+
+ COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) )
+
+ # if no match was found, fall back to filename completion
+ if [ \${#COMPREPLY[@]} -eq 0 ]; then
+ COMPREPLY=()
+ fi
+
+ return 0
+}
+complete -o default -F _yargs_completions {{app_name}}
+###-end-{{app_name}}-completions-###
+`
+
+exports.completionZshTemplate = `###-begin-{{app_name}}-completions-###
+#
+# yargs command completion script
+#
+# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc
+# or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX.
+#
+_{{app_name}}_yargs_completions()
+{
+ local reply
+ local si=$IFS
+ IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}"))
+ IFS=$si
+ _describe 'values' reply
+}
+compdef _{{app_name}}_yargs_completions {{app_name}}
+###-end-{{app_name}}-completions-###
+`
diff --git a/node_modules/yargs/lib/completion.js b/node_modules/yargs/lib/completion.js
index 5cd9a18..e5cdd58 100644
--- a/node_modules/yargs/lib/completion.js
+++ b/node_modules/yargs/lib/completion.js
@@ -1,33 +1,35 @@
-const fs = require('fs')
+'use strict'
const path = require('path')
// add bash completions to your
// yargs-powered applications.
-module.exports = function (yargs, usage, command) {
+module.exports = function completion (yargs, usage, command) {
const self = {
completionKey: 'get-yargs-completions'
}
+ const zshShell = process.env.SHELL && process.env.SHELL.indexOf('zsh') !== -1
// get a list of completion commands.
// 'args' is the array of strings from the line to be completed
- self.getCompletion = function (args, done) {
+ self.getCompletion = function getCompletion (args, done) {
const completions = []
const current = args.length ? args[args.length - 1] : ''
const argv = yargs.parse(args, true)
const aliases = yargs.parsed.aliases
+ const parentCommands = yargs.getContext().commands
// a custom completion function can be provided
// to completion().
if (completionFunction) {
if (completionFunction.length < 3) {
- var result = completionFunction(current, argv)
+ const result = completionFunction(current, argv)
// promise based completion function.
if (typeof result.then === 'function') {
- return result.then(function (list) {
- process.nextTick(function () { done(list) })
- }).catch(function (err) {
- process.nextTick(function () { throw err })
+ return result.then((list) => {
+ process.nextTick(() => { done(list) })
+ }).catch((err) => {
+ process.nextTick(() => { throw err })
})
}
@@ -35,14 +37,14 @@ module.exports = function (yargs, usage, command) {
return done(result)
} else {
// asynchronous completion function
- return completionFunction(current, argv, function (completions) {
+ return completionFunction(current, argv, (completions) => {
done(completions)
})
}
}
- var handlers = command.getCommandHandlers()
- for (var i = 0, ii = args.length; i < ii; ++i) {
+ const handlers = command.getCommandHandlers()
+ for (let i = 0, ii = args.length; i < ii; ++i) {
if (handlers[args[i]] && handlers[args[i]].builder) {
const builder = handlers[args[i]].builder
if (typeof builder === 'function') {
@@ -53,23 +55,33 @@ module.exports = function (yargs, usage, command) {
}
}
- if (!current.match(/^-/)) {
- usage.getCommands().forEach(function (command) {
- if (args.indexOf(command[0]) === -1) {
- completions.push(command[0])
+ if (!current.match(/^-/) && parentCommands[parentCommands.length - 1] !== current) {
+ usage.getCommands().forEach((usageCommand) => {
+ const commandName = command.parseCommand(usageCommand[0]).cmd
+ if (args.indexOf(commandName) === -1) {
+ if (!zshShell) {
+ completions.push(commandName)
+ } else {
+ const desc = usageCommand[1] || ''
+ completions.push(commandName.replace(/:/g, '\\:') + ':' + desc)
+ }
}
})
}
- if (current.match(/^-/)) {
- Object.keys(yargs.getOptions().key).forEach(function (key) {
+ if (current.match(/^-/) || (current === '' && completions.length === 0)) {
+ const descs = usage.getDescriptions()
+ Object.keys(yargs.getOptions().key).forEach((key) => {
// If the key and its aliases aren't in 'args', add the key to 'completions'
- var keyAndAliases = [key].concat(aliases[key] || [])
- var notInArgs = keyAndAliases.every(function (val) {
- return args.indexOf('--' + val) === -1
- })
+ const keyAndAliases = [key].concat(aliases[key] || [])
+ const notInArgs = keyAndAliases.every(val => args.indexOf(`--${val}`) === -1)
if (notInArgs) {
- completions.push('--' + key)
+ if (!zshShell) {
+ completions.push(`--${key}`)
+ } else {
+ const desc = descs[key] || ''
+ completions.push(`--${key.replace(/:/g, '\\:')}:${desc.replace('__yargsString__:', '')}`)
+ }
}
})
}
@@ -78,25 +90,24 @@ module.exports = function (yargs, usage, command) {
}
// generate the completion script to add to your .bashrc.
- self.generateCompletionScript = function ($0) {
- var script = fs.readFileSync(
- path.resolve(__dirname, '../completion.sh.hbs'),
- 'utf-8'
- )
- var name = path.basename($0)
+ self.generateCompletionScript = function generateCompletionScript ($0, cmd) {
+ const templates = require('./completion-templates')
+ let script = zshShell ? templates.completionZshTemplate : templates.completionShTemplate
+ const name = path.basename($0)
// add ./to applications not yet installed as bin.
- if ($0.match(/\.js$/)) $0 = './' + $0
+ if ($0.match(/\.js$/)) $0 = `./${$0}`
script = script.replace(/{{app_name}}/g, name)
+ script = script.replace(/{{completion_command}}/g, cmd)
return script.replace(/{{app_path}}/g, $0)
}
// register a function to perform your own custom
// completions., this function can be either
// synchrnous or asynchronous.
- var completionFunction = null
- self.registerFunction = function (fn) {
+ let completionFunction = null
+ self.registerFunction = (fn) => {
completionFunction = fn
}
diff --git a/node_modules/mkdirp/node_modules/minimist/LICENSE b/node_modules/yargs/lib/decamelize.js
index ee27ba4..c3a4151 100644
--- a/node_modules/mkdirp/node_modules/minimist/LICENSE
+++ b/node_modules/yargs/lib/decamelize.js
@@ -1,4 +1,7 @@
-This software is released under the MIT license:
+/*
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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
@@ -16,3 +19,14 @@ 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.
+*/
+'use strict'
+
+module.exports = (text, separator) => {
+ separator = typeof separator === 'undefined' ? '_' : separator
+
+ return text
+ .replace(/([a-z\d])([A-Z])/g, `$1${separator}$2`)
+ .replace(/([A-Z]+)([A-Z][a-z\d]+)/g, `$1${separator}$2`)
+ .toLowerCase()
+}
diff --git a/node_modules/yargs/lib/is-promise.js b/node_modules/yargs/lib/is-promise.js
new file mode 100644
index 0000000..0516def
--- /dev/null
+++ b/node_modules/yargs/lib/is-promise.js
@@ -0,0 +1,3 @@
+module.exports = function isPromise (maybePromise) {
+ return maybePromise instanceof Promise
+}
diff --git a/node_modules/yargs/lib/levenshtein.js b/node_modules/yargs/lib/levenshtein.js
index 6ec216f..c66c1ba 100644
--- a/node_modules/yargs/lib/levenshtein.js
+++ b/node_modules/yargs/lib/levenshtein.js
@@ -1,31 +1,42 @@
/*
Copyright (c) 2011 Andrei Mackenzie
-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.
+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.
*/
// levenshtein distance algorithm, pulled from Andrei Mackenzie's MIT licensed.
// gist, which can be found here: https://gist.github.com/andrei-m/982927
-
+'use strict'
// Compute the edit distance between the two given strings
-module.exports = function (a, b) {
+module.exports = function levenshtein (a, b) {
if (a.length === 0) return b.length
if (b.length === 0) return a.length
- var matrix = []
+ const matrix = []
// increment along the first column of each row
- var i
+ let i
for (i = 0; i <= b.length; i++) {
matrix[i] = [i]
}
// increment each column in the first row
- var j
+ let j
for (j = 0; j <= a.length; j++) {
matrix[0][j] = j
}
@@ -37,8 +48,8 @@ module.exports = function (a, b) {
matrix[i][j] = matrix[i - 1][j - 1]
} else {
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
- Math.min(matrix[i][j - 1] + 1, // insertion
- matrix[i - 1][j] + 1)) // deletion
+ Math.min(matrix[i][j - 1] + 1, // insertion
+ matrix[i - 1][j] + 1)) // deletion
}
}
}
diff --git a/node_modules/yargs/lib/middleware.js b/node_modules/yargs/lib/middleware.js
new file mode 100644
index 0000000..9f9c196
--- /dev/null
+++ b/node_modules/yargs/lib/middleware.js
@@ -0,0 +1,65 @@
+'use strict'
+
+// hoisted due to circular dependency on command.
+module.exports = {
+ applyMiddleware,
+ commandMiddlewareFactory,
+ globalMiddlewareFactory
+}
+const isPromise = require('./is-promise')
+const argsert = require('./argsert')
+
+function globalMiddlewareFactory (globalMiddleware, context) {
+ return function (callback, applyBeforeValidation = false) {
+ argsert('<array|function> [boolean]', [callback, applyBeforeValidation], arguments.length)
+ if (Array.isArray(callback)) {
+ for (let i = 0; i < callback.length; i++) {
+ if (typeof callback[i] !== 'function') {
+ throw Error('middleware must be a function')
+ }
+ callback[i].applyBeforeValidation = applyBeforeValidation
+ }
+ Array.prototype.push.apply(globalMiddleware, callback)
+ } else if (typeof callback === 'function') {
+ callback.applyBeforeValidation = applyBeforeValidation
+ globalMiddleware.push(callback)
+ }
+ return context
+ }
+}
+
+function commandMiddlewareFactory (commandMiddleware) {
+ if (!commandMiddleware) return []
+ return commandMiddleware.map(middleware => {
+ middleware.applyBeforeValidation = false
+ return middleware
+ })
+}
+
+function applyMiddleware (argv, yargs, middlewares, beforeValidation) {
+ const beforeValidationError = new Error('middleware cannot return a promise when applyBeforeValidation is true')
+ return middlewares
+ .reduce((accumulation, middleware) => {
+ if (middleware.applyBeforeValidation !== beforeValidation &&
+ !isPromise(accumulation)) {
+ return accumulation
+ }
+
+ if (isPromise(accumulation)) {
+ return accumulation
+ .then(initialObj =>
+ Promise.all([initialObj, middleware(initialObj, yargs)])
+ )
+ .then(([initialObj, middlewareObj]) =>
+ Object.assign(initialObj, middlewareObj)
+ )
+ } else {
+ const result = middleware(argv, yargs)
+ if (beforeValidation && isPromise(result)) throw beforeValidationError
+
+ return isPromise(result)
+ ? result.then(middlewareObj => Object.assign(accumulation, middlewareObj))
+ : Object.assign(accumulation, result)
+ }
+ }, argv)
+}
diff --git a/node_modules/yargs/lib/obj-filter.js b/node_modules/yargs/lib/obj-filter.js
index 42cb996..c344ac5 100644
--- a/node_modules/yargs/lib/obj-filter.js
+++ b/node_modules/yargs/lib/obj-filter.js
@@ -1,7 +1,8 @@
-module.exports = function (original, filter) {
+'use strict'
+module.exports = function objFilter (original, filter) {
const obj = {}
- filter = filter || function (k, v) { return true }
- Object.keys(original || {}).forEach(function (key) {
+ filter = filter || ((k, v) => true)
+ Object.keys(original || {}).forEach((key) => {
if (filter(key, original[key])) {
obj[key] = original[key]
}
diff --git a/node_modules/yargs/lib/usage.js b/node_modules/yargs/lib/usage.js
index 43f7122..8c3b068 100644
--- a/node_modules/yargs/lib/usage.js
+++ b/node_modules/yargs/lib/usage.js
@@ -1,23 +1,26 @@
+'use strict'
// this file handles outputting usage instructions,
// failures, etc. keeps logging in one place.
+const decamelize = require('./decamelize')
const stringWidth = require('string-width')
const objFilter = require('./obj-filter')
+const path = require('path')
const setBlocking = require('set-blocking')
const YError = require('./yerror')
-module.exports = function (yargs, y18n) {
+module.exports = function usage (yargs, y18n) {
const __ = y18n.__
const self = {}
// methods for ouputting/building failure message.
- var fails = []
- self.failFn = function (f) {
+ const fails = []
+ self.failFn = function failFn (f) {
fails.push(f)
}
- var failMessage = null
- var showHelpOnFail = true
- self.showHelpOnFail = function (enabled, message) {
+ let failMessage = null
+ let showHelpOnFail = true
+ self.showHelpOnFail = function showHelpOnFailFn (enabled, message) {
if (typeof enabled === 'string') {
message = enabled
enabled = true
@@ -29,12 +32,12 @@ module.exports = function (yargs, y18n) {
return self
}
- var failureOutput = false
- self.fail = function (msg, err) {
+ let failureOutput = false
+ self.fail = function fail (msg, err) {
const logger = yargs._getLoggerInstance()
if (fails.length) {
- for (var i = fails.length - 1; i >= 0; --i) {
+ for (let i = fails.length - 1; i >= 0; --i) {
fails[i](msg, err, self)
}
} else {
@@ -43,10 +46,13 @@ module.exports = function (yargs, y18n) {
// don't output failure message more than once
if (!failureOutput) {
failureOutput = true
- if (showHelpOnFail) yargs.showHelp('error')
- if (msg) logger.error(msg)
+ if (showHelpOnFail) {
+ yargs.showHelp('error')
+ logger.error()
+ }
+ if (msg || err) logger.error(msg || err)
if (failMessage) {
- if (msg) logger.error('')
+ if (msg || err) logger.error('')
logger.error(failMessage)
}
}
@@ -63,56 +69,67 @@ module.exports = function (yargs, y18n) {
}
// methods for ouputting/building help (usage) message.
- var usage
- self.usage = function (msg) {
- usage = msg
+ let usages = []
+ let usageDisabled = false
+ self.usage = (msg, description) => {
+ if (msg === null) {
+ usageDisabled = true
+ usages = []
+ return
+ }
+ usageDisabled = false
+ usages.push([msg, description || ''])
+ return self
+ }
+ self.getUsage = () => {
+ return usages
}
- self.getUsage = function () {
- return usage
+ self.getUsageDisabled = () => {
+ return usageDisabled
}
- var examples = []
- self.example = function (cmd, description) {
+ self.getPositionalGroupName = () => {
+ return __('Positionals:')
+ }
+
+ let examples = []
+ self.example = (cmd, description) => {
examples.push([cmd, description || ''])
}
- var commands = []
- self.command = function (cmd, description, isDefault, aliases) {
+ let commands = []
+ self.command = function command (cmd, description, isDefault, aliases) {
// the last default wins, so cancel out any previously set default
if (isDefault) {
- commands = commands.map(function (cmdArray) {
+ commands = commands.map((cmdArray) => {
cmdArray[2] = false
return cmdArray
})
}
commands.push([cmd, description || '', isDefault, aliases])
}
- self.getCommands = function () {
- return commands
- }
+ self.getCommands = () => commands
- var descriptions = {}
- self.describe = function (key, desc) {
+ let descriptions = {}
+ self.describe = function describe (key, desc) {
if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
+ Object.keys(key).forEach((k) => {
self.describe(k, key[k])
})
} else {
descriptions[key] = desc
}
}
- self.getDescriptions = function () {
- return descriptions
- }
+ self.getDescriptions = () => descriptions
- var epilog
- self.epilog = function (msg) {
+ let epilog
+ self.epilog = (msg) => {
epilog = msg
}
- var wrapSet = false
- var wrap
- self.wrap = function (cols) {
+ let wrapSet = false
+ let wrap
+ self.wrap = (cols) => {
wrapSet = true
wrap = cols
}
@@ -126,41 +143,58 @@ module.exports = function (yargs, y18n) {
return wrap
}
- var deferY18nLookupPrefix = '__yargsString__:'
- self.deferY18nLookup = function (str) {
- return deferY18nLookupPrefix + str
- }
+ const deferY18nLookupPrefix = '__yargsString__:'
+ self.deferY18nLookup = str => deferY18nLookupPrefix + str
- var defaultGroup = 'Options:'
- self.help = function () {
+ const defaultGroup = 'Options:'
+ self.help = function help () {
normalizeAliases()
// handle old demanded API
- var demandedOptions = yargs.getDemandedOptions()
- var demandedCommands = yargs.getDemandedCommands()
- var groups = yargs.getGroups()
- var options = yargs.getOptions()
- var keys = Object.keys(
- Object.keys(descriptions)
- .concat(Object.keys(demandedOptions))
- .concat(Object.keys(demandedCommands))
- .concat(Object.keys(options.default))
- .reduce(function (acc, key) {
- if (key !== '_') acc[key] = true
- return acc
- }, {})
- )
-
- var theWrap = getWrap()
- var ui = require('cliui')({
+ const base$0 = path.basename(yargs.$0)
+ const demandedOptions = yargs.getDemandedOptions()
+ const demandedCommands = yargs.getDemandedCommands()
+ const groups = yargs.getGroups()
+ const options = yargs.getOptions()
+
+ let keys = []
+ keys = keys.concat(Object.keys(descriptions))
+ keys = keys.concat(Object.keys(demandedOptions))
+ keys = keys.concat(Object.keys(demandedCommands))
+ keys = keys.concat(Object.keys(options.default))
+ keys = keys.filter(filterHiddenOptions)
+ keys = Object.keys(keys.reduce((acc, key) => {
+ if (key !== '_') acc[key] = true
+ return acc
+ }, {}))
+
+ const theWrap = getWrap()
+ const ui = require('cliui')({
width: theWrap,
wrap: !!theWrap
})
// the usage string.
- if (usage) {
- var u = usage.replace(/\$0/g, yargs.$0)
- ui.div(u + '\n')
+ if (!usageDisabled) {
+ if (usages.length) {
+ // user-defined usage.
+ usages.forEach((usage) => {
+ ui.div(`${usage[0].replace(/\$0/g, base$0)}`)
+ if (usage[1]) {
+ ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] })
+ }
+ })
+ ui.div()
+ } else if (commands.length) {
+ let u = null
+ // demonstrate how commands are used.
+ if (demandedCommands._) {
+ u = `${base$0} <${__('command')}>\n`
+ } else {
+ u = `${base$0} [${__('command')}]\n`
+ }
+ ui.div(`${u}`)
+ }
}
// your application's commands, i.e., non-option
@@ -168,18 +202,30 @@ module.exports = function (yargs, y18n) {
if (commands.length) {
ui.div(__('Commands:'))
- commands.forEach(function (command) {
+ const context = yargs.getContext()
+ const parentCommands = context.commands.length ? `${context.commands.join(' ')} ` : ''
+
+ if (yargs.getParserConfiguration()['sort-commands'] === true) {
+ commands = commands.sort((a, b) => a[0].localeCompare(b[0]))
+ }
+
+ commands.forEach((command) => {
+ const commandString = `${base$0} ${parentCommands}${command[0].replace(/^\$0 ?/, '')}` // drop $0 from default commands.
ui.span(
- {text: command[0], padding: [0, 2, 0, 2], width: maxWidth(commands, theWrap) + 4},
- {text: command[1]}
+ {
+ text: commandString,
+ padding: [0, 2, 0, 2],
+ width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4
+ },
+ { text: command[1] }
)
- var hints = []
- if (command[2]) hints.push('[' + __('default:').slice(0, -1) + ']') // TODO hacking around i18n here
+ const hints = []
+ if (command[2]) hints.push(`[${__('default:').slice(0, -1)}]`) // TODO hacking around i18n here
if (command[3] && command[3].length) {
- hints.push('[' + __('aliases:') + ' ' + command[3].join(', ') + ']')
+ hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`)
}
if (hints.length) {
- ui.div({text: hints.join(' '), padding: [0, 0, 0, 2], align: 'right'})
+ ui.div({ text: hints.join(' '), padding: [0, 0, 0, 2], align: 'right' })
} else {
ui.div()
}
@@ -190,14 +236,10 @@ module.exports = function (yargs, y18n) {
// perform some cleanup on the keys array, making it
// only include top-level keys not their aliases.
- var aliasKeys = (Object.keys(options.alias) || [])
+ const aliasKeys = (Object.keys(options.alias) || [])
.concat(Object.keys(yargs.parsed.newAliases) || [])
- keys = keys.filter(function (key) {
- return !yargs.parsed.newAliases[key] && aliasKeys.every(function (alias) {
- return (options.alias[alias] || []).indexOf(key) === -1
- })
- })
+ keys = keys.filter(key => !yargs.parsed.newAliases[key] && aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1))
// populate 'Options:' group with any keys that have not
// explicitly had a group set.
@@ -205,60 +247,65 @@ module.exports = function (yargs, y18n) {
addUngroupedKeys(keys, options.alias, groups)
// display 'Options:' table along with any custom tables:
- Object.keys(groups).forEach(function (groupName) {
+ Object.keys(groups).forEach((groupName) => {
if (!groups[groupName].length) return
- ui.div(__(groupName))
-
// if we've grouped the key 'f', but 'f' aliases 'foobar',
// normalizedKeys should contain only 'foobar'.
- var normalizedKeys = groups[groupName].map(function (key) {
+ const normalizedKeys = groups[groupName].filter(filterHiddenOptions).map((key) => {
if (~aliasKeys.indexOf(key)) return key
- for (var i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {
+ for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {
if (~(options.alias[aliasKey] || []).indexOf(key)) return aliasKey
}
return key
})
+ if (normalizedKeys.length < 1) return
+
+ ui.div(__(groupName))
+
// actually generate the switches string --foo, -f, --bar.
- var switches = normalizedKeys.reduce(function (acc, key) {
+ const switches = normalizedKeys.reduce((acc, key) => {
acc[key] = [ key ].concat(options.alias[key] || [])
- .map(function (sw) {
- return (sw.length > 1 ? '--' : '-') + sw
+ .map(sw => {
+ // for the special positional group don't
+ // add '--' or '-' prefix.
+ if (groupName === self.getPositionalGroupName()) return sw
+ else return (sw.length > 1 ? '--' : '-') + sw
})
.join(', ')
return acc
}, {})
- normalizedKeys.forEach(function (key) {
- var kswitch = switches[key]
- var desc = descriptions[key] || ''
- var type = null
+ normalizedKeys.forEach((key) => {
+ const kswitch = switches[key]
+ let desc = descriptions[key] || ''
+ let type = null
if (~desc.lastIndexOf(deferY18nLookupPrefix)) desc = __(desc.substring(deferY18nLookupPrefix.length))
- if (~options.boolean.indexOf(key)) type = '[' + __('boolean') + ']'
- if (~options.count.indexOf(key)) type = '[' + __('count') + ']'
- if (~options.string.indexOf(key)) type = '[' + __('string') + ']'
- if (~options.normalize.indexOf(key)) type = '[' + __('string') + ']'
- if (~options.array.indexOf(key)) type = '[' + __('array') + ']'
- if (~options.number.indexOf(key)) type = '[' + __('number') + ']'
+ if (~options.boolean.indexOf(key)) type = `[${__('boolean')}]`
+ if (~options.count.indexOf(key)) type = `[${__('count')}]`
+ if (~options.string.indexOf(key)) type = `[${__('string')}]`
+ if (~options.normalize.indexOf(key)) type = `[${__('string')}]`
+ if (~options.array.indexOf(key)) type = `[${__('array')}]`
+ if (~options.number.indexOf(key)) type = `[${__('number')}]`
- var extra = [
+ const extra = [
type,
- (key in demandedOptions) ? '[' + __('required') + ']' : null,
- options.choices && options.choices[key] ? '[' + __('choices:') + ' ' +
- self.stringifiedValues(options.choices[key]) + ']' : null,
+ (key in demandedOptions) ? `[${__('required')}]` : null,
+ options.choices && options.choices[key] ? `[${__('choices:')} ${
+ self.stringifiedValues(options.choices[key])}]` : null,
defaultString(options.default[key], options.defaultDescription[key])
].filter(Boolean).join(' ')
ui.span(
- {text: kswitch, padding: [0, 2, 0, 2], width: maxWidth(switches, theWrap) + 4},
+ { text: kswitch, padding: [0, 2, 0, 2], width: maxWidth(switches, theWrap) + 4 },
desc
)
- if (extra) ui.div({text: extra, padding: [0, 0, 0, 2], align: 'right'})
+ if (extra) ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' })
else ui.div()
})
@@ -269,11 +316,11 @@ module.exports = function (yargs, y18n) {
if (examples.length) {
ui.div(__('Examples:'))
- examples.forEach(function (example) {
- example[0] = example[0].replace(/\$0/g, yargs.$0)
+ examples.forEach((example) => {
+ example[0] = example[0].replace(/\$0/g, base$0)
})
- examples.forEach(function (example) {
+ examples.forEach((example) => {
if (example[1] === '') {
ui.div(
{
@@ -299,28 +346,30 @@ module.exports = function (yargs, y18n) {
// the usage string.
if (epilog) {
- var e = epilog.replace(/\$0/g, yargs.$0)
- ui.div(e + '\n')
+ const e = epilog.replace(/\$0/g, base$0)
+ ui.div(`${e}\n`)
}
- return ui.toString()
+ // Remove the trailing white spaces
+ return ui.toString().replace(/\s*$/, '')
}
// return the maximum width of a string
// in the left-hand column of a table.
- function maxWidth (table, theWrap) {
- var width = 0
+ function maxWidth (table, theWrap, modifier) {
+ let width = 0
// table might be of the form [leftColumn],
// or {key: leftColumn}
if (!Array.isArray(table)) {
- table = Object.keys(table).map(function (key) {
- return [table[key]]
- })
+ table = Object.keys(table).map(key => [table[key]])
}
- table.forEach(function (v) {
- width = Math.max(stringWidth(v[0]), width)
+ table.forEach((v) => {
+ width = Math.max(
+ stringWidth(modifier ? `${modifier} ${v[0]}` : v[0]),
+ width
+ )
})
// if we've enabled 'wrap' we should limit
@@ -334,11 +383,11 @@ module.exports = function (yargs, y18n) {
// are copied to the keys being aliased.
function normalizeAliases () {
// handle old demanded API
- var demandedOptions = yargs.getDemandedOptions()
- var options = yargs.getOptions()
+ const demandedOptions = yargs.getDemandedOptions()
+ const options = yargs.getOptions()
- ;(Object.keys(options.alias) || []).forEach(function (key) {
- options.alias[key].forEach(function (alias) {
+ ;(Object.keys(options.alias) || []).forEach((key) => {
+ options.alias[key].forEach((alias) => {
// copy descriptions.
if (descriptions[alias]) self.describe(key, descriptions[alias])
// copy demanded.
@@ -357,43 +406,45 @@ module.exports = function (yargs, y18n) {
// given a set of keys, place any keys that are
// ungrouped under the 'Options:' grouping.
function addUngroupedKeys (keys, aliases, groups) {
- var groupedKeys = []
- var toCheck = null
- Object.keys(groups).forEach(function (group) {
+ let groupedKeys = []
+ let toCheck = null
+ Object.keys(groups).forEach((group) => {
groupedKeys = groupedKeys.concat(groups[group])
})
- keys.forEach(function (key) {
+ keys.forEach((key) => {
toCheck = [key].concat(aliases[key])
- if (!toCheck.some(function (k) {
- return groupedKeys.indexOf(k) !== -1
- })) {
+ if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) {
groups[defaultGroup].push(key)
}
})
return groupedKeys
}
- self.showHelp = function (level) {
+ function filterHiddenOptions (key) {
+ return yargs.getOptions().hiddenOptions.indexOf(key) < 0 || yargs.parsed.argv[yargs.getOptions().showHiddenOpt]
+ }
+
+ self.showHelp = (level) => {
const logger = yargs._getLoggerInstance()
if (!level) level = 'error'
- var emit = typeof level === 'function' ? level : logger[level]
+ const emit = typeof level === 'function' ? level : logger[level]
emit(self.help())
}
- self.functionDescription = function (fn) {
- var description = fn.name ? require('decamelize')(fn.name, '-') : __('generated-value')
+ self.functionDescription = (fn) => {
+ const description = fn.name ? decamelize(fn.name, '-') : __('generated-value')
return ['(', description, ')'].join('')
}
- self.stringifiedValues = function (values, separator) {
- var string = ''
- var sep = separator || ', '
- var array = [].concat(values)
+ self.stringifiedValues = function stringifiedValues (values, separator) {
+ let string = ''
+ const sep = separator || ', '
+ const array = [].concat(values)
if (!values || !array.length) return string
- array.forEach(function (value) {
+ array.forEach((value) => {
if (string.length) string += sep
string += JSON.stringify(value)
})
@@ -404,7 +455,7 @@ module.exports = function (yargs, y18n) {
// format the default-value-string displayed in
// the right-hand column.
function defaultString (value, defaultDescription) {
- var string = '[' + __('default:') + ' '
+ let string = `[${__('default:')} `
if (value === undefined && !defaultDescription) return null
@@ -413,7 +464,7 @@ module.exports = function (yargs, y18n) {
} else {
switch (typeof value) {
case 'string':
- string += JSON.stringify(value)
+ string += `"${value}"`
break
case 'object':
string += JSON.stringify(value)
@@ -423,12 +474,12 @@ module.exports = function (yargs, y18n) {
}
}
- return string + ']'
+ return `${string}]`
}
// guess the width of the console window, max-width 80.
function windowWidth () {
- var maxWidth = 80
+ const maxWidth = 80
if (typeof process === 'object' && process.stdout && process.stdout.columns) {
return Math.min(maxWidth, process.stdout.columns)
} else {
@@ -437,47 +488,47 @@ module.exports = function (yargs, y18n) {
}
// logic for displaying application version.
- var version = null
- self.version = function (ver) {
+ let version = null
+ self.version = (ver) => {
version = ver
}
- self.showVersion = function () {
+ self.showVersion = () => {
const logger = yargs._getLoggerInstance()
- if (typeof version === 'function') logger.log(version())
- else logger.log(version)
+ logger.log(version)
}
- self.reset = function (localLookup) {
+ self.reset = function reset (localLookup) {
// do not reset wrap here
// do not reset fails here
failMessage = null
failureOutput = false
- usage = undefined
+ usages = []
+ usageDisabled = false
epilog = undefined
examples = []
commands = []
- descriptions = objFilter(descriptions, function (k, v) {
- return !localLookup[k]
- })
+ descriptions = objFilter(descriptions, (k, v) => !localLookup[k])
return self
}
- var frozen
- self.freeze = function () {
+ let frozen
+ self.freeze = function freeze () {
frozen = {}
frozen.failMessage = failMessage
frozen.failureOutput = failureOutput
- frozen.usage = usage
+ frozen.usages = usages
+ frozen.usageDisabled = usageDisabled
frozen.epilog = epilog
frozen.examples = examples
frozen.commands = commands
frozen.descriptions = descriptions
}
- self.unfreeze = function () {
+ self.unfreeze = function unfreeze () {
failMessage = frozen.failMessage
failureOutput = frozen.failureOutput
- usage = frozen.usage
+ usages = frozen.usages
+ usageDisabled = frozen.usageDisabled
epilog = frozen.epilog
examples = frozen.examples
commands = frozen.commands
diff --git a/node_modules/yargs/lib/validation.js b/node_modules/yargs/lib/validation.js
index 0c2502f..e9bbb12 100644
--- a/node_modules/yargs/lib/validation.js
+++ b/node_modules/yargs/lib/validation.js
@@ -1,15 +1,18 @@
+'use strict'
+const argsert = require('./argsert')
const objFilter = require('./obj-filter')
+const specialKeys = ['$0', '--', '_']
// validation-type-stuff, missing params,
// bad implications, custom checks.
-module.exports = function (yargs, usage, y18n) {
+module.exports = function validation (yargs, usage, y18n) {
const __ = y18n.__
const __n = y18n.__n
const self = {}
// validate appropriate # of non-option
// arguments were provided, i.e., '_'.
- self.nonOptionCount = function (argv) {
+ self.nonOptionCount = function nonOptionCount (argv) {
const demandedCommands = yargs.getDemandedCommands()
// don't count currently executing commands
const _s = argv._.length - yargs.getContext().commands.length
@@ -34,7 +37,7 @@ module.exports = function (yargs, usage, y18n) {
)
} else {
usage.fail(
- __('Too many non-option arguments: got %s, maximum of %s', _s, demandedCommands._.max)
+ __('Too many non-option arguments: got %s, maximum of %s', _s, demandedCommands._.max)
)
}
}
@@ -43,7 +46,7 @@ module.exports = function (yargs, usage, y18n) {
// validate the appropriate # of <required>
// positional arguments were provided:
- self.positionalCount = function (required, observed) {
+ self.positionalCount = function positionalCount (required, observed) {
if (observed < required) {
usage.fail(
__('Not enough non-option arguments: got %s, need at least %s', observed, required)
@@ -51,44 +54,12 @@ module.exports = function (yargs, usage, y18n) {
}
}
- // make sure that any args that require an
- // value (--foo=bar), have a value.
- self.missingArgumentValue = function (argv) {
- const defaultValues = [true, false, '']
- const options = yargs.getOptions()
-
- if (options.requiresArg.length > 0) {
- const missingRequiredArgs = []
-
- options.requiresArg.forEach(function (key) {
- const value = argv[key]
-
- // if a value is explicitly requested,
- // flag argument as missing if it does not
- // look like foo=bar was entered.
- if (~defaultValues.indexOf(value) ||
- (Array.isArray(value) && !value.length)) {
- missingRequiredArgs.push(key)
- }
- })
-
- if (missingRequiredArgs.length > 0) {
- usage.fail(__n(
- 'Missing argument value: %s',
- 'Missing argument values: %s',
- missingRequiredArgs.length,
- missingRequiredArgs.join(', ')
- ))
- }
- }
- }
-
// make sure all the required arguments are present.
- self.requiredArguments = function (argv) {
+ self.requiredArguments = function requiredArguments (argv) {
const demandedOptions = yargs.getDemandedOptions()
- var missing = null
+ let missing = null
- Object.keys(demandedOptions).forEach(function (key) {
+ Object.keys(demandedOptions).forEach((key) => {
if (!argv.hasOwnProperty(key) || typeof argv[key] === 'undefined') {
missing = missing || {}
missing[key] = demandedOptions[key]
@@ -97,14 +68,14 @@ module.exports = function (yargs, usage, y18n) {
if (missing) {
const customMsgs = []
- Object.keys(missing).forEach(function (key) {
+ Object.keys(missing).forEach((key) => {
const msg = missing[key]
if (msg && customMsgs.indexOf(msg) < 0) {
customMsgs.push(msg)
}
})
- const customMsg = customMsgs.length ? '\n' + customMsgs.join('\n') : ''
+ const customMsg = customMsgs.length ? `\n${customMsgs.join('\n')}` : ''
usage.fail(__n(
'Missing required argument: %s',
@@ -116,33 +87,23 @@ module.exports = function (yargs, usage, y18n) {
}
// check for unknown arguments (strict-mode).
- self.unknownArguments = function (argv, aliases, positionalMap) {
- const aliasLookup = {}
- const descriptions = usage.getDescriptions()
- const demandedOptions = yargs.getDemandedOptions()
+ self.unknownArguments = function unknownArguments (argv, aliases, positionalMap) {
const commandKeys = yargs.getCommandInstance().getCommands()
const unknown = []
const currentContext = yargs.getContext()
- Object.keys(aliases).forEach(function (key) {
- aliases[key].forEach(function (alias) {
- aliasLookup[alias] = key
- })
- })
-
- Object.keys(argv).forEach(function (key) {
- if (key !== '$0' && key !== '_' &&
- !descriptions.hasOwnProperty(key) &&
- !demandedOptions.hasOwnProperty(key) &&
+ Object.keys(argv).forEach((key) => {
+ if (specialKeys.indexOf(key) === -1 &&
!positionalMap.hasOwnProperty(key) &&
!yargs._getParseContext().hasOwnProperty(key) &&
- !aliasLookup.hasOwnProperty(key)) {
+ !aliases.hasOwnProperty(key)
+ ) {
unknown.push(key)
}
})
if (commandKeys.length > 0) {
- argv._.slice(currentContext.commands.length).forEach(function (key) {
+ argv._.slice(currentContext.commands.length).forEach((key) => {
if (commandKeys.indexOf(key) === -1) {
unknown.push(key)
}
@@ -160,18 +121,19 @@ module.exports = function (yargs, usage, y18n) {
}
// validate arguments limited to enumerated choices
- self.limitedChoices = function (argv) {
+ self.limitedChoices = function limitedChoices (argv) {
const options = yargs.getOptions()
const invalid = {}
if (!Object.keys(options.choices).length) return
- Object.keys(argv).forEach(function (key) {
- if (key !== '$0' && key !== '_' &&
+ Object.keys(argv).forEach((key) => {
+ if (specialKeys.indexOf(key) === -1 &&
options.choices.hasOwnProperty(key)) {
- [].concat(argv[key]).forEach(function (value) {
+ [].concat(argv[key]).forEach((value) => {
// TODO case-insensitive configurability
- if (options.choices[key].indexOf(value) === -1) {
+ if (options.choices[key].indexOf(value) === -1 &&
+ value !== undefined) {
invalid[key] = (invalid[key] || []).concat(value)
}
})
@@ -182,31 +144,31 @@ module.exports = function (yargs, usage, y18n) {
if (!invalidKeys.length) return
- var msg = __('Invalid values:')
- invalidKeys.forEach(function (key) {
- msg += '\n ' + __(
+ let msg = __('Invalid values:')
+ invalidKeys.forEach((key) => {
+ msg += `\n ${__(
'Argument: %s, Given: %s, Choices: %s',
key,
usage.stringifiedValues(invalid[key]),
usage.stringifiedValues(options.choices[key])
- )
+ )}`
})
usage.fail(msg)
}
// custom checks, added using the `check` option on yargs.
- var checks = []
- self.check = function (f, global) {
+ let checks = []
+ self.check = function check (f, global) {
checks.push({
func: f,
- global: global
+ global
})
}
- self.customChecks = function (argv, aliases) {
- for (var i = 0, f; (f = checks[i]) !== undefined; i++) {
- var func = f.func
- var result = null
+ self.customChecks = function customChecks (argv, aliases) {
+ for (let i = 0, f; (f = checks[i]) !== undefined; i++) {
+ const func = f.func
+ let result = null
try {
result = func(argv, aliases)
} catch (err) {
@@ -223,107 +185,129 @@ module.exports = function (yargs, usage, y18n) {
}
// check implications, argument foo implies => argument bar.
- var implied = {}
- self.implies = function (key, value) {
+ let implied = {}
+ self.implies = function implies (key, value) {
+ argsert('<string|object> [array|number|string]', [key, value], arguments.length)
+
if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
+ Object.keys(key).forEach((k) => {
self.implies(k, key[k])
})
} else {
yargs.global(key)
- implied[key] = value
+ if (!implied[key]) {
+ implied[key] = []
+ }
+ if (Array.isArray(value)) {
+ value.forEach((i) => self.implies(key, i))
+ } else {
+ implied[key].push(value)
+ }
}
}
- self.getImplied = function () {
+ self.getImplied = function getImplied () {
return implied
}
- self.implications = function (argv) {
+ self.implications = function implications (argv) {
const implyFail = []
- Object.keys(implied).forEach(function (key) {
- var num
+ Object.keys(implied).forEach((key) => {
const origKey = key
- var value = implied[key]
-
- // convert string '1' to number 1
- num = Number(key)
- key = isNaN(num) ? key : num
-
- if (typeof key === 'number') {
- // check length of argv._
- key = argv._.length >= key
- } else if (key.match(/^--no-.+/)) {
- // check if key doesn't exist
- key = key.match(/^--no-(.+)/)[1]
- key = !argv[key]
- } else {
- // check if key exists
- key = argv[key]
- }
-
- num = Number(value)
- value = isNaN(num) ? value : num
+ ;(implied[key] || []).forEach((value) => {
+ let num
+ let key = origKey
+ const origValue = value
+
+ // convert string '1' to number 1
+ num = Number(key)
+ key = isNaN(num) ? key : num
+
+ if (typeof key === 'number') {
+ // check length of argv._
+ key = argv._.length >= key
+ } else if (key.match(/^--no-.+/)) {
+ // check if key doesn't exist
+ key = key.match(/^--no-(.+)/)[1]
+ key = !argv[key]
+ } else {
+ // check if key exists
+ key = argv[key]
+ }
- if (typeof value === 'number') {
- value = argv._.length >= value
- } else if (value.match(/^--no-.+/)) {
- value = value.match(/^--no-(.+)/)[1]
- value = !argv[value]
- } else {
- value = argv[value]
- }
+ num = Number(value)
+ value = isNaN(num) ? value : num
- if (key && !value) {
- implyFail.push(origKey)
- }
+ if (typeof value === 'number') {
+ value = argv._.length >= value
+ } else if (value.match(/^--no-.+/)) {
+ value = value.match(/^--no-(.+)/)[1]
+ value = !argv[value]
+ } else {
+ value = argv[value]
+ }
+ if (key && !value) {
+ implyFail.push(` ${origKey} -> ${origValue}`)
+ }
+ })
})
if (implyFail.length) {
- var msg = __('Implications failed:') + '\n'
+ let msg = `${__('Implications failed:')}\n`
- implyFail.forEach(function (key) {
- msg += (' ' + key + ' -> ' + implied[key])
+ implyFail.forEach((value) => {
+ msg += (value)
})
usage.fail(msg)
}
}
- var conflicting = {}
- self.conflicts = function (key, value) {
+ let conflicting = {}
+ self.conflicts = function conflicts (key, value) {
+ argsert('<string|object> [array|string]', [key, value], arguments.length)
+
if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
+ Object.keys(key).forEach((k) => {
self.conflicts(k, key[k])
})
} else {
yargs.global(key)
- conflicting[key] = value
+ if (!conflicting[key]) {
+ conflicting[key] = []
+ }
+ if (Array.isArray(value)) {
+ value.forEach((i) => self.conflicts(key, i))
+ } else {
+ conflicting[key].push(value)
+ }
}
}
- self.getConflicting = function () {
- return conflicting
- }
-
- self.conflicting = function (argv) {
- var args = Object.getOwnPropertyNames(argv)
-
- args.forEach(function (arg) {
- if (conflicting[arg] && args.indexOf(conflicting[arg]) !== -1) {
- usage.fail(__('Arguments %s and %s are mutually exclusive', arg, conflicting[arg]))
+ self.getConflicting = () => conflicting
+
+ self.conflicting = function conflictingFn (argv) {
+ Object.keys(argv).forEach((key) => {
+ if (conflicting[key]) {
+ conflicting[key].forEach((value) => {
+ // we default keys to 'undefined' that have been configured, we should not
+ // apply conflicting check unless they are a value other than 'undefined'.
+ if (value && argv[key] !== undefined && argv[value] !== undefined) {
+ usage.fail(__('Arguments %s and %s are mutually exclusive', key, value))
+ }
+ })
}
})
}
- self.recommendCommands = function (cmd, potentialCommands) {
+ self.recommendCommands = function recommendCommands (cmd, potentialCommands) {
const distance = require('./levenshtein')
const threshold = 3 // if it takes more than three edits, let's move on.
- potentialCommands = potentialCommands.sort(function (a, b) { return b.length - a.length })
+ potentialCommands = potentialCommands.sort((a, b) => b.length - a.length)
- var recommended = null
- var bestDistance = Infinity
- for (var i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {
- var d = distance(cmd, candidate)
+ let recommended = null
+ let bestDistance = Infinity
+ for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {
+ const d = distance(cmd, candidate)
if (d <= threshold && d < bestDistance) {
bestDistance = d
recommended = candidate
@@ -332,27 +316,21 @@ module.exports = function (yargs, usage, y18n) {
if (recommended) usage.fail(__('Did you mean %s?', recommended))
}
- self.reset = function (localLookup) {
- implied = objFilter(implied, function (k, v) {
- return !localLookup[k]
- })
- conflicting = objFilter(conflicting, function (k, v) {
- return !localLookup[k]
- })
- checks = checks.filter(function (c) {
- return c.global
- })
+ self.reset = function reset (localLookup) {
+ implied = objFilter(implied, (k, v) => !localLookup[k])
+ conflicting = objFilter(conflicting, (k, v) => !localLookup[k])
+ checks = checks.filter(c => c.global)
return self
}
- var frozen
- self.freeze = function () {
+ let frozen
+ self.freeze = function freeze () {
frozen = {}
frozen.implied = implied
frozen.checks = checks
frozen.conflicting = conflicting
}
- self.unfreeze = function () {
+ self.unfreeze = function unfreeze () {
implied = frozen.implied
checks = frozen.checks
conflicting = frozen.conflicting
diff --git a/node_modules/yargs/lib/yerror.js b/node_modules/yargs/lib/yerror.js
index ad96a87..53375a0 100644
--- a/node_modules/yargs/lib/yerror.js
+++ b/node_modules/yargs/lib/yerror.js
@@ -1,3 +1,4 @@
+'use strict'
function YError (msg) {
this.name = 'YError'
this.message = msg || 'yargs error'
diff --git a/node_modules/yargs/locales/de.json b/node_modules/yargs/locales/de.json
index d805710..05d9837 100644
--- a/node_modules/yargs/locales/de.json
+++ b/node_modules/yargs/locales/de.json
@@ -29,7 +29,7 @@
"Invalid values:": "Unzulässige Werte:",
"Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeben: %s, Möglichkeiten: %s",
"Argument check failed: %s": "Argumente-Check fehlgeschlagen: %s",
- "Implications failed:": "Implikationen fehlgeschlagen:",
+ "Implications failed:": "Fehlende abhängige Argumente:",
"Not enough arguments following: %s": "Nicht genügend Argumente nach: %s",
"Invalid JSON config file: %s": "Fehlerhafte JSON-Config Datei: %s",
"Path to JSON config file": "Pfad zur JSON-Config Datei",
diff --git a/node_modules/yargs/locales/en.json b/node_modules/yargs/locales/en.json
index 4a618e7..b32a63f 100644
--- a/node_modules/yargs/locales/en.json
+++ b/node_modules/yargs/locales/en.json
@@ -29,12 +29,14 @@
"Invalid values:": "Invalid values:",
"Argument: %s, Given: %s, Choices: %s": "Argument: %s, Given: %s, Choices: %s",
"Argument check failed: %s": "Argument check failed: %s",
- "Implications failed:": "Implications failed:",
+ "Implications failed:": "Missing dependent arguments:",
"Not enough arguments following: %s": "Not enough arguments following: %s",
"Invalid JSON config file: %s": "Invalid JSON config file: %s",
"Path to JSON config file": "Path to JSON config file",
"Show help": "Show help",
"Show version number": "Show version number",
"Did you mean %s?": "Did you mean %s?",
- "Arguments %s and %s are mutually exclusive" : "Arguments %s and %s are mutually exclusive"
+ "Arguments %s and %s are mutually exclusive" : "Arguments %s and %s are mutually exclusive",
+ "Positionals:": "Positionals:",
+ "command": "command"
}
diff --git a/node_modules/yargs/locales/fr.json b/node_modules/yargs/locales/fr.json
index 481f47e..cf9c74b 100644
--- a/node_modules/yargs/locales/fr.json
+++ b/node_modules/yargs/locales/fr.json
@@ -28,7 +28,7 @@
"Invalid values:": "Valeurs invalides:",
"Argument: %s, Given: %s, Choices: %s": "Argument: %s, Donné: %s, Choix: %s",
"Argument check failed: %s": "Echec de la vérification de l'argument: %s",
- "Implications failed:": "Implications échouées:",
+ "Implications failed:": "Arguments dépendants manquants:",
"Not enough arguments following: %s": "Pas assez d'arguments suivant: %s",
"Invalid JSON config file: %s": "Fichier de configuration JSON invalide: %s",
"Path to JSON config file": "Chemin du fichier de configuration JSON",
diff --git a/node_modules/yargs/locales/hi.json b/node_modules/yargs/locales/hi.json
index 2a9826d..2cd677a 100644
--- a/node_modules/yargs/locales/hi.json
+++ b/node_modules/yargs/locales/hi.json
@@ -35,5 +35,8 @@
"Path to JSON config file": "JSON config फाइल का पथ",
"Show help": "सहायता दिखाएँ",
"Show version number": "Version संख्या दिखाएँ",
- "Did you mean %s?": "क्या आपका मतलब है %s?"
+ "Did you mean %s?": "क्या आपका मतलब है %s?",
+ "Arguments %s and %s are mutually exclusive" : "तर्क %s और %s परस्पर अनन्य हैं",
+ "Positionals:": "स्थानीय:",
+ "command": "आदेश"
}
diff --git a/node_modules/yargs/locales/id.json b/node_modules/yargs/locales/id.json
index a06e860..87e441c 100644
--- a/node_modules/yargs/locales/id.json
+++ b/node_modules/yargs/locales/id.json
@@ -36,5 +36,8 @@
"Path to JSON config file": "Alamat berkas konfigurasi JSON",
"Show help": "Lihat bantuan",
"Show version number": "Lihat nomor versi",
- "Did you mean %s?": "Maksud Anda: %s?"
+ "Did you mean %s?": "Maksud Anda: %s?",
+ "Arguments %s and %s are mutually exclusive" : "Argumen %s dan %s saling eksklusif",
+ "Positionals:": "Posisional-posisional:",
+ "command": "perintah"
}
diff --git a/node_modules/yargs/locales/it.json b/node_modules/yargs/locales/it.json
index f9eb375..9ee900d 100644
--- a/node_modules/yargs/locales/it.json
+++ b/node_modules/yargs/locales/it.json
@@ -29,7 +29,7 @@
"Invalid values:": "Valori non validi:",
"Argument: %s, Given: %s, Choices: %s": "Argomento: %s, Richiesto: %s, Scelte: %s",
"Argument check failed: %s": "Controllo dell'argomento fallito: %s",
- "Implications failed:": "Argomenti impliciti non soddisfatti:",
+ "Implications failed:": "Argomenti dipendenti mancanti:",
"Not enough arguments following: %s": "Argomenti insufficienti dopo: %s",
"Invalid JSON config file: %s": "File di configurazione JSON non valido: %s",
"Path to JSON config file": "Percorso del file di configurazione JSON",
diff --git a/node_modules/yargs/locales/ja.json b/node_modules/yargs/locales/ja.json
index 45a64a8..64ee6d3 100644
--- a/node_modules/yargs/locales/ja.json
+++ b/node_modules/yargs/locales/ja.json
@@ -35,5 +35,8 @@
"Path to JSON config file": "JSONの設定ファイルまでのpath",
"Show help": "ヘルプを表示",
"Show version number": "バージョンを表示",
- "Did you mean %s?": "もしかして %s?"
+ "Did you mean %s?": "もしかして %s?",
+ "Arguments %s and %s are mutually exclusive" : "引数 %s と %s は同時に指定できません",
+ "Positionals:": "位置:",
+ "command": "コマンド"
}
diff --git a/node_modules/yargs/locales/ko.json b/node_modules/yargs/locales/ko.json
index e714984..0eaeab2 100644
--- a/node_modules/yargs/locales/ko.json
+++ b/node_modules/yargs/locales/ko.json
@@ -35,5 +35,8 @@
"Path to JSON config file": "JSON 설정파일 경로",
"Show help": "도움말을 보여줍니다",
"Show version number": "버전 넘버를 보여줍니다",
- "Did you mean %s?": "찾고계신게 %s입니까?"
+ "Did you mean %s?": "찾고계신게 %s입니까?",
+ "Arguments %s and %s are mutually exclusive" : "%s와 %s 인자는 같이 사용될 수 없습니다",
+ "Positionals:": "위치:",
+ "command": "명령"
}
diff --git a/node_modules/yargs/locales/nb.json b/node_modules/yargs/locales/nb.json
index fc607fb..55be1fb 100644
--- a/node_modules/yargs/locales/nb.json
+++ b/node_modules/yargs/locales/nb.json
@@ -27,7 +27,7 @@
},
"Invalid values:": "Ugyldige verdier:",
"Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gitt: %s, Valg: %s",
- "Argument check failed: %s": "Argument sjekk mislyktes: %s",
+ "Argument check failed: %s": "Argumentsjekk mislyktes: %s",
"Implications failed:": "Konsekvensene mislyktes:",
"Not enough arguments following: %s": "Ikke nok følgende argumenter: %s",
"Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s",
diff --git a/node_modules/yargs/locales/nl.json b/node_modules/yargs/locales/nl.json
index fc029db..5d62e0f 100644
--- a/node_modules/yargs/locales/nl.json
+++ b/node_modules/yargs/locales/nl.json
@@ -1,39 +1,42 @@
{
- "Commands:": "Opdrachten:",
+ "Commands:": "Commando's:",
"Options:": "Opties:",
"Examples:": "Voorbeelden:",
- "boolean": "boolean",
+ "boolean": "booleaans",
"count": "aantal",
- "string": "text",
- "number": "nummer",
+ "string": "string",
+ "number": "getal",
"array": "lijst",
"required": "verplicht",
"default:": "standaard:",
"choices:": "keuzes:",
"aliases:": "aliassen:",
"generated-value": "gegenereerde waarde",
- "Not enough non-option arguments: got %s, need at least %s": "Niet genoeg non-optie argumenten. Gekregen: %s, minstens nodig: %s",
- "Too many non-option arguments: got %s, maximum of %s": "Te veel non-optie argumenten. Gekregen: %s, maximum: %s",
+ "Not enough non-option arguments: got %s, need at least %s": "Niet genoeg niet-optie-argumenten: %s gekregen, minstens %s nodig",
+ "Too many non-option arguments: got %s, maximum of %s": "Te veel niet-optie-argumenten: %s gekregen, maximum is %s",
"Missing argument value: %s": {
- "one": "Missing argument value: %s",
- "other": "Missing argument values: %s"
+ "one": "Missende argumentwaarde: %s",
+ "other": "Missende argumentwaarden: %s"
},
"Missing required argument: %s": {
- "one": "Missend verplichte argument: %s",
+ "one": "Missend verplicht argument: %s",
"other": "Missende verplichte argumenten: %s"
},
"Unknown argument: %s": {
"one": "Onbekend argument: %s",
"other": "Onbekende argumenten: %s"
},
- "Invalid values:": "Ongeldige waardes:",
+ "Invalid values:": "Ongeldige waarden:",
"Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeven: %s, Keuzes: %s",
- "Argument check failed: %s": "Argument check mislukt: %s",
- "Implications failed:": "Implicaties mislukt:",
+ "Argument check failed: %s": "Argumentcontrole mislukt: %s",
+ "Implications failed:": "Ontbrekende afhankelijke argumenten:",
"Not enough arguments following: %s": "Niet genoeg argumenten na: %s",
- "Invalid JSON config file: %s": "Ongeldig JSON configuratiebestand: %s",
- "Path to JSON config file": "Pad naar JSON configuratiebestand",
+ "Invalid JSON config file: %s": "Ongeldig JSON-config-bestand: %s",
+ "Path to JSON config file": "Pad naar JSON-config-bestand",
"Show help": "Toon help",
- "Show version number": "Toon versie nummer",
- "Did you mean %s?": "Bedoelde u misschien %s?"
+ "Show version number": "Toon versienummer",
+ "Did you mean %s?": "Bedoelde u misschien %s?",
+ "Arguments %s and %s are mutually exclusive": "Argumenten %s en %s kunnen niet tegelijk gebruikt worden",
+ "Positionals:": "Positie-afhankelijke argumenten",
+ "command": "commando"
}
diff --git a/node_modules/yargs/locales/nn.json b/node_modules/yargs/locales/nn.json
new file mode 100644
index 0000000..5a3c951
--- /dev/null
+++ b/node_modules/yargs/locales/nn.json
@@ -0,0 +1,39 @@
+{
+ "Commands:": "Kommandoar:",
+ "Options:": "Alternativ:",
+ "Examples:": "Døme:",
+ "boolean": "boolsk",
+ "count": "mengd",
+ "string": "streng",
+ "number": "nummer",
+ "array": "matrise",
+ "required": "obligatorisk",
+ "default:": "standard:",
+ "choices:": "val:",
+ "generated-value": "generert-verdi",
+ "Not enough non-option arguments: got %s, need at least %s":
+ "Ikkje nok ikkje-alternativ argument: fekk %s, treng minst %s",
+ "Too many non-option arguments: got %s, maximum of %s":
+ "For mange ikkje-alternativ argument: fekk %s, maksimum %s",
+ "Missing argument value: %s": {
+ "one": "Manglar argumentverdi: %s",
+ "other": "Manglar argumentverdiar: %s"
+ },
+ "Missing required argument: %s": {
+ "one": "Manglar obligatorisk argument: %s",
+ "other": "Manglar obligatoriske argument: %s"
+ },
+ "Unknown argument: %s": {
+ "one": "Ukjent argument: %s",
+ "other": "Ukjende argument: %s"
+ },
+ "Invalid values:": "Ugyldige verdiar:",
+ "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gjeve: %s, Val: %s",
+ "Argument check failed: %s": "Argumentsjekk mislukkast: %s",
+ "Implications failed:": "Konsekvensane mislukkast:",
+ "Not enough arguments following: %s": "Ikkje nok fylgjande argument: %s",
+ "Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s",
+ "Path to JSON config file": "Bane til JSON konfigurasjonsfil",
+ "Show help": "Vis hjelp",
+ "Show version number": "Vis versjonsnummer"
+}
diff --git a/node_modules/yargs/locales/pirate.json b/node_modules/yargs/locales/pirate.json
index 1f4e19e..dcb5cb7 100644
--- a/node_modules/yargs/locales/pirate.json
+++ b/node_modules/yargs/locales/pirate.json
@@ -8,5 +8,6 @@
"other": "Ye be havin' to set the followin' arguments land lubber: %s"
},
"Show help": "Parlay this here code of conduct",
- "Show version number": "'Tis the version ye be askin' fer"
+ "Show version number": "'Tis the version ye be askin' fer",
+ "Arguments %s and %s are mutually exclusive" : "Yon scurvy dogs %s and %s be as bad as rum and a prudish wench"
}
diff --git a/node_modules/yargs/locales/pl.json b/node_modules/yargs/locales/pl.json
index 1c834f6..6926a45 100644
--- a/node_modules/yargs/locales/pl.json
+++ b/node_modules/yargs/locales/pl.json
@@ -35,5 +35,8 @@
"Path to JSON config file": "Ścieżka do pliku konfiguracyjnego JSON",
"Show help": "Pokaż pomoc",
"Show version number": "Pokaż numer wersji",
- "Did you mean %s?": "Czy chodziło Ci o %s?"
+ "Did you mean %s?": "Czy chodziło Ci o %s?",
+ "Arguments %s and %s are mutually exclusive": "Argumenty %s i %s wzajemnie się wykluczają",
+ "Positionals:": "Pozycyjne:",
+ "command": "polecenie"
}
diff --git a/node_modules/yargs/locales/pt_BR.json b/node_modules/yargs/locales/pt_BR.json
index 60e5ffa..904cb66 100644
--- a/node_modules/yargs/locales/pt_BR.json
+++ b/node_modules/yargs/locales/pt_BR.json
@@ -2,7 +2,7 @@
"Commands:": "Comandos:",
"Options:": "Opções:",
"Examples:": "Exemplos:",
- "boolean": "boolean",
+ "boolean": "booleano",
"count": "contagem",
"string": "string",
"number": "número",
@@ -36,5 +36,7 @@
"Show help": "Exibe ajuda",
"Show version number": "Exibe a versão",
"Did you mean %s?": "Você quis dizer %s?",
- "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos"
+ "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos",
+ "Positionals:": "Posicionais:",
+ "command": "comando"
}
diff --git a/node_modules/yargs/locales/tr.json b/node_modules/yargs/locales/tr.json
index 000060b..9b06c52 100644
--- a/node_modules/yargs/locales/tr.json
+++ b/node_modules/yargs/locales/tr.json
@@ -35,5 +35,7 @@
"Path to JSON config file": "JSON yapılandırma dosya konumu",
"Show help": "Yardım detaylarını göster",
"Show version number": "Versiyon detaylarını göster",
- "Did you mean %s?": "Bunu mu demek istediniz: %s?"
+ "Did you mean %s?": "Bunu mu demek istediniz: %s?",
+ "Positionals:": "Sıralılar:",
+ "command": "komut"
}
diff --git a/node_modules/yargs/locales/zh_CN.json b/node_modules/yargs/locales/zh_CN.json
index b25c7b9..03a3d94 100644
--- a/node_modules/yargs/locales/zh_CN.json
+++ b/node_modules/yargs/locales/zh_CN.json
@@ -33,5 +33,9 @@
"Invalid JSON config file: %s": "无效的 JSON 配置文件:%s",
"Path to JSON config file": "JSON 配置文件的路径",
"Show help": "显示帮助信息",
- "Show version number": "显示版本号"
+ "Show version number": "显示版本号",
+ "Did you mean %s?": "是指 %s?",
+ "Arguments %s and %s are mutually exclusive" : "选项 %s 和 %s 是互斥的",
+ "Positionals:": "位置:",
+ "command": "命令"
}
diff --git a/node_modules/yargs/node_modules/ansi-regex/index.js b/node_modules/yargs/node_modules/ansi-regex/index.js
new file mode 100644
index 0000000..c254480
--- /dev/null
+++ b/node_modules/yargs/node_modules/ansi-regex/index.js
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = options => {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+
+ const pattern = [
+ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
+ '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
+ ].join('|');
+
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
diff --git a/node_modules/yargs/node_modules/ansi-regex/license b/node_modules/yargs/node_modules/ansi-regex/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/yargs/node_modules/ansi-regex/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/yargs/node_modules/ansi-regex/package.json b/node_modules/yargs/node_modules/ansi-regex/package.json
new file mode 100644
index 0000000..503ac41
--- /dev/null
+++ b/node_modules/yargs/node_modules/ansi-regex/package.json
@@ -0,0 +1,85 @@
+{
+ "_from": "ansi-regex@^4.1.0",
+ "_id": "ansi-regex@4.1.0",
+ "_inBundle": false,
+ "_integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "_location": "/yargs/ansi-regex",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "ansi-regex@^4.1.0",
+ "name": "ansi-regex",
+ "escapedName": "ansi-regex",
+ "rawSpec": "^4.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^4.1.0"
+ },
+ "_requiredBy": [
+ "/yargs/strip-ansi"
+ ],
+ "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "_shasum": "8b9f8f08cf1acb843756a839ca8c7e3168c51997",
+ "_spec": "ansi-regex@^4.1.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs/node_modules/strip-ansi",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Regular expression for matching ANSI escape codes",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/ansi-regex#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "text",
+ "regex",
+ "regexp",
+ "re",
+ "match",
+ "test",
+ "find",
+ "pattern"
+ ],
+ "license": "MIT",
+ "name": "ansi-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-regex.git"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "view-supported": "node fixtures/view-codes.js"
+ },
+ "version": "4.1.0"
+}
diff --git a/node_modules/yargs/node_modules/ansi-regex/readme.md b/node_modules/yargs/node_modules/ansi-regex/readme.md
new file mode 100644
index 0000000..d19c446
--- /dev/null
+++ b/node_modules/yargs/node_modules/ansi-regex/readme.md
@@ -0,0 +1,87 @@
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
+
+> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&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>
+
+---
+
+
+## Install
+
+```
+$ npm install ansi-regex
+```
+
+
+## Usage
+
+```js
+const ansiRegex = require('ansi-regex');
+
+ansiRegex().test('\u001B[4mcake\u001B[0m');
+//=> true
+
+ansiRegex().test('cake');
+//=> false
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex());
+//=> ['\u001B[4m', '\u001B[0m']
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
+//=> ['\u001B[4m']
+
+'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
+//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
+```
+
+
+## API
+
+### ansiRegex([options])
+
+Returns a regex for matching ANSI escape codes.
+
+#### options
+
+##### onlyFirst
+
+Type: `boolean`<br>
+Default: `false` *(Matches any ANSI escape codes in a string)*
+
+Match only the first ANSI escape.
+
+
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/yargs/node_modules/camelcase/index.js b/node_modules/yargs/node_modules/camelcase/index.js
deleted file mode 100644
index 5670f73..0000000
--- a/node_modules/yargs/node_modules/camelcase/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-function preserveCamelCase(str) {
- var isLastCharLower = false;
-
- for (var i = 0; i < str.length; i++) {
- var c = str.charAt(i);
-
- if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) {
- str = str.substr(0, i) + '-' + str.substr(i);
- isLastCharLower = false;
- i++;
- } else {
- isLastCharLower = (c.toLowerCase() === c);
- }
- }
-
- return str;
-}
-
-module.exports = function () {
- var str = [].map.call(arguments, function (str) {
- return str.trim();
- }).filter(function (str) {
- return str.length;
- }).join('-');
-
- if (!str.length) {
- return '';
- }
-
- if (str.length === 1) {
- return str.toLowerCase();
- }
-
- if (!(/[_.\- ]+/).test(str)) {
- if (str === str.toUpperCase()) {
- return str.toLowerCase();
- }
-
- if (str[0] !== str[0].toLowerCase()) {
- return str[0].toLowerCase() + str.slice(1);
- }
-
- return str;
- }
-
- str = preserveCamelCase(str);
-
- return str
- .replace(/^[_.\- ]+/, '')
- .toLowerCase()
- .replace(/[_.\- ]+(\w|$)/g, function (m, p1) {
- return p1.toUpperCase();
- });
-};
diff --git a/node_modules/yargs/node_modules/camelcase/package.json b/node_modules/yargs/node_modules/camelcase/package.json
deleted file mode 100644
index caff427..0000000
--- a/node_modules/yargs/node_modules/camelcase/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "_from": "camelcase@^3.0.0",
- "_id": "camelcase@3.0.0",
- "_inBundle": false,
- "_integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "_location": "/yargs/camelcase",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "camelcase@^3.0.0",
- "name": "camelcase",
- "escapedName": "camelcase",
- "rawSpec": "^3.0.0",
- "saveSpec": null,
- "fetchSpec": "^3.0.0"
- },
- "_requiredBy": [
- "/yargs"
- ],
- "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "_shasum": "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a",
- "_spec": "camelcase@^3.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/yargs",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "bugs": {
- "url": "https://github.com/sindresorhus/camelcase/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar",
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "files": [
- "index.js"
- ],
- "homepage": "https://github.com/sindresorhus/camelcase#readme",
- "keywords": [
- "camelcase",
- "camel-case",
- "camel",
- "case",
- "dash",
- "hyphen",
- "dot",
- "underscore",
- "separator",
- "string",
- "text",
- "convert"
- ],
- "license": "MIT",
- "name": "camelcase",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/camelcase.git"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "version": "3.0.0"
-}
diff --git a/node_modules/yargs/node_modules/camelcase/readme.md b/node_modules/yargs/node_modules/camelcase/readme.md
deleted file mode 100644
index 080b2a1..0000000
--- a/node_modules/yargs/node_modules/camelcase/readme.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase)
-
-> Convert a dash/dot/underscore/space separated string to camelCase: `foo-bar` → `fooBar`
-
-
-## Install
-
-```
-$ npm install --save camelcase
-```
-
-
-## Usage
-
-```js
-const camelCase = require('camelcase');
-
-camelCase('foo-bar');
-//=> 'fooBar'
-
-camelCase('foo_bar');
-//=> 'fooBar'
-
-camelCase('Foo-Bar');
-//=> 'fooBar'
-
-camelCase('--foo.bar');
-//=> 'fooBar'
-
-camelCase('__foo__bar__');
-//=> 'fooBar'
-
-camelCase('foo bar');
-//=> 'fooBar'
-
-console.log(process.argv[3]);
-//=> '--foo-bar'
-camelCase(process.argv[3]);
-//=> 'fooBar'
-
-camelCase('foo', 'bar');
-//=> 'fooBar'
-
-camelCase('__foo__', '--bar');
-//=> 'fooBar'
-```
-
-
-## Related
-
-- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module
-- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/yargs/node_modules/find-up/index.js b/node_modules/yargs/node_modules/find-up/index.js
new file mode 100644
index 0000000..8e83819
--- /dev/null
+++ b/node_modules/yargs/node_modules/find-up/index.js
@@ -0,0 +1,46 @@
+'use strict';
+const path = require('path');
+const locatePath = require('locate-path');
+
+module.exports = (filename, opts = {}) => {
+ const startDir = path.resolve(opts.cwd || '');
+ const {root} = path.parse(startDir);
+
+ const filenames = [].concat(filename);
+
+ return new Promise(resolve => {
+ (function find(dir) {
+ locatePath(filenames, {cwd: dir}).then(file => {
+ if (file) {
+ resolve(path.join(dir, file));
+ } else if (dir === root) {
+ resolve(null);
+ } else {
+ find(path.dirname(dir));
+ }
+ });
+ })(startDir);
+ });
+};
+
+module.exports.sync = (filename, opts = {}) => {
+ let dir = path.resolve(opts.cwd || '');
+ const {root} = path.parse(dir);
+
+ const filenames = [].concat(filename);
+
+ // eslint-disable-next-line no-constant-condition
+ while (true) {
+ const file = locatePath.sync(filenames, {cwd: dir});
+
+ if (file) {
+ return path.join(dir, file);
+ }
+
+ if (dir === root) {
+ return null;
+ }
+
+ dir = path.dirname(dir);
+ }
+};
diff --git a/node_modules/yargs/node_modules/find-up/license b/node_modules/yargs/node_modules/find-up/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/yargs/node_modules/find-up/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/yargs/node_modules/find-up/package.json b/node_modules/yargs/node_modules/find-up/package.json
new file mode 100644
index 0000000..92836ea
--- /dev/null
+++ b/node_modules/yargs/node_modules/find-up/package.json
@@ -0,0 +1,82 @@
+{
+ "_from": "find-up@^3.0.0",
+ "_id": "find-up@3.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "_location": "/yargs/find-up",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "find-up@^3.0.0",
+ "name": "find-up",
+ "escapedName": "find-up",
+ "rawSpec": "^3.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.0.0"
+ },
+ "_requiredBy": [
+ "/yargs"
+ ],
+ "_resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "_shasum": "49169f1d7993430646da61ecc5ae355c21c97b73",
+ "_spec": "find-up@^3.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/find-up/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "deprecated": false,
+ "description": "Find a file or directory by walking up parent directories",
+ "devDependencies": {
+ "ava": "*",
+ "tempy": "^0.2.1",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/find-up#readme",
+ "keywords": [
+ "find",
+ "up",
+ "find-up",
+ "findup",
+ "look-up",
+ "look",
+ "file",
+ "search",
+ "match",
+ "package",
+ "resolve",
+ "parent",
+ "parents",
+ "folder",
+ "directory",
+ "dir",
+ "walk",
+ "walking",
+ "path"
+ ],
+ "license": "MIT",
+ "name": "find-up",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/find-up.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/yargs/node_modules/find-up/readme.md b/node_modules/yargs/node_modules/find-up/readme.md
new file mode 100644
index 0000000..810ad7c
--- /dev/null
+++ b/node_modules/yargs/node_modules/find-up/readme.md
@@ -0,0 +1,87 @@
+# find-up [![Build Status: Linux and macOS](https://travis-ci.org/sindresorhus/find-up.svg?branch=master)](https://travis-ci.org/sindresorhus/find-up) [![Build Status: Windows](https://ci.appveyor.com/api/projects/status/l0cyjmvh5lq72vq2/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/find-up/branch/master)
+
+> Find a file or directory by walking up parent directories
+
+
+## Install
+
+```
+$ npm install find-up
+```
+
+
+## Usage
+
+```
+/
+└── Users
+ └── sindresorhus
+ ├── unicorn.png
+ └── foo
+ └── bar
+ ├── baz
+ └── example.js
+```
+
+`example.js`
+
+```js
+const findUp = require('find-up');
+
+(async () => {
+ console.log(await findUp('unicorn.png'));
+ //=> '/Users/sindresorhus/unicorn.png'
+
+ console.log(await findUp(['rainbow.png', 'unicorn.png']));
+ //=> '/Users/sindresorhus/unicorn.png'
+})();
+```
+
+
+## API
+
+### findUp(filename, [options])
+
+Returns a `Promise` for either the filepath or `null` if it couldn't be found.
+
+### findUp([filenameA, filenameB], [options])
+
+Returns a `Promise` for either the first filepath found (by respecting the order) or `null` if none could be found.
+
+### findUp.sync(filename, [options])
+
+Returns a filepath or `null`.
+
+### findUp.sync([filenameA, filenameB], [options])
+
+Returns the first filepath found (by respecting the order) or `null`.
+
+#### filename
+
+Type: `string`
+
+Filename of the file to find.
+
+#### options
+
+Type: `Object`
+
+##### cwd
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+Directory to start from.
+
+
+## Related
+
+- [find-up-cli](https://github.com/sindresorhus/find-up-cli) - CLI for this module
+- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file
+- [pkg-dir](https://github.com/sindresorhus/pkg-dir) - Find the root directory of an npm package
+- [resolve-from](https://github.com/sindresorhus/resolve-from) - Resolve the path of a module like `require.resolve()` but from a given path
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/yargs/node_modules/is-fullwidth-code-point/index.js b/node_modules/yargs/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 0000000..d506327
--- /dev/null
+++ b/node_modules/yargs/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/yargs/node_modules/is-fullwidth-code-point/license b/node_modules/yargs/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/node_modules/yargs/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/yargs/node_modules/is-fullwidth-code-point/package.json b/node_modules/yargs/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 0000000..c4b64f3
--- /dev/null
+++ b/node_modules/yargs/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,77 @@
+{
+ "_from": "is-fullwidth-code-point@^2.0.0",
+ "_id": "is-fullwidth-code-point@2.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "_location": "/yargs/is-fullwidth-code-point",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "is-fullwidth-code-point@^2.0.0",
+ "name": "is-fullwidth-code-point",
+ "escapedName": "is-fullwidth-code-point",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/yargs/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "_shasum": "a3b30a5c4f199183167aaab93beefae3ddfb654f",
+ "_spec": "is-fullwidth-code-point@^2.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "name": "is-fullwidth-code-point",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/yargs/node_modules/is-fullwidth-code-point/readme.md b/node_modules/yargs/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 0000000..093b028
--- /dev/null
+++ b/node_modules/yargs/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/yargs/node_modules/string-width/index.js b/node_modules/yargs/node_modules/string-width/index.js
new file mode 100644
index 0000000..33c9d6c
--- /dev/null
+++ b/node_modules/yargs/node_modules/string-width/index.js
@@ -0,0 +1,39 @@
+'use strict';
+const stripAnsi = require('strip-ansi');
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+const emojiRegex = require('emoji-regex')();
+
+module.exports = input => {
+ input = input.replace(emojiRegex, ' ');
+
+ if (typeof input !== 'string' || input.length === 0) {
+ return 0;
+ }
+
+ input = stripAnsi(input);
+
+ let width = 0;
+
+ for (let i = 0; i < input.length; i++) {
+ const code = input.codePointAt(i);
+
+ // Ignore control characters
+ if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
+ continue;
+ }
+
+ // Ignore combining characters
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ }
+
+ // Surrogates
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint(code) ? 2 : 1;
+ }
+
+ return width;
+};
diff --git a/node_modules/yargs/node_modules/string-width/license b/node_modules/yargs/node_modules/string-width/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/yargs/node_modules/string-width/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/yargs/node_modules/string-width/package.json b/node_modules/yargs/node_modules/string-width/package.json
new file mode 100644
index 0000000..d6b540e
--- /dev/null
+++ b/node_modules/yargs/node_modules/string-width/package.json
@@ -0,0 +1,88 @@
+{
+ "_from": "string-width@^3.0.0",
+ "_id": "string-width@3.1.0",
+ "_inBundle": false,
+ "_integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "_location": "/yargs/string-width",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "string-width@^3.0.0",
+ "name": "string-width",
+ "escapedName": "string-width",
+ "rawSpec": "^3.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^3.0.0"
+ },
+ "_requiredBy": [
+ "/yargs"
+ ],
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "_shasum": "22767be21b62af1081574306f69ac51b62203961",
+ "_spec": "string-width@^3.0.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "deprecated": false,
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "^1.0.1",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "name": "string-width",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.1.0"
+}
diff --git a/node_modules/yargs/node_modules/string-width/readme.md b/node_modules/yargs/node_modules/string-width/readme.md
new file mode 100644
index 0000000..d39d95f
--- /dev/null
+++ b/node_modules/yargs/node_modules/string-width/readme.md
@@ -0,0 +1,45 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+
+stringWidth('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+// => 5
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/yargs/node_modules/strip-ansi/index.d.ts b/node_modules/yargs/node_modules/strip-ansi/index.d.ts
new file mode 100644
index 0000000..44e954d
--- /dev/null
+++ b/node_modules/yargs/node_modules/strip-ansi/index.d.ts
@@ -0,0 +1,15 @@
+/**
+Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
+
+@example
+```
+import stripAnsi from 'strip-ansi';
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+*/
+export default function stripAnsi(string: string): string;
diff --git a/node_modules/yargs/node_modules/strip-ansi/index.js b/node_modules/yargs/node_modules/strip-ansi/index.js
new file mode 100644
index 0000000..9788c96
--- /dev/null
+++ b/node_modules/yargs/node_modules/strip-ansi/index.js
@@ -0,0 +1,7 @@
+'use strict';
+const ansiRegex = require('ansi-regex');
+
+const stripAnsi = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+
+module.exports = stripAnsi;
+module.exports.default = stripAnsi;
diff --git a/node_modules/yargs/node_modules/strip-ansi/license b/node_modules/yargs/node_modules/strip-ansi/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/yargs/node_modules/strip-ansi/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (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/yargs/node_modules/strip-ansi/package.json b/node_modules/yargs/node_modules/strip-ansi/package.json
new file mode 100644
index 0000000..edc5af4
--- /dev/null
+++ b/node_modules/yargs/node_modules/strip-ansi/package.json
@@ -0,0 +1,86 @@
+{
+ "_from": "strip-ansi@^5.1.0",
+ "_id": "strip-ansi@5.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "_location": "/yargs/strip-ansi",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "strip-ansi@^5.1.0",
+ "name": "strip-ansi",
+ "escapedName": "strip-ansi",
+ "rawSpec": "^5.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^5.1.0"
+ },
+ "_requiredBy": [
+ "/yargs/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "_shasum": "8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae",
+ "_spec": "strip-ansi@^5.1.0",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/yargs/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/strip-ansi/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "deprecated": false,
+ "description": "Strip ANSI escape codes from a string",
+ "devDependencies": {
+ "ava": "^1.3.1",
+ "tsd-check": "^0.5.0",
+ "xo": "^0.24.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "homepage": "https://github.com/chalk/strip-ansi#readme",
+ "keywords": [
+ "strip",
+ "trim",
+ "remove",
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "name": "strip-ansi",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/strip-ansi.git"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd-check"
+ },
+ "version": "5.2.0"
+}
diff --git a/node_modules/yargs/node_modules/strip-ansi/readme.md b/node_modules/yargs/node_modules/strip-ansi/readme.md
new file mode 100644
index 0000000..8681fe8
--- /dev/null
+++ b/node_modules/yargs/node_modules/strip-ansi/readme.md
@@ -0,0 +1,61 @@
+# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
+
+> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=readme">Get professional support for 'strip-ansi' 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>
+
+---
+
+## Install
+
+```
+$ npm install strip-ansi
+```
+
+
+## Usage
+
+```js
+const stripAnsi = require('strip-ansi');
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Related
+
+- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/yargs/package.json b/node_modules/yargs/package.json
index 404af7e..fd31752 100644
--- a/node_modules/yargs/package.json
+++ b/node_modules/yargs/package.json
@@ -1,65 +1,72 @@
{
- "_from": "yargs@^7.0.0",
- "_id": "yargs@7.1.0",
+ "_from": "yargs@^13.3.2",
+ "_id": "yargs@13.3.2",
"_inBundle": false,
- "_integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+ "_integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"_location": "/yargs",
- "_phantomChildren": {},
+ "_phantomChildren": {
+ "emoji-regex": "7.0.3",
+ "locate-path": "3.0.0"
+ },
"_requested": {
"type": "range",
"registry": true,
- "raw": "yargs@^7.0.0",
+ "raw": "yargs@^13.3.2",
"name": "yargs",
"escapedName": "yargs",
- "rawSpec": "^7.0.0",
+ "rawSpec": "^13.3.2",
"saveSpec": null,
- "fetchSpec": "^7.0.0"
+ "fetchSpec": "^13.3.2"
},
"_requiredBy": [
"/sass-graph"
],
- "_resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
- "_shasum": "6ba318eb16961727f5d284f8ea003e8d6154d0c8",
- "_spec": "yargs@^7.0.0",
- "_where": "/Users/gebauer/ws/themes/ag/node_modules/sass-graph",
+ "_resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "_shasum": "ad7ffefec1aa59565ac915f82dccb38a9c31a2dd",
+ "_spec": "yargs@^13.3.2",
+ "_where": "/Users/austingebauer/Workspace/personal-website/themes/devise/node_modules/sass-graph",
"bugs": {
"url": "https://github.com/yargs/yargs/issues"
},
"bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Yargs Contributors",
+ "url": "https://github.com/yargs/yargs/graphs/contributors"
+ }
+ ],
"dependencies": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
+ "require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.0"
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
},
"deprecated": false,
"description": "yargs the modern, pirate-themed, successor to optimist.",
"devDependencies": {
- "chai": "^3.4.1",
- "chalk": "^1.1.3",
- "coveralls": "^2.11.11",
- "cpr": "^2.0.0",
- "cross-spawn": "^5.0.1",
- "es6-promise": "^4.0.2",
+ "chai": "^4.2.0",
+ "chalk": "^2.4.2",
+ "coveralls": "^3.0.3",
+ "cpr": "^3.0.1",
+ "cross-spawn": "^6.0.4",
+ "es6-promise": "^4.2.5",
"hashish": "0.0.4",
- "mocha": "^3.0.1",
- "nyc": "^10.0.0",
- "rimraf": "^2.5.0",
- "standard": "^8.6.0",
- "standard-version": "^3.0.0",
- "which": "^1.2.9"
+ "mocha": "^5.2.0",
+ "nyc": "^14.1.0",
+ "rimraf": "^2.6.3",
+ "standard": "^12.0.1",
+ "standard-version": "^6.0.1",
+ "which": "^1.3.1",
+ "yargs-test-extends": "^1.0.1"
},
"engine": {
- "node": ">=0.10"
+ "node": ">=6"
},
"files": [
"index.js",
@@ -67,16 +74,10 @@
"lib",
"locales",
"completion.sh.hbs",
+ "completion.zsh.hbs",
"LICENSE"
],
- "greenkeeper": {
- "ignore": [
- "string-width",
- "read-pkg-up",
- "camelcase"
- ]
- },
- "homepage": "http://yargs.js.org/",
+ "homepage": "https://yargs.js.org/",
"keywords": [
"argument",
"args",
@@ -91,18 +92,18 @@
"name": "yargs",
"repository": {
"type": "git",
- "url": "git+ssh://git@github.com/yargs/yargs.git"
+ "url": "git+https://github.com/yargs/yargs.git"
},
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
"pretest": "standard",
"release": "standard-version",
- "test": "nyc --cache mocha --require ./test/before.js --timeout=8000 --check-leaks"
+ "test": "nyc --cache mocha --require ./test/before.js --timeout=12000 --check-leaks"
},
"standard": {
"ignore": [
"**/example/**"
]
},
- "version": "7.1.0"
+ "version": "13.3.2"
}
diff --git a/node_modules/yargs/yargs.js b/node_modules/yargs/yargs.js
index 92eb38f..81d2193 100644
--- a/node_modules/yargs/yargs.js
+++ b/node_modules/yargs/yargs.js
@@ -1,5 +1,6 @@
+'use strict'
const argsert = require('./lib/argsert')
-const assign = require('./lib/assign')
+const fs = require('fs')
const Command = require('./lib/command')
const Completion = require('./lib/completion')
const Parser = require('yargs-parser')
@@ -10,82 +11,91 @@ const Y18n = require('y18n')
const objFilter = require('./lib/obj-filter')
const setBlocking = require('set-blocking')
const applyExtends = require('./lib/apply-extends')
+const { globalMiddlewareFactory } = require('./lib/middleware')
const YError = require('./lib/yerror')
-var exports = module.exports = Yargs
+exports = module.exports = Yargs
function Yargs (processArgs, cwd, parentRequire) {
processArgs = processArgs || [] // handle calling yargs().
const self = {}
- var command = null
- var completion = null
- var groups = {}
- var output = ''
- var preservedGroups = {}
- var usage = null
- var validation = null
+ let command = null
+ let completion = null
+ let groups = {}
+ let globalMiddleware = []
+ let output = ''
+ let preservedGroups = {}
+ let usage = null
+ let validation = null
const y18n = Y18n({
directory: path.resolve(__dirname, './locales'),
updateFiles: false
})
+ self.middleware = globalMiddlewareFactory(globalMiddleware, self)
+
if (!cwd) cwd = process.cwd()
- self.$0 = process.argv
- .slice(0, 2)
- .map(function (x, i) {
- // ignore the node bin, specify this in your
- // bin file with #!/usr/bin/env node
- if (i === 0 && /\b(node|iojs)(\.exe)?$/.test(x)) return
- var b = rebase(cwd, x)
+ self.scriptName = function scriptName (scriptName) {
+ self.$0 = scriptName
+ return self
+ }
+
+ // ignore the node bin, specify this in your
+ // bin file with #!/usr/bin/env node
+ if (/\b(node|iojs|electron)(\.exe)?$/.test(process.argv[0])) {
+ self.$0 = process.argv.slice(1, 2)
+ } else {
+ self.$0 = process.argv.slice(0, 1)
+ }
+
+ self.$0 = self.$0
+ .map((x, i) => {
+ const b = rebase(cwd, x)
return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x
})
.join(' ').trim()
if (process.env._ !== undefined && process.argv[1] === process.env._) {
self.$0 = process.env._.replace(
- path.dirname(process.execPath) + '/', ''
+ `${path.dirname(process.execPath)}/`, ''
)
}
// use context object to keep track of resets, subcommand execution, etc
// submodules should modify and check the state of context as necessary
- const context = { resets: -1, commands: [], files: [] }
- self.getContext = function () {
- return context
- }
+ const context = { resets: -1, commands: [], fullCommands: [], files: [] }
+ self.getContext = () => context
// puts yargs back into an initial state. any keys
// that have been set to "global" will not be reset
// by this action.
- var options
- self.resetOptions = self.reset = function (aliases) {
+ let options
+ self.resetOptions = self.reset = function resetOptions (aliases) {
context.resets++
aliases = aliases || {}
options = options || {}
// put yargs back into an initial state, this
// logic is used to build a nested command
// hierarchy.
- var tmpOptions = {}
+ const tmpOptions = {}
tmpOptions.local = options.local ? options.local : []
tmpOptions.configObjects = options.configObjects ? options.configObjects : []
// if a key has been explicitly set as local,
// we should reset it before passing options to command.
- var localLookup = {}
- tmpOptions.local.forEach(function (l) {
+ const localLookup = {}
+ tmpOptions.local.forEach((l) => {
localLookup[l] = true
- ;(aliases[l] || []).forEach(function (a) {
+ ;(aliases[l] || []).forEach((a) => {
localLookup[a] = true
})
})
// preserve all groups not set to local.
- preservedGroups = Object.keys(groups).reduce(function (acc, groupName) {
- var keys = groups[groupName].filter(function (key) {
- return !(key in localLookup)
- })
+ preservedGroups = Object.keys(groups).reduce((acc, groupName) => {
+ const keys = groups[groupName].filter(key => !(key in localLookup))
if (keys.length > 0) {
acc[groupName] = keys
}
@@ -94,26 +104,23 @@ function Yargs (processArgs, cwd, parentRequire) {
// groups can now be reset
groups = {}
- var arrayOptions = [
- 'array', 'boolean', 'string', 'requiresArg', 'skipValidation',
- 'count', 'normalize', 'number'
+ const arrayOptions = [
+ 'array', 'boolean', 'string', 'skipValidation',
+ 'count', 'normalize', 'number',
+ 'hiddenOptions'
]
- var objectOptions = [
+ const objectOptions = [
'narg', 'key', 'alias', 'default', 'defaultDescription',
'config', 'choices', 'demandedOptions', 'demandedCommands', 'coerce'
]
- arrayOptions.forEach(function (k) {
- tmpOptions[k] = (options[k] || []).filter(function (k) {
- return !localLookup[k]
- })
+ arrayOptions.forEach((k) => {
+ tmpOptions[k] = (options[k] || []).filter(k => !localLookup[k])
})
- objectOptions.forEach(function (k) {
- tmpOptions[k] = objFilter(options[k], function (k, v) {
- return !localLookup[k]
- })
+ objectOptions.forEach((k) => {
+ tmpOptions[k] = objFilter(options[k], (k, v) => !localLookup[k])
})
tmpOptions.envPrefix = options.envPrefix
@@ -123,10 +130,9 @@ function Yargs (processArgs, cwd, parentRequire) {
// instances of all our helpers -- otherwise just reset.
usage = usage ? usage.reset(localLookup) : Usage(self, y18n)
validation = validation ? validation.reset(localLookup) : Validation(self, usage, y18n)
- command = command ? command.reset() : Command(self, usage, validation)
+ command = command ? command.reset() : Command(self, usage, validation, globalMiddleware)
if (!completion) completion = Completion(self, usage, command)
- if (!strictGlobal) strict = false
completionCommand = null
output = ''
exitError = null
@@ -138,7 +144,7 @@ function Yargs (processArgs, cwd, parentRequire) {
self.resetOptions()
// temporary hack: allow "freezing" of reset-able state for parse(msg, cb)
- var frozen
+ let frozen
function freeze () {
frozen = {}
frozen.options = options
@@ -212,7 +218,7 @@ function Yargs (processArgs, cwd, parentRequire) {
self.requiresArg = function (keys) {
argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('requiresArg', keys)
+ populateParserHintObject(self.nargs, false, 'narg', keys, 1)
return self
}
@@ -224,7 +230,8 @@ function Yargs (processArgs, cwd, parentRequire) {
function populateParserHintArray (type, keys, value) {
keys = [].concat(keys)
- keys.forEach(function (key) {
+ keys.forEach((key) => {
+ key = sanitizeKey(key)
options[type].push(key)
})
}
@@ -280,18 +287,19 @@ function Yargs (processArgs, cwd, parentRequire) {
function populateParserHintObject (builder, isArray, type, key, value) {
if (Array.isArray(key)) {
+ const temp = Object.create(null)
// an array of keys with one value ['x', 'y', 'z'], function parse () {}
- var temp = {}
- key.forEach(function (k) {
+ key.forEach((k) => {
temp[k] = value
})
builder(temp)
} else if (typeof key === 'object') {
// an object of key value pairs: {'x': parse () {}, 'y': parse() {}}
- Object.keys(key).forEach(function (k) {
+ Object.keys(key).forEach((k) => {
builder(k, key[k])
})
} else {
+ key = sanitizeKey(key)
// a single key value pair 'x', parse() {}
if (isArray) {
options[type][key] = (options[type][key] || []).concat(value)
@@ -301,7 +309,29 @@ function Yargs (processArgs, cwd, parentRequire) {
}
}
- self.config = function (key, msg, parseFn) {
+ // TODO(bcoe): in future major versions move more objects towards
+ // Object.create(null):
+ function sanitizeKey (key) {
+ if (key === '__proto__') return '___proto___'
+ return key
+ }
+
+ function deleteFromParserHintObject (optionKey) {
+ // delete from all parsing hints:
+ // boolean, array, key, alias, etc.
+ Object.keys(options).forEach((hintKey) => {
+ const hint = options[hintKey]
+ if (Array.isArray(hint)) {
+ if (~hint.indexOf(optionKey)) hint.splice(hint.indexOf(optionKey), 1)
+ } else if (typeof hint === 'object') {
+ delete hint[optionKey]
+ }
+ })
+ // now delete the description from usage.js.
+ delete usage.getDescriptions()[optionKey]
+ }
+
+ self.config = function config (key, msg, parseFn) {
argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length)
// allow a config object to be provided directly.
if (typeof key === 'object') {
@@ -318,7 +348,7 @@ function Yargs (processArgs, cwd, parentRequire) {
key = key || 'config'
self.describe(key, msg || usage.deferY18nLookup('Path to JSON config file'))
- ;(Array.isArray(key) ? key : [key]).forEach(function (k) {
+ ;(Array.isArray(key) ? key : [key]).forEach((k) => {
options.config[k] = parseFn || true
})
@@ -331,9 +361,9 @@ function Yargs (processArgs, cwd, parentRequire) {
return self
}
- self.command = function (cmd, description, builder, handler) {
- argsert('<string|array|object> [string|boolean] [function|object] [function]', [cmd, description, builder, handler], arguments.length)
- command.addHandler(cmd, description, builder, handler)
+ self.command = function (cmd, description, builder, handler, middlewares) {
+ argsert('<string|array|object> [string|boolean] [function|object] [function] [array]', [cmd, description, builder, handler, middlewares], arguments.length)
+ command.addHandler(cmd, description, builder, handler, middlewares)
return self
}
@@ -346,12 +376,12 @@ function Yargs (processArgs, cwd, parentRequire) {
// TODO: deprecate self.demand in favor of
// .demandCommand() .demandOption().
- self.demand = self.required = self.require = function (keys, max, msg) {
+ self.demand = self.required = self.require = function demand (keys, max, msg) {
// you can optionally provide a 'max' key,
// which will raise an exception if too many '_'
// options are provided.
if (Array.isArray(max)) {
- max.forEach(function (key) {
+ max.forEach((key) => {
self.demandOption(key, msg)
})
max = Infinity
@@ -363,7 +393,7 @@ function Yargs (processArgs, cwd, parentRequire) {
if (typeof keys === 'number') {
self.demandCommand(keys, max, msg, msg)
} else if (Array.isArray(keys)) {
- keys.forEach(function (key) {
+ keys.forEach((key) => {
self.demandOption(key, msg)
})
} else {
@@ -377,8 +407,8 @@ function Yargs (processArgs, cwd, parentRequire) {
return self
}
- self.demandCommand = function (min, max, minMsg, maxMsg) {
- argsert('[number] [number|string] [string|null] [string|null]', [min, max, minMsg, maxMsg], arguments.length)
+ self.demandCommand = function demandCommand (min, max, minMsg, maxMsg) {
+ argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length)
if (typeof min === 'undefined') min = 1
@@ -390,50 +420,52 @@ function Yargs (processArgs, cwd, parentRequire) {
self.global('_', false)
options.demandedCommands._ = {
- min: min,
- max: max,
- minMsg: minMsg,
- maxMsg: maxMsg
+ min,
+ max,
+ minMsg,
+ maxMsg
}
return self
}
- self.getDemandedOptions = function () {
+ self.getDemandedOptions = () => {
argsert([], 0)
return options.demandedOptions
}
- self.getDemandedCommands = function () {
+ self.getDemandedCommands = () => {
argsert([], 0)
return options.demandedCommands
}
self.implies = function (key, value) {
- argsert('<string|object> [string]', [key, value], arguments.length)
+ argsert('<string|object> [number|string|array]', [key, value], arguments.length)
validation.implies(key, value)
return self
}
self.conflicts = function (key1, key2) {
- argsert('<string|object> [string]', [key1, key2], arguments.length)
+ argsert('<string|object> [string|array]', [key1, key2], arguments.length)
validation.conflicts(key1, key2)
return self
}
- self.usage = function (msg, opts) {
- argsert('<string|null|object> [object]', [msg, opts], arguments.length)
+ self.usage = function (msg, description, builder, handler) {
+ argsert('<string|null|undefined> [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length)
- if (!opts && typeof msg === 'object') {
- opts = msg
- msg = null
+ if (description !== undefined) {
+ // .usage() can be used as an alias for defining
+ // a default command.
+ if ((msg || '').match(/^\$0( |$)/)) {
+ return self.command(msg, description, builder, handler)
+ } else {
+ throw new YError('.usage() description must start with $0 if being used as alias for .command()')
+ }
+ } else {
+ usage.usage(msg)
+ return self
}
-
- usage.usage(msg)
-
- if (opts) self.options(opts)
-
- return self
}
self.epilogue = self.epilog = function (msg) {
@@ -454,60 +486,70 @@ function Yargs (processArgs, cwd, parentRequire) {
return self
}
- self.global = function (globals, global) {
+ self.global = function global (globals, global) {
argsert('<string|array> [boolean]', [globals, global], arguments.length)
globals = [].concat(globals)
if (global !== false) {
- options.local = options.local.filter(function (l) {
- return globals.indexOf(l) === -1
- })
+ options.local = options.local.filter(l => globals.indexOf(l) === -1)
} else {
- globals.forEach(function (g) {
+ globals.forEach((g) => {
if (options.local.indexOf(g) === -1) options.local.push(g)
})
}
return self
}
- self.pkgConf = function (key, path) {
- argsert('<string> [string]', [key, path], arguments.length)
- var conf = null
+ self.pkgConf = function pkgConf (key, rootPath) {
+ argsert('<string> [string]', [key, rootPath], arguments.length)
+ let conf = null
// prefer cwd to require-main-filename in this method
// since we're looking for e.g. "nyc" config in nyc consumer
// rather than "yargs" config in nyc (where nyc is the main filename)
- var obj = pkgUp(path || cwd)
+ const obj = pkgUp(rootPath || cwd)
// If an object exists in the key, add it to options.configObjects
if (obj[key] && typeof obj[key] === 'object') {
- conf = applyExtends(obj[key], path || cwd, key)
+ conf = applyExtends(obj[key], rootPath || cwd)
options.configObjects = (options.configObjects || []).concat(conf)
}
return self
}
- var pkgs = {}
- function pkgUp (path) {
- var npath = path || '*'
+ const pkgs = {}
+ function pkgUp (rootPath) {
+ const npath = rootPath || '*'
if (pkgs[npath]) return pkgs[npath]
- const readPkgUp = require('read-pkg-up')
+ const findUp = require('find-up')
- var obj = {}
+ let obj = {}
try {
- obj = readPkgUp.sync({
- cwd: path || require('require-main-filename')(parentRequire || require),
- normalize: false
+ let startDir = rootPath || require('require-main-filename')(parentRequire || require)
+
+ // When called in an environment that lacks require.main.filename, such as a jest test runner,
+ // startDir is already process.cwd(), and should not be shortened.
+ // Whether or not it is _actually_ a directory (e.g., extensionless bin) is irrelevant, find-up handles it.
+ if (!rootPath && path.extname(startDir)) {
+ startDir = path.dirname(startDir)
+ }
+
+ const pkgJsonPath = findUp.sync('package.json', {
+ cwd: startDir
})
+ obj = JSON.parse(fs.readFileSync(pkgJsonPath))
} catch (noop) {}
- pkgs[npath] = obj.pkg || {}
+ pkgs[npath] = obj || {}
return pkgs[npath]
}
- var parseFn = null
- var parseContext = null
- self.parse = function (args, shortCircuit, _parseFn) {
- argsert('<string|array> [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length)
+ let parseFn = null
+ let parseContext = null
+ self.parse = function parse (args, shortCircuit, _parseFn) {
+ argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length)
+ if (typeof args === 'undefined') {
+ return self._parseArgs(processArgs)
+ }
// a context object can optionally be provided, this allows
// additional information to be passed to a command handler.
@@ -530,25 +572,21 @@ function Yargs (processArgs, cwd, parentRequire) {
freeze()
if (parseFn) exitProcess = false
- var parsed = self._parseArgs(args, shortCircuit)
+ const parsed = self._parseArgs(args, shortCircuit)
if (parseFn) parseFn(exitError, parsed, output)
unfreeze()
return parsed
}
- self._getParseContext = function () {
- return parseContext || {}
- }
+ self._getParseContext = () => parseContext || {}
- self._hasParseCallback = function () {
- return !!parseFn
- }
+ self._hasParseCallback = () => !!parseFn
- self.option = self.options = function (key, opt) {
+ self.option = self.options = function option (key, opt) {
argsert('<string|object> [object]', [key, opt], arguments.length)
if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
+ Object.keys(key).forEach((k) => {
self.options(k, key[k])
})
} else {
@@ -560,7 +598,7 @@ function Yargs (processArgs, cwd, parentRequire) {
if (opt.alias) self.alias(key, opt.alias)
- var demand = opt.demand || opt.required || opt.require
+ const demand = opt.demand || opt.required || opt.require
// deprecated, use 'demandOption' instead
if (demand) {
@@ -571,10 +609,6 @@ function Yargs (processArgs, cwd, parentRequire) {
self.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined)
}
- if ('config' in opt) {
- self.config(key, opt.configParser)
- }
-
if ('conflicts' in opt) {
self.conflicts(key, opt.conflicts)
}
@@ -591,7 +625,11 @@ function Yargs (processArgs, cwd, parentRequire) {
self.nargs(key, opt.nargs)
}
- if ('normalize' in opt) {
+ if (opt.config) {
+ self.config(key, opt.configParser)
+ }
+
+ if (opt.normalize) {
self.normalize(key)
}
@@ -643,9 +681,10 @@ function Yargs (processArgs, cwd, parentRequire) {
self.skipValidation(key)
}
- var desc = opt.describe || opt.description || opt.desc
- if (desc) {
- self.describe(key, desc)
+ const desc = opt.describe || opt.description || opt.desc
+ self.describe(key, desc)
+ if (opt.hidden) {
+ self.hide(key)
}
if (opt.requiresArg) {
@@ -655,29 +694,62 @@ function Yargs (processArgs, cwd, parentRequire) {
return self
}
- self.getOptions = function () {
- return options
+ self.getOptions = () => options
+
+ self.positional = function (key, opts) {
+ argsert('<string> <object>', [key, opts], arguments.length)
+ if (context.resets === 0) {
+ throw new YError(".positional() can only be called in a command's builder function")
+ }
+
+ // .positional() only supports a subset of the configuration
+ // options available to .option().
+ const supportedOpts = ['default', 'defaultDescription', 'implies', 'normalize',
+ 'choices', 'conflicts', 'coerce', 'type', 'describe',
+ 'desc', 'description', 'alias']
+ opts = objFilter(opts, (k, v) => {
+ let accept = supportedOpts.indexOf(k) !== -1
+ // type can be one of string|number|boolean.
+ if (k === 'type' && ['string', 'number', 'boolean'].indexOf(v) === -1) accept = false
+ return accept
+ })
+
+ // copy over any settings that can be inferred from the command string.
+ const fullCommand = context.fullCommands[context.fullCommands.length - 1]
+ const parseOptions = fullCommand ? command.cmdToParseOptions(fullCommand) : {
+ array: [],
+ alias: {},
+ default: {},
+ demand: {}
+ }
+ Object.keys(parseOptions).forEach((pk) => {
+ if (Array.isArray(parseOptions[pk])) {
+ if (parseOptions[pk].indexOf(key) !== -1) opts[pk] = true
+ } else {
+ if (parseOptions[pk][key] && !(pk in opts)) opts[pk] = parseOptions[pk][key]
+ }
+ })
+ self.group(key, usage.getPositionalGroupName())
+ return self.option(key, opts)
}
- self.group = function (opts, groupName) {
+ self.group = function group (opts, groupName) {
argsert('<string|array> <string>', [opts, groupName], arguments.length)
- var existing = preservedGroups[groupName] || groups[groupName]
+ const existing = preservedGroups[groupName] || groups[groupName]
if (preservedGroups[groupName]) {
// we now only need to track this group name in groups.
delete preservedGroups[groupName]
}
- var seen = {}
- groups[groupName] = (existing || []).concat(opts).filter(function (key) {
+ const seen = {}
+ groups[groupName] = (existing || []).concat(opts).filter((key) => {
if (seen[key]) return false
return (seen[key] = true)
})
return self
}
- self.getGroups = function () {
- // combine explicit and preserved groups. explicit groups should be first
- return assign(groups, preservedGroups)
- }
+ // combine explicit and preserved groups. explicit groups should be first
+ self.getGroups = () => Object.assign({}, groups, preservedGroups)
// as long as options.envPrefix is not undefined,
// parser will apply env vars matching prefix to argv
@@ -689,45 +761,66 @@ function Yargs (processArgs, cwd, parentRequire) {
}
self.wrap = function (cols) {
- argsert('<number|null>', [cols], arguments.length)
+ argsert('<number|null|undefined>', [cols], arguments.length)
usage.wrap(cols)
return self
}
- var strict = false
- var strictGlobal = false
- self.strict = function (global) {
- argsert('[boolean]', [global], arguments.length)
- strict = true
- strictGlobal = global !== false
+ let strict = false
+ self.strict = function (enabled) {
+ argsert('[boolean]', [enabled], arguments.length)
+ strict = enabled !== false
return self
}
- self.getStrict = function () {
- return strict
+ self.getStrict = () => strict
+
+ let parserConfig = {}
+ self.parserConfiguration = function parserConfiguration (config) {
+ argsert('<object>', [config], arguments.length)
+ parserConfig = config
+ return self
}
+ self.getParserConfiguration = () => parserConfig
self.showHelp = function (level) {
argsert('[string|function]', [level], arguments.length)
if (!self.parsed) self._parseArgs(processArgs) // run parser, if it has not already been executed.
+ if (command.hasDefaultCommand()) {
+ context.resets++ // override the restriction on top-level positoinals.
+ command.runDefaultBuilderOn(self, true)
+ }
usage.showHelp(level)
return self
}
- var versionOpt = null
- self.version = function (opt, msg, ver) {
- argsert('[string|function] [string|function] [string]', [opt, msg, ver], arguments.length)
+ let versionOpt = null
+ self.version = function version (opt, msg, ver) {
+ const defaultVersionOpt = 'version'
+ argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length)
+
+ // nuke the key previously configured
+ // to return version #.
+ if (versionOpt) {
+ deleteFromParserHintObject(versionOpt)
+ usage.version(undefined)
+ versionOpt = null
+ }
+
if (arguments.length === 0) {
ver = guessVersion()
- opt = 'version'
+ opt = defaultVersionOpt
} else if (arguments.length === 1) {
+ if (opt === false) { // disable default 'version' key.
+ return self
+ }
ver = opt
- opt = 'version'
+ opt = defaultVersionOpt
} else if (arguments.length === 2) {
ver = msg
msg = null
}
- versionOpt = opt
+ versionOpt = typeof opt === 'string' ? opt : defaultVersionOpt
msg = msg || usage.deferY18nLookup('Show version number')
usage.version(ver || undefined)
@@ -737,44 +830,57 @@ function Yargs (processArgs, cwd, parentRequire) {
}
function guessVersion () {
- var obj = pkgUp()
+ const obj = pkgUp()
return obj.version || 'unknown'
}
- var helpOpt = null
- var useHelpOptAsCommand = false // a call to .help() will enable this
- self.addHelpOpt = self.help = function (opt, msg, addImplicitCmd) {
- argsert('[string|boolean] [string|boolean] [boolean]', [opt, msg, addImplicitCmd], arguments.length)
+ let helpOpt = null
+ self.addHelpOpt = self.help = function addHelpOpt (opt, msg) {
+ const defaultHelpOpt = 'help'
+ argsert('[string|boolean] [string]', [opt, msg], arguments.length)
- // argument shuffle
- if (arguments.length === 0) {
- useHelpOptAsCommand = true
- } else if (arguments.length === 1) {
- if (typeof opt === 'boolean') {
- useHelpOptAsCommand = opt
- opt = null
- } else {
- useHelpOptAsCommand = true
- }
- } else if (arguments.length === 2) {
- if (typeof msg === 'boolean') {
- useHelpOptAsCommand = msg
- msg = null
- } else {
- useHelpOptAsCommand = true
- }
- } else {
- useHelpOptAsCommand = Boolean(addImplicitCmd)
+ // nuke the key previously configured
+ // to return help.
+ if (helpOpt) {
+ deleteFromParserHintObject(helpOpt)
+ helpOpt = null
+ }
+
+ if (arguments.length === 1) {
+ if (opt === false) return self
}
+
// use arguments, fallback to defaults for opt and msg
- helpOpt = opt || 'help'
+ helpOpt = typeof opt === 'string' ? opt : defaultHelpOpt
self.boolean(helpOpt)
self.describe(helpOpt, msg || usage.deferY18nLookup('Show help'))
return self
}
- self.showHelpOnFail = function (enabled, message) {
+ const defaultShowHiddenOpt = 'show-hidden'
+ options.showHiddenOpt = defaultShowHiddenOpt
+ self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt (opt, msg) {
+ argsert('[string|boolean] [string]', [opt, msg], arguments.length)
+
+ if (arguments.length === 1) {
+ if (opt === false) return self
+ }
+
+ const showHiddenOpt = typeof opt === 'string' ? opt : defaultShowHiddenOpt
+ self.boolean(showHiddenOpt)
+ self.describe(showHiddenOpt, msg || usage.deferY18nLookup('Show hidden options'))
+ options.showHiddenOpt = showHiddenOpt
+ return self
+ }
+
+ self.hide = function hide (key) {
+ argsert('<string|object>', [key], arguments.length)
+ options.hiddenOptions.push(key)
+ return self
+ }
+
+ self.showHelpOnFail = function showHelpOnFail (enabled, message) {
argsert('[boolean|string] [string]', [enabled, message], arguments.length)
usage.showHelpOnFail(enabled, message)
return self
@@ -789,9 +895,7 @@ function Yargs (processArgs, cwd, parentRequire) {
exitProcess = enabled
return self
}
- self.getExitProcess = function () {
- return exitProcess
- }
+ self.getExitProcess = () => exitProcess
var completionCommand = null
self.completion = function (cmd, desc, fn) {
@@ -808,7 +912,7 @@ function Yargs (processArgs, cwd, parentRequire) {
// register the completion command.
completionCommand = cmd || 'completion'
if (!desc && desc !== false) {
- desc = 'generate bash completion script'
+ desc = 'generate completion script'
}
self.command(completionCommand, desc)
@@ -821,7 +925,7 @@ function Yargs (processArgs, cwd, parentRequire) {
self.showCompletionScript = function ($0) {
argsert('[string]', [$0], arguments.length)
$0 = $0 || self.$0
- _logger.log(completion.generateCompletionScript($0))
+ _logger.log(completion.generateCompletionScript($0, completionCommand))
return self
}
@@ -848,21 +952,19 @@ function Yargs (processArgs, cwd, parentRequire) {
return self
}
- var detectLocale = true
+ let detectLocale = true
self.detectLocale = function (detect) {
argsert('<boolean>', [detect], arguments.length)
detectLocale = detect
return self
}
- self.getDetectLocale = function () {
- return detectLocale
- }
+ self.getDetectLocale = () => detectLocale
var hasOutput = false
var exitError = null
// maybe exit, always capture
// context about why we wanted to exit.
- self.exit = function (code, err) {
+ self.exit = (code, err) => {
hasOutput = true
exitError = err
if (exitProcess) process.exit(code)
@@ -870,78 +972,74 @@ function Yargs (processArgs, cwd, parentRequire) {
// we use a custom logger that buffers output,
// so that we can print to non-CLIs, e.g., chat-bots.
- var _logger = {
- log: function () {
+ const _logger = {
+ log () {
const args = []
- for (var i = 0; i < arguments.length; i++) args.push(arguments[i])
+ for (let i = 0; i < arguments.length; i++) args.push(arguments[i])
if (!self._hasParseCallback()) console.log.apply(console, args)
hasOutput = true
if (output.length) output += '\n'
output += args.join(' ')
},
- error: function () {
+ error () {
const args = []
- for (var i = 0; i < arguments.length; i++) args.push(arguments[i])
+ for (let i = 0; i < arguments.length; i++) args.push(arguments[i])
if (!self._hasParseCallback()) console.error.apply(console, args)
hasOutput = true
if (output.length) output += '\n'
output += args.join(' ')
}
}
- self._getLoggerInstance = function () {
- return _logger
- }
+ self._getLoggerInstance = () => _logger
// has yargs output an error our help
// message in the current execution context.
- self._hasOutput = function () {
- return hasOutput
- }
+ self._hasOutput = () => hasOutput
- self._setHasOutput = function () {
+ self._setHasOutput = () => {
hasOutput = true
}
- var recommendCommands
+ let recommendCommands
self.recommendCommands = function (recommend) {
argsert('[boolean]', [recommend], arguments.length)
recommendCommands = typeof recommend === 'boolean' ? recommend : true
return self
}
- self.getUsageInstance = function () {
- return usage
- }
+ self.getUsageInstance = () => usage
- self.getValidationInstance = function () {
- return validation
- }
+ self.getValidationInstance = () => validation
- self.getCommandInstance = function () {
- return command
- }
+ self.getCommandInstance = () => command
- self.terminalWidth = function () {
+ self.terminalWidth = () => {
argsert([], 0)
return typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null
}
Object.defineProperty(self, 'argv', {
- get: function () {
- return self._parseArgs(processArgs)
- },
+ get: () => self._parseArgs(processArgs),
enumerable: true
})
- self._parseArgs = function (args, shortCircuit, _skipValidation) {
- var skipValidation = !!_skipValidation
+ self._parseArgs = function parseArgs (args, shortCircuit, _skipValidation, commandIndex) {
+ let skipValidation = !!_skipValidation
args = args || processArgs
options.__ = y18n.__
- options.configuration = pkgUp()['yargs'] || {}
+ options.configuration = self.getParserConfiguration()
+
+ // Deprecated
+ let pkgConfig = pkgUp()['yargs']
+ if (pkgConfig) {
+ console.warn('Configuring yargs through package.json is deprecated and will be removed in the next major release, please use the JS API instead.')
+ options.configuration = Object.assign({}, pkgConfig, options.configuration)
+ }
+
const parsed = Parser.detailed(args, options)
- var argv = parsed.argv
- if (parseContext) argv = assign(argv, parseContext)
- var aliases = parsed.aliases
+ let argv = parsed.argv
+ if (parseContext) argv = Object.assign({}, argv, parseContext)
+ const aliases = parsed.aliases
argv.$0 = self.$0
self.parsed = parsed
@@ -956,89 +1054,87 @@ function Yargs (processArgs, cwd, parentRequire) {
return argv
}
- if (argv._.length) {
- // check for helpOpt in argv._ before running commands
- // assumes helpOpt must be valid if useHelpOptAsCommand is true
- if (useHelpOptAsCommand) {
- // consider any multi-char helpOpt alias as a valid help command
- // unless all helpOpt aliases are single-char
- // note that parsed.aliases is a normalized bidirectional map :)
- var helpCmds = [helpOpt].concat(aliases[helpOpt] || [])
- var multiCharHelpCmds = helpCmds.filter(function (k) {
- return k.length > 1
- })
- if (multiCharHelpCmds.length) helpCmds = multiCharHelpCmds
- // look for and strip any helpCmds from argv._
- argv._ = argv._.filter(function (cmd) {
- if (~helpCmds.indexOf(cmd)) {
- argv[helpOpt] = true
- return false
- }
- return true
- })
+ // if there's a handler associated with a
+ // command defer processing to it.
+ if (helpOpt) {
+ // consider any multi-char helpOpt alias as a valid help command
+ // unless all helpOpt aliases are single-char
+ // note that parsed.aliases is a normalized bidirectional map :)
+ const helpCmds = [helpOpt]
+ .concat(aliases[helpOpt] || [])
+ .filter(k => k.length > 1)
+ // check if help should trigger and strip it from _.
+ if (~helpCmds.indexOf(argv._[argv._.length - 1])) {
+ argv._.pop()
+ argv[helpOpt] = true
}
+ }
+
+ const handlerKeys = command.getCommands()
+ const requestCompletions = completion.completionKey in argv
+ const skipRecommendation = argv[helpOpt] || requestCompletions
+ const skipDefaultCommand = skipRecommendation && (handlerKeys.length > 1 || handlerKeys[0] !== '$0')
- // if there's a handler associated with a
- // command defer processing to it.
- var handlerKeys = command.getCommands()
+ if (argv._.length) {
if (handlerKeys.length) {
- var firstUnknownCommand
- for (var i = 0, cmd; argv._[i] !== undefined; i++) {
+ let firstUnknownCommand
+ for (let i = (commandIndex || 0), cmd; argv._[i] !== undefined; i++) {
cmd = String(argv._[i])
if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) {
- setPlaceholderKeys(argv)
- return command.runCommand(cmd, self, parsed)
+ // commands are executed using a recursive algorithm that executes
+ // the deepest command first; we keep track of the position in the
+ // argv._ array that is currently being executed.
+ return command.runCommand(cmd, self, parsed, i + 1)
} else if (!firstUnknownCommand && cmd !== completionCommand) {
firstUnknownCommand = cmd
+ break
}
}
// run the default command, if defined
- if (command.hasDefaultCommand() && !argv[helpOpt]) {
- setPlaceholderKeys(argv)
+ if (command.hasDefaultCommand() && !skipDefaultCommand) {
return command.runCommand(null, self, parsed)
}
// recommend a command if recommendCommands() has
// been enabled, and no commands were found to execute
- if (recommendCommands && firstUnknownCommand) {
+ if (recommendCommands && firstUnknownCommand && !skipRecommendation) {
validation.recommendCommands(firstUnknownCommand, handlerKeys)
}
}
// generate a completion script for adding to ~/.bashrc.
- if (completionCommand && ~argv._.indexOf(completionCommand) && !argv[completion.completionKey]) {
+ if (completionCommand && ~argv._.indexOf(completionCommand) && !requestCompletions) {
if (exitProcess) setBlocking(true)
self.showCompletionScript()
self.exit(0)
}
- } else if (command.hasDefaultCommand() && !argv[helpOpt]) {
- setPlaceholderKeys(argv)
+ } else if (command.hasDefaultCommand() && !skipDefaultCommand) {
return command.runCommand(null, self, parsed)
}
// we must run completions first, a user might
// want to complete the --help or --version option.
- if (completion.completionKey in argv) {
+ if (requestCompletions) {
if (exitProcess) setBlocking(true)
// we allow for asynchronous completions,
// e.g., loading in a list of commands from an API.
- var completionArgs = args.slice(args.indexOf('--' + completion.completionKey) + 1)
- completion.getCompletion(completionArgs, function (completions) {
- ;(completions || []).forEach(function (completion) {
+ const completionArgs = args.slice(args.indexOf(`--${completion.completionKey}`) + 1)
+ completion.getCompletion(completionArgs, (completions) => {
+ ;(completions || []).forEach((completion) => {
_logger.log(completion)
})
self.exit(0)
})
- return setPlaceholderKeys(argv)
+ return argv
}
// Handle 'help' and 'version' options
// if we haven't already output help!
if (!hasOutput) {
- Object.keys(argv).forEach(function (key) {
+ Object.keys(argv).forEach((key) => {
if (key === helpOpt && argv[key]) {
if (exitProcess) setBlocking(true)
@@ -1057,9 +1153,7 @@ function Yargs (processArgs, cwd, parentRequire) {
// Check if any of the options to skip validation were provided
if (!skipValidation && options.skipValidation.length > 0) {
- skipValidation = Object.keys(argv).some(function (key) {
- return options.skipValidation.indexOf(key) >= 0 && argv[key] === true
- })
+ skipValidation = Object.keys(argv).some(key => options.skipValidation.indexOf(key) >= 0 && argv[key] === true)
}
// If the help or version options where used and exitProcess is false,
@@ -1069,7 +1163,7 @@ function Yargs (processArgs, cwd, parentRequire) {
// if we're executed via bash completion, don't
// bother with validation.
- if (!argv[completion.completionKey]) {
+ if (!requestCompletions) {
self._runValidation(argv, aliases, {}, parsed.error)
}
}
@@ -1078,13 +1172,12 @@ function Yargs (processArgs, cwd, parentRequire) {
else throw err
}
- return setPlaceholderKeys(argv)
+ return argv
}
- self._runValidation = function (argv, aliases, positionalMap, parseErrors) {
- if (parseErrors) throw new YError(parseErrors.message)
+ self._runValidation = function runValidation (argv, aliases, positionalMap, parseErrors) {
+ if (parseErrors) throw new YError(parseErrors.message || parseErrors)
validation.nonOptionCount(argv)
- validation.missingArgumentValue(argv)
validation.requiredArguments(argv)
if (strict) validation.unknownArguments(argv, aliases, positionalMap)
validation.customChecks(argv, aliases)
@@ -1097,23 +1190,19 @@ function Yargs (processArgs, cwd, parentRequire) {
if (!detectLocale) return
try {
- const osLocale = require('os-locale')
- self.locale(osLocale.sync({ spawn: false }))
+ const { env } = process
+ const locale = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE || 'en_US'
+ self.locale(locale.replace(/[.:].*/, ''))
} catch (err) {
// if we explode looking up locale just noop
// we'll keep using the default language 'en'.
}
}
- function setPlaceholderKeys (argv) {
- Object.keys(options.key).forEach(function (key) {
- // don't set placeholder keys for dot
- // notation options 'foo.bar'.
- if (~key.indexOf('.')) return
- if (typeof argv[key] === 'undefined') argv[key] = undefined
- })
- return argv
- }
+ // an app should almost always have --version and --help,
+ // if you *really* want to disable this use .help(false)/.version(false).
+ self.help()
+ self.version()
return self
}
diff --git a/package-lock.json b/package-lock.json
index 6cbb440..6e46c51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,9 +16,9 @@
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"ajv": {
- "version": "6.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
- "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
+ "version": "6.12.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
+ "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -89,9 +89,9 @@
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
- "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
+ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
},
"balanced-match": {
"version": "1.0.0",
@@ -160,13 +160,43 @@
}
},
"cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
}
},
"code-point-at": {
@@ -174,6 +204,19 @@
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -246,6 +289,11 @@
"safer-buffer": "^2.1.0"
}
},
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -343,9 +391,9 @@
}
},
"get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-stdin": {
"version": "4.0.1",
@@ -384,9 +432,9 @@
}
},
"graceful-fs": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
- "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
},
"har-schema": {
"version": "2.0.0",
@@ -431,9 +479,9 @@
}
},
"in-publish": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
- "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E="
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+ "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
},
"indent-string": {
"version": "2.1.0",
@@ -457,11 +505,6 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
- },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -541,14 +584,6 @@
"verror": "1.10.0"
}
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -561,6 +596,22 @@
"strip-bom": "^2.0.0"
}
},
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ }
+ }
+ },
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
@@ -607,16 +658,16 @@
}
},
"mime-db": {
- "version": "1.43.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
- "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
},
"mime-types": {
- "version": "2.1.26",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
- "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+ "version": "2.1.27",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
"requires": {
- "mime-db": "1.43.0"
+ "mime-db": "1.44.0"
}
},
"minimatch": {
@@ -633,24 +684,17 @@
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
- }
+ "minimist": "^1.2.5"
}
},
"nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+ "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
},
"node-gyp": {
"version": "3.8.0",
@@ -679,9 +723,9 @@
}
},
"node-sass": {
- "version": "4.13.1",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz",
- "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==",
+ "version": "4.14.1",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+ "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
"requires": {
"async-foreach": "^0.1.3",
"chalk": "^1.1.1",
@@ -697,7 +741,7 @@
"node-gyp": "^3.8.0",
"npmlog": "^4.0.0",
"request": "^2.88.0",
- "sass-graph": "^2.2.4",
+ "sass-graph": "2.2.5",
"stdout-stream": "^1.4.0",
"true-case-path": "^1.0.2"
}
@@ -760,14 +804,6 @@
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "requires": {
- "lcid": "^1.0.0"
- }
- },
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -782,6 +818,27 @@
"os-tmpdir": "^1.0.0"
}
},
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
@@ -852,9 +909,9 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"psl": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
- "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
},
"punycode": {
"version": "2.1.1",
@@ -949,14 +1006,14 @@
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"resolve": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
- "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
"requires": {
"path-parse": "^1.0.6"
}
@@ -980,14 +1037,14 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sass-graph": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
- "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+ "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
"requires": {
"glob": "^7.0.0",
"lodash": "^4.0.0",
"scss-tokenizer": "^0.2.3",
- "yargs": "^7.0.0"
+ "yargs": "^13.3.2"
}
},
"scss-tokenizer": {
@@ -1010,9 +1067,9 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"source-map": {
"version": "0.4.4",
@@ -1023,23 +1080,23 @@
}
},
"spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
},
"spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -1212,9 +1269,9 @@
}
},
"which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"wide-align": {
"version": "1.1.3",
@@ -1225,12 +1282,51 @@
}
},
"wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
}
},
"wrappy": {
@@ -1239,9 +1335,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
},
"yallist": {
"version": "2.1.2",
@@ -1249,44 +1345,73 @@
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
},
"yargs": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
- "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
- "requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
+ "require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.0"
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
},
"dependencies": {
- "camelcase": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "find-up": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
}
}
},
"yargs-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
- "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"requires": {
- "camelcase": "^3.0.0"
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
},
"dependencies": {
"camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
}
}
}
diff --git a/package.json b/package.json
index 7d1c927..ce8e7bd 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
},
"dependencies": {
"bootstrap": "^4.3.1",
- "node-sass": "^4.13.1"
+ "node-sass": "^4.14.1"
},
"keywords": [
"hugo",