From 39970e9caf327ecbb458a47ec556f97db7fc8a6d Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 10 Jan 2018 16:32:32 +0100 Subject: [PATCH 001/163] =?UTF-8?q?doc:=20un-mark=20Socket#write=20?= =?UTF-8?q?=E2=80=9Cremoval=E2=80=9D=20as=20notable=20change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the method is inherited from `Writable`, usage of the method does not change at all after its removal as an explicit method. Calling it out as notable might therefore be more confusing than helpful. PR-URL: https://github.com/nodejs/node/pull/18083 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- doc/changelogs/CHANGELOG_V9.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/changelogs/CHANGELOG_V9.md b/doc/changelogs/CHANGELOG_V9.md index 439cb6df7f2fb3..57fb7825f02450 100644 --- a/doc/changelogs/CHANGELOG_V9.md +++ b/doc/changelogs/CHANGELOG_V9.md @@ -51,7 +51,6 @@ - perf_hooks integration (James M Snell) [#17906](https://github.com/nodejs/node/pull/17906) - Refactoring and cleanup of Http2Session and Http2Stream destroy (James M Snell) [#17406](https://github.com/nodejs/node/pull/17406) * **net**: - - remove Socket.prototype.write (Anna Henningsen) [#17644](https://github.com/nodejs/node/pull/17644) - remove Socket.prototype.listen (Ruben Bridgewater) [#13735](https://github.com/nodejs/node/pull/13735) * **repl**: - show lexically scoped vars in tab completion (Michaël Zasso) [#16591](https://github.com/nodejs/node/pull/16591) @@ -465,8 +464,8 @@ * [[`b87030c5cf`](https://github.com/nodejs/node/commit/b87030c5cf)] - **doc**: correct the wrong added meta data (Gaara) [#17072](https://github.com/nodejs/node/pull/17072) * [[`73295370cc`](https://github.com/nodejs/node/commit/73295370cc)] - **doc**: document fs.realpath.native() (Ben Noordhuis) [#17059](https://github.com/nodejs/node/pull/17059) * [[`4bdd05dd84`](https://github.com/nodejs/node/commit/4bdd05dd84)] - **doc**: add Table of Contents to Cpp style guide (Franziska Hinkelmann) [#17052](https://github.com/nodejs/node/pull/17052) -* [[`7d49bd0045`](https://github.com/nodejs/node/commit/7d49bd0045)] - **doc**: add `clientCertEngine` to docs (Rich Trott) -* [[`7594032fac`](https://github.com/nodejs/node/commit/7594032fac)] - **doc**: add hashseed to collaborators (Yang Guo) +* [[`7d49bd0045`](https://github.com/nodejs/node/commit/7d49bd0045)] - **doc**: add `clientCertEngine` to docs (Rich Trott) +* [[`7594032fac`](https://github.com/nodejs/node/commit/7594032fac)] - **doc**: add hashseed to collaborators (Yang Guo) * [[`a256482318`](https://github.com/nodejs/node/commit/a256482318)] - **doc,test**: remove unnecessary await with return instances (Rich Trott) [#17265](https://github.com/nodejs/node/pull/17265) * [[`bccdea623d`](https://github.com/nodejs/node/commit/bccdea623d)] - **doc,win**: clarify WSL support (João Reis) [#17008](https://github.com/nodejs/node/pull/17008) * [[`9b16e15f44`](https://github.com/nodejs/node/commit/9b16e15f44)] - **domain**: re-implement domain over async_hook (vladimir) [#16222](https://github.com/nodejs/node/pull/16222) @@ -669,14 +668,14 @@ * [[`70060eef65`](https://github.com/nodejs/node/commit/70060eef65)] - **test**: --enable-static linked executable (Daniel Bevenius) [#14986](https://github.com/nodejs/node/pull/14986) * [[`113dd2b573`](https://github.com/nodejs/node/commit/113dd2b573)] - **test**: add basic WebAssembly test (Steve Kinney) [#16760](https://github.com/nodejs/node/pull/16760) * [[`f80cf5a33d`](https://github.com/nodejs/node/commit/f80cf5a33d)] - **test**: add coverage to tty module (cjihrig) [#16959](https://github.com/nodejs/node/pull/16959) -* [[`121245f25f`](https://github.com/nodejs/node/commit/121245f25f)] - **test**: add tls clientcertengine tests (Rich Trott) -* [[`3b1db7f54b`](https://github.com/nodejs/node/commit/3b1db7f54b)] - **test**: flag known flake (Refael Ackermann) +* [[`121245f25f`](https://github.com/nodejs/node/commit/121245f25f)] - **test**: add tls clientcertengine tests (Rich Trott) +* [[`3b1db7f54b`](https://github.com/nodejs/node/commit/3b1db7f54b)] - **test**: flag known flake (Refael Ackermann) * [[`0093840044`](https://github.com/nodejs/node/commit/0093840044)] - **test,doc**: do not indicate that non-functions "return" values (Rich Trott) [#17267](https://github.com/nodejs/node/pull/17267) * [[`b6929e2aa9`](https://github.com/nodejs/node/commit/b6929e2aa9)] - **test,doc**: document where common modules go (Gibson Fahnestock) [#16089](https://github.com/nodejs/node/pull/16089) * [[`89d31ee048`](https://github.com/nodejs/node/commit/89d31ee048)] - **timers**: improvements to TimersList management (Anatoli Papirovski) [#17429](https://github.com/nodejs/node/pull/17429) * [[`bd79c3788b`](https://github.com/nodejs/node/commit/bd79c3788b)] - **timers**: clean up for readability (Anatoli Papirovski) [#17279](https://github.com/nodejs/node/pull/17279) * [[`fd501b31c6`](https://github.com/nodejs/node/commit/fd501b31c6)] - **timers**: cross JS/C++ border less frequently (Anna Henningsen) [#17064](https://github.com/nodejs/node/pull/17064) -* [[`33c1e8b3d5`](https://github.com/nodejs/node/commit/33c1e8b3d5)] - **tls**: implement clientCertEngine option (joelostrowski) +* [[`33c1e8b3d5`](https://github.com/nodejs/node/commit/33c1e8b3d5)] - **tls**: implement clientCertEngine option (joelostrowski) * [[`f7a1e39139`](https://github.com/nodejs/node/commit/f7a1e39139)] - **tools**: simplify no-let-in-for-declaration rule (cjihrig) [#17572](https://github.com/nodejs/node/pull/17572) * [[`e157e1c922`](https://github.com/nodejs/node/commit/e157e1c922)] - **tools**: simplify buffer-constructor rule (cjihrig) [#17572](https://github.com/nodejs/node/pull/17572) * [[`01e7b446d1`](https://github.com/nodejs/node/commit/01e7b446d1)] - **tools**: simplify prefer-assert-methods rule (cjihrig) [#17572](https://github.com/nodejs/node/pull/17572) From 506d85bfba4e11506bb8c057f1d693c65a0bd74c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 11 Jan 2018 09:58:50 +0100 Subject: [PATCH 002/163] deps: cherry-pick c3458a8 from upstream V8 Original commit message: [parser] Add new FunctionNameInferrer state before parsing param Create new state before parsing FormalParameter because we don't want to use any of the parameters as an inferred function name. Previously the stacktrace was: test.js:3: Error: boom throw new Error('boom'); ^ Error: boom at param (test.js:3:11) at test.js:4:5 at test.js:6:3 The stacktrace with this patch: test.js:3: Error: boom throw new Error('boom'); ^ Error: boom at test.js:3:11 at test.js:4:5 at test.js:6:3 Bug: v8:6822, v8:6513 Change-Id: Ifbadc660fc4e85248af405acd67c025f11662bd4 Reviewed-on: https://chromium-review.googlesource.com/742657 Reviewed-by: Adam Klein Commit-Queue: Sathya Gunasekaran Cr-Commit-Position: refs/heads/master@{#49042} PR-URL: https://github.com/nodejs/node/pull/18060 Fixes: https://github.com/nodejs/node/issues/15386 Refs: https://github.com/v8/v8/commit/c3458a86722d735ef4c4e31f9bcaa966e5093e47 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig --- common.gypi | 2 +- deps/v8/src/parsing/parser-base.h | 1 + deps/v8/test/message/fail/func-name-inferrer-arg-1.js | 10 ++++++++++ deps/v8/test/message/fail/func-name-inferrer-arg-1.out | 8 ++++++++ deps/v8/test/message/fail/func-name-inferrer-arg.js | 10 ++++++++++ deps/v8/test/message/fail/func-name-inferrer-arg.out | 7 +++++++ 6 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 deps/v8/test/message/fail/func-name-inferrer-arg-1.js create mode 100644 deps/v8/test/message/fail/func-name-inferrer-arg-1.out create mode 100644 deps/v8/test/message/fail/func-name-inferrer-arg.js create mode 100644 deps/v8/test/message/fail/func-name-inferrer-arg.out diff --git a/common.gypi b/common.gypi index b5e1bc0628d22c..0ee48812415799 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.17', + 'v8_embedder_string': '-node.18', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/src/parsing/parser-base.h b/deps/v8/src/parsing/parser-base.h index f555dbdbe0e5a7..1788eba51c8fe6 100644 --- a/deps/v8/src/parsing/parser-base.h +++ b/deps/v8/src/parsing/parser-base.h @@ -3634,6 +3634,7 @@ void ParserBase::ParseFormalParameter(FormalParametersT* parameters, // BindingElement[?Yield, ?GeneratorParameter] bool is_rest = parameters->has_rest; + FuncNameInferrer::State fni_state(fni_); ExpressionT pattern = ParsePrimaryExpression(CHECK_OK_CUSTOM(Void)); ValidateBindingPattern(CHECK_OK_CUSTOM(Void)); diff --git a/deps/v8/test/message/fail/func-name-inferrer-arg-1.js b/deps/v8/test/message/fail/func-name-inferrer-arg-1.js new file mode 100644 index 00000000000000..6c28367d921433 --- /dev/null +++ b/deps/v8/test/message/fail/func-name-inferrer-arg-1.js @@ -0,0 +1,10 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +(function (param = function() { throw new Error('boom') }) { + (() => { + param(); + })(); + +})(); diff --git a/deps/v8/test/message/fail/func-name-inferrer-arg-1.out b/deps/v8/test/message/fail/func-name-inferrer-arg-1.out new file mode 100644 index 00000000000000..3c19121a0a6efa --- /dev/null +++ b/deps/v8/test/message/fail/func-name-inferrer-arg-1.out @@ -0,0 +1,8 @@ +*%(basename)s:5: Error: boom +(function (param = function() { throw new Error('boom') }) { + ^ +Error: boom + at param (*%(basename)s:5:39) + at *%(basename)s:7:5 + at *%(basename)s:8:5 + at *%(basename)s:10:3 \ No newline at end of file diff --git a/deps/v8/test/message/fail/func-name-inferrer-arg.js b/deps/v8/test/message/fail/func-name-inferrer-arg.js new file mode 100644 index 00000000000000..3fcd044b9b1831 --- /dev/null +++ b/deps/v8/test/message/fail/func-name-inferrer-arg.js @@ -0,0 +1,10 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +(function (param) { + (() => { + throw new Error('boom'); + })(); + +})(); diff --git a/deps/v8/test/message/fail/func-name-inferrer-arg.out b/deps/v8/test/message/fail/func-name-inferrer-arg.out new file mode 100644 index 00000000000000..06e001d1d5e641 --- /dev/null +++ b/deps/v8/test/message/fail/func-name-inferrer-arg.out @@ -0,0 +1,7 @@ +*%(basename)s:7: Error: boom + throw new Error('boom'); + ^ +Error: boom + at *%(basename)s:7:11 + at *%(basename)s:8:5 + at *%(basename)s:10:3 \ No newline at end of file From 2a4f849c39c89adf540b0314adefe068b3ade9d4 Mon Sep 17 00:00:00 2001 From: Andreas Madsen Date: Wed, 22 Nov 2017 13:54:38 +0100 Subject: [PATCH 003/163] async_hooks: rename initTriggerId rename initTriggerId to defaultTriggerAsyncId such it matches the rest of our naming. Backport-PR-URL: https://github.com/nodejs/node/pull/18079 PR-URL: https://github.com/nodejs/node/pull/17273 Reviewed-By: Matteo Collina Reviewed-By: James M Snell --- lib/_http_client.js | 2 +- lib/async_hooks.js | 6 +++--- lib/dgram.js | 4 ++-- lib/internal/async_hooks.js | 36 +++++++++++++++---------------- lib/internal/bootstrap_node.js | 8 +++---- lib/internal/process/next_tick.js | 6 +++--- lib/net.js | 10 ++++----- lib/timers.js | 8 +++---- src/async_wrap.cc | 13 +++++------ src/connection_wrap.cc | 2 +- src/env-inl.h | 23 ++++++++++---------- src/env.h | 6 +++--- src/stream_base.cc | 8 +++---- src/tcp_wrap.cc | 4 ++-- src/udp_wrap.cc | 2 +- 15 files changed, 70 insertions(+), 68 deletions(-) diff --git a/lib/_http_client.js b/lib/_http_client.js index 09925b22791972..b7311639f80db3 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -579,7 +579,7 @@ function responseKeepAlive(res, req) { socket.removeListener('error', socketErrorListener); socket.once('error', freeSocketErrorListener); // There are cases where _handle === null. Avoid those. Passing null to - // nextTick() will call initTriggerId() to retrieve the id. + // nextTick() will call getDefaultTriggerAsyncId() to retrieve the id. const asyncId = socket._handle ? socket._handle.getAsyncId() : null; // Mark this socket as available, AFTER user-added end // handlers have a chance to run. diff --git a/lib/async_hooks.js b/lib/async_hooks.js index 78dff7218c13ea..01b620208b65f3 100644 --- a/lib/async_hooks.js +++ b/lib/async_hooks.js @@ -19,7 +19,7 @@ const { disableHooks, // Sensitive Embedder API newUid, - initTriggerId, + getDefaultTriggerAsyncId, setInitTriggerId, emitInit, emitBefore, @@ -152,7 +152,7 @@ class AsyncResource { if (typeof opts === 'number') { opts = { triggerAsyncId: opts, requireManualDestroy: false }; } else if (opts.triggerAsyncId === undefined) { - opts.triggerAsyncId = initTriggerId(); + opts.triggerAsyncId = getDefaultTriggerAsyncId(); } // Unlike emitInitScript, AsyncResource doesn't supports null as the @@ -245,7 +245,7 @@ Object.defineProperty(module.exports, 'newUid', { Object.defineProperty(module.exports, 'initTriggerId', { get: internalUtil.deprecate(function() { - return initTriggerId; + return getDefaultTriggerAsyncId; }, 'async_hooks.initTriggerId is deprecated. ' + 'Use the AsyncResource default instead.', 'DEP0085') }); diff --git a/lib/dgram.js b/lib/dgram.js index bfd024bfee6c48..c7143b6876c2a5 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -28,7 +28,7 @@ const dns = require('dns'); const util = require('util'); const { isUint8Array } = require('internal/util/types'); const EventEmitter = require('events'); -const { setInitTriggerId } = require('internal/async_hooks'); +const { setDefaultTriggerAsyncId } = require('internal/async_hooks'); const { UV_UDP_REUSEADDR } = process.binding('constants').os; const { async_id_symbol } = process.binding('async_wrap'); const { nextTick } = require('internal/process/next_tick'); @@ -479,7 +479,7 @@ function doSend(ex, self, ip, list, address, port, callback) { // node::SendWrap isn't instantiated and attached to the JS instance of // SendWrap above until send() is called. So don't set the init trigger id // until now. - setInitTriggerId(self[async_id_symbol]); + setDefaultTriggerAsyncId(self[async_id_symbol]); var err = self._handle.send(req, list, list.length, diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 46cc1806b94a8d..ba08b5e3838468 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -14,10 +14,10 @@ const async_wrap = process.binding('async_wrap'); * kTriggerAsyncId: The trigger_async_id of the resource responsible for * the current execution stack. * kAsyncIdCounter: Incremental counter tracking the next assigned async_id. - * kInitTriggerAsyncId: Written immediately before a resource's constructor + * kDefaultTriggerAsyncId: Written immediately before a resource's constructor * that sets the value of the init()'s triggerAsyncId. The order of * retrieving the triggerAsyncId value is passing directly to the - * constructor -> value set in kInitTriggerAsyncId -> executionAsyncId of + * constructor -> value set in kDefaultTriggerAsyncId -> executionAsyncId of * the current resource. */ const { async_hook_fields, async_id_fields } = async_wrap; @@ -61,7 +61,7 @@ const active_hooks = { // for a given step, that step can bail out early. const { kInit, kBefore, kAfter, kDestroy, kPromiseResolve, kCheck, kExecutionAsyncId, kAsyncIdCounter, - kInitTriggerAsyncId } = async_wrap.constants; + kDefaultTriggerAsyncId } = async_wrap.constants; // Used in AsyncHook and AsyncResource. const init_symbol = Symbol('init'); @@ -242,25 +242,25 @@ function newUid() { return ++async_id_fields[kAsyncIdCounter]; } - // Return the triggerAsyncId meant for the constructor calling it. It's up to // the user to safeguard this call and make sure it's zero'd out when the // constructor is complete. -function initTriggerId() { - var triggerAsyncId = async_id_fields[kInitTriggerAsyncId]; +function getDefaultTriggerAsyncId() { + var defaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId]; // Reset value after it's been called so the next constructor doesn't // inherit it by accident. - async_id_fields[kInitTriggerAsyncId] = 0; - if (triggerAsyncId <= 0) - triggerAsyncId = async_id_fields[kExecutionAsyncId]; - return triggerAsyncId; + async_id_fields[kDefaultTriggerAsyncId] = 0; + // If defaultTriggerAsyncId isn't set, use the executionAsyncId + if (defaultTriggerAsyncId <= 0) + defaultTriggerAsyncId = async_id_fields[kExecutionAsyncId]; + return defaultTriggerAsyncId; } -function setInitTriggerId(triggerAsyncId) { +function setDefaultTriggerAsyncId(triggerAsyncId) { // CHECK(Number.isSafeInteger(triggerAsyncId)) // CHECK(triggerAsyncId > 0) - async_id_fields[kInitTriggerAsyncId] = triggerAsyncId; + async_id_fields[kDefaultTriggerAsyncId] = triggerAsyncId; } @@ -279,13 +279,13 @@ function emitInitScript(asyncId, type, triggerAsyncId, resource) { return; // This can run after the early return check b/c running this function - // manually means that the embedder must have used initTriggerId(). + // manually means that the embedder must have used getDefaultTriggerAsyncId(). if (triggerAsyncId === null) { - triggerAsyncId = initTriggerId(); + triggerAsyncId = getDefaultTriggerAsyncId(); } else { - // If a triggerAsyncId was passed, any kInitTriggerAsyncId still must be + // If a triggerAsyncId was passed, any kDefaultTriggerAsyncId still must be // null'd. - async_id_fields[kInitTriggerAsyncId] = 0; + async_id_fields[kDefaultTriggerAsyncId] = 0; } emitInitNative(asyncId, type, triggerAsyncId, resource); @@ -337,8 +337,8 @@ module.exports = { disableHooks, // Sensitive Embedder API newUid, - initTriggerId, - setInitTriggerId, + getDefaultTriggerAsyncId, + setDefaultTriggerAsyncId, emitInit: emitInitScript, emitBefore: emitBeforeScript, emitAfter: emitAfterScript, diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js index 72101cb6408cc9..8d86630c888e25 100644 --- a/lib/internal/bootstrap_node.js +++ b/lib/internal/bootstrap_node.js @@ -368,14 +368,14 @@ // Internal functions needed to manipulate the stack. const { clearAsyncIdStack, asyncIdStackSize } = async_wrap; const { kAfter, kExecutionAsyncId, - kInitTriggerAsyncId } = async_wrap.constants; + kDefaultTriggerAsyncId } = async_wrap.constants; process._fatalException = function(er) { var caught; - // It's possible that kInitTriggerAsyncId was set for a constructor call - // that threw and was never cleared. So clear it now. - async_id_fields[kInitTriggerAsyncId] = 0; + // It's possible that kDefaultTriggerAsyncId was set for a constructor + // call that threw and was never cleared. So clear it now. + async_id_fields[kDefaultTriggerAsyncId] = 0; if (exceptionHandlerState.captureFn !== null) { exceptionHandlerState.captureFn(er); diff --git a/lib/internal/process/next_tick.js b/lib/internal/process/next_tick.js index 260aa70b431b86..bf7d0bc94dc4ce 100644 --- a/lib/internal/process/next_tick.js +++ b/lib/internal/process/next_tick.js @@ -48,7 +48,7 @@ function setupNextTick() { const promises = require('internal/process/promises'); const errors = require('internal/errors'); const emitPendingUnhandledRejections = promises.setup(scheduleMicrotasks); - const initTriggerId = async_hooks.initTriggerId; + const getDefaultTriggerAsyncId = async_hooks.getDefaultTriggerAsyncId; // Two arrays that share state between C++ and JS. const { async_hook_fields, async_id_fields } = async_wrap; // Used to change the state of the async id stack. @@ -210,7 +210,7 @@ function setupNextTick() { nextTickQueue.push(new TickObject(callback, args, ++async_id_fields[kAsyncIdCounter], - initTriggerId())); + getDefaultTriggerAsyncId())); } // `internalNextTick()` will not enqueue any callback when the process is @@ -237,7 +237,7 @@ function setupNextTick() { } if (triggerAsyncId === null) - triggerAsyncId = initTriggerId(); + triggerAsyncId = getDefaultTriggerAsyncId(); // In V8 6.2, moving tickInfo & async_id_fields[kAsyncIdCounter] into the // TickObject incurs a significant performance penalty in the // next-tick-breadth-args benchmark (revisit later) diff --git a/lib/net.js b/lib/net.js index 540de753641e88..785ec236bd2199 100644 --- a/lib/net.js +++ b/lib/net.js @@ -43,7 +43,7 @@ const { TCPConnectWrap } = process.binding('tcp_wrap'); const { PipeConnectWrap } = process.binding('pipe_wrap'); const { ShutdownWrap, WriteWrap } = process.binding('stream_wrap'); const { async_id_symbol } = process.binding('async_wrap'); -const { newUid, setInitTriggerId } = require('internal/async_hooks'); +const { newUid, setDefaultTriggerAsyncId } = require('internal/async_hooks'); const { nextTick } = require('internal/process/next_tick'); const errors = require('internal/errors'); const dns = require('dns'); @@ -301,7 +301,7 @@ function onSocketFinish() { // node::ShutdownWrap isn't instantiated and attached to the JS instance of // ShutdownWrap above until shutdown() is called. So don't set the init // trigger id until now. - setInitTriggerId(this[async_id_symbol]); + setDefaultTriggerAsyncId(this[async_id_symbol]); var err = this._handle.shutdown(req); if (err) @@ -939,7 +939,7 @@ function internalConnect( // node::TCPConnectWrap isn't instantiated and attached to the JS instance // of TCPConnectWrap above until connect() is called. So don't set the init // trigger id until now. - setInitTriggerId(self[async_id_symbol]); + setDefaultTriggerAsyncId(self[async_id_symbol]); if (addressType === 4) err = self._handle.connect(req, address, port); else @@ -952,7 +952,7 @@ function internalConnect( // node::PipeConnectWrap isn't instantiated and attached to the JS instance // of PipeConnectWrap above until connect() is called. So don't set the // init trigger id until now. - setInitTriggerId(self[async_id_symbol]); + setDefaultTriggerAsyncId(self[async_id_symbol]); err = self._handle.connect(req, address, afterConnect); } @@ -1091,7 +1091,7 @@ function lookupAndConnect(self, options) { debug('connect: dns options', dnsopts); self._host = host; var lookup = options.lookup || dns.lookup; - setInitTriggerId(self[async_id_symbol]); + setDefaultTriggerAsyncId(self[async_id_symbol]); lookup(host, dnsopts, function emitLookup(err, ip, addressType) { self.emit('lookup', err, ip, addressType, host); diff --git a/lib/timers.js b/lib/timers.js index 1560215fe0ad5d..c2ce399234c124 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -34,7 +34,7 @@ const kOnTimeout = TimerWrap.kOnTimeout | 0; // Two arrays that share state between C++ and JS. const { async_hook_fields, async_id_fields } = async_wrap; const { - initTriggerId, + getDefaultTriggerAsyncId, // The needed emit*() functions. emitInit, emitBefore, @@ -181,7 +181,7 @@ function insert(item, unrefed) { if (!item[async_id_symbol] || item._destroyed) { item._destroyed = false; item[async_id_symbol] = ++async_id_fields[kAsyncIdCounter]; - item[trigger_async_id_symbol] = initTriggerId(); + item[trigger_async_id_symbol] = getDefaultTriggerAsyncId(); if (async_hook_fields[kInit] > 0) { emitInit(item[async_id_symbol], 'Timeout', @@ -552,7 +552,7 @@ function Timeout(callback, after, args, isRepeat) { this._destroyed = false; this[async_id_symbol] = ++async_id_fields[kAsyncIdCounter]; - this[trigger_async_id_symbol] = initTriggerId(); + this[trigger_async_id_symbol] = getDefaultTriggerAsyncId(); if (async_hook_fields[kInit] > 0) { emitInit(this[async_id_symbol], 'Timeout', @@ -769,7 +769,7 @@ function Immediate(callback, args) { this._destroyed = false; this[async_id_symbol] = ++async_id_fields[kAsyncIdCounter]; - this[trigger_async_id_symbol] = initTriggerId(); + this[trigger_async_id_symbol] = getDefaultTriggerAsyncId(); if (async_hook_fields[kInit] > 0) { emitInit(this[async_id_symbol], 'Immediate', diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 236c5670472980..875d6d81cfda98 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -310,7 +310,7 @@ static void PromiseHook(PromiseHookType type, Local promise, } // get id from parentWrap double trigger_async_id = parent_wrap->get_async_id(); - env->set_init_trigger_async_id(trigger_async_id); + env->set_default_trigger_async_id(trigger_async_id); } wrap = PromiseWrap::New(env, promise, parent_wrap, silent); @@ -541,9 +541,10 @@ void AsyncWrap::Initialize(Local target, // // kAsyncUid: Maintains the state of the next unique id to be assigned. // - // kInitTriggerAsyncId: Write the id of the resource responsible for a + // kDefaultTriggerAsyncId: Write the id of the resource responsible for a // handle's creation just before calling the new handle's constructor. - // After the new handle is constructed kInitTriggerAsyncId is set back to 0. + // After the new handle is constructed kDefaultTriggerAsyncId is set back + // to 0. FORCE_SET_TARGET_FIELD(target, "async_id_fields", env->async_hooks()->async_id_fields().GetJSArray()); @@ -563,7 +564,7 @@ void AsyncWrap::Initialize(Local target, SET_HOOKS_CONSTANT(kExecutionAsyncId); SET_HOOKS_CONSTANT(kTriggerAsyncId); SET_HOOKS_CONSTANT(kAsyncIdCounter); - SET_HOOKS_CONSTANT(kInitTriggerAsyncId); + SET_HOOKS_CONSTANT(kDefaultTriggerAsyncId); #undef SET_HOOKS_CONSTANT FORCE_SET_TARGET_FIELD(target, "constants", constants); @@ -676,7 +677,7 @@ void AsyncWrap::EmitDestroy(Environment* env, double async_id) { void AsyncWrap::AsyncReset(double execution_async_id, bool silent) { async_id_ = execution_async_id == -1 ? env()->new_async_id() : execution_async_id; - trigger_async_id_ = env()->get_init_trigger_async_id(); + trigger_async_id_ = env()->get_default_trigger_async_id(); switch (provider_type()) { #define V(PROVIDER) \ @@ -777,7 +778,7 @@ async_context EmitAsyncInit(Isolate* isolate, // Initialize async context struct if (trigger_async_id == -1) - trigger_async_id = env->get_init_trigger_async_id(); + trigger_async_id = env->get_default_trigger_async_id(); async_context context = { env->new_async_id(), // async_id_ diff --git a/src/connection_wrap.cc b/src/connection_wrap.cc index d82e7195d76579..b7c1949e11e404 100644 --- a/src/connection_wrap.cc +++ b/src/connection_wrap.cc @@ -49,7 +49,7 @@ void ConnectionWrap::OnConnection(uv_stream_t* handle, }; if (status == 0) { - env->set_init_trigger_async_id(wrap_data->get_async_id()); + env->set_default_trigger_async_id(wrap_data->get_async_id()); // Instantiate the client javascript object and handle. Local client_obj = WrapType::Instantiate(env, wrap_data, diff --git a/src/env-inl.h b/src/env-inl.h index 955cf2688f88fa..2981f0f17eb1e5 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -440,17 +440,18 @@ inline double Environment::trigger_async_id() { return async_hooks()->async_id_fields()[AsyncHooks::kTriggerAsyncId]; } -inline double Environment::get_init_trigger_async_id() { - AliasedBuffer& async_id_fields = - async_hooks()->async_id_fields(); - double tid = async_id_fields[AsyncHooks::kInitTriggerAsyncId]; - async_id_fields[AsyncHooks::kInitTriggerAsyncId] = 0; - if (tid <= 0) tid = execution_async_id(); - return tid; -} - -inline void Environment::set_init_trigger_async_id(const double id) { - async_hooks()->async_id_fields()[AsyncHooks::kInitTriggerAsyncId] = id; +inline double Environment::get_default_trigger_async_id() { + double default_trigger_async_id = + async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId]; + async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = 0; + // If defaultTriggerAsyncId isn't set, use the executionAsyncId + if (default_trigger_async_id <= 0) + default_trigger_async_id = execution_async_id(); + return default_trigger_async_id; +} + +inline void Environment::set_default_trigger_async_id(const double id) { + async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = id; } inline double* Environment::heap_statistics_buffer() const { diff --git a/src/env.h b/src/env.h index 79ef42a5c0159e..23cfeae39d0cac 100644 --- a/src/env.h +++ b/src/env.h @@ -389,7 +389,7 @@ class Environment { kExecutionAsyncId, kTriggerAsyncId, kAsyncIdCounter, - kInitTriggerAsyncId, + kDefaultTriggerAsyncId, kUidFieldsCount, }; @@ -565,8 +565,8 @@ class Environment { inline double new_async_id(); inline double execution_async_id(); inline double trigger_async_id(); - inline double get_init_trigger_async_id(); - inline void set_init_trigger_async_id(const double id); + inline double get_default_trigger_async_id(); + inline void set_default_trigger_async_id(const double id); // List of id's that have been destroyed and need the destroy() cb called. inline std::vector* destroy_async_id_list(); diff --git a/src/stream_base.cc b/src/stream_base.cc index bb25fc1cff0e9c..021f5417c12687 100644 --- a/src/stream_base.cc +++ b/src/stream_base.cc @@ -52,7 +52,7 @@ int StreamBase::Shutdown(const FunctionCallbackInfo& args) { AsyncWrap* wrap = GetAsyncWrap(); CHECK_NE(wrap, nullptr); - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); ShutdownWrap* req_wrap = new ShutdownWrap(env, req_wrap_obj, this); @@ -155,7 +155,7 @@ int StreamBase::Writev(const FunctionCallbackInfo& args) { wrap = GetAsyncWrap(); CHECK_NE(wrap, nullptr); - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); req_wrap = WriteWrap::New(env, req_wrap_obj, this, storage_size); offset = 0; @@ -244,7 +244,7 @@ int StreamBase::WriteBuffer(const FunctionCallbackInfo& args) { wrap = GetAsyncWrap(); if (wrap != nullptr) - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); // Allocate, or write rest req_wrap = WriteWrap::New(env, req_wrap_obj, this); @@ -329,7 +329,7 @@ int StreamBase::WriteString(const FunctionCallbackInfo& args) { wrap = GetAsyncWrap(); if (wrap != nullptr) - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); req_wrap = WriteWrap::New(env, req_wrap_obj, this, storage_size); data = req_wrap->Extra(); diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 8dd14e2e16c18b..00853df9baf5c8 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -293,7 +293,7 @@ void TCPWrap::Connect(const FunctionCallbackInfo& args) { int err = uv_ip4_addr(*ip_address, port, &addr); if (err == 0) { - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); ConnectWrap* req_wrap = new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP); err = uv_tcp_connect(req_wrap->req(), @@ -329,7 +329,7 @@ void TCPWrap::Connect6(const FunctionCallbackInfo& args) { int err = uv_ip6_addr(*ip_address, port, &addr); if (err == 0) { - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); ConnectWrap* req_wrap = new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP); err = uv_tcp_connect(req_wrap->req(), diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index ff6dd73041ee80..49d32a49fe564a 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -353,7 +353,7 @@ void UDPWrap::DoSend(const FunctionCallbackInfo& args, int family) { node::Utf8Value address(env->isolate(), args[4]); const bool have_callback = args[5]->IsTrue(); - env->set_init_trigger_async_id(wrap->get_async_id()); + env->set_default_trigger_async_id(wrap->get_async_id()); SendWrap* req_wrap = new SendWrap(env, req_wrap_obj, have_callback); size_t msg_size = 0; From f56eb2a41e12e009fda654694780bfe58ea87a37 Mon Sep 17 00:00:00 2001 From: Andreas Madsen Date: Wed, 22 Nov 2017 15:41:18 +0100 Subject: [PATCH 004/163] async_hooks: separate missing from default context When context is missing the executionAsyncId will be zero. For the default triggerAsyncId the zero value was used to default to the executionAsyncId. While this was not technically wrong because the functions are different themself, it poorly separated the two concepts. Backport-PR-URL: https://github.com/nodejs/node/pull/18079 PR-URL: https://github.com/nodejs/node/pull/17273 Reviewed-By: Matteo Collina Reviewed-By: James M Snell --- lib/internal/async_hooks.js | 6 +++--- lib/internal/bootstrap_node.js | 2 +- src/env-inl.h | 10 ++++++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index ba08b5e3838468..13e1669374df69 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -249,9 +249,9 @@ function getDefaultTriggerAsyncId() { var defaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId]; // Reset value after it's been called so the next constructor doesn't // inherit it by accident. - async_id_fields[kDefaultTriggerAsyncId] = 0; + async_id_fields[kDefaultTriggerAsyncId] = -1; // If defaultTriggerAsyncId isn't set, use the executionAsyncId - if (defaultTriggerAsyncId <= 0) + if (defaultTriggerAsyncId < 0) defaultTriggerAsyncId = async_id_fields[kExecutionAsyncId]; return defaultTriggerAsyncId; } @@ -285,7 +285,7 @@ function emitInitScript(asyncId, type, triggerAsyncId, resource) { } else { // If a triggerAsyncId was passed, any kDefaultTriggerAsyncId still must be // null'd. - async_id_fields[kDefaultTriggerAsyncId] = 0; + async_id_fields[kDefaultTriggerAsyncId] = -1; } emitInitNative(asyncId, type, triggerAsyncId, resource); diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js index 8d86630c888e25..31f95d1f417e2d 100644 --- a/lib/internal/bootstrap_node.js +++ b/lib/internal/bootstrap_node.js @@ -375,7 +375,7 @@ // It's possible that kDefaultTriggerAsyncId was set for a constructor // call that threw and was never cleared. So clear it now. - async_id_fields[kDefaultTriggerAsyncId] = 0; + async_id_fields[kDefaultTriggerAsyncId] = -1; if (exceptionHandlerState.captureFn !== null) { exceptionHandlerState.captureFn(er); diff --git a/src/env-inl.h b/src/env-inl.h index 2981f0f17eb1e5..3eb5a2175e22e3 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -66,6 +66,12 @@ inline Environment::AsyncHooks::AsyncHooks(v8::Isolate* isolate) // and flag changes won't be included. fields_[kCheck] = 1; + // kDefaultTriggerAsyncId should be -1, this indicates that there is no + // specified default value and it should fallback to the executionAsyncId. + // 0 is not used as the magic value, because that indicates a missing context + // which is different from a default context. + async_id_fields_[AsyncHooks::kDefaultTriggerAsyncId] = -1; + // kAsyncIdCounter should start at 1 because that'll be the id the execution // context during bootstrap (code that runs before entering uv_run()). async_id_fields_[AsyncHooks::kAsyncIdCounter] = 1; @@ -443,9 +449,9 @@ inline double Environment::trigger_async_id() { inline double Environment::get_default_trigger_async_id() { double default_trigger_async_id = async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId]; - async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = 0; + async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = -1; // If defaultTriggerAsyncId isn't set, use the executionAsyncId - if (default_trigger_async_id <= 0) + if (default_trigger_async_id < 0) default_trigger_async_id = execution_async_id(); return default_trigger_async_id; } From a880e272fff55c6d55f78bcb3dc4909ed1f8da77 Mon Sep 17 00:00:00 2001 From: Andreas Madsen Date: Wed, 22 Nov 2017 18:41:00 +0100 Subject: [PATCH 005/163] async_hooks: use scope for defaultTriggerAsyncId Previously the getter would mutate the kDefaultTriggerAsncId value. This refactor changes the setter to bind the current kDefaultTriggerAsncId to a scope, such that the getter doesn't have to mutate its own value. Backport-PR-URL: https://github.com/nodejs/node/pull/18079 PR-URL: https://github.com/nodejs/node/pull/17273 Reviewed-By: Matteo Collina Reviewed-By: James M Snell --- lib/async_hooks.js | 8 ---- lib/dgram.js | 21 +++++---- lib/internal/async_hooks.js | 21 +++++---- lib/net.js | 91 +++++++++++++++++++------------------ src/async_wrap.cc | 11 +++-- src/connection_wrap.cc | 1 - src/env-inl.h | 33 +++++++------- src/env.h | 20 ++++---- src/pipe_wrap.cc | 3 +- src/stream_base-inl.h | 3 +- src/stream_base.cc | 38 +++++++++------- src/tcp_wrap.cc | 9 ++-- src/udp_wrap.cc | 12 +++-- 13 files changed, 142 insertions(+), 129 deletions(-) diff --git a/lib/async_hooks.js b/lib/async_hooks.js index 01b620208b65f3..340863a83c432e 100644 --- a/lib/async_hooks.js +++ b/lib/async_hooks.js @@ -20,7 +20,6 @@ const { // Sensitive Embedder API newUid, getDefaultTriggerAsyncId, - setInitTriggerId, emitInit, emitBefore, emitAfter, @@ -250,13 +249,6 @@ Object.defineProperty(module.exports, 'initTriggerId', { 'Use the AsyncResource default instead.', 'DEP0085') }); -Object.defineProperty(module.exports, 'setInitTriggerId', { - get: internalUtil.deprecate(function() { - return setInitTriggerId; - }, 'async_hooks.setInitTriggerId is deprecated. ' + - 'Use the triggerAsyncId parameter in AsyncResource instead.', 'DEP0085') -}); - Object.defineProperty(module.exports, 'emitInit', { get: internalUtil.deprecate(function() { return emitInit; diff --git a/lib/dgram.js b/lib/dgram.js index c7143b6876c2a5..59534b6c269d3d 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -28,7 +28,7 @@ const dns = require('dns'); const util = require('util'); const { isUint8Array } = require('internal/util/types'); const EventEmitter = require('events'); -const { setDefaultTriggerAsyncId } = require('internal/async_hooks'); +const { defaultTriggerAsyncIdScope } = require('internal/async_hooks'); const { UV_UDP_REUSEADDR } = process.binding('constants').os; const { async_id_symbol } = process.binding('async_wrap'); const { nextTick } = require('internal/process/next_tick'); @@ -448,21 +448,24 @@ Socket.prototype.send = function(buffer, } const afterDns = (ex, ip) => { - doSend(ex, this, ip, list, address, port, callback); + defaultTriggerAsyncIdScope( + this[async_id_symbol], + [ex, this, ip, list, address, port, callback], + doSend + ); }; this._handle.lookup(address, afterDns); }; - function doSend(ex, self, ip, list, address, port, callback) { if (ex) { if (typeof callback === 'function') { - callback(ex); + process.nextTick(callback, ex); return; } - self.emit('error', ex); + process.nextTick(() => self.emit('error', ex)); return; } else if (!self._handle) { return; @@ -476,20 +479,18 @@ function doSend(ex, self, ip, list, address, port, callback) { req.callback = callback; req.oncomplete = afterSend; } - // node::SendWrap isn't instantiated and attached to the JS instance of - // SendWrap above until send() is called. So don't set the init trigger id - // until now. - setDefaultTriggerAsyncId(self[async_id_symbol]); + var err = self._handle.send(req, list, list.length, port, ip, !!callback); + if (err && callback) { // don't emit as error, dgram_legacy.js compatibility const ex = exceptionWithHostPort(err, 'send', address, port); - nextTick(self[async_id_symbol], callback, ex); + process.nextTick(callback, ex); } } diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 13e1669374df69..3075a52ee6e6be 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -247,9 +247,6 @@ function newUid() { // constructor is complete. function getDefaultTriggerAsyncId() { var defaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId]; - // Reset value after it's been called so the next constructor doesn't - // inherit it by accident. - async_id_fields[kDefaultTriggerAsyncId] = -1; // If defaultTriggerAsyncId isn't set, use the executionAsyncId if (defaultTriggerAsyncId < 0) defaultTriggerAsyncId = async_id_fields[kExecutionAsyncId]; @@ -257,10 +254,20 @@ function getDefaultTriggerAsyncId() { } -function setDefaultTriggerAsyncId(triggerAsyncId) { +function defaultTriggerAsyncIdScope(triggerAsyncId, opaque, block) { // CHECK(Number.isSafeInteger(triggerAsyncId)) // CHECK(triggerAsyncId > 0) + const oldDefaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId]; async_id_fields[kDefaultTriggerAsyncId] = triggerAsyncId; + + var ret; + try { + ret = Reflect.apply(block, null, opaque); + } finally { + async_id_fields[kDefaultTriggerAsyncId] = oldDefaultTriggerAsyncId; + } + + return ret; } @@ -282,10 +289,6 @@ function emitInitScript(asyncId, type, triggerAsyncId, resource) { // manually means that the embedder must have used getDefaultTriggerAsyncId(). if (triggerAsyncId === null) { triggerAsyncId = getDefaultTriggerAsyncId(); - } else { - // If a triggerAsyncId was passed, any kDefaultTriggerAsyncId still must be - // null'd. - async_id_fields[kDefaultTriggerAsyncId] = -1; } emitInitNative(asyncId, type, triggerAsyncId, resource); @@ -338,7 +341,7 @@ module.exports = { // Sensitive Embedder API newUid, getDefaultTriggerAsyncId, - setDefaultTriggerAsyncId, + defaultTriggerAsyncIdScope, emitInit: emitInitScript, emitBefore: emitBeforeScript, emitAfter: emitAfterScript, diff --git a/lib/net.js b/lib/net.js index 785ec236bd2199..6e21e9d6c83ee6 100644 --- a/lib/net.js +++ b/lib/net.js @@ -43,7 +43,7 @@ const { TCPConnectWrap } = process.binding('tcp_wrap'); const { PipeConnectWrap } = process.binding('pipe_wrap'); const { ShutdownWrap, WriteWrap } = process.binding('stream_wrap'); const { async_id_symbol } = process.binding('async_wrap'); -const { newUid, setDefaultTriggerAsyncId } = require('internal/async_hooks'); +const { newUid, defaultTriggerAsyncIdScope } = require('internal/async_hooks'); const { nextTick } = require('internal/process/next_tick'); const errors = require('internal/errors'); const dns = require('dns'); @@ -274,6 +274,14 @@ Socket.prototype._unrefTimer = function _unrefTimer() { timers._unrefActive(s); }; + +function shutdownSocket(self, callback) { + var req = new ShutdownWrap(); + req.oncomplete = callback; + req.handle = self._handle; + return self._handle.shutdown(req); +} + // the user has called .end(), and all the bytes have been // sent out to the other side. function onSocketFinish() { @@ -295,14 +303,9 @@ function onSocketFinish() { if (!this._handle || !this._handle.shutdown) return this.destroy(); - var req = new ShutdownWrap(); - req.oncomplete = afterShutdown; - req.handle = this._handle; - // node::ShutdownWrap isn't instantiated and attached to the JS instance of - // ShutdownWrap above until shutdown() is called. So don't set the init - // trigger id until now. - setDefaultTriggerAsyncId(this[async_id_symbol]); - var err = this._handle.shutdown(req); + var err = defaultTriggerAsyncIdScope( + this[async_id_symbol], [this, afterShutdown], shutdownSocket + ); if (err) return this.destroy(errnoException(err, 'shutdown')); @@ -936,23 +939,15 @@ function internalConnect( req.localAddress = localAddress; req.localPort = localPort; - // node::TCPConnectWrap isn't instantiated and attached to the JS instance - // of TCPConnectWrap above until connect() is called. So don't set the init - // trigger id until now. - setDefaultTriggerAsyncId(self[async_id_symbol]); if (addressType === 4) err = self._handle.connect(req, address, port); else err = self._handle.connect6(req, address, port); - } else { const req = new PipeConnectWrap(); req.address = address; req.oncomplete = afterConnect; - // node::PipeConnectWrap isn't instantiated and attached to the JS instance - // of PipeConnectWrap above until connect() is called. So don't set the - // init trigger id until now. - setDefaultTriggerAsyncId(self[async_id_symbol]); + err = self._handle.connect(req, address, afterConnect); } @@ -1021,7 +1016,9 @@ Socket.prototype.connect = function(...args) { 'string', path); } - internalConnect(this, path); + defaultTriggerAsyncIdScope( + this[async_id_symbol], [this, path], internalConnect + ); } else { lookupAndConnect(this, options); } @@ -1064,7 +1061,11 @@ function lookupAndConnect(self, options) { if (addressType) { nextTick(self[async_id_symbol], function() { if (self.connecting) - internalConnect(self, host, port, addressType, localAddress, localPort); + defaultTriggerAsyncIdScope( + self[async_id_symbol], + [self, host, port, addressType, localAddress, localPort], + internalConnect + ); }); return; } @@ -1091,33 +1092,33 @@ function lookupAndConnect(self, options) { debug('connect: dns options', dnsopts); self._host = host; var lookup = options.lookup || dns.lookup; - setDefaultTriggerAsyncId(self[async_id_symbol]); - lookup(host, dnsopts, function emitLookup(err, ip, addressType) { - self.emit('lookup', err, ip, addressType, host); + defaultTriggerAsyncIdScope(self[async_id_symbol], [], function() { + lookup(host, dnsopts, function emitLookup(err, ip, addressType) { + self.emit('lookup', err, ip, addressType, host); - // It's possible we were destroyed while looking this up. - // XXX it would be great if we could cancel the promise returned by - // the look up. - if (!self.connecting) return; + // It's possible we were destroyed while looking this up. + // XXX it would be great if we could cancel the promise returned by + // the look up. + if (!self.connecting) return; - if (err) { - // net.createConnection() creates a net.Socket object and - // immediately calls net.Socket.connect() on it (that's us). - // There are no event listeners registered yet so defer the - // error event to the next tick. - err.host = options.host; - err.port = options.port; - err.message = err.message + ' ' + options.host + ':' + options.port; - process.nextTick(connectErrorNT, self, err); - } else { - self._unrefTimer(); - internalConnect(self, - ip, - port, - addressType, - localAddress, - localPort); - } + if (err) { + // net.createConnection() creates a net.Socket object and + // immediately calls net.Socket.connect() on it (that's us). + // There are no event listeners registered yet so defer the + // error event to the next tick. + err.host = options.host; + err.port = options.port; + err.message = err.message + ' ' + options.host + ':' + options.port; + process.nextTick(connectErrorNT, self, err); + } else { + self._unrefTimer(); + defaultTriggerAsyncIdScope( + self[async_id_symbol], + [self, ip, port, addressType, localAddress, localPort], + internalConnect + ); + } + }); }); } diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 875d6d81cfda98..24b646dd5df49b 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -308,12 +308,13 @@ static void PromiseHook(PromiseHookType type, Local promise, if (parent_wrap == nullptr) { parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true); } - // get id from parentWrap - double trigger_async_id = parent_wrap->get_async_id(); - env->set_default_trigger_async_id(trigger_async_id); - } - wrap = PromiseWrap::New(env, promise, parent_wrap, silent); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + env, parent_wrap->get_async_id()); + wrap = PromiseWrap::New(env, promise, parent_wrap, silent); + } else { + wrap = PromiseWrap::New(env, promise, nullptr, silent); + } } CHECK_NE(wrap, nullptr); diff --git a/src/connection_wrap.cc b/src/connection_wrap.cc index b7c1949e11e404..8de77f361dcde4 100644 --- a/src/connection_wrap.cc +++ b/src/connection_wrap.cc @@ -49,7 +49,6 @@ void ConnectionWrap::OnConnection(uv_stream_t* handle, }; if (status == 0) { - env->set_default_trigger_async_id(wrap_data->get_async_id()); // Instantiate the client javascript object and handle. Local client_obj = WrapType::Instantiate(env, wrap_data, diff --git a/src/env-inl.h b/src/env-inl.h index 3eb5a2175e22e3..ae864fb08402f7 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -168,23 +168,27 @@ inline void Environment::AsyncHooks::clear_async_id_stack() { async_id_fields_[kTriggerAsyncId] = 0; } -inline Environment::AsyncHooks::InitScope::InitScope( - Environment* env, double init_trigger_async_id) - : env_(env), - async_id_fields_ref_(env->async_hooks()->async_id_fields()) { - if (env_->async_hooks()->fields()[AsyncHooks::kCheck] > 0) { - CHECK_GE(init_trigger_async_id, -1); +inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope + ::DefaultTriggerAsyncIdScope(Environment* env, + double default_trigger_async_id) + : async_id_fields_ref_(env->async_hooks()->async_id_fields()) { + if (env->async_hooks()->fields()[AsyncHooks::kCheck] > 0) { + CHECK_GE(default_trigger_async_id, 0); } - env->async_hooks()->push_async_ids( - async_id_fields_ref_[AsyncHooks::kExecutionAsyncId], - init_trigger_async_id); + + old_default_trigger_async_id_ = + async_id_fields_ref_[AsyncHooks::kDefaultTriggerAsyncId]; + async_id_fields_ref_[AsyncHooks::kDefaultTriggerAsyncId] = + default_trigger_async_id; } -inline Environment::AsyncHooks::InitScope::~InitScope() { - env_->async_hooks()->pop_async_id( - async_id_fields_ref_[AsyncHooks::kExecutionAsyncId]); +inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope + ::~DefaultTriggerAsyncIdScope() { + async_id_fields_ref_[AsyncHooks::kDefaultTriggerAsyncId] = + old_default_trigger_async_id_; } + inline Environment::AsyncCallbackScope::AsyncCallbackScope(Environment* env) : env_(env) { env_->makecallback_cntr_++; @@ -449,17 +453,12 @@ inline double Environment::trigger_async_id() { inline double Environment::get_default_trigger_async_id() { double default_trigger_async_id = async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId]; - async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = -1; // If defaultTriggerAsyncId isn't set, use the executionAsyncId if (default_trigger_async_id < 0) default_trigger_async_id = execution_async_id(); return default_trigger_async_id; } -inline void Environment::set_default_trigger_async_id(const double id) { - async_hooks()->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = id; -} - inline double* Environment::heap_statistics_buffer() const { CHECK_NE(heap_statistics_buffer_, nullptr); return heap_statistics_buffer_; diff --git a/src/env.h b/src/env.h index 23cfeae39d0cac..ecb03722868626 100644 --- a/src/env.h +++ b/src/env.h @@ -407,22 +407,23 @@ class Environment { inline size_t stack_size(); inline void clear_async_id_stack(); // Used in fatal exceptions. - // Used to propagate the trigger_async_id to the constructor of any newly - // created resources using RAII. Instead of needing to pass the - // trigger_async_id along with other constructor arguments. - class InitScope { + // Used to set the kDefaultTriggerAsyncId in a scope. This is instead of + // passing the trigger_async_id along with other constructor arguments. + class DefaultTriggerAsyncIdScope { public: - InitScope() = delete; - explicit InitScope(Environment* env, double init_trigger_async_id); - ~InitScope(); + DefaultTriggerAsyncIdScope() = delete; + explicit DefaultTriggerAsyncIdScope(Environment* env, + double init_trigger_async_id); + ~DefaultTriggerAsyncIdScope(); private: - Environment* env_; AliasedBuffer async_id_fields_ref_; + double old_default_trigger_async_id_; - DISALLOW_COPY_AND_ASSIGN(InitScope); + DISALLOW_COPY_AND_ASSIGN(DefaultTriggerAsyncIdScope); }; + private: friend class Environment; // So we can call the constructor. inline explicit AsyncHooks(v8::Isolate* isolate); @@ -566,7 +567,6 @@ class Environment { inline double execution_async_id(); inline double trigger_async_id(); inline double get_default_trigger_async_id(); - inline void set_default_trigger_async_id(const double id); // List of id's that have been destroyed and need the destroy() cb called. inline std::vector* destroy_async_id_list(); diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 76280f0ce77e86..465cbf4d16dbfe 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -53,7 +53,8 @@ Local PipeWrap::Instantiate(Environment* env, AsyncWrap* parent, PipeWrap::SocketType type) { EscapableHandleScope handle_scope(env->isolate()); - AsyncHooks::InitScope init_scope(env, parent->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env, + parent->get_async_id()); CHECK_EQ(false, env->pipe_constructor_template().IsEmpty()); Local constructor = env->pipe_constructor_template()->GetFunction(); CHECK_EQ(false, constructor.IsEmpty()); diff --git a/src/stream_base-inl.h b/src/stream_base-inl.h index cc89a11bac249c..cdcff67cc55e66 100644 --- a/src/stream_base-inl.h +++ b/src/stream_base-inl.h @@ -143,7 +143,8 @@ void StreamBase::JSMethod(const FunctionCallbackInfo& args) { if (!wrap->IsAlive()) return args.GetReturnValue().Set(UV_EINVAL); - AsyncHooks::InitScope init_scope(handle->env(), handle->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + handle->env(), handle->get_async_id()); args.GetReturnValue().Set((wrap->*Method)(args)); } diff --git a/src/stream_base.cc b/src/stream_base.cc index 021f5417c12687..ecb5f3dd1b954e 100644 --- a/src/stream_base.cc +++ b/src/stream_base.cc @@ -52,7 +52,7 @@ int StreamBase::Shutdown(const FunctionCallbackInfo& args) { AsyncWrap* wrap = GetAsyncWrap(); CHECK_NE(wrap, nullptr); - env->set_default_trigger_async_id(wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope(env, wrap->get_async_id()); ShutdownWrap* req_wrap = new ShutdownWrap(env, req_wrap_obj, this); @@ -109,7 +109,6 @@ int StreamBase::Writev(const FunctionCallbackInfo& args) { size_t storage_size = 0; uint32_t bytes = 0; size_t offset; - AsyncWrap* wrap; WriteWrap* req_wrap; int err; @@ -153,10 +152,13 @@ int StreamBase::Writev(const FunctionCallbackInfo& args) { goto done; } - wrap = GetAsyncWrap(); - CHECK_NE(wrap, nullptr); - env->set_default_trigger_async_id(wrap->get_async_id()); - req_wrap = WriteWrap::New(env, req_wrap_obj, this, storage_size); + { + AsyncWrap* wrap = GetAsyncWrap(); + CHECK_NE(wrap, nullptr); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env, + wrap->get_async_id()); + req_wrap = WriteWrap::New(env, req_wrap_obj, this, storage_size); + } offset = 0; if (!all_buffers) { @@ -226,7 +228,6 @@ int StreamBase::WriteBuffer(const FunctionCallbackInfo& args) { const char* data = Buffer::Data(args[1]); size_t length = Buffer::Length(args[1]); - AsyncWrap* wrap; WriteWrap* req_wrap; uv_buf_t buf; buf.base = const_cast(data); @@ -242,11 +243,14 @@ int StreamBase::WriteBuffer(const FunctionCallbackInfo& args) { goto done; CHECK_EQ(count, 1); - wrap = GetAsyncWrap(); - if (wrap != nullptr) - env->set_default_trigger_async_id(wrap->get_async_id()); // Allocate, or write rest - req_wrap = WriteWrap::New(env, req_wrap_obj, this); + { + AsyncWrap* wrap = GetAsyncWrap(); + CHECK_NE(wrap, nullptr); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env, + wrap->get_async_id()); + req_wrap = WriteWrap::New(env, req_wrap_obj, this); + } err = DoWrite(req_wrap, bufs, count, nullptr); req_wrap_obj->Set(env->async(), True(env->isolate())); @@ -276,7 +280,6 @@ int StreamBase::WriteString(const FunctionCallbackInfo& args) { Local req_wrap_obj = args[0].As(); Local string = args[1].As(); Local send_handle_obj; - AsyncWrap* wrap; if (args[2]->IsObject()) send_handle_obj = args[2].As(); @@ -327,10 +330,13 @@ int StreamBase::WriteString(const FunctionCallbackInfo& args) { CHECK_EQ(count, 1); } - wrap = GetAsyncWrap(); - if (wrap != nullptr) - env->set_default_trigger_async_id(wrap->get_async_id()); - req_wrap = WriteWrap::New(env, req_wrap_obj, this, storage_size); + { + AsyncWrap* wrap = GetAsyncWrap(); + CHECK_NE(wrap, nullptr); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env, + wrap->get_async_id()); + req_wrap = WriteWrap::New(env, req_wrap_obj, this, storage_size); + } data = req_wrap->Extra(); diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 00853df9baf5c8..bdae0ee994360c 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -56,7 +56,8 @@ Local TCPWrap::Instantiate(Environment* env, AsyncWrap* parent, TCPWrap::SocketType type) { EscapableHandleScope handle_scope(env->isolate()); - AsyncHooks::InitScope init_scope(env, parent->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + env, parent->get_async_id()); CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false); Local constructor = env->tcp_constructor_template()->GetFunction(); CHECK_EQ(constructor.IsEmpty(), false); @@ -293,7 +294,8 @@ void TCPWrap::Connect(const FunctionCallbackInfo& args) { int err = uv_ip4_addr(*ip_address, port, &addr); if (err == 0) { - env->set_default_trigger_async_id(wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + env, wrap->get_async_id()); ConnectWrap* req_wrap = new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP); err = uv_tcp_connect(req_wrap->req(), @@ -329,7 +331,8 @@ void TCPWrap::Connect6(const FunctionCallbackInfo& args) { int err = uv_ip6_addr(*ip_address, port, &addr); if (err == 0) { - env->set_default_trigger_async_id(wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + env, wrap->get_async_id()); ConnectWrap* req_wrap = new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP); err = uv_tcp_connect(req_wrap->req(), diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index 49d32a49fe564a..0d7a048a7d7eb2 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -353,8 +353,12 @@ void UDPWrap::DoSend(const FunctionCallbackInfo& args, int family) { node::Utf8Value address(env->isolate(), args[4]); const bool have_callback = args[5]->IsTrue(); - env->set_default_trigger_async_id(wrap->get_async_id()); - SendWrap* req_wrap = new SendWrap(env, req_wrap_obj, have_callback); + SendWrap* req_wrap; + { + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + env, wrap->get_async_id()); + req_wrap = new SendWrap(env, req_wrap_obj, have_callback); + } size_t msg_size = 0; MaybeStackBuffer bufs(count); @@ -503,7 +507,9 @@ Local UDPWrap::Instantiate(Environment* env, AsyncWrap* parent, UDPWrap::SocketType type) { EscapableHandleScope scope(env->isolate()); - AsyncHooks::InitScope init_scope(env, parent->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( + env, parent->get_async_id()); + // If this assert fires then Initialize hasn't been called yet. CHECK_EQ(env->udp_constructor_function().IsEmpty(), false); Local instance = env->udp_constructor_function() From 167e9c6dcd96d7921c1e206a2227657ca73bf5ac Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sun, 31 Dec 2017 22:04:25 +0100 Subject: [PATCH 006/163] test: refactor test-repl - Switch over to async tracking through promises/async fns - Remove an unused temp dir refresh - Inline the multiline/npm text prompts into expectations - Unify handling prompts/stripping prompts out - Make sure no unexpected data is received by requireing all *lines* to be matched, rather than chunks received from the REPL. This made the test too loose in terms of matched lines and too strict in terms of stream chunking requirements. - Some general cleanup Backport-PR-URL: https://github.com/nodejs/node/pull/18082 PR-URL: https://github.com/nodejs/node/pull/17926 Reviewed-By: Evan Lucas --- test/parallel/test-repl.js | 1172 +++++++++++++++++++++--------------- 1 file changed, 690 insertions(+), 482 deletions(-) diff --git a/test/parallel/test-repl.js b/test/parallel/test-repl.js index c9583e4fdf3c40..16dc06e876abc9 100644 --- a/test/parallel/test-repl.js +++ b/test/parallel/test-repl.js @@ -23,540 +23,748 @@ const common = require('../common'); const fixtures = require('../common/fixtures'); const assert = require('assert'); +const net = require('net'); +const repl = require('repl'); common.globalCheck = false; common.refreshTmpDir(); +common.crashOnUnhandledRejection(); -const net = require('net'); -const repl = require('repl'); const message = 'Read, Eval, Print Loop'; const prompt_unix = 'node via Unix socket> '; const prompt_tcp = 'node via TCP socket> '; -const prompt_multiline = '... '; -const prompt_npm = 'npm should be run outside of the ' + - 'node repl, in your normal shell.\n' + - '(Press Control-D to exit.)\n'; -const expect_npm = prompt_npm + prompt_unix; -let server_tcp, server_unix, client_tcp, client_unix, replServer; - // absolute path to test/fixtures/a.js const moduleFilename = fixtures.path('a'); -console.error('repl test'); - // function for REPL to run global.invoke_me = function(arg) { return `invoked ${arg}`; }; -function send_expect(list) { - if (list.length > 0) { - const cur = list.shift(); - console.error(`sending ${JSON.stringify(cur.send)}`); +// Helpers for describing the expected output: +const kArrow = /^ *\^+ *$/; // Arrow of ^ pointing to syntax error location +const kSource = Symbol('kSource'); // Placeholder standing for input readback - cur.client.expect = cur.expect; - cur.client.list = list; - if (cur.send.length > 0) { - cur.client.write(`${cur.send}\n`); - } - } -} +async function runReplTests(socket, prompt, tests) { + let lineBuffer = ''; -function clean_up() { - client_tcp.end(); - client_unix.end(); -} + for (const { send, expect } of tests) { + // expect can be a single line or multiple lines + const expectedLines = Array.isArray(expect) ? expect : [ expect ]; -function strict_mode_error_test() { - send_expect([ - { client: client_unix, send: 'ref = 1', - expect: /^ReferenceError:\s/ }, - ]); -} + console.error('out:', JSON.stringify(send)); + socket.write(`${send}\n`); -function error_test() { - // The other stuff is done so reuse unix socket - let read_buffer = ''; - let run_strict_test = true; - client_unix.removeAllListeners('data'); - - client_unix.on('data', function(data) { - read_buffer += data.toString('ascii', 0, data.length); - console.error( - `Unix data: ${JSON.stringify(read_buffer)}, expecting ${ - client_unix.expect.exec ? - client_unix.expect : - JSON.stringify(client_unix.expect)}`); - - if (read_buffer.includes(prompt_unix)) { - // if it's an exact match, then don't do the regexp - if (read_buffer !== client_unix.expect) { - let expect = client_unix.expect; - if (expect === prompt_multiline) - expect = /[.]{3} /; - assert.ok(RegExp(expect).test(read_buffer)); - console.error('match'); - } - read_buffer = ''; - if (client_unix.list && client_unix.list.length > 0) { - send_expect(client_unix.list); - } else if (run_strict_test) { - replServer.replMode = repl.REPL_MODE_STRICT; - run_strict_test = false; - strict_mode_error_test(); - } else { - console.error('End of Error test, running TCP test.'); - tcp_test(); + for (let expectedLine of expectedLines) { + // special value: kSource refers to last sent source text + if (expectedLine === kSource) + expectedLine = send; + + while (!lineBuffer.includes('\n')) { + lineBuffer += await event(socket, 'data'); + + // Cut away the initial prompt + while (lineBuffer.startsWith(prompt)) + lineBuffer = lineBuffer.substr(prompt.length); + + // Allow to match partial text if no newline was received, because + // sending newlines from the REPL itself would be redundant + // (e.g. in the `... ` multiline prompt: The user already pressed + // enter for that, so the REPL shouldn't do it again!). + if (lineBuffer === expectedLine && !expectedLine.includes('\n')) + lineBuffer += '\n'; } - } else if (read_buffer.includes(prompt_multiline)) { - // Check that you meant to send a multiline test - assert.strictEqual(prompt_multiline, client_unix.expect); - read_buffer = ''; - if (client_unix.list && client_unix.list.length > 0) { - send_expect(client_unix.list); - } else if (run_strict_test) { - replServer.replMode = repl.REPL_MODE_STRICT; - run_strict_test = false; - strict_mode_error_test(); + // Split off the current line. + const newlineOffset = lineBuffer.indexOf('\n'); + let actualLine = lineBuffer.substr(0, newlineOffset); + lineBuffer = lineBuffer.substr(newlineOffset + 1); + + // This might have been skipped in the loop above because the buffer + // already contained a \n to begin with and the entire loop was skipped. + while (actualLine.startsWith(prompt)) + actualLine = actualLine.substr(prompt.length); + + console.error('in:', JSON.stringify(actualLine)); + + // Match a string directly, or a RegExp through .test(). + if (typeof expectedLine === 'string') { + assert.strictEqual(actualLine, expectedLine); } else { - console.error('End of Error test, running TCP test.\n'); - tcp_test(); + assert(expectedLine.test(actualLine), + `${actualLine} match ${expectedLine}`); } - - } else { - console.error('didn\'t see prompt yet, buffering.'); } - }); + } - send_expect([ - // Uncaught error throws and prints out - { client: client_unix, send: 'throw new Error(\'test error\');', - expect: /^Error: test error/ }, - // Common syntax error is treated as multiline command - { client: client_unix, send: 'function test_func() {', - expect: prompt_multiline }, - // You can recover with the .break command - { client: client_unix, send: '.break', - expect: prompt_unix }, - // But passing the same string to eval() should throw - { client: client_unix, send: 'eval("function test_func() {")', - expect: /^SyntaxError: / }, - // Can handle multiline template literals - { client: client_unix, send: '`io.js', - expect: prompt_multiline }, - // Special REPL commands still available - { client: client_unix, send: '.break', - expect: prompt_unix }, - // Template expressions can cross lines - { client: client_unix, send: '`io.js ${"1.0"', - expect: prompt_multiline }, - { client: client_unix, send: '+ ".2"}`', - expect: `'io.js 1.0.2'\n${prompt_unix}` }, - // Dot prefix in multiline commands aren't treated as commands - { client: client_unix, send: '("a"', - expect: prompt_multiline }, - { client: client_unix, send: '.charAt(0))', - expect: `'a'\n${prompt_unix}` }, - // Floating point numbers are not interpreted as REPL commands. - { client: client_unix, send: '.1234', - expect: '0.1234' }, - // Floating point expressions are not interpreted as REPL commands - { client: client_unix, send: '.1+.1', - expect: '0.2' }, - // Can parse valid JSON - { client: client_unix, send: 'JSON.parse(\'{"valid": "json"}\');', - expect: '{ valid: \'json\' }' }, - // invalid input to JSON.parse error is special case of syntax error, - // should throw - { client: client_unix, send: 'JSON.parse(\'{invalid: \\\'json\\\'}\');', - expect: /^SyntaxError: / }, - // end of input to JSON.parse error is special case of syntax error, - // should throw - { client: client_unix, send: 'JSON.parse(\'066\');', - expect: /^SyntaxError: / }, - // should throw - { client: client_unix, send: 'JSON.parse(\'{\');', - expect: /^SyntaxError: / }, - // invalid RegExps are a special case of syntax error, - // should throw - { client: client_unix, send: '/(/;', - expect: /^SyntaxError: / }, - // invalid RegExp modifiers are a special case of syntax error, - // should throw (GH-4012) - { client: client_unix, send: 'new RegExp("foo", "wrong modifier");', - expect: /^SyntaxError: / }, - // strict mode syntax errors should be caught (GH-5178) - { client: client_unix, - send: '(function() { "use strict"; return 0755; })()', - expect: /\bSyntaxError: / }, - { - client: client_unix, - send: '(function(a, a, b) { "use strict"; return a + b + c; })()', - expect: /\bSyntaxError: / - }, - { - client: client_unix, - send: '(function() { "use strict"; with (this) {} })()', - expect: /\bSyntaxError: / - }, - { - client: client_unix, - send: '(function() { "use strict"; var x; delete x; })()', - expect: /\bSyntaxError: / - }, - { client: client_unix, - send: '(function() { "use strict"; eval = 17; })()', - expect: /\bSyntaxError: / }, - { - client: client_unix, - send: '(function() { "use strict"; if (true) function f() { } })()', - expect: /\bSyntaxError: / - }, - // Named functions can be used: - { client: client_unix, send: 'function blah() { return 1; }', - expect: prompt_unix }, - { client: client_unix, send: 'blah()', - expect: `1\n${prompt_unix}` }, - // Functions should not evaluate twice (#2773) - { client: client_unix, send: 'var I = [1,2,3,function() {}]; I.pop()', - expect: '[Function]' }, - // Multiline object - { client: client_unix, send: '{ a: ', - expect: prompt_multiline }, - { client: client_unix, send: '1 }', - expect: '{ a: 1 }' }, - // Multiline anonymous function with comment - { client: client_unix, send: '(function() {', - expect: prompt_multiline }, - { client: client_unix, send: '// blah', - expect: prompt_multiline }, - { client: client_unix, send: 'return 1;', - expect: prompt_multiline }, - { client: client_unix, send: '})()', - expect: '1' }, - // Multiline function call - { client: client_unix, send: 'function f(){}; f(f(1,', - expect: prompt_multiline }, - { client: client_unix, send: '2)', - expect: prompt_multiline }, - { client: client_unix, send: ')', - expect: `undefined\n${prompt_unix}` }, - // npm prompt error message - { client: client_unix, send: 'npm install foobar', - expect: expect_npm }, - { client: client_unix, send: '(function() {\n\nreturn 1;\n})()', - expect: '1' }, - { client: client_unix, send: '{\n\na: 1\n}', - expect: '{ a: 1 }' }, - { client: client_unix, send: 'url.format("http://google.com")', - expect: 'http://google.com/' }, - { client: client_unix, send: 'var path = 42; path', - expect: '42' }, - // this makes sure that we don't print `undefined` when we actually print - // the error message - { client: client_unix, send: '.invalid_repl_command', - expect: `Invalid REPL keyword\n${prompt_unix}` }, - // this makes sure that we don't crash when we use an inherited property as - // a REPL command - { client: client_unix, send: '.toString', - expect: `Invalid REPL keyword\n${prompt_unix}` }, - // fail when we are not inside a String and a line continuation is used - { client: client_unix, send: '[] \\', - expect: /\bSyntaxError: / }, - // do not fail when a String is created with line continuation - { client: client_unix, send: '\'the\\\nfourth\\\neye\'', - expect: `${prompt_multiline}${prompt_multiline}'thefourtheye'\n${ - prompt_unix}` }, - // Don't fail when a partial String is created and line continuation is used - // with whitespace characters at the end of the string. We are to ignore it. - // This test is to make sure that we properly remove the whitespace - // characters at the end of line, unlike the buggy `trimWhitespace` function - { client: client_unix, send: ' \t .break \t ', - expect: prompt_unix }, - // multiline strings preserve whitespace characters in them - { client: client_unix, send: '\'the \\\n fourth\t\t\\\n eye \'', - expect: `${prompt_multiline}${ - prompt_multiline}'the fourth\\t\\t eye '\n${prompt_unix}` }, - // more than one multiline strings also should preserve whitespace chars - { client: client_unix, send: '\'the \\\n fourth\' + \'\t\t\\\n eye \'', - expect: `${prompt_multiline}${ - prompt_multiline}'the fourth\\t\\t eye '\n${prompt_unix}` }, - // using REPL commands within a string literal should still work - { client: client_unix, send: '\'\\\n.break', - expect: prompt_unix }, - // using REPL command "help" within a string literal should still work - { client: client_unix, send: '\'thefourth\\\n.help\neye\'', - expect: /'thefourtheye'/ }, - // empty lines in the REPL should be allowed - { client: client_unix, send: '\n\r\n\r\n', - expect: prompt_unix + prompt_unix + prompt_unix }, - // empty lines in the string literals should not affect the string - { client: client_unix, send: '\'the\\\n\\\nfourtheye\'\n', - expect: `${prompt_multiline}${ - prompt_multiline}'thefourtheye'\n${prompt_unix}` }, - // Regression test for https://github.com/nodejs/node/issues/597 - { client: client_unix, - send: '/(.)(.)(.)(.)(.)(.)(.)(.)(.)/.test(\'123456789\')\n', - expect: `true\n${prompt_unix}` }, - // the following test's result depends on the RegEx's match from the above - { client: client_unix, - send: 'RegExp.$1\nRegExp.$2\nRegExp.$3\nRegExp.$4\nRegExp.$5\n' + - 'RegExp.$6\nRegExp.$7\nRegExp.$8\nRegExp.$9\n', - expect: ['\'1\'\n', '\'2\'\n', '\'3\'\n', '\'4\'\n', '\'5\'\n', '\'6\'\n', - '\'7\'\n', '\'8\'\n', '\'9\'\n'].join(`${prompt_unix}`) }, - // regression tests for https://github.com/nodejs/node/issues/2749 - { client: client_unix, send: 'function x() {\nreturn \'\\n\';\n }', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${ - prompt_unix}` }, - { client: client_unix, send: 'function x() {\nreturn \'\\\\\';\n }', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${ - prompt_unix}` }, - // regression tests for https://github.com/nodejs/node/issues/3421 - { client: client_unix, send: 'function x() {\n//\'\n }', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${ - prompt_unix}` }, - { client: client_unix, send: 'function x() {\n//"\n }', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${ - prompt_unix}` }, - { client: client_unix, send: 'function x() {//\'\n }', - expect: `${prompt_multiline}undefined\n${prompt_unix}` }, - { client: client_unix, send: 'function x() {//"\n }', - expect: `${prompt_multiline}undefined\n${prompt_unix}` }, - { client: client_unix, send: 'function x() {\nvar i = "\'";\n }', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${ - prompt_unix}` }, - { client: client_unix, send: 'function x(/*optional*/) {}', - expect: `undefined\n${prompt_unix}` }, - { client: client_unix, send: 'function x(/* // 5 */) {}', - expect: `undefined\n${prompt_unix}` }, - { client: client_unix, send: '// /* 5 */', - expect: `undefined\n${prompt_unix}` }, - { client: client_unix, send: '"//"', - expect: `'//'\n${prompt_unix}` }, - { client: client_unix, send: '"data /*with*/ comment"', - expect: `'data /*with*/ comment'\n${prompt_unix}` }, - { client: client_unix, send: 'function x(/*fn\'s optional params*/) {}', - expect: `undefined\n${prompt_unix}` }, - { client: client_unix, send: '/* \'\n"\n\'"\'\n*/', - expect: `undefined\n${prompt_unix}` }, - // REPL should get a normal require() function, not one that allows - // access to internal modules without the --expose_internals flag. - { client: client_unix, send: 'require("internal/repl")', - expect: /^Error: Cannot find module 'internal\/repl'/ }, - // REPL should handle quotes within regexp literal in multiline mode - { client: client_unix, - send: "function x(s) {\nreturn s.replace(/'/,'');\n}", - expect: `${prompt_multiline}${prompt_multiline}` + - `undefined\n${prompt_unix}` }, - { client: client_unix, - send: "function x(s) {\nreturn s.replace(/'/,'');\n}", - expect: `${prompt_multiline}${prompt_multiline}` + - `undefined\n${prompt_unix}` }, - { client: client_unix, - send: 'function x(s) {\nreturn s.replace(/"/,"");\n}', - expect: `${prompt_multiline}${prompt_multiline}` + - `undefined\n${prompt_unix}` }, - { client: client_unix, - send: 'function x(s) {\nreturn s.replace(/.*/,"");\n}', - expect: `${prompt_multiline}${prompt_multiline}` + - `undefined\n${prompt_unix}` }, - { client: client_unix, send: '{ var x = 4; }', - expect: `undefined\n${prompt_unix}` }, - // Illegal token is not recoverable outside string literal, RegExp literal, - // or block comment. https://github.com/nodejs/node/issues/3611 - { client: client_unix, send: 'a = 3.5e', - expect: /\bSyntaxError: Invalid or unexpected token/ }, - // Mitigate https://github.com/nodejs/node/issues/548 - { client: client_unix, send: 'function name(){ return "node"; };name()', - expect: `'node'\n${prompt_unix}` }, - { client: client_unix, send: 'function name(){ return "nodejs"; };name()', - expect: `'nodejs'\n${prompt_unix}` }, - // Avoid emitting repl:line-number for SyntaxError - { client: client_unix, send: 'a = 3.5e', - expect: /^(?!repl)/ }, - // Avoid emitting stack trace - { client: client_unix, send: 'a = 3.5e', - expect: /^(?!\s+at\s)/m }, - - // https://github.com/nodejs/node/issues/9850 - { client: client_unix, send: 'function* foo() {}; foo().next();', - expect: '{ value: undefined, done: true }' }, - - { client: client_unix, send: 'function *foo() {}; foo().next();', - expect: '{ value: undefined, done: true }' }, - - { client: client_unix, send: 'function*foo() {}; foo().next();', - expect: '{ value: undefined, done: true }' }, - - { client: client_unix, send: 'function * foo() {}; foo().next()', - expect: '{ value: undefined, done: true }' }, - - // https://github.com/nodejs/node/issues/9300 - { - client: client_unix, send: 'function foo() {\nvar bar = 1 / 1; // "/"\n}', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${prompt_unix}` - }, - - { - client: client_unix, send: '(function() {\nreturn /foo/ / /bar/;\n}())', - expect: `${prompt_multiline}${prompt_multiline}NaN\n${prompt_unix}` - }, - - { - client: client_unix, send: '(function() {\nif (false) {} /bar"/;\n}())', - expect: `${prompt_multiline}${prompt_multiline}undefined\n${prompt_unix}` - }, - - // Newline within template string maintains whitespace. - { client: client_unix, send: '`foo \n`', - expect: `${prompt_multiline}'foo \\n'\n${prompt_unix}` }, - // Whitespace is not evaluated. - { client: client_unix, send: ' \t \n', - expect: prompt_unix }, - // Do not parse `...[]` as a REPL keyword - { client: client_unix, send: '...[]\n', - expect: `${prompt_multiline}` }, - // bring back the repl to prompt - { client: client_unix, send: '.break', - expect: `${prompt_unix}` } - ]); + const remainder = socket.read(); + assert(remainder === '' || remainder === null); } -function tcp_test() { - server_tcp = net.createServer(function(socket) { - assert.strictEqual(server_tcp, socket.server); +const unixTests = [ + { + send: '', + expect: '' + }, + { + send: 'message', + expect: `'${message}'` + }, + { + send: 'invoke_me(987)', + expect: '\'invoked 987\'' + }, + { + send: 'a = 12345', + expect: '12345' + }, + { + send: '{a:1}', + expect: '{ a: 1 }' + } +]; + +const strictModeTests = [ + { + send: 'ref = 1', + expect: /^ReferenceError:\s/ + } +]; + +const errorTests = [ + // Uncaught error throws and prints out + { + send: 'throw new Error(\'test error\');', + expect: /^Error: test error/ + }, + // Common syntax error is treated as multiline command + { + send: 'function test_func() {', + expect: '... ' + }, + // You can recover with the .break command + { + send: '.break', + expect: '' + }, + // But passing the same string to eval() should throw + { + send: 'eval("function test_func() {")', + expect: /^SyntaxError: / + }, + // Can handle multiline template literals + { + send: '`io.js', + expect: '... ' + }, + // Special REPL commands still available + { + send: '.break', + expect: '' + }, + // Template expressions can cross lines + { + send: '`io.js ${"1.0"', + expect: '... ' + }, + { + send: '+ ".2"}`', + expect: '\'io.js 1.0.2\'' + }, + // Dot prefix in multiline commands aren't treated as commands + { + send: '("a"', + expect: '... ' + }, + { + send: '.charAt(0))', + expect: '\'a\'' + }, + // Floating point numbers are not interpreted as REPL commands. + { + send: '.1234', + expect: '0.1234' + }, + // Floating point expressions are not interpreted as REPL commands + { + send: '.1+.1', + expect: '0.2' + }, + // Can parse valid JSON + { + send: 'JSON.parse(\'{"valid": "json"}\');', + expect: '{ valid: \'json\' }' + }, + // invalid input to JSON.parse error is special case of syntax error, + // should throw + { + send: 'JSON.parse(\'{invalid: \\\'json\\\'}\');', + expect: [/^SyntaxError: /, ''] + }, + // end of input to JSON.parse error is special case of syntax error, + // should throw + { + send: 'JSON.parse(\'066\');', + expect: [/^SyntaxError: /, ''] + }, + // should throw + { + send: 'JSON.parse(\'{\');', + expect: [/^SyntaxError: /, ''] + }, + // invalid RegExps are a special case of syntax error, + // should throw + { + send: '/(/;', + expect: /^SyntaxError: / + }, + // invalid RegExp modifiers are a special case of syntax error, + // should throw (GH-4012) + { + send: 'new RegExp("foo", "wrong modifier");', + expect: [/^SyntaxError: /, ''] + }, + // strict mode syntax errors should be caught (GH-5178) + { + send: '(function() { "use strict"; return 0755; })()', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + { + send: '(function(a, a, b) { "use strict"; return a + b + c; })()', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + { + send: '(function() { "use strict"; with (this) {} })()', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + { + send: '(function() { "use strict"; var x; delete x; })()', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + { + send: '(function() { "use strict"; eval = 17; })()', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + { + send: '(function() { "use strict"; if (true) function f() { } })()', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + // Named functions can be used: + { + send: 'function blah() { return 1; }', + expect: 'undefined' + }, + { + send: 'blah()', + expect: '1' + }, + // Functions should not evaluate twice (#2773) + { + send: 'var I = [1,2,3,function() {}]; I.pop()', + expect: '[Function]' + }, + // Multiline object + { + send: '{ a: ', + expect: '... ' + }, + { + send: '1 }', + expect: '{ a: 1 }' + }, + // Multiline anonymous function with comment + { + send: '(function() {', + expect: '... ' + }, + { + send: '// blah', + expect: '... ' + }, + { + send: 'return 1;', + expect: '... ' + }, + { + send: '})()', + expect: '1' + }, + // Multiline function call + { + send: 'function f(){}; f(f(1,', + expect: '... ' + }, + { + send: '2)', + expect: '... ' + }, + { + send: ')', + expect: 'undefined' + }, + // npm prompt error message + { + send: 'npm install foobar', + expect: [ + 'npm should be run outside of the node repl, in your normal shell.', + '(Press Control-D to exit.)' + ] + }, + { + send: '(function() {\n\nreturn 1;\n})()', + expect: '... ... ... 1' + }, + { + send: '{\n\na: 1\n}', + expect: '... ... ... { a: 1 }' + }, + { + send: 'url.format("http://google.com")', + expect: '\'http://google.com/\'' + }, + { + send: 'var path = 42; path', + expect: '42' + }, + // this makes sure that we don't print `undefined` when we actually print + // the error message + { + send: '.invalid_repl_command', + expect: 'Invalid REPL keyword' + }, + // this makes sure that we don't crash when we use an inherited property as + // a REPL command + { + send: '.toString', + expect: 'Invalid REPL keyword' + }, + // fail when we are not inside a String and a line continuation is used + { + send: '[] \\', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + // do not fail when a String is created with line continuation + { + send: '\'the\\\nfourth\\\neye\'', + expect: ['... ... \'thefourtheye\''] + }, + // Don't fail when a partial String is created and line continuation is used + // with whitespace characters at the end of the string. We are to ignore it. + // This test is to make sure that we properly remove the whitespace + // characters at the end of line, unlike the buggy `trimWhitespace` function + { + send: ' \t .break \t ', + expect: '' + }, + // multiline strings preserve whitespace characters in them + { + send: '\'the \\\n fourth\t\t\\\n eye \'', + expect: '... ... \'the fourth\\t\\t eye \'' + }, + // more than one multiline strings also should preserve whitespace chars + { + send: '\'the \\\n fourth\' + \'\t\t\\\n eye \'', + expect: '... ... \'the fourth\\t\\t eye \'' + }, + // using REPL commands within a string literal should still work + { + send: '\'\\\n.break', + expect: '... ' + prompt_unix + }, + // using REPL command "help" within a string literal should still work + { + send: '\'thefourth\\\n.help\neye\'', + expect: [ + /\.break/, + /\.clear/, + /\.editor/, + /\.exit/, + /\.help/, + /\.load/, + /\.save/, + /'thefourtheye'/ + ] + }, + // empty lines in the REPL should be allowed + { + send: '\n\r\n\r\n', + expect: '' + }, + // empty lines in the string literals should not affect the string + { + send: '\'the\\\n\\\nfourtheye\'\n', + expect: '... ... \'thefourtheye\'' + }, + // Regression test for https://github.com/nodejs/node/issues/597 + { + send: '/(.)(.)(.)(.)(.)(.)(.)(.)(.)/.test(\'123456789\')\n', + expect: 'true' + }, + // the following test's result depends on the RegEx's match from the above + { + send: 'RegExp.$1\nRegExp.$2\nRegExp.$3\nRegExp.$4\nRegExp.$5\n' + + 'RegExp.$6\nRegExp.$7\nRegExp.$8\nRegExp.$9\n', + expect: ['\'1\'', '\'2\'', '\'3\'', '\'4\'', '\'5\'', '\'6\'', + '\'7\'', '\'8\'', '\'9\''] + }, + // regression tests for https://github.com/nodejs/node/issues/2749 + { + send: 'function x() {\nreturn \'\\n\';\n }', + expect: '... ... undefined' + }, + { + send: 'function x() {\nreturn \'\\\\\';\n }', + expect: '... ... undefined' + }, + // regression tests for https://github.com/nodejs/node/issues/3421 + { + send: 'function x() {\n//\'\n }', + expect: '... ... undefined' + }, + { + send: 'function x() {\n//"\n }', + expect: '... ... undefined' + }, + { + send: 'function x() {//\'\n }', + expect: '... undefined' + }, + { + send: 'function x() {//"\n }', + expect: '... undefined' + }, + { + send: 'function x() {\nvar i = "\'";\n }', + expect: '... ... undefined' + }, + { + send: 'function x(/*optional*/) {}', + expect: 'undefined' + }, + { + send: 'function x(/* // 5 */) {}', + expect: 'undefined' + }, + { + send: '// /* 5 */', + expect: 'undefined' + }, + { + send: '"//"', + expect: '\'//\'' + }, + { + send: '"data /*with*/ comment"', + expect: '\'data /*with*/ comment\'' + }, + { + send: 'function x(/*fn\'s optional params*/) {}', + expect: 'undefined' + }, + { + send: '/* \'\n"\n\'"\'\n*/', + expect: '... ... ... undefined' + }, + // REPL should get a normal require() function, not one that allows + // access to internal modules without the --expose_internals flag. + { + send: 'require("internal/repl")', + expect: [ + /^Error: Cannot find module 'internal\/repl'/, + /^ at .*/, + /^ at .*/, + /^ at .*/, + /^ at .*/ + ] + }, + // REPL should handle quotes within regexp literal in multiline mode + { + send: "function x(s) {\nreturn s.replace(/'/,'');\n}", + expect: '... ... undefined' + }, + { + send: "function x(s) {\nreturn s.replace(/'/,'');\n}", + expect: '... ... undefined' + }, + { + send: 'function x(s) {\nreturn s.replace(/"/,"");\n}', + expect: '... ... undefined' + }, + { + send: 'function x(s) {\nreturn s.replace(/.*/,"");\n}', + expect: '... ... undefined' + }, + { + send: '{ var x = 4; }', + expect: 'undefined' + }, + // Illegal token is not recoverable outside string literal, RegExp literal, + // or block comment. https://github.com/nodejs/node/issues/3611 + { + send: 'a = 3.5e', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + // Mitigate https://github.com/nodejs/node/issues/548 + { + send: 'function name(){ return "node"; };name()', + expect: '\'node\'' + }, + { + send: 'function name(){ return "nodejs"; };name()', + expect: '\'nodejs\'' + }, + // Avoid emitting repl:line-number for SyntaxError + { + send: 'a = 3.5e', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + // Avoid emitting stack trace + { + send: 'a = 3.5e', + expect: [ + kSource, + kArrow, + '', + /^SyntaxError: /, + '' + ] + }, + + // https://github.com/nodejs/node/issues/9850 + { + send: 'function* foo() {}; foo().next();', + expect: '{ value: undefined, done: true }' + }, + + { + send: 'function *foo() {}; foo().next();', + expect: '{ value: undefined, done: true }' + }, + + { + send: 'function*foo() {}; foo().next();', + expect: '{ value: undefined, done: true }' + }, + + { + send: 'function * foo() {}; foo().next()', + expect: '{ value: undefined, done: true }' + }, + + // https://github.com/nodejs/node/issues/9300 + { + send: 'function foo() {\nvar bar = 1 / 1; // "/"\n}', + expect: '... ... undefined' + }, + + { + send: '(function() {\nreturn /foo/ / /bar/;\n}())', + expect: '... ... NaN' + }, + + { + send: '(function() {\nif (false) {} /bar"/;\n}())', + expect: '... ... undefined' + }, + + // Newline within template string maintains whitespace. + { + send: '`foo \n`', + expect: '... \'foo \\n\'' + }, + // Whitespace is not evaluated. + { + send: ' \t \n', + expect: 'undefined' + }, + // Do not parse `...[]` as a REPL keyword + { + send: '...[]\n', + expect: '... ... ' + }, + // bring back the repl to prompt + { + send: '.break', + expect: '' + } +]; + +const tcpTests = [ + { + send: '', + expect: '' + }, + { + send: 'invoke_me(333)', + expect: '\'invoked 333\'' + }, + { + send: 'a += 1', + expect: '12346' + }, + { + send: `require(${JSON.stringify(moduleFilename)}).number`, + expect: '42' + } +]; + +(async function() { + { + const [ socket, replServer ] = await startUnixRepl(); - socket.on('end', function() { + await runReplTests(socket, prompt_unix, unixTests); + await runReplTests(socket, prompt_unix, errorTests); + replServer.replMode = repl.REPL_MODE_STRICT; + await runReplTests(socket, prompt_unix, strictModeTests); + + socket.end(); + } + { + const [ socket ] = await startTCPRepl(); + + await runReplTests(socket, prompt_tcp, tcpTests); + + socket.end(); + } +})(); + +function startTCPRepl() { + let resolveSocket, resolveReplServer; + + const server = net.createServer(common.mustCall((socket) => { + assert.strictEqual(server, socket.server); + + socket.on('end', common.mustCall(() => { socket.end(); - }); + })); - repl.start(prompt_tcp, socket); - }); + resolveReplServer(repl.start(prompt_tcp, socket)); + })); - server_tcp.listen(0, function() { - let read_buffer = ''; - - client_tcp = net.createConnection(this.address().port); - - client_tcp.on('connect', function() { - assert.strictEqual(true, client_tcp.readable); - assert.strictEqual(true, client_tcp.writable); - - send_expect([ - { client: client_tcp, send: '', - expect: prompt_tcp }, - { client: client_tcp, send: 'invoke_me(333)', - expect: (`'invoked 333'\n${prompt_tcp}`) }, - { client: client_tcp, send: 'a += 1', - expect: (`12346\n${prompt_tcp}`) }, - { client: client_tcp, - send: `require(${JSON.stringify(moduleFilename)}).number`, - expect: (`42\n${prompt_tcp}`) } - ]); - }); + server.listen(0, common.mustCall(() => { + const client = net.createConnection(server.address().port); - client_tcp.on('data', function(data) { - read_buffer += data.toString('ascii', 0, data.length); - console.error(`TCP data: ${JSON.stringify(read_buffer)}, expecting ${ - JSON.stringify(client_tcp.expect)}`); - if (read_buffer.includes(prompt_tcp)) { - assert.strictEqual(client_tcp.expect, read_buffer); - console.error('match'); - read_buffer = ''; - if (client_tcp.list && client_tcp.list.length > 0) { - send_expect(client_tcp.list); - } else { - console.error('End of TCP test.\n'); - clean_up(); - } - } else { - console.error('didn\'t see prompt yet, buffering'); - } - }); + client.setEncoding('utf8'); - client_tcp.on('error', function(e) { - throw e; - }); + client.on('connect', common.mustCall(() => { + assert.strictEqual(true, client.readable); + assert.strictEqual(true, client.writable); - client_tcp.on('close', function() { - server_tcp.close(); - }); - }); + resolveSocket(client); + })); + + client.on('close', common.mustCall(() => { + server.close(); + })); + })); + return Promise.all([ + new Promise((resolve) => resolveSocket = resolve), + new Promise((resolve) => resolveReplServer = resolve) + ]); } -function unix_test() { - server_unix = net.createServer(function(socket) { - assert.strictEqual(server_unix, socket.server); +function startUnixRepl() { + let resolveSocket, resolveReplServer; + + const server = net.createServer(common.mustCall((socket) => { + assert.strictEqual(server, socket.server); - socket.on('end', function() { + socket.on('end', common.mustCall(() => { socket.end(); - }); + })); - replServer = repl.start({ + const replServer = repl.start({ prompt: prompt_unix, input: socket, output: socket, useGlobal: true }); replServer.context.message = message; - }); + resolveReplServer(replServer); + })); - server_unix.on('listening', function() { - let read_buffer = ''; - - client_unix = net.createConnection(common.PIPE); - - client_unix.on('connect', function() { - assert.strictEqual(true, client_unix.readable); - assert.strictEqual(true, client_unix.writable); - - send_expect([ - { client: client_unix, send: '', - expect: prompt_unix }, - { client: client_unix, send: 'message', - expect: (`'${message}'\n${prompt_unix}`) }, - { client: client_unix, send: 'invoke_me(987)', - expect: (`'invoked 987'\n${prompt_unix}`) }, - { client: client_unix, send: 'a = 12345', - expect: (`12345\n${prompt_unix}`) }, - { client: client_unix, send: '{a:1}', - expect: (`{ a: 1 }\n${prompt_unix}`) } - ]); - }); + server.listen(common.PIPE, common.mustCall(() => { + const client = net.createConnection(common.PIPE); - client_unix.on('data', function(data) { - read_buffer += data.toString('ascii', 0, data.length); - console.error(`Unix data: ${JSON.stringify(read_buffer)}, expecting ${ - JSON.stringify(client_unix.expect)}`); - if (read_buffer.includes(prompt_unix)) { - assert.strictEqual(client_unix.expect, read_buffer); - console.error('match'); - read_buffer = ''; - if (client_unix.list && client_unix.list.length > 0) { - send_expect(client_unix.list); - } else { - console.error('End of Unix test, running Error test.\n'); - process.nextTick(error_test); - } - } else { - console.error('didn\'t see prompt yet, buffering.'); - } - }); + client.setEncoding('utf8'); - client_unix.on('error', function(e) { - throw e; - }); + client.on('connect', common.mustCall(() => { + assert.strictEqual(true, client.readable); + assert.strictEqual(true, client.writable); - client_unix.on('close', function() { - server_unix.close(); - }); - }); + resolveSocket(client); + })); + + client.on('close', common.mustCall(() => { + server.close(); + })); + })); - server_unix.listen(common.PIPE); + return Promise.all([ + new Promise((resolve) => resolveSocket = resolve), + new Promise((resolve) => resolveReplServer = resolve) + ]); } -unix_test(); +function event(ee, eventName) { + return new Promise((resolve) => { + ee.once(eventName, common.mustCall(resolve)); + }); +} From 2eb1aa81faeb7f060457044762e16a317f19939c Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Wed, 29 Nov 2017 15:59:04 -0500 Subject: [PATCH 007/163] test: move common.fires() to inspector-helper common.fires() is specific to the inspector tests so move it to inspector-helper.js. The one REPL test that used common.fires() does not seem to need it. It provided a 1 second timeout for operations, but that timeout appears both arbitrary and ineffective as the test passes if it is reduced to even 1 millisecond. Backport-PR-URL: https://github.com/nodejs/node/pull/18096 PR-URL: https://github.com/nodejs/node/pull/17401 Reviewed-By: Jon Moss Reviewed-By: Benjamin Gruenbaum Reviewed-By: Colin Ihrig --- test/common/README.md | 9 ------- test/common/index.js | 42 --------------------------------- test/common/inspector-helper.js | 41 ++++++++++++++++++++++++++++++-- 3 files changed, 39 insertions(+), 53 deletions(-) diff --git a/test/common/README.md b/test/common/README.md index d3010d632ac5d5..a57b0df3e3f1ab 100644 --- a/test/common/README.md +++ b/test/common/README.md @@ -119,15 +119,6 @@ Tests whether `name` and `expected` are part of a raised warning. Checks if `pathname` exists -### fires(promise, [error], [timeoutMs]) -* promise [<Promise] -* error [<String] default = 'timeout' -* timeoutMs [<Number] default = 100 - -Returns a new promise that will propagate `promise` resolution or rejection if -that happens within the `timeoutMs` timespan, or rejects with `error` as -a reason otherwise. - ### getArrayBufferViews(buf) * `buf` [<Buffer>] * return [<ArrayBufferView[]>] diff --git a/test/common/index.js b/test/common/index.js index 80f59333626b9a..380bdf0f4b7af6 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -866,32 +866,6 @@ function restoreWritable(name) { delete process[name].writeTimes; } -function onResolvedOrRejected(promise, callback) { - return promise.then((result) => { - callback(); - return result; - }, (error) => { - callback(); - throw error; - }); -} - -function timeoutPromise(error, timeoutMs) { - let clearCallback = null; - let done = false; - const promise = onResolvedOrRejected(new Promise((resolve, reject) => { - const timeout = setTimeout(() => reject(error), timeoutMs); - clearCallback = () => { - if (done) - return; - clearTimeout(timeout); - resolve(); - }; - }), () => done = true); - promise.clear = clearCallback; - return promise; -} - exports.hijackStdout = hijackStdWritable.bind(null, 'stdout'); exports.hijackStderr = hijackStdWritable.bind(null, 'stderr'); exports.restoreStdout = restoreWritable.bind(null, 'stdout'); @@ -905,19 +879,3 @@ exports.firstInvalidFD = function firstInvalidFD() { } catch (e) {} return fd; }; - -exports.fires = function fires(promise, error, timeoutMs) { - if (!timeoutMs && util.isNumber(error)) { - timeoutMs = error; - error = null; - } - if (!error) - error = 'timeout'; - if (!timeoutMs) - timeoutMs = 100; - const timeout = timeoutPromise(error, timeoutMs); - return Promise.race([ - onResolvedOrRejected(promise, () => timeout.clear()), - timeout - ]); -}; diff --git a/test/common/inspector-helper.js b/test/common/inspector-helper.js index 0d010a8ca70617..1f1738e31b75a8 100644 --- a/test/common/inspector-helper.js +++ b/test/common/inspector-helper.js @@ -216,7 +216,7 @@ class InspectorSession { waitForNotification(methodOrPredicate, description) { const desc = description || methodOrPredicate; const message = `Timed out waiting for matching notification (${desc}))`; - return common.fires( + return fires( this._asyncWaitForNotification(methodOrPredicate), message, TIMEOUT); } @@ -323,7 +323,7 @@ class NodeInstance { const instance = new NodeInstance( [], `${scriptContents}\nprocess._rawDebug('started');`, undefined); const msg = 'Timed out waiting for process to start'; - while (await common.fires(instance.nextStderrString(), msg, TIMEOUT) !== + while (await fires(instance.nextStderrString(), msg, TIMEOUT) !== 'started') {} process._debugProcess(instance._process.pid); return instance; @@ -431,6 +431,43 @@ function readMainScriptSource() { return fs.readFileSync(_MAINSCRIPT, 'utf8'); } +function onResolvedOrRejected(promise, callback) { + return promise.then((result) => { + callback(); + return result; + }, (error) => { + callback(); + throw error; + }); +} + +function timeoutPromise(error, timeoutMs) { + let clearCallback = null; + let done = false; + const promise = onResolvedOrRejected(new Promise((resolve, reject) => { + const timeout = setTimeout(() => reject(error), timeoutMs); + clearCallback = () => { + if (done) + return; + clearTimeout(timeout); + resolve(); + }; + }), () => done = true); + promise.clear = clearCallback; + return promise; +} + +// Returns a new promise that will propagate `promise` resolution or rejection +// if that happens within the `timeoutMs` timespan, or rejects with `error` as +// a reason otherwise. +function fires(promise, error, timeoutMs) { + const timeout = timeoutPromise(error, timeoutMs); + return Promise.race([ + onResolvedOrRejected(promise, () => timeout.clear()), + timeout + ]); +} + module.exports = { mainScriptPath: _MAINSCRIPT, readMainScriptSource, From df8cb401a0b847b692369e54fcc456d1fc10f09a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Wed, 27 Dec 2017 15:18:42 +0100 Subject: [PATCH 008/163] errors: remove ERR_OUTOFMEMORY Backport-PR-URL: https://github.com/nodejs/node/pull/18099 PR-URL: https://github.com/nodejs/node/pull/17877 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Reviewed-By: Luigi Pinca --- doc/api/errors.md | 5 ----- lib/internal/errors.js | 1 - 2 files changed, 6 deletions(-) diff --git a/doc/api/errors.md b/doc/api/errors.md index 73fd1d52cbeedc..8f3ca432e42e22 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -1284,11 +1284,6 @@ A Node.js API was called in an unsupported manner. For example: `Buffer.write(string, encoding, offset[, length])` - -### ERR_OUTOFMEMORY - -An operation caused an out-of-memory condition. - ### ERR_OUT_OF_RANGE diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 807e8e76909b76..6596f096c76ce4 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -319,7 +319,6 @@ E('ERR_NAPI_CONS_PROTOTYPE_OBJECT', 'Constructor.prototype must be an object'); E('ERR_NO_CRYPTO', 'Node.js is not compiled with OpenSSL crypto support'); E('ERR_NO_ICU', '%s is not supported on Node.js compiled without ICU'); E('ERR_NO_LONGER_SUPPORTED', '%s is no longer supported'); -E('ERR_OUTOFMEMORY', 'Out of memory'); E('ERR_OUT_OF_RANGE', 'The "%s" argument is out of range'); E('ERR_PARSE_HISTORY_DATA', 'Could not parse history data in %s'); E('ERR_REQUIRE_ESM', 'Must use import to load ES Module: %s'); From 733df362fa6b8ab264d9a8dc6fd9396052a26f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 31 Dec 2017 17:39:30 +0100 Subject: [PATCH 009/163] test: update references to archived repository Backport-PR-URL: https://github.com/nodejs/node/pull/18102 PR-URL: https://github.com/nodejs/node/pull/17924 Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig Reviewed-By: Jon Moss Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater --- test/parallel/test-assert.js | 4 ++-- test/parallel/test-buffer-alloc.js | 14 +++++++++----- test/parallel/test-cluster-worker-init.js | 2 +- test/parallel/test-crypto-binary-default.js | 3 ++- test/parallel/test-crypto-cipher-decipher.js | 11 +++++++---- test/parallel/test-crypto-hash.js | 3 ++- test/parallel/test-crypto-random.js | 5 +++-- test/parallel/test-crypto.js | 4 ++-- test/parallel/test-dgram-ref.js | 2 +- test/parallel/test-dns-regress-7070.js | 3 ++- test/parallel/test-timers-unref.js | 3 ++- test/parallel/test-tls-set-encoding.js | 2 +- test/sequential/test-child-process-execsync.js | 6 ++++-- test/sequential/test-module-loading.js | 6 ++++-- 14 files changed, 42 insertions(+), 26 deletions(-) diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index 885ac0013b2a5a..971c99be918d6a 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -623,7 +623,7 @@ testAssertionMessage({ a: undefined, b: null }, '{ a: undefined, b: null }'); testAssertionMessage({ a: NaN, b: Infinity, c: -Infinity }, '{ a: NaN, b: Infinity, c: -Infinity }'); -// #2893 +// https://github.com/nodejs/node-v0.x-archive/issues/2893 { let threw = false; try { @@ -638,7 +638,7 @@ testAssertionMessage({ a: NaN, b: Infinity, c: -Infinity }, assert.ok(threw); } -// #5292 +// https://github.com/nodejs/node-v0.x-archive/issues/5292 try { assert.strictEqual(1, 2); } catch (e) { diff --git a/test/parallel/test-buffer-alloc.js b/test/parallel/test-buffer-alloc.js index 38b0b5a4e5e387..7143133cd103ff 100644 --- a/test/parallel/test-buffer-alloc.js +++ b/test/parallel/test-buffer-alloc.js @@ -636,7 +636,8 @@ assert.strictEqual('', x.inspect()); } { - // #1210 Test UTF-8 string includes null character + // https://github.com/nodejs/node-v0.x-archive/pull/1210 + // Test UTF-8 string includes null character let buf = Buffer.from('\0'); assert.strictEqual(buf.length, 1); buf = Buffer.from('\0\0'); @@ -660,7 +661,8 @@ assert.strictEqual('', x.inspect()); } { - // #243 Test write() with maxLength + // https://github.com/nodejs/node-v0.x-archive/issues/243 + // Test write() with maxLength const buf = Buffer.allocUnsafe(4); buf.fill(0xFF); assert.strictEqual(buf.write('abcd', 1, 2, 'utf8'), 2); @@ -886,7 +888,8 @@ assert.throws(() => Buffer.allocUnsafe(8).writeFloatLE(0.0, -1), RangeError); assert.strictEqual(buf.readIntBE(0, 5), -0x0012000000); } -// Regression test for #5482: should throw but not assert in C++ land. +// Regression test for https://github.com/nodejs/node-v0.x-archive/issues/5482: +// should throw but not assert in C++ land. common.expectsError( () => Buffer.from('', 'buffer'), { @@ -896,8 +899,9 @@ common.expectsError( } ); -// Regression test for #6111. Constructing a buffer from another buffer -// should a) work, and b) not corrupt the source buffer. +// Regression test for https://github.com/nodejs/node-v0.x-archive/issues/6111. +// Constructing a buffer from another buffer should a) work, and b) not corrupt +// the source buffer. { const a = [...Array(128).keys()]; // [0, 1, 2, 3, ... 126, 127] const b = Buffer.from(a); diff --git a/test/parallel/test-cluster-worker-init.js b/test/parallel/test-cluster-worker-init.js index fd4e43fb863a20..47a884c1cdcc22 100644 --- a/test/parallel/test-cluster-worker-init.js +++ b/test/parallel/test-cluster-worker-init.js @@ -42,7 +42,7 @@ if (cluster.isMaster) { worker.send(msg); }); } else { - // GH #7998 + // https://github.com/nodejs/node-v0.x-archive/issues/7998 cluster.worker.on('message', (message) => { process.send(message === msg); }); diff --git a/test/parallel/test-crypto-binary-default.js b/test/parallel/test-crypto-binary-default.js index 75820a97634576..ad11b59f096dfd 100644 --- a/test/parallel/test-crypto-binary-default.js +++ b/test/parallel/test-crypto-binary-default.js @@ -411,7 +411,8 @@ fileStream.on('close', common.mustCall(function() { ); })); -// Issue #2227: unknown digest method should throw an error. +// Unknown digest method should throw an error: +// https://github.com/nodejs/node-v0.x-archive/issues/2227 assert.throws(function() { crypto.createHash('xyzzy'); }, /^Error: Digest method not supported$/); diff --git a/test/parallel/test-crypto-cipher-decipher.js b/test/parallel/test-crypto-cipher-decipher.js index b0d7feb1071a51..1752d903cfcb09 100644 --- a/test/parallel/test-crypto-cipher-decipher.js +++ b/test/parallel/test-crypto-cipher-decipher.js @@ -70,7 +70,8 @@ testCipher1(Buffer.from('MySecretKey123')); testCipher2('0123456789abcdef'); testCipher2(Buffer.from('0123456789abcdef')); -// Base64 padding regression test, see #4837. +// Base64 padding regression test, see +// https://github.com/nodejs/node-v0.x-archive/issues/4837. { const c = crypto.createCipher('aes-256-cbc', 'secret'); const s = c.update('test', 'utf8', 'base64') + c.final('base64'); @@ -78,7 +79,7 @@ testCipher2(Buffer.from('0123456789abcdef')); } // Calling Cipher.final() or Decipher.final() twice should error but -// not assert. See #4886. +// not assert. See https://github.com/nodejs/node-v0.x-archive/issues/4886. { const c = crypto.createCipher('aes-256-cbc', 'secret'); try { c.final('xxx'); } catch (e) { /* Ignore. */ } @@ -90,14 +91,16 @@ testCipher2(Buffer.from('0123456789abcdef')); try { d.final('xxx'); } catch (e) { /* Ignore. */ } } -// Regression test for #5482: string to Cipher#update() should not assert. +// Regression test for https://github.com/nodejs/node-v0.x-archive/issues/5482: +// string to Cipher#update() should not assert. { const c = crypto.createCipher('aes192', '0123456789abcdef'); c.update('update'); c.final(); } -// #5655 regression tests, 'utf-8' and 'utf8' are identical. +// https://github.com/nodejs/node-v0.x-archive/issues/5655 regression tests, +// 'utf-8' and 'utf8' are identical. { let c = crypto.createCipher('aes192', '0123456789abcdef'); c.update('update', ''); // Defaults to "utf8". diff --git a/test/parallel/test-crypto-hash.js b/test/parallel/test-crypto-hash.js index 4702a9a5f175df..bf080b1970369e 100644 --- a/test/parallel/test-crypto-hash.js +++ b/test/parallel/test-crypto-hash.js @@ -105,7 +105,8 @@ fileStream.on('close', common.mustCall(function() { 'Test SHA1 of sample.png'); })); -// Issue #2227: unknown digest method should throw an error. +// Issue https://github.com/nodejs/node-v0.x-archive/issues/2227: unknown digest +// method should throw an error. assert.throws(function() { crypto.createHash('xyzzy'); }, /Digest method not supported/); diff --git a/test/parallel/test-crypto-random.js b/test/parallel/test-crypto-random.js index 3926eb385044d9..10d45e0a67ac12 100644 --- a/test/parallel/test-crypto-random.js +++ b/test/parallel/test-crypto-random.js @@ -476,8 +476,9 @@ process.setMaxListeners(256); } } -// #5126, "FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData() -// length exceeds max acceptable value" +// https://github.com/nodejs/node-v0.x-archive/issues/5126, +// "FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData() length +// exceeds max acceptable value" common.expectsError( () => crypto.randomBytes((-1 >>> 0) + 1), { diff --git a/test/parallel/test-crypto.js b/test/parallel/test-crypto.js index 69f3a7f4198835..1156fe688cb8d2 100644 --- a/test/parallel/test-crypto.js +++ b/test/parallel/test-crypto.js @@ -162,8 +162,8 @@ testImmutability(tls.getCiphers); testImmutability(crypto.getHashes); testImmutability(crypto.getCurves); -// Regression tests for #5725: hex input that's not a power of two should -// throw, not assert in C++ land. +// Regression tests for https://github.com/nodejs/node-v0.x-archive/pull/5725: +// hex input that's not a power of two should throw, not assert in C++ land. assert.throws(function() { crypto.createCipher('aes192', 'test').update('0', 'hex'); }, (err) => { diff --git a/test/parallel/test-dgram-ref.js b/test/parallel/test-dgram-ref.js index 1a531db9aa194a..b3b8488297507c 100644 --- a/test/parallel/test-dgram-ref.js +++ b/test/parallel/test-dgram-ref.js @@ -23,7 +23,7 @@ const common = require('../common'); const dgram = require('dgram'); -// should not hang, see #1282 +// should not hang, see https://github.com/nodejs/node-v0.x-archive/issues/1282 dgram.createSocket('udp4'); dgram.createSocket('udp6'); diff --git a/test/parallel/test-dns-regress-7070.js b/test/parallel/test-dns-regress-7070.js index c1f698c3a65035..ada5bf2d91c0d6 100644 --- a/test/parallel/test-dns-regress-7070.js +++ b/test/parallel/test-dns-regress-7070.js @@ -23,7 +23,8 @@ const common = require('../common'); const dns = require('dns'); -// Should not raise assertion error. Issue #7070 +// Should not raise assertion error. +// Issue https://github.com/nodejs/node-v0.x-archive/issues/7070 common.expectsError(() => dns.resolveNs([]), // bad name { code: 'ERR_INVALID_ARG_TYPE', diff --git a/test/parallel/test-timers-unref.js b/test/parallel/test-timers-unref.js index 0078d2dae352d5..9e5a4228ba92ed 100644 --- a/test/parallel/test-timers-unref.js +++ b/test/parallel/test-timers-unref.js @@ -71,7 +71,8 @@ const check_unref = setInterval(() => { setInterval(() => timeout.unref(), SHORT_TIME); } -// Should not assert on args.Holder()->InternalFieldCount() > 0. See #4261. +// Should not assert on args.Holder()->InternalFieldCount() > 0. +// See https://github.com/nodejs/node-v0.x-archive/issues/4261. { const t = setInterval(() => {}, 1); process.nextTick(t.unref.bind({})); diff --git a/test/parallel/test-tls-set-encoding.js b/test/parallel/test-tls-set-encoding.js index cf621420774973..b3aa52a22a73f3 100644 --- a/test/parallel/test-tls-set-encoding.js +++ b/test/parallel/test-tls-set-encoding.js @@ -63,7 +63,7 @@ server.listen(0, function() { client.on('close', function() { // readyState is deprecated but we want to make // sure this isn't triggering an assert in lib/net.js - // See issue #1069. + // See https://github.com/nodejs/node-v0.x-archive/issues/1069. assert.strictEqual('closed', client.readyState); // Confirming the buffer string is encoded in ASCII diff --git a/test/sequential/test-child-process-execsync.js b/test/sequential/test-child-process-execsync.js index 8b360f4f21e095..da80e80bce01d2 100644 --- a/test/sequential/test-child-process-execsync.js +++ b/test/sequential/test-child-process-execsync.js @@ -93,7 +93,8 @@ ret = execFileSync(process.execPath, args, { encoding: 'utf8' }); assert.strictEqual(ret, `${msg}\n`); -// Verify that the cwd option works - GH #7824 +// Verify that the cwd option works. +// See https://github.com/nodejs/node-v0.x-archive/issues/7824. { const cwd = common.rootDir; const cmd = common.isWindows ? 'echo %cd%' : 'pwd'; @@ -102,7 +103,8 @@ assert.strictEqual(ret, `${msg}\n`); assert.strictEqual(response.toString().trim(), cwd); } -// Verify that stderr is not accessed when stdio = 'ignore' - GH #7966 +// Verify that stderr is not accessed when stdio = 'ignore'. +// See https://github.com/nodejs/node-v0.x-archive/issues/7966. { assert.throws(function() { execSync('exit -1', { stdio: 'ignore' }); diff --git a/test/sequential/test-module-loading.js b/test/sequential/test-module-loading.js index 47916d352d729a..6f40e8d8008ec3 100644 --- a/test/sequential/test-module-loading.js +++ b/test/sequential/test-module-loading.js @@ -222,7 +222,8 @@ try { } { - // #1357 Loading JSON files with require() + // Loading JSON files with require() + // See https://github.com/nodejs/node-v0.x-archive/issues/1357. const json = require('../fixtures/packages/main/package.json'); assert.deepStrictEqual(json, { name: 'package-name', @@ -337,7 +338,8 @@ process.on('exit', function() { }); -// #1440 Loading files with a byte order marker. +// Loading files with a byte order marker. +// See https://github.com/nodejs/node-v0.x-archive/issues/1440. assert.strictEqual(require('../fixtures/utf8-bom.js'), 42); assert.strictEqual(require('../fixtures/utf8-bom.json'), 42); From 56a9ae7773185842981dccf8f4d4a9c47503155e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 31 Dec 2017 18:06:40 +0100 Subject: [PATCH 010/163] readline: update references to archived repository Backport-PR-URL: https://github.com/nodejs/node/pull/18102 PR-URL: https://github.com/nodejs/node/pull/17924 Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig Reviewed-By: Jon Moss Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater --- lib/readline.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/readline.js b/lib/readline.js index 9b9a054fd66fb7..bca9c25ab2348b 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -760,7 +760,8 @@ Interface.prototype._ttyWrite = function(s, key) { key = key || {}; this._previousKey = key; - // Ignore escape key - Fixes #2876 + // Ignore escape key, fixes + // https://github.com/nodejs/node-v0.x-archive/issues/2876. if (key.name === 'escape') return; if (key.ctrl && key.shift) { From 722fe464bc03f3c37725dc6e5daa0678051d1dac Mon Sep 17 00:00:00 2001 From: Myles Borins Date: Sun, 14 Jan 2018 00:40:19 -0500 Subject: [PATCH 011/163] Revert "doc: import() is supported now" This reverts commit 977fb13bd52da1425666f3226966005a7b5bf456. This should not have landed on v9.x which does not yet support the feature PR-URL: https://github.com/nodejs/node/pull/18141 Reviewed-By: Rich Trott Reviewed-By: Luigi Pinca Reviewed-By: Daniel Bevenius Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: Franziska Hinkelmann Reviewed-By: Khaidi Chu Reviewed-By: Evan Lucas Reviewed-By: James M Snell --- doc/api/esm.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/api/esm.md b/doc/api/esm.md index 08d3ea6b3060b9..c512ea9867869b 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -33,14 +33,15 @@ node --experimental-modules my-app.mjs ### Supported Only the CLI argument for the main entry point to the program can be an entry -point into an ESM graph. Dynamic import can also be used with the flag -`--harmony-dynamic-import` to create entry points into ESM graphs at run time. +point into an ESM graph. In the future `import()` can be used to create entry +points into ESM graphs at run time. ### Unsupported | Feature | Reason | | --- | --- | -| `require('./foo.mjs')` | ES Modules have differing resolution and timing, use dynamic import | +| `require('./foo.mjs')` | ES Modules have differing resolution and timing, use language standard `import()` | +| `import()` | pending newer V8 release used in Node.js | | `import.meta` | pending V8 implementation | ## Notable differences between `import` and `require` From dd56bd15912199a699f9c6e4ab9ec5be55ea1453 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 19 Dec 2017 15:08:18 +0100 Subject: [PATCH 012/163] async_hooks: use typed array stack as fast path - Communicate the current async stack length through a typed array field rather than a native binding method - Add a new fixed-size `async_ids_fast_stack` typed array that contains the async ID stack up to a fixed limit. This increases performance noticeably, since most of the time the async ID stack will not be more than a handful of levels deep. - Make the JS `pushAsyncIds()` and `popAsyncIds()` functions do the same thing as the native ones if the fast path is applicable. Benchmarks: $ ./node benchmark/compare.js --new ./node --old ./node-master --runs 10 --filter next-tick process | Rscript benchmark/compare.R [00:03:25|% 100| 6/6 files | 20/20 runs | 1/1 configs]: Done improvement confidence p.value process/next-tick-breadth-args.js millions=4 19.72 % *** 3.013913e-06 process/next-tick-breadth.js millions=4 27.33 % *** 5.847983e-11 process/next-tick-depth-args.js millions=12 40.08 % *** 1.237127e-13 process/next-tick-depth.js millions=12 77.27 % *** 1.413290e-11 process/next-tick-exec-args.js millions=5 13.58 % *** 1.245180e-07 process/next-tick-exec.js millions=5 16.80 % *** 2.961386e-07 Backport-PR-URL: https://github.com/nodejs/node/pull/18290 PR-URL: https://github.com/nodejs/node/pull/17780 Reviewed-By: James M Snell --- lib/internal/async_hooks.js | 44 ++++++++++++- lib/internal/bootstrap_node.js | 6 +- src/aliased_buffer.h | 29 ++++++++- src/async_wrap.cc | 14 ++--- src/async_wrap.h | 1 - src/env-inl.h | 62 ++++++++++++------- src/env.cc | 16 +++++ src/env.h | 26 ++++---- .../test-async-hooks-recursive-stack.js | 20 ++++++ 9 files changed, 164 insertions(+), 54 deletions(-) create mode 100644 test/parallel/test-async-hooks-recursive-stack.js diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 3075a52ee6e6be..461dad84ebedf4 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -19,6 +19,12 @@ const async_wrap = process.binding('async_wrap'); * retrieving the triggerAsyncId value is passing directly to the * constructor -> value set in kDefaultTriggerAsyncId -> executionAsyncId of * the current resource. + * + * async_ids_fast_stack is a Float64Array that contains part of the async ID + * stack. Each pushAsyncIds() call adds two doubles to it, and each + * popAsyncIds() call removes two doubles from it. + * It has a fixed size, so if that is exceeded, calls to the native + * side are used instead in pushAsyncIds() and popAsyncIds(). */ const { async_hook_fields, async_id_fields } = async_wrap; // Store the pair executionAsyncId and triggerAsyncId in a std::stack on @@ -26,7 +32,7 @@ const { async_hook_fields, async_id_fields } = async_wrap; // current execution stack. This is unwound as each resource exits. In the case // of a fatal exception this stack is emptied after calling each hook's after() // callback. -const { pushAsyncIds, popAsyncIds } = async_wrap; +const { pushAsyncIds: pushAsyncIds_, popAsyncIds: popAsyncIds_ } = async_wrap; // For performance reasons, only track Proimses when a hook is enabled. const { enablePromiseHook, disablePromiseHook } = async_wrap; // Properties in active_hooks are used to keep track of the set of hooks being @@ -60,8 +66,8 @@ const active_hooks = { // async execution. These are tracked so if the user didn't include callbacks // for a given step, that step can bail out early. const { kInit, kBefore, kAfter, kDestroy, kPromiseResolve, - kCheck, kExecutionAsyncId, kAsyncIdCounter, - kDefaultTriggerAsyncId } = async_wrap.constants; + kCheck, kExecutionAsyncId, kAsyncIdCounter, kTriggerAsyncId, + kDefaultTriggerAsyncId, kStackLength } = async_wrap.constants; // Used in AsyncHook and AsyncResource. const init_symbol = Symbol('init'); @@ -329,6 +335,38 @@ function emitDestroyScript(asyncId) { } +// This is the equivalent of the native push_async_ids() call. +function pushAsyncIds(asyncId, triggerAsyncId) { + const offset = async_hook_fields[kStackLength]; + if (offset * 2 >= async_wrap.async_ids_stack.length) + return pushAsyncIds_(asyncId, triggerAsyncId); + async_wrap.async_ids_stack[offset * 2] = async_id_fields[kExecutionAsyncId]; + async_wrap.async_ids_stack[offset * 2 + 1] = async_id_fields[kTriggerAsyncId]; + async_hook_fields[kStackLength]++; + async_id_fields[kExecutionAsyncId] = asyncId; + async_id_fields[kTriggerAsyncId] = triggerAsyncId; +} + + +// This is the equivalent of the native pop_async_ids() call. +function popAsyncIds(asyncId) { + if (async_hook_fields[kStackLength] === 0) return false; + const stackLength = async_hook_fields[kStackLength]; + + if (async_hook_fields[kCheck] > 0 && + async_id_fields[kExecutionAsyncId] !== asyncId) { + // Do the same thing as the native code (i.e. crash hard). + return popAsyncIds_(asyncId); + } + + const offset = stackLength - 1; + async_id_fields[kExecutionAsyncId] = async_wrap.async_ids_stack[2 * offset]; + async_id_fields[kTriggerAsyncId] = async_wrap.async_ids_stack[2 * offset + 1]; + async_hook_fields[kStackLength] = offset; + return offset > 0; +} + + module.exports = { // Private API getHookArrays, diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js index 31f95d1f417e2d..f14eed2ace2a63 100644 --- a/lib/internal/bootstrap_node.js +++ b/lib/internal/bootstrap_node.js @@ -366,9 +366,9 @@ // Arrays containing hook flags and ids for async_hook calls. const { async_hook_fields, async_id_fields } = async_wrap; // Internal functions needed to manipulate the stack. - const { clearAsyncIdStack, asyncIdStackSize } = async_wrap; + const { clearAsyncIdStack } = async_wrap; const { kAfter, kExecutionAsyncId, - kDefaultTriggerAsyncId } = async_wrap.constants; + kDefaultTriggerAsyncId, kStackLength } = async_wrap.constants; process._fatalException = function(er) { var caught; @@ -406,7 +406,7 @@ do { NativeModule.require('internal/async_hooks').emitAfter( async_id_fields[kExecutionAsyncId]); - } while (asyncIdStackSize() > 0); + } while (async_hook_fields[kStackLength] > 0); // Or completely empty the id stack. } else { clearAsyncIdStack(); diff --git a/src/aliased_buffer.h b/src/aliased_buffer.h index 21aaeb61141c59..b99b01f5d94ca2 100644 --- a/src/aliased_buffer.h +++ b/src/aliased_buffer.h @@ -95,6 +95,21 @@ class AliasedBuffer { js_array_.Reset(); } + AliasedBuffer& operator=(AliasedBuffer&& that) { + this->~AliasedBuffer(); + isolate_ = that.isolate_; + count_ = that.count_; + byte_offset_ = that.byte_offset_; + buffer_ = that.buffer_; + free_buffer_ = that.free_buffer_; + + js_array_.Reset(isolate_, that.js_array_.Get(isolate_)); + + that.buffer_ = nullptr; + that.js_array_.Reset(); + return *this; + } + /** * Helper class that is returned from operator[] to support assignment into * a specified location. @@ -111,11 +126,17 @@ class AliasedBuffer { index_(that.index_) { } - inline Reference& operator=(const NativeT &val) { + template + inline Reference& operator=(const T& val) { aliased_buffer_->SetValue(index_, val); return *this; } + // This is not caught by the template operator= above. + inline Reference& operator=(const Reference& val) { + return *this = static_cast(val); + } + operator NativeT() const { return aliased_buffer_->GetValue(index_); } @@ -186,8 +207,12 @@ class AliasedBuffer { return GetValue(index); } + size_t Length() const { + return count_; + } + private: - v8::Isolate* const isolate_; + v8::Isolate* isolate_; size_t count_; size_t byte_offset_; NativeT* buffer_; diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 24b646dd5df49b..f770348b9c9183 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -467,13 +467,6 @@ void AsyncWrap::PopAsyncIds(const FunctionCallbackInfo& args) { } -void AsyncWrap::AsyncIdStackSize(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - args.GetReturnValue().Set( - static_cast(env->async_hooks()->stack_size())); -} - - void AsyncWrap::ClearAsyncIdStack(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); env->async_hooks()->clear_async_id_stack(); @@ -512,7 +505,6 @@ void AsyncWrap::Initialize(Local target, env->SetMethod(target, "setupHooks", SetupHooks); env->SetMethod(target, "pushAsyncIds", PushAsyncIds); env->SetMethod(target, "popAsyncIds", PopAsyncIds); - env->SetMethod(target, "asyncIdStackSize", AsyncIdStackSize); env->SetMethod(target, "clearAsyncIdStack", ClearAsyncIdStack); env->SetMethod(target, "queueDestroyAsyncId", QueueDestroyAsyncId); env->SetMethod(target, "enablePromiseHook", EnablePromiseHook); @@ -550,6 +542,10 @@ void AsyncWrap::Initialize(Local target, "async_id_fields", env->async_hooks()->async_id_fields().GetJSArray()); + target->Set(context, + env->async_ids_stack_string(), + env->async_hooks()->async_ids_stack().GetJSArray()).FromJust(); + Local constants = Object::New(isolate); #define SET_HOOKS_CONSTANT(name) \ FORCE_SET_TARGET_FIELD( \ @@ -566,6 +562,7 @@ void AsyncWrap::Initialize(Local target, SET_HOOKS_CONSTANT(kTriggerAsyncId); SET_HOOKS_CONSTANT(kAsyncIdCounter); SET_HOOKS_CONSTANT(kDefaultTriggerAsyncId); + SET_HOOKS_CONSTANT(kStackLength); #undef SET_HOOKS_CONSTANT FORCE_SET_TARGET_FIELD(target, "constants", constants); @@ -595,6 +592,7 @@ void AsyncWrap::Initialize(Local target, env->set_async_hooks_after_function(Local()); env->set_async_hooks_destroy_function(Local()); env->set_async_hooks_promise_resolve_function(Local()); + env->set_async_hooks_binding(target); } diff --git a/src/async_wrap.h b/src/async_wrap.h index c5dd4506886984..9b5632598bcc0b 100644 --- a/src/async_wrap.h +++ b/src/async_wrap.h @@ -123,7 +123,6 @@ class AsyncWrap : public BaseObject { static void GetAsyncId(const v8::FunctionCallbackInfo& args); static void PushAsyncIds(const v8::FunctionCallbackInfo& args); static void PopAsyncIds(const v8::FunctionCallbackInfo& args); - static void AsyncIdStackSize(const v8::FunctionCallbackInfo& args); static void ClearAsyncIdStack( const v8::FunctionCallbackInfo& args); static void AsyncReset(const v8::FunctionCallbackInfo& args); diff --git a/src/env-inl.h b/src/env-inl.h index ae864fb08402f7..5a202aa5fc0ecb 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -53,11 +53,11 @@ inline MultiIsolatePlatform* IsolateData::platform() const { return platform_; } -inline Environment::AsyncHooks::AsyncHooks(v8::Isolate* isolate) - : isolate_(isolate), - fields_(isolate, kFieldsCount), - async_id_fields_(isolate, kUidFieldsCount) { - v8::HandleScope handle_scope(isolate_); +inline Environment::AsyncHooks::AsyncHooks() + : async_ids_stack_(env()->isolate(), 16 * 2), + fields_(env()->isolate(), kFieldsCount), + async_id_fields_(env()->isolate(), kUidFieldsCount) { + v8::HandleScope handle_scope(env()->isolate()); // Always perform async_hooks checks, not just when async_hooks is enabled. // TODO(AndreasMadsen): Consider removing this for LTS releases. @@ -81,9 +81,9 @@ inline Environment::AsyncHooks::AsyncHooks(v8::Isolate* isolate) // strings can be retrieved quickly. #define V(Provider) \ providers_[AsyncWrap::PROVIDER_ ## Provider].Set( \ - isolate_, \ + env()->isolate(), \ v8::String::NewFromOneByte( \ - isolate_, \ + env()->isolate(), \ reinterpret_cast(#Provider), \ v8::NewStringType::kInternalized, \ sizeof(#Provider) - 1).ToLocalChecked()); @@ -101,8 +101,13 @@ Environment::AsyncHooks::async_id_fields() { return async_id_fields_; } +inline AliasedBuffer& +Environment::AsyncHooks::async_ids_stack() { + return async_ids_stack_; +} + inline v8::Local Environment::AsyncHooks::provider_string(int idx) { - return providers_[idx].Get(isolate_); + return providers_[idx].Get(env()->isolate()); } inline void Environment::AsyncHooks::no_force_checks() { @@ -110,6 +115,11 @@ inline void Environment::AsyncHooks::no_force_checks() { fields_[kCheck] = fields_[kCheck] - 1; } +inline Environment* Environment::AsyncHooks::env() { + return Environment::ForAsyncHooks(this); +} + +// Remember to keep this code aligned with pushAsyncIds() in JS. inline void Environment::AsyncHooks::push_async_ids(double async_id, double trigger_async_id) { // Since async_hooks is experimental, do only perform the check @@ -119,16 +129,21 @@ inline void Environment::AsyncHooks::push_async_ids(double async_id, CHECK_GE(trigger_async_id, -1); } - async_ids_stack_.push({ async_id_fields_[kExecutionAsyncId], - async_id_fields_[kTriggerAsyncId] }); + uint32_t offset = fields_[kStackLength]; + if (offset * 2 >= async_ids_stack_.Length()) + grow_async_ids_stack(); + async_ids_stack_[2 * offset] = async_id_fields_[kExecutionAsyncId]; + async_ids_stack_[2 * offset + 1] = async_id_fields_[kTriggerAsyncId]; + fields_[kStackLength] = fields_[kStackLength] + 1; async_id_fields_[kExecutionAsyncId] = async_id; async_id_fields_[kTriggerAsyncId] = trigger_async_id; } +// Remember to keep this code aligned with popAsyncIds() in JS. inline bool Environment::AsyncHooks::pop_async_id(double async_id) { // In case of an exception then this may have already been reset, if the // stack was multiple MakeCallback()'s deep. - if (async_ids_stack_.empty()) return false; + if (fields_[kStackLength] == 0) return false; // Ask for the async_id to be restored as a check that the stack // hasn't been corrupted. @@ -140,32 +155,27 @@ inline bool Environment::AsyncHooks::pop_async_id(double async_id) { "actual: %.f, expected: %.f)\n", async_id_fields_.GetValue(kExecutionAsyncId), async_id); - Environment* env = Environment::GetCurrent(isolate_); DumpBacktrace(stderr); fflush(stderr); - if (!env->abort_on_uncaught_exception()) + if (!env()->abort_on_uncaught_exception()) exit(1); fprintf(stderr, "\n"); fflush(stderr); ABORT_NO_BACKTRACE(); } - auto async_ids = async_ids_stack_.top(); - async_ids_stack_.pop(); - async_id_fields_[kExecutionAsyncId] = async_ids.async_id; - async_id_fields_[kTriggerAsyncId] = async_ids.trigger_async_id; - return !async_ids_stack_.empty(); -} + uint32_t offset = fields_[kStackLength] - 1; + async_id_fields_[kExecutionAsyncId] = async_ids_stack_[2 * offset]; + async_id_fields_[kTriggerAsyncId] = async_ids_stack_[2 * offset + 1]; + fields_[kStackLength] = offset; -inline size_t Environment::AsyncHooks::stack_size() { - return async_ids_stack_.size(); + return fields_[kStackLength] > 0; } inline void Environment::AsyncHooks::clear_async_id_stack() { - while (!async_ids_stack_.empty()) - async_ids_stack_.pop(); async_id_fields_[kExecutionAsyncId] = 0; async_id_fields_[kTriggerAsyncId] = 0; + fields_[kStackLength] = 0; } inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope @@ -189,6 +199,11 @@ inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope } +Environment* Environment::ForAsyncHooks(AsyncHooks* hooks) { + return ContainerOf(&Environment::async_hooks_, hooks); +} + + inline Environment::AsyncCallbackScope::AsyncCallbackScope(Environment* env) : env_(env) { env_->makecallback_cntr_++; @@ -262,7 +277,6 @@ inline Environment::Environment(IsolateData* isolate_data, v8::Local context) : isolate_(context->GetIsolate()), isolate_data_(isolate_data), - async_hooks_(context->GetIsolate()), timer_base_(uv_now(isolate_data->event_loop())), using_domains_(false), printed_error_(false), diff --git a/src/env.cc b/src/env.cc index 64fc2dea04e8d1..902429e18a7e74 100644 --- a/src/env.cc +++ b/src/env.cc @@ -323,4 +323,20 @@ void Environment::ActivateImmediateCheck() { uv_idle_start(&immediate_idle_handle_, [](uv_idle_t*){ }); } +void Environment::AsyncHooks::grow_async_ids_stack() { + const uint32_t old_capacity = async_ids_stack_.Length() / 2; + const uint32_t new_capacity = old_capacity * 1.5; + AliasedBuffer new_buffer( + env()->isolate(), new_capacity * 2); + + for (uint32_t i = 0; i < old_capacity * 2; ++i) + new_buffer[i] = async_ids_stack_[i]; + async_ids_stack_ = std::move(new_buffer); + + env()->async_hooks_binding()->Set( + env()->context(), + env()->async_ids_stack_string(), + async_ids_stack_.GetJSArray()).FromJust(); +} + } // namespace node diff --git a/src/env.h b/src/env.h index ecb03722868626..fe85710f0b69fb 100644 --- a/src/env.h +++ b/src/env.h @@ -41,7 +41,6 @@ #include #include #include -#include #include struct nghttp2_rcbuf; @@ -100,6 +99,7 @@ class ModuleWrap; V(address_string, "address") \ V(args_string, "args") \ V(async, "async") \ + V(async_ids_stack_string, "async_ids_stack") \ V(buffer_string, "buffer") \ V(bytes_string, "bytes") \ V(bytes_parsed_string, "bytesParsed") \ @@ -282,6 +282,7 @@ class ModuleWrap; V(async_hooks_before_function, v8::Function) \ V(async_hooks_after_function, v8::Function) \ V(async_hooks_promise_resolve_function, v8::Function) \ + V(async_hooks_binding, v8::Object) \ V(binding_cache_object, v8::Object) \ V(internal_binding_cache_object, v8::Object) \ V(buffer_prototype_object, v8::Object) \ @@ -314,11 +315,6 @@ class ModuleWrap; class Environment; -struct node_async_ids { - double async_id; - double trigger_async_id; -}; - class IsolateData { public: IsolateData(v8::Isolate* isolate, uv_loop_t* event_loop, @@ -382,6 +378,7 @@ class Environment { kPromiseResolve, kTotals, kCheck, + kStackLength, kFieldsCount, }; @@ -393,18 +390,17 @@ class Environment { kUidFieldsCount, }; - AsyncHooks() = delete; - inline AliasedBuffer& fields(); inline AliasedBuffer& async_id_fields(); + inline AliasedBuffer& async_ids_stack(); inline v8::Local provider_string(int idx); inline void no_force_checks(); + inline Environment* env(); inline void push_async_ids(double async_id, double trigger_async_id); inline bool pop_async_id(double async_id); - inline size_t stack_size(); inline void clear_async_id_stack(); // Used in fatal exceptions. // Used to set the kDefaultTriggerAsyncId in a scope. This is instead of @@ -426,19 +422,21 @@ class Environment { private: friend class Environment; // So we can call the constructor. - inline explicit AsyncHooks(v8::Isolate* isolate); + inline AsyncHooks(); // Keep a list of all Persistent strings used for Provider types. v8::Eternal providers_[AsyncWrap::PROVIDERS_LENGTH]; - // Used by provider_string(). - v8::Isolate* isolate_; + // Keep track of the environment copy itself. + Environment* env_; // Stores the ids of the current execution context stack. - std::stack async_ids_stack_; + AliasedBuffer async_ids_stack_; // Attached to a Uint32Array that tracks the number of active hooks for // each type. AliasedBuffer fields_; // Attached to a Float64Array that tracks the state of async resources. AliasedBuffer async_id_fields_; + void grow_async_ids_stack(); + DISALLOW_COPY_AND_ASSIGN(AsyncHooks); }; @@ -683,6 +681,8 @@ class Environment { inline bool inside_should_not_abort_on_uncaught_scope() const; + static inline Environment* ForAsyncHooks(AsyncHooks* hooks); + private: inline void ThrowError(v8::Local (*fun)(v8::Local), const char* errmsg); diff --git a/test/parallel/test-async-hooks-recursive-stack.js b/test/parallel/test-async-hooks-recursive-stack.js new file mode 100644 index 00000000000000..7ab73dc1bf4538 --- /dev/null +++ b/test/parallel/test-async-hooks-recursive-stack.js @@ -0,0 +1,20 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const async_hooks = require('async_hooks'); + +// This test verifies that the async ID stack can grow indefinitely. + +function recurse(n) { + const a = new async_hooks.AsyncResource('foobar'); + a.emitBefore(); + assert.strictEqual(a.asyncId(), async_hooks.executionAsyncId()); + assert.strictEqual(a.triggerAsyncId(), async_hooks.triggerAsyncId()); + if (n >= 0) + recurse(n - 1); + assert.strictEqual(a.asyncId(), async_hooks.executionAsyncId()); + assert.strictEqual(a.triggerAsyncId(), async_hooks.triggerAsyncId()); + a.emitAfter(); +} + +recurse(1000); From 8f8e7479cbbb23d5a9c23e759d2a38973476ea8b Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 29 Dec 2017 16:17:12 +0100 Subject: [PATCH 013/163] lib: remove queue implementation from JSStreamWrap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The streams implementation generally ensures that only one write() call is active at a time. `JSStreamWrap` instances still kept queue of write reqeuests in spite of that; refactor it away. Also, fold `isAlive()` into a constant function on the native side. PR-URL: https://github.com/nodejs/node/pull/17918 Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell Reviewed-By: Tobias Nießen Reviewed-By: Minwoo Jung Reviewed-By: Colin Ihrig Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: Matteo Collina --- lib/internal/wrap_js_stream.js | 159 +++++++++++++++------------------ src/env.h | 1 - src/js_stream.cc | 8 +- 3 files changed, 71 insertions(+), 97 deletions(-) diff --git a/lib/internal/wrap_js_stream.js b/lib/internal/wrap_js_stream.js index 611095655b5a65..1c494e57e1f9dd 100644 --- a/lib/internal/wrap_js_stream.js +++ b/lib/internal/wrap_js_stream.js @@ -8,6 +8,15 @@ const uv = process.binding('uv'); const debug = util.debuglog('stream_wrap'); const errors = require('internal/errors'); +const kCurrentWriteRequest = Symbol('kCurrentWriteRequest'); +const kCurrentShutdownRequest = Symbol('kCurrentShutdownRequest'); + +function isClosing() { return this.owner.isClosing(); } +function onreadstart() { return this.owner.readStart(); } +function onreadstop() { return this.owner.readStop(); } +function onshutdown(req) { return this.owner.doShutdown(req); } +function onwrite(req, bufs) { return this.owner.doWrite(req, bufs); } + /* This class serves as a wrapper for when the C++ side of Node wants access * to a standard JS stream. For example, TLS or HTTP do not operate on network * resources conceptually, although that is the common case and what we are @@ -27,12 +36,13 @@ class JSStreamWrap extends Socket { debug('close'); this.doClose(cb); }; - handle.isAlive = () => this.isAlive(); - handle.isClosing = () => this.isClosing(); - handle.onreadstart = () => this.readStart(); - handle.onreadstop = () => this.readStop(); - handle.onshutdown = (req) => this.doShutdown(req); - handle.onwrite = (req, bufs) => this.doWrite(req, bufs); + // Inside of the following functions, `this` refers to the handle + // and `this.owner` refers to this JSStreamWrap instance. + handle.isClosing = isClosing; + handle.onreadstart = onreadstart; + handle.onreadstop = onreadstop; + handle.onshutdown = onshutdown; + handle.onwrite = onwrite; stream.pause(); stream.on('error', (err) => this.emit('error', err)); @@ -60,7 +70,10 @@ class JSStreamWrap extends Socket { super({ handle, manualStart: true }); this.stream = stream; - this._list = null; + this[kCurrentWriteRequest] = null; + this[kCurrentShutdownRequest] = null; + + // Start reading. this.read(0); } @@ -69,10 +82,6 @@ class JSStreamWrap extends Socket { return JSStreamWrap; } - isAlive() { - return true; - } - isClosing() { return !this.readable || !this.writable; } @@ -88,33 +97,56 @@ class JSStreamWrap extends Socket { } doShutdown(req) { + assert.strictEqual(this[kCurrentShutdownRequest], null); + this[kCurrentShutdownRequest] = req; + + // TODO(addaleax): It might be nice if we could get into a state where + // DoShutdown() is not called on streams while a write is still pending. + // + // Currently, the only part of the code base where that happens is the + // TLS implementation, which calls both DoWrite() and DoShutdown() on the + // underlying network stream inside of its own DoShutdown() method. + // Working around that on the native side is not quite trivial (yet?), + // so for now that is supported here. + + if (this[kCurrentWriteRequest] !== null) + return this.on('drain', () => this.doShutdown(req)); + assert.strictEqual(this[kCurrentWriteRequest], null); + const handle = this._handle; - const item = this._enqueue('shutdown', req); this.stream.end(() => { // Ensure that write was dispatched setImmediate(() => { - if (!this._dequeue(item)) - return; - - handle.finishShutdown(req, 0); + this.finishShutdown(handle, 0); }); }); return 0; } + // handle === this._handle except when called from doClose(). + finishShutdown(handle, errCode) { + // The shutdown request might already have been cancelled. + if (this[kCurrentShutdownRequest] === null) + return; + const req = this[kCurrentShutdownRequest]; + this[kCurrentShutdownRequest] = null; + handle.finishShutdown(req, errCode); + } + doWrite(req, bufs) { - const self = this; - const handle = this._handle; + assert.strictEqual(this[kCurrentWriteRequest], null); + assert.strictEqual(this[kCurrentShutdownRequest], null); + this[kCurrentWriteRequest] = req; - var pending = bufs.length; + const handle = this._handle; + const self = this; - // Queue the request to be able to cancel it - const item = this._enqueue('write', req); + let pending = bufs.length; this.stream.cork(); - for (var n = 0; n < bufs.length; n++) - this.stream.write(bufs[n], done); + for (var i = 0; i < bufs.length; ++i) + this.stream.write(bufs[i], done); this.stream.uncork(); function done(err) { @@ -126,93 +158,42 @@ class JSStreamWrap extends Socket { let errCode = 0; if (err) { - const code = uv[`UV_${err.code}`]; - errCode = (err.code && code) ? code : uv.UV_EPIPE; + errCode = uv[`UV_${err.code}`] || uv.UV_EPIPE; } // Ensure that write was dispatched - setImmediate(function() { - // Do not invoke callback twice - if (!self._dequeue(item)) - return; - - handle.finishWrite(req, errCode); + setImmediate(() => { + self.finishWrite(handle, errCode); }); } return 0; } - _enqueue(type, req) { - const item = new QueueItem(type, req); - if (this._list === null) { - this._list = item; - return item; - } - - item.next = this._list.next; - item.prev = this._list; - item.next.prev = item; - item.prev.next = item; - - return item; - } - - _dequeue(item) { - assert(item instanceof QueueItem); - - var next = item.next; - var prev = item.prev; - - if (next === null && prev === null) - return false; - - item.next = null; - item.prev = null; - - if (next === item) { - prev = null; - next = null; - } else { - prev.next = next; - next.prev = prev; - } - - if (this._list === item) - this._list = next; + // handle === this._handle except when called from doClose(). + finishWrite(handle, errCode) { + // The write request might already have been cancelled. + if (this[kCurrentWriteRequest] === null) + return; + const req = this[kCurrentWriteRequest]; + this[kCurrentWriteRequest] = null; - return true; + handle.finishWrite(req, errCode); } doClose(cb) { const handle = this._handle; setImmediate(() => { - while (this._list !== null) { - const item = this._list; - const req = item.req; - this._dequeue(item); - - const errCode = uv.UV_ECANCELED; - if (item.type === 'write') { - handle.finishWrite(req, errCode); - } else if (item.type === 'shutdown') { - handle.finishShutdown(req, errCode); - } - } - // Should be already set by net.js assert.strictEqual(this._handle, null); + + this.finishWrite(handle, uv.UV_ECANCELED); + this.finishShutdown(handle, uv.UV_ECANCELED); + cb(); }); } } -function QueueItem(type, req) { - this.type = type; - this.req = req; - this.prev = this; - this.next = this; -} - module.exports = JSStreamWrap; diff --git a/src/env.h b/src/env.h index fe85710f0b69fb..8e1dc94599cfbf 100644 --- a/src/env.h +++ b/src/env.h @@ -165,7 +165,6 @@ class ModuleWrap; V(internal_string, "internal") \ V(ipv4_string, "IPv4") \ V(ipv6_string, "IPv6") \ - V(isalive_string, "isAlive") \ V(isclosing_string, "isClosing") \ V(issuer_string, "issuer") \ V(issuercert_string, "issuerCertificate") \ diff --git a/src/js_stream.cc b/src/js_stream.cc index c4e32feeba0f7d..dba6d1a52b8013 100644 --- a/src/js_stream.cc +++ b/src/js_stream.cc @@ -80,13 +80,7 @@ AsyncWrap* JSStream::GetAsyncWrap() { bool JSStream::IsAlive() { - HandleScope scope(env()->isolate()); - Context::Scope context_scope(env()->context()); - v8::Local fn = object()->Get(env()->isalive_string()); - if (!fn->IsFunction()) - return false; - return MakeCallback(fn.As(), 0, nullptr) - .ToLocalChecked()->IsTrue(); + return true; } From dd72f9c9b7d22b3d836623fe321cc5d2a44b0072 Mon Sep 17 00:00:00 2001 From: Qingyan Li Date: Thu, 4 Jan 2018 16:50:50 +0800 Subject: [PATCH 014/163] build: fix cctest target with --enable-static Currently the cctest target build will fail if configured with --enable-static $ ./configure --enable-static $ make There're some function multiple definition errors such as: out/Release/obj.target/node/src/node_crypto.o: In function `node::crypto::RandomBytesWork(uv_work_s*)': node_crypto.cc:(.text+0x60): multiple definition of `node::crypto::RandomBytesWork(uv_work_s*)' out/Release/obj.target/node/src/node_crypto.o:node_crypto.cc:(.text+0x60): first defined here It's caused by repetition objects in libraries and libnode.a. This CL makes those libraries guarded by 'node_target_type!="static_library"'. PR-URL: https://github.com/nodejs/node/pull/17992 Reviewed-By: Daniel Bevenius Reviewed-By: James M Snell --- node.gyp | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/node.gyp b/node.gyp index 46796d01fd800f..4649566f2d3003 100644 --- a/node.gyp +++ b/node.gyp @@ -855,11 +855,15 @@ ], }], [ 'node_use_openssl=="true"', { - 'libraries': [ - '<(OBJ_PATH)<(OBJ_SEPARATOR)node_crypto.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)node_crypto_bio.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)node_crypto_clienthello.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)tls_wrap.<(OBJ_SUFFIX)', + 'conditions': [ + ['node_target_type!="static_library"', { + 'libraries': [ + '<(OBJ_PATH)<(OBJ_SEPARATOR)node_crypto.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)node_crypto_bio.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)node_crypto_clienthello.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)tls_wrap.<(OBJ_SUFFIX)', + ], + }], ], 'defines': [ 'HAVE_OPENSSL=1', @@ -870,18 +874,22 @@ 'test/cctest/test_inspector_socket.cc', 'test/cctest/test_inspector_socket_server.cc' ], - 'libraries': [ - '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_agent.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_io.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_js_api.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_socket.<(OBJ_SUFFIX)', - '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_socket_server.<(OBJ_SUFFIX)', + 'conditions': [ + ['node_target_type!="static_library"', { + 'libraries': [ + '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_agent.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_io.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_js_api.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_socket.<(OBJ_SUFFIX)', + '<(OBJ_PATH)<(OBJ_SEPARATOR)inspector_socket_server.<(OBJ_SUFFIX)', + ], + }], ], 'defines': [ 'HAVE_INSPECTOR=1', ], }], - [ 'node_use_dtrace=="true"', { + [ 'node_use_dtrace=="true" and node_target_type!="static_library"', { 'libraries': [ '<(OBJ_PATH)<(OBJ_SEPARATOR)node_dtrace.<(OBJ_SUFFIX)', ], @@ -899,14 +907,18 @@ }], ], }], - [ 'OS=="win"', { + [ 'OS=="win" and node_target_type!="static_library"', { 'libraries': [ '<(OBJ_PATH)<(OBJ_SEPARATOR)backtrace_win32.<(OBJ_SUFFIX)', - ], + ], }, { - 'libraries': [ - '<(OBJ_PATH)<(OBJ_SEPARATOR)backtrace_posix.<(OBJ_SUFFIX)', - ], + 'conditions': [ + ['node_target_type!="static_library"', { + 'libraries': [ + '<(OBJ_PATH)<(OBJ_SEPARATOR)backtrace_posix.<(OBJ_SUFFIX)', + ], + }], + ], }], [ 'node_shared_zlib=="false"', { 'dependencies': [ From 278450fc72609636e77bac78559c879fb4f837d5 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 4 Jan 2018 19:01:22 -0800 Subject: [PATCH 015/163] doc: multiple updates to child_process.md * use serial comma in child_process.md * use American spelling of unsanitized in child_process.md * hyphenate general-purpose in child_process.md * remove errant commas in child_process.md PR-URL: https://github.com/nodejs/node/pull/17990 Reviewed-By: Gireesh Punathil Reviewed-By: Jon Moss Reviewed-By: Weijia Wang Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- doc/api/child_process.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/api/child_process.md b/doc/api/child_process.md index 2f86d5156fc438..c88443e078b0a6 100644 --- a/doc/api/child_process.md +++ b/doc/api/child_process.md @@ -25,7 +25,7 @@ ls.on('close', (code) => { }); ``` -By default, pipes for `stdin`, `stdout` and `stderr` are established between +By default, pipes for `stdin`, `stdout`, and `stderr` are established between the parent Node.js process and the spawned child. It is possible to stream data through these pipes in a non-blocking way. *Note, however, that some programs use line-buffered I/O internally. While that does not affect Node.js, it can @@ -170,7 +170,7 @@ exec('echo "The \\$HOME variable is $HOME"'); //The $HOME variable is escaped in the first instance, but not in the second ``` -*Note*: Never pass unsanitised user input to this function. Any input +*Note*: Never pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution. @@ -418,7 +418,7 @@ The `child_process.spawn()` method spawns a new process using the given `command`, with command line arguments in `args`. If omitted, `args` defaults to an empty array. -*Note*: If the `shell` option is enabled, do not pass unsanitised user input to +*Note*: If the `shell` option is enabled, do not pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution. @@ -661,7 +661,7 @@ The [`child_process.spawnSync()`][], [`child_process.execSync()`][], and the Node.js event loop, pausing execution of any additional code until the spawned process exits. -Blocking calls like these are mostly useful for simplifying general purpose +Blocking calls like these are mostly useful for simplifying general-purpose scripting tasks and for simplifying the loading/processing of application configuration at startup. @@ -715,7 +715,7 @@ completely exited. does not exit, the parent process will still wait until the child process has exited. -If the process times out, or has a non-zero exit code, this method ***will*** +If the process times out or has a non-zero exit code, this method ***will*** throw an [`Error`][] that will include the full result of the underlying [`child_process.spawnSync()`][]. @@ -767,11 +767,11 @@ exited. *Note that if the child process intercepts and handles the `SIGTERM` signal and doesn't exit, the parent process will wait until the child process has exited.* -If the process times out, or has a non-zero exit code, this method ***will*** +If the process times out or has a non-zero exit code, this method ***will*** throw. The [`Error`][] object will contain the entire result from [`child_process.spawnSync()`][] -*Note*: Never pass unsanitised user input to this function. Any input +*Note*: Never pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution. @@ -839,7 +839,7 @@ completely exited. Note that if the process intercepts and handles the `SIGTERM` signal and doesn't exit, the parent process will wait until the child process has exited. -*Note*: If the `shell` option is enabled, do not pass unsanitised user input +*Note*: If the `shell` option is enabled, do not pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution. From 3456e61b44c707aae6e78f7e3ee2a49ee2703847 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 4 Jan 2018 17:03:44 -0800 Subject: [PATCH 016/163] test: use smaller input file for test-zlib.js PR-URL: https://github.com/nodejs/node/pull/17988 Fixes: https://github.com/nodejs/node/issues/17986 Reviewed-By: Ruben Bridgewater Reviewed-By: Gireesh Punathil Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Gibson Fahnestock --- test/parallel/test-zlib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-zlib.js b/test/parallel/test-zlib.js index b2201fca4c9aae..1f6965d1247b8e 100644 --- a/test/parallel/test-zlib.js +++ b/test/parallel/test-zlib.js @@ -157,7 +157,7 @@ assert.doesNotThrow(() => { }, 'windowsBits set to 8 should follow legacy zlib behavior'); { - const node = fs.createReadStream(process.execPath); + const node = fs.createReadStream(fixtures.path('person.jpg')); const raw = []; const reinflated = []; node.on('data', (chunk) => raw.push(chunk)); From f0a0fdd83ae4fa898fc1d48d6c7d7906f085b91a Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 4 Jan 2018 15:37:53 -0800 Subject: [PATCH 017/163] doc: multiple updates to BUILDING.md * remove spaces around slash in BUILDING.md * hyphenate _end-of-life_ in BUILDING.md * add missing comma in BUILDING.md * add missing backticks in BUILDING.md * add missing comma to BUILDING.md PR-URL: https://github.com/nodejs/node/pull/17985 Reviewed-By: Richard Lau Reviewed-By: Yuta Hiroto Reviewed-By: Jon Moss Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Gibson Fahnestock --- BUILDING.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index c459a867ba6096..fbf6b9cd9641e2 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -10,7 +10,7 @@ file a new issue. ## Supported platforms -This list of supported platforms is current as of the branch / release to +This list of supported platforms is current as of the branch/release to which it is attached. ### Input @@ -33,15 +33,15 @@ Support is divided into three tiers: ### Supported platforms -The community does not build or test against end of life distributions (EoL). -Thus we do not recommend that you use Node on end of life or unsupported platforms +The community does not build or test against end-of-life distributions (EoL). +Thus we do not recommend that you use Node on end-of-life or unsupported platforms in production. | System | Support type | Version | Architectures | Notes | |--------------|--------------|----------------------------------|----------------------|------------------| | GNU/Linux | Tier 1 | kernel >= 2.6.32, glibc >= 2.12 | x64, arm, arm64 | | | macOS | Tier 1 | >= 10.10 | x64 | | -| Windows | Tier 1 | >= Windows 7 / 2008 R2 | x86, x64 | vs2017 | +| Windows | Tier 1 | >= Windows 7/2008 R2 | x86, x64 | vs2017 | | SmartOS | Tier 2 | >= 15 < 16.4 | x86, x64 | see note1 | | FreeBSD | Tier 2 | >= 10 | x64 | | | GNU/Linux | Tier 2 | kernel >= 3.13.0, glibc >= 2.19 | ppc64le >=power8 | | @@ -92,7 +92,7 @@ Depending on host platform, the selection of toolchains may vary. *Note:* All prerequisites can be easily installed by following [this bootstrapping guide](https://github.com/nodejs/node/blob/master/tools/bootstrap/README.md). -### Unix / macOS +### Unix/macOS Prerequisites: @@ -101,7 +101,7 @@ Prerequisites: * Python 2.6 or 2.7 * GNU Make 3.81 or newer -On macOS you will need to install the `Xcode Command Line Tools` by running +On macOS, you will need to install the `Xcode Command Line Tools` by running `xcode-select --install`. Alternatively, if you already have the full Xcode installed, you can find them under the menu `Xcode -> Open Developer Tool -> More Developer Tools...`. This step will install `clang`, `clang++`, and @@ -114,7 +114,7 @@ If the path to your build directory contains a space, the build will likely fail ```console $ sudo ./tools/macosx-firewall.sh ``` -Running this script will add rules for the executable `node` in the out +Running this script will add rules for the executable `node` in the `out` directory and the symbolic `node` link in the project's root directory. On FreeBSD and OpenBSD, you may also need: @@ -233,7 +233,7 @@ To test if Node.js was built correctly: > Release\node -e "console.log('Hello from Node.js', process.version)" ``` -### Android / Android-based devices (e.g. Firefox OS) +### Android/Android-based devices (e.g. Firefox OS) Although these instructions for building on Android are provided, please note that Android is not an officially supported platform at this time. Patches to @@ -273,7 +273,7 @@ With the `--download=all`, this may download ICU if you don't have an ICU in `deps/icu`. (The embedded `small-icu` included in the default Node.js source does not include all locales.) -##### Unix / macOS: +##### Unix/macOS: ```console $ ./configure --with-intl=full-icu --download=all @@ -290,7 +290,7 @@ $ ./configure --with-intl=full-icu --download=all The `Intl` object will not be available, nor some other APIs such as `String.normalize`. -##### Unix / macOS: +##### Unix/macOS: ```console $ ./configure --without-intl @@ -302,7 +302,7 @@ $ ./configure --without-intl > .\vcbuild without-intl ``` -#### Use existing installed ICU (Unix / macOS only): +#### Use existing installed ICU (Unix/macOS only): ```console $ pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu @@ -318,7 +318,7 @@ You can find other ICU releases at Download the file named something like `icu4c-**##.#**-src.tgz` (or `.zip`). -##### Unix / macOS +##### Unix/macOS From an already-unpacked ICU: ```console @@ -366,7 +366,7 @@ and [user guide](https://openssl.org/docs/fips/UserGuide-2.0.pdf). through which you get the file complies with the requirements for a "secure installation" as described in section 6.6 in the [user guide](https://openssl.org/docs/fips/UserGuide-2.0.pdf). - For evaluation/experimentation you can simply download and verify + For evaluation/experimentation, you can simply download and verify `openssl-fips-x.x.x.tar.gz` from https://www.openssl.org/source/ 2. Extract source to `openssl-fips` folder and `cd openssl-fips` 3. `./config` From a4ba7915663faaaaf86bbdfd87c4916087603b3a Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Thu, 4 Jan 2018 21:37:51 +0100 Subject: [PATCH 018/163] benchmark: add JSStreamWrap benchmark This is made to mirror the connection-bound net benchmarks. PR-URL: https://github.com/nodejs/node/pull/17983 Reviewed-By: Rich Trott Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca Reviewed-By: James M Snell --- .../net/net-wrap-js-stream-passthrough.js | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 benchmark/net/net-wrap-js-stream-passthrough.js diff --git a/benchmark/net/net-wrap-js-stream-passthrough.js b/benchmark/net/net-wrap-js-stream-passthrough.js new file mode 100644 index 00000000000000..bf84285e81b53a --- /dev/null +++ b/benchmark/net/net-wrap-js-stream-passthrough.js @@ -0,0 +1,107 @@ +// test the speed of .pipe() with JSStream wrapping for PassThrough streams +'use strict'; + +const common = require('../common.js'); +const { PassThrough } = require('stream'); + +const bench = common.createBenchmark(main, { + len: [102400, 1024 * 1024 * 16], + type: ['utf', 'asc', 'buf'], + dur: [5], +}, { + flags: ['--expose-internals'] +}); + +var dur; +var len; +var type; +var chunk; +var encoding; +var JSStreamWrap; // Can only require internals inside main(). + +function main(conf) { + dur = +conf.dur; + len = +conf.len; + type = conf.type; + JSStreamWrap = require('internal/wrap_js_stream'); + + switch (type) { + case 'buf': + chunk = Buffer.alloc(len, 'x'); + break; + case 'utf': + encoding = 'utf8'; + chunk = 'ü'.repeat(len / 2); + break; + case 'asc': + encoding = 'ascii'; + chunk = 'x'.repeat(len); + break; + default: + throw new Error(`invalid type: ${type}`); + } + + doBenchmark(); +} + +function Writer() { + this.received = 0; + this.writable = true; +} + +Writer.prototype.write = function(chunk, encoding, cb) { + this.received += chunk.length; + + if (typeof encoding === 'function') + encoding(); + else if (typeof cb === 'function') + cb(); + + return true; +}; + +// doesn't matter, never emits anything. +Writer.prototype.on = function() {}; +Writer.prototype.once = function() {}; +Writer.prototype.emit = function() {}; +Writer.prototype.prependListener = function() {}; + + +function flow() { + const dest = this.dest; + const res = dest.write(chunk, encoding); + if (!res) + dest.once('drain', this.flow); + else + process.nextTick(this.flow); +} + +function Reader() { + this.flow = flow.bind(this); + this.readable = true; +} + +Reader.prototype.pipe = function(dest) { + this.dest = dest; + this.flow(); + return dest; +}; + + +function doBenchmark() { + const reader = new Reader(); + const writer = new Writer(); + + // the actual benchmark. + const fakeSocket = new JSStreamWrap(new PassThrough()); + bench.start(); + reader.pipe(fakeSocket); + fakeSocket.pipe(writer); + + setTimeout(function() { + const bytes = writer.received; + const gbits = (bytes * 8) / (1024 * 1024 * 1024); + bench.end(gbits); + process.exit(0); + }, dur * 1000); +} From f693e81ee51d6da80280388f908425bc0e179b8a Mon Sep 17 00:00:00 2001 From: Jinho Bang Date: Tue, 26 Dec 2017 23:20:39 +0900 Subject: [PATCH 019/163] n-api: throw RangeError in napi_create_dataview() with invalid range The API is required that `byte_length + byte_offset` is less than or equal to the size in bytes of the array passed in. If not, a RangeError exception is raised[1]. [1] https://nodejs.org/api/n-api.html#n_api_napi_create_dataview PR-URL: https://github.com/nodejs/node/pull/17869 Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: Colin Ihrig Reviewed-By: Anna Henningsen Reviewed-By: Michael Dawson Reviewed-By: James M Snell --- doc/api/errors.md | 6 +++ lib/internal/errors.js | 3 ++ src/node_api.cc | 8 +++ test/addons-napi/test_dataview/test.js | 22 +++++--- .../addons-napi/test_dataview/test_dataview.c | 52 ++++++++++++++++++- 5 files changed, 84 insertions(+), 7 deletions(-) diff --git a/doc/api/errors.md b/doc/api/errors.md index 8f3ca432e42e22..84a21b581d1cc0 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -1265,6 +1265,12 @@ While using `N-API`, a constructor passed was not a function. While using `N-API`, `Constructor.prototype` was not an object. + +### ERR_NAPI_INVALID_DATAVIEW_ARGS + +While calling `napi_create_dataview()`, a given `offset` was outside the bounds +of the dataview or `offset + length` was larger than a length of given `buffer`. + ### ERR_NO_CRYPTO diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 6596f096c76ce4..2e959acea4ab05 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -316,6 +316,9 @@ E('ERR_MODULE_RESOLUTION_LEGACY', '%s not found by import in %s.' + E('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); E('ERR_NAPI_CONS_FUNCTION', 'Constructor must be a function'); E('ERR_NAPI_CONS_PROTOTYPE_OBJECT', 'Constructor.prototype must be an object'); +E('ERR_NAPI_INVALID_DATAVIEW_ARGS', + 'byte_offset + byte_length should be less than or eqaul to the size in ' + + 'bytes of the array passed in'); E('ERR_NO_CRYPTO', 'Node.js is not compiled with OpenSSL crypto support'); E('ERR_NO_ICU', '%s is not supported on Node.js compiled without ICU'); E('ERR_NO_LONGER_SUPPORTED', '%s is no longer supported'); diff --git a/src/node_api.cc b/src/node_api.cc index ac0b0959b599d6..095f98f64f4e77 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -3170,6 +3170,14 @@ napi_status napi_create_dataview(napi_env env, RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), napi_invalid_arg); v8::Local buffer = value.As(); + if (byte_length + byte_offset > buffer->ByteLength()) { + napi_throw_range_error( + env, + "ERR_NAPI_INVALID_DATAVIEW_ARGS", + "byte_offset + byte_length should be less than or " + "equal to the size in bytes of the array passed in"); + return napi_set_last_error(env, napi_pending_exception); + } v8::Local DataView = v8::DataView::New(buffer, byte_offset, byte_length); diff --git a/test/addons-napi/test_dataview/test.js b/test/addons-napi/test_dataview/test.js index 711ab01ddb3cb6..a6be58494069e5 100644 --- a/test/addons-napi/test_dataview/test.js +++ b/test/addons-napi/test_dataview/test.js @@ -5,10 +5,20 @@ const assert = require('assert'); // Testing api calls for arrays const test_dataview = require(`./build/${common.buildType}/test_dataview`); -//create dataview -const buffer = new ArrayBuffer(128); -const template = Reflect.construct(DataView, [buffer]); +// Test for creating dataview +{ + const buffer = new ArrayBuffer(128); + const template = Reflect.construct(DataView, [buffer]); -const theDataview = test_dataview.CreateDataView(template); -assert.ok(theDataview instanceof DataView, - `Expect ${theDataview} to be a DataView`); + const theDataview = test_dataview.CreateDataViewFromJSDataView(template); + assert.ok(theDataview instanceof DataView, + `Expect ${theDataview} to be a DataView`); +} + +// Test for creating dataview with invalid range +{ + const buffer = new ArrayBuffer(128); + assert.throws(() => { + test_dataview.CreateDataView(buffer, 10, 200); + }, RangeError); +} diff --git a/test/addons-napi/test_dataview/test_dataview.c b/test/addons-napi/test_dataview/test_dataview.c index 5f95eef0f38032..4d29ed07e9e6f7 100644 --- a/test/addons-napi/test_dataview/test_dataview.c +++ b/test/addons-napi/test_dataview/test_dataview.c @@ -3,6 +3,53 @@ #include "../common.h" napi_value CreateDataView(napi_env env, napi_callback_info info) { + size_t argc = 3; + napi_value args [3]; + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + NAPI_ASSERT(env, argc == 3, "Wrong number of arguments"); + + napi_valuetype valuetype0; + napi_value arraybuffer = args[0]; + + NAPI_CALL(env, napi_typeof(env, arraybuffer, &valuetype0)); + NAPI_ASSERT(env, valuetype0 == napi_object, + "Wrong type of arguments. Expects a ArrayBuffer as the first " + "argument."); + + bool is_arraybuffer; + NAPI_CALL(env, napi_is_arraybuffer(env, arraybuffer, &is_arraybuffer)); + NAPI_ASSERT(env, is_arraybuffer, + "Wrong type of arguments. Expects a ArrayBuffer as the first " + "argument."); + + napi_valuetype valuetype1; + NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); + + NAPI_ASSERT(env, valuetype1 == napi_number, + "Wrong type of arguments. Expects a number as second argument."); + + size_t byte_offset = 0; + NAPI_CALL(env, napi_get_value_uint32(env, args[1], (uint32_t*)(&byte_offset))); + + napi_valuetype valuetype2; + NAPI_CALL(env, napi_typeof(env, args[2], &valuetype2)); + + NAPI_ASSERT(env, valuetype2 == napi_number, + "Wrong type of arguments. Expects a number as third argument."); + + size_t length = 0; + NAPI_CALL(env, napi_get_value_uint32(env, args[2], (uint32_t*)(&length))); + + napi_value output_dataview; + NAPI_CALL(env, + napi_create_dataview(env, length, arraybuffer, + byte_offset, &output_dataview)); + + return output_dataview; +} + +napi_value CreateDataViewFromJSDataView(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args [1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); @@ -34,12 +81,15 @@ napi_value CreateDataView(napi_env env, napi_callback_info info) { napi_create_dataview(env, length, buffer, byte_offset, &output_dataview)); + return output_dataview; } napi_value Init(napi_env env, napi_value exports) { napi_property_descriptor descriptors[] = { - DECLARE_NAPI_PROPERTY("CreateDataView", CreateDataView) + DECLARE_NAPI_PROPERTY("CreateDataView", CreateDataView), + DECLARE_NAPI_PROPERTY("CreateDataViewFromJSDataView", + CreateDataViewFromJSDataView) }; NAPI_CALL(env, napi_define_properties( From 7911b9b493cc6dbd7f8881478e90c0ba12b8cfd2 Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Sun, 26 Nov 2017 16:43:20 -0500 Subject: [PATCH 020/163] doc: examples for fast-tracking regression fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/17379 Reviewed-By: Michaël Zasso Reviewed-By: Joyee Cheung Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater --- COLLABORATOR_GUIDE.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 2569570b8d03bd..f96c9a2a0dd4d5 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -127,12 +127,14 @@ Before landing pull requests, sufficient time should be left for input from other Collaborators. In general, leave at least 48 hours during the week and 72 hours over weekends to account for international time differences and work schedules. However, certain types of pull requests -can be fast-tracked and may be landed after a shorter delay: - -* Focused changes that affect only documentation and/or the test suite. - `code-and-learn` and `good-first-issue` pull requests typically fall - into this category. -* Changes that fix regressions. +can be fast-tracked and may be landed after a shorter delay. For example: + +* Focused changes that affect only documentation and/or the test suite: + * `code-and-learn` tasks typically fall into this category. + * `good-first-issue` pull requests may also be suitable. +* Changes that fix regressions: + * Regressions that break the workflow (red CI or broken compilation). + * Regressions that happen right before a release, or reported soon after. When a pull request is deemed suitable to be fast-tracked, label it with `fast-track`. The pull request can be landed once 2 or more Collaborators From 5ebd0178a6d13050dd111b107e3c157f079606a5 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Mon, 8 Jan 2018 11:30:57 -0800 Subject: [PATCH 021/163] doc: add descriptions of state properties Fixes: https://github.com/nodejs/node/issues/15268 PR-URL: https://github.com/nodejs/node/pull/18044 Fixes: https://github.com/nodejs/node/issues/15268 Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca --- doc/api/http2.md | 49 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/doc/api/http2.md b/doc/api/http2.md index a67fc387d832a2..fc64f5ab9dd5da 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -540,16 +540,28 @@ All other interactions will be routed directly to the socket. added: v8.4.0 --> +Provides miscellaneous information about the current state of the +`Http2Session`. + * Value: {Object} - * `effectiveLocalWindowSize` {number} - * `effectiveRecvDataLength` {number} - * `nextStreamID` {number} - * `localWindowSize` {number} - * `lastProcStreamID` {number} - * `remoteWindowSize` {number} - * `outboundQueueSize` {number} - * `deflateDynamicTableSize` {number} - * `inflateDynamicTableSize` {number} + * `effectiveLocalWindowSize` {number} The current local (receive) + flow control window size for the `Http2Session`. + * `effectiveRecvDataLength` {number} The current number of bytes + that have been received since the last flow control `WINDOW_UPDATE`. + * `nextStreamID` {number} The numeric identifier to be used the + next time a new `Http2Stream` is created by this `Http2Session`. + * `localWindowSize` {number} The number of bytes that the remote peer can + send without receiving a `WINDOW_UPDATE`. + * `lastProcStreamID` {number} The numeric id of the `Http2Stream` + for which a `HEADERS` or `DATA` frame was most recently received. + * `remoteWindowSize` {number} The number of bytes that this `Http2Session` + may send without receiving a `WINDOW_UPDATE`. + * `outboundQueueSize` {number} The number of frames currently within the + outbound queue for this `Http2Session`. + * `deflateDynamicTableSize` {number} The current size in bytes of the + outbound header compression state table. + * `inflateDynamicTableSize` {number} The current size in bytes of the + inbound header compression state table. An object describing the current status of this `Http2Session`. @@ -1010,14 +1022,21 @@ req.setTimeout(5000, () => req.rstStream(NGHTTP2_CANCEL)); +Provides miscellaneous information about the current state of the +`Http2Stream`. * Value: {Object} - * `localWindowSize` {number} - * `state` {number} - * `localClose` {number} - * `remoteClose` {number} - * `sumDependencyWeight` {number} - * `weight` {number} + * `localWindowSize` {number} The number of bytes the connected peer may send + for this `Http2Stream` without receiving a `WINDOW_UPDATE`. + * `state` {number} A flag indicating the low-level current state of the + `Http2Stream` as determined by nghttp2. + * `localClose` {number} `true` if this `Http2Stream` has been closed locally. + * `remoteClose` {number} `true` if this `Http2Stream` has been closed + remotely. + * `sumDependencyWeight` {number} The sum weight of all `Http2Stream` + instances that depend on this `Http2Stream` as specified using + `PRIORITY` frames. + * `weight` {number} The priority weight of this `Http2Stream`. A current state of this `Http2Stream`. From 470832f2036b996d648bc8f783e9519359e82554 Mon Sep 17 00:00:00 2001 From: Weijia Wang <381152119@qq.com> Date: Thu, 4 Jan 2018 11:55:56 +0800 Subject: [PATCH 022/163] path: fix path.normalize for relative paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After slicing, the `lastSegmentLength` should be calculated again, instead of assigning value `j`. PR-URL: https://github.com/nodejs/node/pull/17974 Fixes: https://github.com/nodejs/node/issues/17928 Reviewed-By: Michaël Zasso Reviewed-By: Gibson Fahnestock --- lib/path.js | 30 ++++++++++------------------ test/parallel/test-path-normalize.js | 24 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/lib/path.js b/lib/path.js index e9f76bce9973c5..eca4fcb9d21718 100644 --- a/lib/path.js +++ b/lib/path.js @@ -51,19 +51,14 @@ function normalizeStringWin32(path, allowAboveRoot) { res.charCodeAt(res.length - 1) !== 46/*.*/ || res.charCodeAt(res.length - 2) !== 46/*.*/) { if (res.length > 2) { - const start = res.length - 1; - var j = start; - for (; j >= 0; --j) { - if (res.charCodeAt(j) === 92/*\*/) - break; - } - if (j !== start) { - if (j === -1) { + const lastSlashIndex = res.lastIndexOf('\\'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { res = ''; lastSegmentLength = 0; } else { - res = res.slice(0, j); - lastSegmentLength = j; + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('\\'); } lastSlash = i; dots = 0; @@ -124,19 +119,14 @@ function normalizeStringPosix(path, allowAboveRoot) { res.charCodeAt(res.length - 1) !== 46/*.*/ || res.charCodeAt(res.length - 2) !== 46/*.*/) { if (res.length > 2) { - const start = res.length - 1; - var j = start; - for (; j >= 0; --j) { - if (res.charCodeAt(j) === 47/*/*/) - break; - } - if (j !== start) { - if (j === -1) { + const lastSlashIndex = res.lastIndexOf('/'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { res = ''; lastSegmentLength = 0; } else { - res = res.slice(0, j); - lastSegmentLength = j; + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); } lastSlash = i; dots = 0; diff --git a/test/parallel/test-path-normalize.js b/test/parallel/test-path-normalize.js index 0820052446367e..0dd1b8339f4c64 100644 --- a/test/parallel/test-path-normalize.js +++ b/test/parallel/test-path-normalize.js @@ -27,6 +27,18 @@ assert.strictEqual(path.win32.normalize('..\\foo..\\..\\..\\bar'), '..\\..\\bar'); assert.strictEqual(path.win32.normalize('..\\...\\..\\.\\...\\..\\..\\bar'), '..\\..\\bar'); +assert.strictEqual(path.win32.normalize('../../../foo/../../../bar'), + '..\\..\\..\\..\\..\\bar'); +assert.strictEqual(path.win32.normalize('../../../foo/../../../bar/../../'), + '..\\..\\..\\..\\..\\..\\'); +assert.strictEqual( + path.win32.normalize('../foobar/barfoo/foo/../../../bar/../../'), + '..\\..\\' +); +assert.strictEqual( + path.win32.normalize('../.../../foobar/../../../bar/../../baz'), + '..\\..\\..\\..\\baz' +); assert.strictEqual(path.posix.normalize('./fixtures///b/../b/c.js'), 'fixtures/b/c.js'); @@ -44,3 +56,15 @@ assert.strictEqual(path.posix.normalize('bar/foo..'), 'bar/foo..'); assert.strictEqual(path.posix.normalize('../foo../../../bar'), '../../bar'); assert.strictEqual(path.posix.normalize('../.../.././.../../../bar'), '../../bar'); +assert.strictEqual(path.posix.normalize('../../../foo/../../../bar'), + '../../../../../bar'); +assert.strictEqual(path.posix.normalize('../../../foo/../../../bar/../../'), + '../../../../../../'); +assert.strictEqual( + path.posix.normalize('../foobar/barfoo/foo/../../../bar/../../'), + '../../' +); +assert.strictEqual( + path.posix.normalize('../.../../foobar/../../../bar/../../baz'), + '../../../../baz' +); From 969c89bf553f30ea47359391eeb829aa3ac6c27d Mon Sep 17 00:00:00 2001 From: Yang Guo Date: Mon, 8 Jan 2018 16:31:07 +0100 Subject: [PATCH 023/163] build: fix Makefile wrt finding node executable Not all shells set PWD, so use CURDIR instead. `which node` may return the empty string, so guard against that too. Consider: if [ -x `which velociraptor` ] && [ -e `which velociprator` ];\ then echo "run"; else echo "keep calm"; fi; PR-URL: https://github.com/nodejs/node/pull/18040 Reviewed-By: Evan Lucas Reviewed-By: James M Snell Reviewed-By: Luigi Pinca Reviewed-By: Joyee Cheung --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 213284aa70cd15..3763c78e916bb0 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ COVTESTS ?= test-cov GTEST_FILTER ?= "*" GNUMAKEFLAGS += --no-print-directory GCOV ?= gcov +PWD = $(CURDIR) ifdef JOBS PARALLEL_ARGS = -j $(JOBS) @@ -640,7 +641,7 @@ out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets available-node = \ if [ -x $(PWD)/$(NODE) ] && [ -e $(PWD)/$(NODE) ]; then \ $(PWD)/$(NODE) $(1); \ - elif [ -x `which node` ] && [ -e `which node` ]; then \ + elif [ -x `which node` ] && [ -e `which node` ] && [ `which node` ]; then \ `which node` $(1); \ else \ echo "No available node, cannot run \"node $(1)\""; \ From 4bc4d004b1caf0ce0860efc0df20ab5366850169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Fri, 22 Dec 2017 16:53:42 +0100 Subject: [PATCH 024/163] tools: move eslint from tools to tools/node_modules This is required because we need to add the babel-eslint dependency and it has to be able to resolve "eslint". babel-eslint is required to support future ES features such as async iterators and import.meta. Refs: https://github.com/nodejs/node/pull/17755 PR-URL: https://github.com/nodejs/node/pull/17820 Reviewed-By: Matteo Collina Reviewed-By: Benjamin Gruenbaum --- .editorconfig | 2 +- .eslintignore | 2 +- .gitignore | 2 +- LICENSE | 2 +- Makefile | 6 +- doc/onboarding-extras.md | 78 +++++++++---------- test/doctool/test-doctool-html.js | 4 +- .../test-eslint-alphabetize-errors.js | 2 +- .../test-eslint-buffer-constructor.js | 2 +- test/parallel/test-eslint-crypto-check.js | 2 +- .../parallel/test-eslint-documented-errors.js | 2 +- test/parallel/test-eslint-inspector-check.js | 2 +- ...est-eslint-lowercase-name-for-primitive.js | 2 +- .../test-eslint-no-let-in-for-declaration.js | 2 +- .../test-eslint-no-unescaped-regexp-dot.js | 2 +- test/parallel/test-eslint-number-isnan.js | 2 +- .../test-eslint-prefer-assert-iferror.js | 2 +- .../test-eslint-prefer-assert-methods.js | 2 +- .../test-eslint-prefer-common-expectserror.js | 2 +- .../test-eslint-prefer-common-mustnotcall.js | 2 +- .../test-eslint-prefer-util-format-errors.js | 2 +- test/parallel/test-eslint-require-buffer.js | 2 +- test/parallel/test-eslint-required-modules.js | 2 +- tools/doc/node_modules/js-yaml/index.js | 1 + tools/license-builder.sh | 2 +- tools/lint-js.js | 4 +- tools/{ => node_modules}/eslint/LICENSE | 0 tools/{ => node_modules}/eslint/README.md | 0 tools/{ => node_modules}/eslint/bin/eslint.js | 0 .../eslint/conf/blank-script.json | 0 .../eslint/conf/category-list.json | 0 .../eslint/conf/config-schema.js | 0 .../eslint/conf/default-cli-options.js | 0 .../eslint/conf/default-config-options.js | 0 .../eslint/conf/environments.js | 0 .../eslint/conf/eslint-all.js | 0 .../eslint/conf/eslint-recommended.js | 0 .../eslint/conf/replacements.json | 0 tools/{ => node_modules}/eslint/lib/api.js | 0 .../eslint/lib/ast-utils.js | 0 .../eslint/lib/cli-engine.js | 0 tools/{ => node_modules}/eslint/lib/cli.js | 0 .../code-path-analysis/code-path-analyzer.js | 0 .../code-path-analysis/code-path-segment.js | 0 .../lib/code-path-analysis/code-path-state.js | 0 .../lib/code-path-analysis/code-path.js | 0 .../lib/code-path-analysis/debug-helpers.js | 0 .../lib/code-path-analysis/fork-context.js | 0 .../lib/code-path-analysis/id-generator.js | 0 tools/{ => node_modules}/eslint/lib/config.js | 0 .../eslint/lib/config/autoconfig.js | 0 .../eslint/lib/config/config-cache.js | 0 .../eslint/lib/config/config-file.js | 0 .../eslint/lib/config/config-initializer.js | 0 .../eslint/lib/config/config-ops.js | 0 .../eslint/lib/config/config-rule.js | 0 .../eslint/lib/config/config-validator.js | 0 .../eslint/lib/config/environments.js | 0 .../eslint/lib/config/plugins.js | 0 .../eslint/lib/file-finder.js | 0 .../eslint/lib/formatters/checkstyle.js | 0 .../eslint/lib/formatters/codeframe.js | 0 .../eslint/lib/formatters/compact.js | 0 .../lib/formatters/html-template-message.html | 0 .../lib/formatters/html-template-page.html | 0 .../lib/formatters/html-template-result.html | 0 .../eslint/lib/formatters/html.js | 0 .../eslint/lib/formatters/jslint-xml.js | 0 .../eslint/lib/formatters/json.js | 0 .../eslint/lib/formatters/junit.js | 0 .../eslint/lib/formatters/stylish.js | 0 .../eslint/lib/formatters/table.js | 0 .../eslint/lib/formatters/tap.js | 0 .../eslint/lib/formatters/unix.js | 0 .../eslint/lib/formatters/visualstudio.js | 0 .../eslint/lib/ignored-paths.js | 0 tools/{ => node_modules}/eslint/lib/linter.js | 0 .../eslint/lib/load-rules.js | 0 .../{ => node_modules}/eslint/lib/logging.js | 0 .../{ => node_modules}/eslint/lib/options.js | 0 .../eslint/lib/report-translator.js | 0 tools/{ => node_modules}/eslint/lib/rules.js | 0 .../eslint/lib/rules/.eslintrc.yml | 0 .../eslint/lib/rules/accessor-pairs.js | 0 .../eslint/lib/rules/array-bracket-newline.js | 0 .../eslint/lib/rules/array-bracket-spacing.js | 0 .../eslint/lib/rules/array-callback-return.js | 0 .../eslint/lib/rules/array-element-newline.js | 0 .../eslint/lib/rules/arrow-body-style.js | 0 .../eslint/lib/rules/arrow-parens.js | 0 .../eslint/lib/rules/arrow-spacing.js | 0 .../eslint/lib/rules/block-scoped-var.js | 0 .../eslint/lib/rules/block-spacing.js | 0 .../eslint/lib/rules/brace-style.js | 0 .../eslint/lib/rules/callback-return.js | 0 .../eslint/lib/rules/camelcase.js | 0 .../eslint/lib/rules/capitalized-comments.js | 0 .../lib/rules/class-methods-use-this.js | 0 .../eslint/lib/rules/comma-dangle.js | 0 .../eslint/lib/rules/comma-spacing.js | 0 .../eslint/lib/rules/comma-style.js | 0 .../eslint/lib/rules/complexity.js | 0 .../lib/rules/computed-property-spacing.js | 0 .../eslint/lib/rules/consistent-return.js | 0 .../eslint/lib/rules/consistent-this.js | 0 .../eslint/lib/rules/constructor-super.js | 0 .../eslint/lib/rules/curly.js | 0 .../eslint/lib/rules/default-case.js | 0 .../eslint/lib/rules/dot-location.js | 0 .../eslint/lib/rules/dot-notation.js | 0 .../eslint/lib/rules/eol-last.js | 0 .../eslint/lib/rules/eqeqeq.js | 0 .../eslint/lib/rules/for-direction.js | 0 .../eslint/lib/rules/func-call-spacing.js | 0 .../eslint/lib/rules/func-name-matching.js | 0 .../eslint/lib/rules/func-names.js | 0 .../eslint/lib/rules/func-style.js | 0 .../lib/rules/function-paren-newline.js | 0 .../lib/rules/generator-star-spacing.js | 0 .../eslint/lib/rules/getter-return.js | 0 .../eslint/lib/rules/global-require.js | 0 .../eslint/lib/rules/guard-for-in.js | 0 .../eslint/lib/rules/handle-callback-err.js | 0 .../eslint/lib/rules/id-blacklist.js | 0 .../eslint/lib/rules/id-length.js | 0 .../eslint/lib/rules/id-match.js | 0 .../lib/rules/implicit-arrow-linebreak.js | 0 .../eslint/lib/rules/indent-legacy.js | 0 .../eslint/lib/rules/indent.js | 0 .../eslint/lib/rules/init-declarations.js | 0 .../eslint/lib/rules/jsx-quotes.js | 0 .../eslint/lib/rules/key-spacing.js | 0 .../eslint/lib/rules/keyword-spacing.js | 0 .../eslint/lib/rules/line-comment-position.js | 0 .../eslint/lib/rules/linebreak-style.js | 0 .../eslint/lib/rules/lines-around-comment.js | 0 .../lib/rules/lines-around-directive.js | 0 .../lib/rules/lines-between-class-members.js | 0 .../eslint/lib/rules/max-depth.js | 0 .../eslint/lib/rules/max-len.js | 0 .../eslint/lib/rules/max-lines.js | 0 .../eslint/lib/rules/max-nested-callbacks.js | 0 .../eslint/lib/rules/max-params.js | 0 .../lib/rules/max-statements-per-line.js | 0 .../eslint/lib/rules/max-statements.js | 0 .../lib/rules/multiline-comment-style.js | 0 .../eslint/lib/rules/multiline-ternary.js | 0 .../eslint/lib/rules/new-cap.js | 0 .../eslint/lib/rules/new-parens.js | 0 .../eslint/lib/rules/newline-after-var.js | 0 .../eslint/lib/rules/newline-before-return.js | 0 .../lib/rules/newline-per-chained-call.js | 0 .../eslint/lib/rules/no-alert.js | 0 .../eslint/lib/rules/no-array-constructor.js | 0 .../eslint/lib/rules/no-await-in-loop.js | 0 .../eslint/lib/rules/no-bitwise.js | 0 .../eslint/lib/rules/no-buffer-constructor.js | 0 .../eslint/lib/rules/no-caller.js | 0 .../eslint/lib/rules/no-case-declarations.js | 0 .../eslint/lib/rules/no-catch-shadow.js | 0 .../eslint/lib/rules/no-class-assign.js | 0 .../eslint/lib/rules/no-compare-neg-zero.js | 0 .../eslint/lib/rules/no-cond-assign.js | 0 .../eslint/lib/rules/no-confusing-arrow.js | 0 .../eslint/lib/rules/no-console.js | 0 .../eslint/lib/rules/no-const-assign.js | 0 .../eslint/lib/rules/no-constant-condition.js | 0 .../eslint/lib/rules/no-continue.js | 0 .../eslint/lib/rules/no-control-regex.js | 0 .../eslint/lib/rules/no-debugger.js | 0 .../eslint/lib/rules/no-delete-var.js | 0 .../eslint/lib/rules/no-div-regex.js | 0 .../eslint/lib/rules/no-dupe-args.js | 0 .../eslint/lib/rules/no-dupe-class-members.js | 0 .../eslint/lib/rules/no-dupe-keys.js | 0 .../eslint/lib/rules/no-duplicate-case.js | 0 .../eslint/lib/rules/no-duplicate-imports.js | 0 .../eslint/lib/rules/no-else-return.js | 0 .../lib/rules/no-empty-character-class.js | 0 .../eslint/lib/rules/no-empty-function.js | 0 .../eslint/lib/rules/no-empty-pattern.js | 0 .../eslint/lib/rules/no-empty.js | 0 .../eslint/lib/rules/no-eq-null.js | 0 .../eslint/lib/rules/no-eval.js | 0 .../eslint/lib/rules/no-ex-assign.js | 0 .../eslint/lib/rules/no-extend-native.js | 0 .../eslint/lib/rules/no-extra-bind.js | 0 .../eslint/lib/rules/no-extra-boolean-cast.js | 0 .../eslint/lib/rules/no-extra-label.js | 0 .../eslint/lib/rules/no-extra-parens.js | 0 .../eslint/lib/rules/no-extra-semi.js | 0 .../eslint/lib/rules/no-fallthrough.js | 0 .../eslint/lib/rules/no-floating-decimal.js | 0 .../eslint/lib/rules/no-func-assign.js | 0 .../eslint/lib/rules/no-global-assign.js | 0 .../eslint/lib/rules/no-implicit-coercion.js | 0 .../eslint/lib/rules/no-implicit-globals.js | 0 .../eslint/lib/rules/no-implied-eval.js | 0 .../eslint/lib/rules/no-inline-comments.js | 0 .../eslint/lib/rules/no-inner-declarations.js | 0 .../eslint/lib/rules/no-invalid-regexp.js | 0 .../eslint/lib/rules/no-invalid-this.js | 0 .../lib/rules/no-irregular-whitespace.js | 0 .../eslint/lib/rules/no-iterator.js | 0 .../eslint/lib/rules/no-label-var.js | 0 .../eslint/lib/rules/no-labels.js | 0 .../eslint/lib/rules/no-lone-blocks.js | 0 .../eslint/lib/rules/no-lonely-if.js | 0 .../eslint/lib/rules/no-loop-func.js | 0 .../eslint/lib/rules/no-magic-numbers.js | 0 .../eslint/lib/rules/no-mixed-operators.js | 0 .../eslint/lib/rules/no-mixed-requires.js | 0 .../lib/rules/no-mixed-spaces-and-tabs.js | 0 .../eslint/lib/rules/no-multi-assign.js | 0 .../eslint/lib/rules/no-multi-spaces.js | 0 .../eslint/lib/rules/no-multi-str.js | 0 .../lib/rules/no-multiple-empty-lines.js | 0 .../eslint/lib/rules/no-native-reassign.js | 0 .../eslint/lib/rules/no-negated-condition.js | 0 .../eslint/lib/rules/no-negated-in-lhs.js | 0 .../eslint/lib/rules/no-nested-ternary.js | 0 .../eslint/lib/rules/no-new-func.js | 0 .../eslint/lib/rules/no-new-object.js | 0 .../eslint/lib/rules/no-new-require.js | 0 .../eslint/lib/rules/no-new-symbol.js | 0 .../eslint/lib/rules/no-new-wrappers.js | 0 .../eslint/lib/rules/no-new.js | 0 .../eslint/lib/rules/no-obj-calls.js | 0 .../eslint/lib/rules/no-octal-escape.js | 0 .../eslint/lib/rules/no-octal.js | 0 .../eslint/lib/rules/no-param-reassign.js | 0 .../eslint/lib/rules/no-path-concat.js | 0 .../eslint/lib/rules/no-plusplus.js | 0 .../eslint/lib/rules/no-process-env.js | 0 .../eslint/lib/rules/no-process-exit.js | 0 .../eslint/lib/rules/no-proto.js | 0 .../eslint/lib/rules/no-prototype-builtins.js | 0 .../eslint/lib/rules/no-redeclare.js | 0 .../eslint/lib/rules/no-regex-spaces.js | 0 .../eslint/lib/rules/no-restricted-globals.js | 0 .../eslint/lib/rules/no-restricted-imports.js | 0 .../eslint/lib/rules/no-restricted-modules.js | 0 .../lib/rules/no-restricted-properties.js | 0 .../eslint/lib/rules/no-restricted-syntax.js | 0 .../eslint/lib/rules/no-return-assign.js | 0 .../eslint/lib/rules/no-return-await.js | 0 .../eslint/lib/rules/no-script-url.js | 0 .../eslint/lib/rules/no-self-assign.js | 0 .../eslint/lib/rules/no-self-compare.js | 0 .../eslint/lib/rules/no-sequences.js | 0 .../lib/rules/no-shadow-restricted-names.js | 0 .../eslint/lib/rules/no-shadow.js | 0 .../eslint/lib/rules/no-spaced-func.js | 0 .../eslint/lib/rules/no-sparse-arrays.js | 0 .../eslint/lib/rules/no-sync.js | 0 .../eslint/lib/rules/no-tabs.js | 0 .../lib/rules/no-template-curly-in-string.js | 0 .../eslint/lib/rules/no-ternary.js | 0 .../eslint/lib/rules/no-this-before-super.js | 0 .../eslint/lib/rules/no-throw-literal.js | 0 .../eslint/lib/rules/no-trailing-spaces.js | 0 .../eslint/lib/rules/no-undef-init.js | 0 .../eslint/lib/rules/no-undef.js | 0 .../eslint/lib/rules/no-undefined.js | 0 .../eslint/lib/rules/no-underscore-dangle.js | 0 .../lib/rules/no-unexpected-multiline.js | 0 .../lib/rules/no-unmodified-loop-condition.js | 0 .../eslint/lib/rules/no-unneeded-ternary.js | 0 .../eslint/lib/rules/no-unreachable.js | 0 .../eslint/lib/rules/no-unsafe-finally.js | 0 .../eslint/lib/rules/no-unsafe-negation.js | 0 .../eslint/lib/rules/no-unused-expressions.js | 0 .../eslint/lib/rules/no-unused-labels.js | 0 .../eslint/lib/rules/no-unused-vars.js | 0 .../eslint/lib/rules/no-use-before-define.js | 0 .../eslint/lib/rules/no-useless-call.js | 0 .../lib/rules/no-useless-computed-key.js | 0 .../eslint/lib/rules/no-useless-concat.js | 0 .../lib/rules/no-useless-constructor.js | 0 .../eslint/lib/rules/no-useless-escape.js | 0 .../eslint/lib/rules/no-useless-rename.js | 0 .../eslint/lib/rules/no-useless-return.js | 0 .../eslint/lib/rules/no-var.js | 0 .../eslint/lib/rules/no-void.js | 0 .../eslint/lib/rules/no-warning-comments.js | 0 .../rules/no-whitespace-before-property.js | 0 .../eslint/lib/rules/no-with.js | 0 .../rules/nonblock-statement-body-position.js | 0 .../eslint/lib/rules/object-curly-newline.js | 0 .../eslint/lib/rules/object-curly-spacing.js | 0 .../lib/rules/object-property-newline.js | 0 .../eslint/lib/rules/object-shorthand.js | 0 .../lib/rules/one-var-declaration-per-line.js | 0 .../eslint/lib/rules/one-var.js | 0 .../eslint/lib/rules/operator-assignment.js | 0 .../eslint/lib/rules/operator-linebreak.js | 0 .../eslint/lib/rules/padded-blocks.js | 0 .../rules/padding-line-between-statements.js | 0 .../eslint/lib/rules/prefer-arrow-callback.js | 0 .../eslint/lib/rules/prefer-const.js | 0 .../eslint/lib/rules/prefer-destructuring.js | 0 .../lib/rules/prefer-numeric-literals.js | 0 .../lib/rules/prefer-promise-reject-errors.js | 0 .../eslint/lib/rules/prefer-reflect.js | 0 .../eslint/lib/rules/prefer-rest-params.js | 0 .../eslint/lib/rules/prefer-spread.js | 0 .../eslint/lib/rules/prefer-template.js | 0 .../eslint/lib/rules/quote-props.js | 0 .../eslint/lib/rules/quotes.js | 0 .../eslint/lib/rules/radix.js | 0 .../eslint/lib/rules/require-await.js | 0 .../eslint/lib/rules/require-jsdoc.js | 0 .../eslint/lib/rules/require-yield.js | 0 .../eslint/lib/rules/rest-spread-spacing.js | 0 .../eslint/lib/rules/semi-spacing.js | 0 .../eslint/lib/rules/semi-style.js | 0 .../eslint/lib/rules/semi.js | 0 .../eslint/lib/rules/sort-imports.js | 0 .../eslint/lib/rules/sort-keys.js | 0 .../eslint/lib/rules/sort-vars.js | 0 .../eslint/lib/rules/space-before-blocks.js | 0 .../lib/rules/space-before-function-paren.js | 0 .../eslint/lib/rules/space-in-parens.js | 0 .../eslint/lib/rules/space-infix-ops.js | 0 .../eslint/lib/rules/space-unary-ops.js | 0 .../eslint/lib/rules/spaced-comment.js | 0 .../eslint/lib/rules/strict.js | 0 .../eslint/lib/rules/switch-colon-spacing.js | 0 .../eslint/lib/rules/symbol-description.js | 0 .../lib/rules/template-curly-spacing.js | 0 .../eslint/lib/rules/template-tag-spacing.js | 0 .../eslint/lib/rules/unicode-bom.js | 0 .../eslint/lib/rules/use-isnan.js | 0 .../eslint/lib/rules/valid-jsdoc.js | 0 .../eslint/lib/rules/valid-typeof.js | 0 .../eslint/lib/rules/vars-on-top.js | 0 .../eslint/lib/rules/wrap-iife.js | 0 .../eslint/lib/rules/wrap-regex.js | 0 .../eslint/lib/rules/yield-star-spacing.js | 0 .../eslint/lib/rules/yoda.js | 0 .../eslint/lib/testers/rule-tester.js | 0 tools/{ => node_modules}/eslint/lib/timing.js | 0 .../backward-token-comment-cursor.js | 0 .../lib/token-store/backward-token-cursor.js | 0 .../eslint/lib/token-store/cursor.js | 0 .../eslint/lib/token-store/cursors.js | 0 .../lib/token-store/decorative-cursor.js | 0 .../eslint/lib/token-store/filter-cursor.js | 0 .../forward-token-comment-cursor.js | 0 .../lib/token-store/forward-token-cursor.js | 0 .../eslint/lib/token-store/index.js | 0 .../eslint/lib/token-store/limit-cursor.js | 0 .../lib/token-store/padded-token-cursor.js | 0 .../eslint/lib/token-store/skip-cursor.js | 0 .../eslint/lib/token-store/utils.js | 0 .../{ => node_modules}/eslint/lib/util/ajv.js | 0 .../lib/util/apply-disable-directives.js | 0 .../eslint/lib/util/fix-tracker.js | 0 .../eslint/lib/util/glob-util.js | 0 .../eslint/lib/util/glob.js | 0 .../eslint/lib/util/hash.js | 0 .../eslint/lib/util/keywords.js | 0 .../eslint/lib/util/module-resolver.js | 0 .../eslint/lib/util/naming.js | 0 .../eslint/lib/util/node-event-generator.js | 0 .../eslint/lib/util/npm-util.js | 0 .../eslint/lib/util/path-util.js | 0 .../eslint/lib/util/patterns/letters.js | 0 .../eslint/lib/util/rule-fixer.js | 0 .../eslint/lib/util/safe-emitter.js | 0 .../eslint/lib/util/source-code-fixer.js | 0 .../eslint/lib/util/source-code-util.js | 0 .../eslint/lib/util/source-code.js | 0 .../eslint/lib/util/traverser.js | 0 .../eslint/lib/util/xml-escape.js | 0 .../eslint/messages/extend-config-missing.txt | 0 .../eslint/messages/no-config-found.txt | 0 .../eslint/messages/plugin-missing.txt | 0 .../eslint/messages/whitespace-found.txt | 0 .../eslint/node_modules/acorn-jsx/LICENSE | 0 .../eslint/node_modules/acorn-jsx/README.md | 0 .../eslint/node_modules/acorn-jsx/index.js | 0 .../eslint/node_modules/acorn-jsx/inject.js | 0 .../node_modules/acorn/.tern-project | 0 .../acorn-jsx/node_modules/acorn/AUTHORS | 0 .../acorn-jsx/node_modules/acorn/LICENSE | 0 .../acorn-jsx/node_modules/acorn/README.md | 0 .../acorn-jsx/node_modules/acorn/bin/acorn | 0 .../acorn/bin/generate-identifier-regex.js | 0 .../node_modules/acorn/bin/update_authors.sh | 0 .../acorn-jsx/node_modules/acorn/dist/.keep | 0 .../node_modules/acorn/dist/acorn.es.js | 0 .../node_modules/acorn/dist/acorn.js | 0 .../node_modules/acorn/dist/acorn_loose.es.js | 0 .../node_modules/acorn/dist/acorn_loose.js | 0 .../node_modules/acorn/dist/walk.es.js | 0 .../acorn-jsx/node_modules/acorn/dist/walk.js | 0 .../acorn-jsx/node_modules/acorn/package.json | 0 .../node_modules/acorn/rollup/config.bin.js | 0 .../node_modules/acorn/rollup/config.loose.js | 0 .../node_modules/acorn/rollup/config.main.js | 0 .../node_modules/acorn/rollup/config.walk.js | 0 .../node_modules/acorn/src/bin/acorn.js | 0 .../node_modules/acorn/src/expression.js | 0 .../node_modules/acorn/src/identifier.js | 0 .../acorn-jsx/node_modules/acorn/src/index.js | 0 .../node_modules/acorn/src/location.js | 0 .../node_modules/acorn/src/locutil.js | 0 .../acorn/src/loose/expression.js | 0 .../node_modules/acorn/src/loose/index.js | 0 .../node_modules/acorn/src/loose/parseutil.js | 0 .../node_modules/acorn/src/loose/state.js | 0 .../node_modules/acorn/src/loose/statement.js | 0 .../node_modules/acorn/src/loose/tokenize.js | 0 .../acorn-jsx/node_modules/acorn/src/lval.js | 0 .../acorn-jsx/node_modules/acorn/src/node.js | 0 .../node_modules/acorn/src/options.js | 0 .../node_modules/acorn/src/parseutil.js | 0 .../acorn-jsx/node_modules/acorn/src/state.js | 0 .../node_modules/acorn/src/statement.js | 0 .../node_modules/acorn/src/tokencontext.js | 0 .../node_modules/acorn/src/tokenize.js | 0 .../node_modules/acorn/src/tokentype.js | 0 .../acorn-jsx/node_modules/acorn/src/util.js | 0 .../node_modules/acorn/src/walk/index.js | 0 .../node_modules/acorn/src/whitespace.js | 0 .../node_modules/acorn-jsx/package.json | 0 .../eslint/node_modules/acorn-jsx/xhtml.js | 0 .../eslint/node_modules/acorn/AUTHORS | 0 .../eslint/node_modules/acorn/LICENSE | 0 .../eslint/node_modules/acorn/README.md | 0 .../eslint/node_modules/acorn/bin/acorn | 0 .../eslint/node_modules/acorn/dist/.keep | 0 .../node_modules/acorn/dist/acorn.es.js | 0 .../eslint/node_modules/acorn/dist/acorn.js | 0 .../node_modules/acorn/dist/acorn_loose.es.js | 0 .../node_modules/acorn/dist/acorn_loose.js | 0 .../eslint/node_modules/acorn/dist/walk.es.js | 0 .../eslint/node_modules/acorn/dist/walk.js | 0 .../eslint/node_modules/acorn/package.json | 0 .../eslint/node_modules/ajv-keywords/LICENSE | 0 .../node_modules/ajv-keywords/README.md | 0 .../eslint/node_modules/ajv-keywords/index.js | 0 .../ajv-keywords/keywords/_formatLimit.js | 0 .../ajv-keywords/keywords/_util.js | 0 .../ajv-keywords/keywords/deepProperties.js | 0 .../ajv-keywords/keywords/deepRequired.js | 0 .../keywords/dot/_formatLimit.jst | 0 .../keywords/dot/patternRequired.jst | 0 .../ajv-keywords/keywords/dot/switch.jst | 0 .../ajv-keywords/keywords/dotjs/README.md | 0 .../keywords/dotjs/_formatLimit.js | 0 .../keywords/dotjs/patternRequired.js | 0 .../ajv-keywords/keywords/dotjs/switch.js | 0 .../ajv-keywords/keywords/dynamicDefaults.js | 0 .../ajv-keywords/keywords/formatMaximum.js | 0 .../ajv-keywords/keywords/formatMinimum.js | 0 .../node_modules/ajv-keywords/keywords/if.js | 0 .../ajv-keywords/keywords/index.js | 0 .../ajv-keywords/keywords/instanceof.js | 0 .../ajv-keywords/keywords/patternRequired.js | 0 .../ajv-keywords/keywords/prohibited.js | 0 .../ajv-keywords/keywords/range.js | 0 .../ajv-keywords/keywords/regexp.js | 0 .../ajv-keywords/keywords/select.js | 0 .../ajv-keywords/keywords/switch.js | 0 .../ajv-keywords/keywords/typeof.js | 0 .../keywords/uniqueItemProperties.js | 0 .../node_modules/ajv-keywords/package.json | 0 .../eslint/node_modules/ajv/.tonic_example.js | 0 .../eslint/node_modules/ajv/LICENSE | 0 .../eslint/node_modules/ajv/README.md | 0 .../node_modules/ajv/dist/ajv.bundle.js | 0 .../eslint/node_modules/ajv/dist/ajv.min.js | 0 .../node_modules/ajv/dist/ajv.min.js.map | 0 .../node_modules/ajv/dist/nodent.min.js | 0 .../node_modules/ajv/dist/regenerator.min.js | 0 .../eslint/node_modules/ajv/lib/$data.js | 0 .../eslint/node_modules/ajv/lib/ajv.d.ts | 0 .../eslint/node_modules/ajv/lib/ajv.js | 0 .../eslint/node_modules/ajv/lib/cache.js | 0 .../node_modules/ajv/lib/compile/_rules.js | 0 .../node_modules/ajv/lib/compile/async.js | 0 .../node_modules/ajv/lib/compile/equal.js | 0 .../ajv/lib/compile/error_classes.js | 0 .../node_modules/ajv/lib/compile/formats.js | 0 .../node_modules/ajv/lib/compile/index.js | 0 .../node_modules/ajv/lib/compile/resolve.js | 0 .../node_modules/ajv/lib/compile/rules.js | 0 .../ajv/lib/compile/schema_obj.js | 0 .../ajv/lib/compile/ucs2length.js | 0 .../node_modules/ajv/lib/compile/util.js | 0 .../node_modules/ajv/lib/dot/_limit.jst | 0 .../node_modules/ajv/lib/dot/_limitItems.jst | 0 .../node_modules/ajv/lib/dot/_limitLength.jst | 0 .../ajv/lib/dot/_limitProperties.jst | 0 .../eslint/node_modules/ajv/lib/dot/allOf.jst | 0 .../eslint/node_modules/ajv/lib/dot/anyOf.jst | 0 .../node_modules/ajv/lib/dot/coerce.def | 0 .../eslint/node_modules/ajv/lib/dot/const.jst | 0 .../node_modules/ajv/lib/dot/contains.jst | 0 .../node_modules/ajv/lib/dot/custom.jst | 0 .../node_modules/ajv/lib/dot/defaults.def | 0 .../node_modules/ajv/lib/dot/definitions.def | 0 .../node_modules/ajv/lib/dot/dependencies.jst | 0 .../eslint/node_modules/ajv/lib/dot/enum.jst | 0 .../node_modules/ajv/lib/dot/errors.def | 0 .../node_modules/ajv/lib/dot/format.jst | 0 .../eslint/node_modules/ajv/lib/dot/items.jst | 0 .../node_modules/ajv/lib/dot/missing.def | 0 .../node_modules/ajv/lib/dot/multipleOf.jst | 0 .../eslint/node_modules/ajv/lib/dot/not.jst | 0 .../eslint/node_modules/ajv/lib/dot/oneOf.jst | 0 .../node_modules/ajv/lib/dot/pattern.jst | 0 .../node_modules/ajv/lib/dot/properties.jst | 0 .../ajv/lib/dot/propertyNames.jst | 0 .../eslint/node_modules/ajv/lib/dot/ref.jst | 0 .../node_modules/ajv/lib/dot/required.jst | 0 .../node_modules/ajv/lib/dot/uniqueItems.jst | 0 .../node_modules/ajv/lib/dot/validate.jst | 0 .../node_modules/ajv/lib/dotjs/README.md | 0 .../node_modules/ajv/lib/dotjs/_limit.js | 0 .../node_modules/ajv/lib/dotjs/_limitItems.js | 0 .../ajv/lib/dotjs/_limitLength.js | 0 .../ajv/lib/dotjs/_limitProperties.js | 0 .../node_modules/ajv/lib/dotjs/allOf.js | 0 .../node_modules/ajv/lib/dotjs/anyOf.js | 0 .../node_modules/ajv/lib/dotjs/const.js | 0 .../node_modules/ajv/lib/dotjs/contains.js | 0 .../node_modules/ajv/lib/dotjs/custom.js | 0 .../ajv/lib/dotjs/dependencies.js | 0 .../eslint/node_modules/ajv/lib/dotjs/enum.js | 0 .../node_modules/ajv/lib/dotjs/format.js | 0 .../node_modules/ajv/lib/dotjs/items.js | 0 .../node_modules/ajv/lib/dotjs/multipleOf.js | 0 .../eslint/node_modules/ajv/lib/dotjs/not.js | 0 .../node_modules/ajv/lib/dotjs/oneOf.js | 0 .../node_modules/ajv/lib/dotjs/pattern.js | 0 .../node_modules/ajv/lib/dotjs/properties.js | 0 .../ajv/lib/dotjs/propertyNames.js | 0 .../eslint/node_modules/ajv/lib/dotjs/ref.js | 0 .../node_modules/ajv/lib/dotjs/required.js | 0 .../node_modules/ajv/lib/dotjs/uniqueItems.js | 0 .../node_modules/ajv/lib/dotjs/validate.js | 0 .../eslint/node_modules/ajv/lib/keyword.js | 0 .../node_modules/ajv/lib/patternGroups.js | 0 .../node_modules/ajv/lib/refs/$data.json | 0 .../ajv/lib/refs/json-schema-draft-04.json | 0 .../ajv/lib/refs/json-schema-draft-06.json | 0 .../ajv/lib/refs/json-schema-v5.json | 0 .../eslint/node_modules/ajv/package.json | 0 .../node_modules/ajv/scripts/.eslintrc.yml | 0 .../eslint/node_modules/ajv/scripts/bundle.js | 0 .../node_modules/ajv/scripts/compile-dots.js | 0 .../eslint/node_modules/ajv/scripts/info | 0 .../node_modules/ajv/scripts/prepare-tests | 0 .../node_modules/ajv/scripts/travis-gh-pages | 0 .../eslint/node_modules/ansi-escapes/index.js | 0 .../eslint/node_modules/ansi-escapes/license | 0 .../node_modules/ansi-escapes/package.json | 0 .../node_modules/ansi-escapes/readme.md | 0 .../eslint/node_modules/ansi-regex/index.js | 0 .../eslint/node_modules/ansi-regex/license | 0 .../node_modules/ansi-regex/package.json | 0 .../eslint/node_modules/ansi-regex/readme.md | 0 .../eslint/node_modules/ansi-styles/index.js | 0 .../eslint/node_modules/ansi-styles/license | 0 .../node_modules/ansi-styles/package.json | 0 .../eslint/node_modules/ansi-styles/readme.md | 0 .../eslint/node_modules/argparse/LICENSE | 0 .../eslint/node_modules/argparse/README.md | 0 .../eslint/node_modules/argparse/index.js | 0 .../node_modules/argparse/lib/action.js | 0 .../argparse/lib/action/append.js | 0 .../argparse/lib/action/append/constant.js | 0 .../node_modules/argparse/lib/action/count.js | 0 .../node_modules/argparse/lib/action/help.js | 0 .../node_modules/argparse/lib/action/store.js | 0 .../argparse/lib/action/store/constant.js | 0 .../argparse/lib/action/store/false.js | 0 .../argparse/lib/action/store/true.js | 0 .../argparse/lib/action/subparsers.js | 0 .../argparse/lib/action/version.js | 0 .../argparse/lib/action_container.js | 0 .../node_modules/argparse/lib/argparse.js | 0 .../argparse/lib/argument/error.js | 0 .../argparse/lib/argument/exclusive.js | 0 .../argparse/lib/argument/group.js | 0 .../argparse/lib/argument_parser.js | 0 .../eslint/node_modules/argparse/lib/const.js | 0 .../argparse/lib/help/added_formatters.js | 0 .../argparse/lib/help/formatter.js | 0 .../node_modules/argparse/lib/namespace.js | 0 .../eslint/node_modules/argparse/lib/utils.js | 0 .../eslint/node_modules/argparse/package.json | 0 .../eslint/node_modules/array-union/index.js | 0 .../eslint/node_modules/array-union/license | 0 .../node_modules/array-union/package.json | 0 .../eslint/node_modules/array-union/readme.md | 0 .../eslint/node_modules/array-uniq/index.js | 0 .../eslint/node_modules/array-uniq/license | 0 .../node_modules/array-uniq/package.json | 0 .../eslint/node_modules/array-uniq/readme.md | 0 .../eslint/node_modules/arrify/index.js | 0 .../eslint/node_modules/arrify/license | 0 .../eslint/node_modules/arrify/package.json | 0 .../eslint/node_modules/arrify/readme.md | 0 .../node_modules/babel-code-frame/README.md | 0 .../babel-code-frame/lib/index.js | 0 .../node_modules/chalk/index.js | 0 .../node_modules/chalk/license | 0 .../node_modules/chalk/package.json | 0 .../node_modules/chalk/readme.md | 0 .../node_modules/strip-ansi/index.js | 0 .../node_modules/strip-ansi/license | 0 .../node_modules/strip-ansi/package.json | 0 .../node_modules/strip-ansi/readme.md | 0 .../babel-code-frame/package-lock.json | 0 .../babel-code-frame/package.json | 0 .../eslint/node_modules/bail/LICENSE | 0 .../eslint/node_modules/bail/index.js | 0 .../eslint/node_modules/bail/package.json | 0 .../eslint/node_modules/bail/readme.md | 0 .../node_modules/balanced-match/LICENSE.md | 0 .../node_modules/balanced-match/README.md | 0 .../node_modules/balanced-match/index.js | 0 .../node_modules/balanced-match/package.json | 0 .../node_modules/brace-expansion/README.md | 0 .../node_modules/brace-expansion/index.js | 0 .../node_modules/brace-expansion/package.json | 0 .../eslint/node_modules/caller-path/index.js | 0 .../node_modules/caller-path/package.json | 0 .../eslint/node_modules/caller-path/readme.md | 0 .../eslint/node_modules/callsites/index.js | 0 .../node_modules/callsites/package.json | 0 .../eslint/node_modules/callsites/readme.md | 0 .../eslint/node_modules/chalk/index.js | 0 .../eslint/node_modules/chalk/license | 0 .../chalk/node_modules/ansi-styles/index.js | 0 .../chalk/node_modules/ansi-styles/license | 0 .../node_modules/ansi-styles/package.json | 0 .../chalk/node_modules/ansi-styles/readme.md | 0 .../node_modules/supports-color/browser.js | 0 .../node_modules/supports-color/index.js | 0 .../chalk/node_modules/supports-color/license | 0 .../node_modules/supports-color/package.json | 0 .../node_modules/supports-color/readme.md | 0 .../eslint/node_modules/chalk/package.json | 0 .../eslint/node_modules/chalk/readme.md | 0 .../eslint/node_modules/chalk/templates.js | 0 .../node_modules/chalk/types/index.d.ts | 0 .../character-entities-legacy/LICENSE | 0 .../character-entities-legacy/index.json | 0 .../character-entities-legacy/package.json | 0 .../character-entities-legacy/readme.md | 0 .../node_modules/character-entities/LICENSE | 0 .../character-entities/index.json | 0 .../character-entities/package.json | 0 .../node_modules/character-entities/readme.md | 0 .../character-reference-invalid/LICENSE | 0 .../character-reference-invalid/index.json | 0 .../character-reference-invalid/package.json | 0 .../character-reference-invalid/readme.md | 0 .../eslint/node_modules/chardet/LICENSE | 0 .../eslint/node_modules/chardet/README.md | 0 .../node_modules/chardet/encoding/iso2022.js | 0 .../node_modules/chardet/encoding/mbcs.js | 0 .../node_modules/chardet/encoding/sbcs.js | 0 .../node_modules/chardet/encoding/unicode.js | 0 .../node_modules/chardet/encoding/utf8.js | 0 .../eslint/node_modules/chardet/index.js | 0 .../eslint/node_modules/chardet/match.js | 0 .../eslint/node_modules/chardet/package.json | 0 .../node_modules/chardet/scripts/release | 0 .../eslint/node_modules/chardet/yarn.lock | 0 .../node_modules/circular-json/LICENSE.txt | 0 .../node_modules/circular-json/README.md | 0 .../circular-json/build/circular-json.js | 0 .../circular-json/build/circular-json.max.js | 0 .../circular-json/build/circular-json.node.js | 0 .../node_modules/circular-json/package.json | 0 .../circular-json/template/license.after | 0 .../circular-json/template/license.before | 0 .../eslint/node_modules/cli-cursor/index.js | 0 .../eslint/node_modules/cli-cursor/license | 0 .../node_modules/cli-cursor/package.json | 0 .../eslint/node_modules/cli-cursor/readme.md | 0 .../eslint/node_modules/cli-width/LICENSE | 0 .../eslint/node_modules/cli-width/README.md | 0 .../eslint/node_modules/cli-width/index.js | 0 .../node_modules/cli-width/package.json | 0 .../eslint/node_modules/co/LICENSE | 0 .../eslint/node_modules/co/Readme.md | 0 .../eslint/node_modules/co/index.js | 0 .../eslint/node_modules/co/package.json | 0 .../node_modules/collapse-white-space/LICENSE | 0 .../collapse-white-space/index.js | 0 .../collapse-white-space/package.json | 0 .../collapse-white-space/readme.md | 0 .../eslint/node_modules/color-convert/LICENSE | 0 .../node_modules/color-convert/README.md | 0 .../node_modules/color-convert/conversions.js | 0 .../node_modules/color-convert/index.js | 0 .../node_modules/color-convert/package.json | 0 .../node_modules/color-convert/route.js | 0 .../node_modules/color-name/.eslintrc.json | 0 .../eslint/node_modules/color-name/LICENSE | 0 .../eslint/node_modules/color-name/README.md | 0 .../eslint/node_modules/color-name/index.js | 0 .../node_modules/color-name/package.json | 0 .../eslint/node_modules/concat-map/LICENSE | 0 .../node_modules/concat-map/README.markdown | 0 .../eslint/node_modules/concat-map/index.js | 0 .../node_modules/concat-map/package.json | 0 .../eslint/node_modules/concat-stream/LICENSE | 0 .../node_modules/concat-stream/index.js | 0 .../node_modules/concat-stream/package.json | 0 .../node_modules/concat-stream/readme.md | 0 .../eslint/node_modules/core-util-is/LICENSE | 0 .../node_modules/core-util-is/README.md | 0 .../node_modules/core-util-is/float.patch | 0 .../node_modules/core-util-is/lib/util.js | 0 .../node_modules/core-util-is/package.json | 0 .../eslint/node_modules/cross-spawn/LICENSE | 0 .../eslint/node_modules/cross-spawn/README.md | 0 .../eslint/node_modules/cross-spawn/index.js | 0 .../node_modules/cross-spawn/lib/enoent.js | 0 .../node_modules/cross-spawn/lib/parse.js | 0 .../cross-spawn/lib/util/escapeArgument.js | 0 .../cross-spawn/lib/util/escapeCommand.js | 0 .../lib/util/hasEmptyArgumentBug.js | 0 .../cross-spawn/lib/util/readShebang.js | 0 .../cross-spawn/lib/util/resolveCommand.js | 0 .../node_modules/cross-spawn/package.json | 0 .../eslint/node_modules/debug/.coveralls.yml | 0 .../eslint/node_modules/debug/LICENSE | 0 .../eslint/node_modules/debug/Makefile | 0 .../eslint/node_modules/debug/Readme.md | 0 .../eslint/node_modules/debug/karma.conf.js | 0 .../eslint/node_modules/debug/node.js | 0 .../eslint/node_modules/debug/package.json | 0 .../eslint/node_modules/debug/src/browser.js | 0 .../eslint/node_modules/debug/src/debug.js | 0 .../eslint/node_modules/debug/src/index.js | 0 .../eslint/node_modules/debug/src/node.js | 0 .../eslint/node_modules/deep-is/LICENSE | 0 .../node_modules/deep-is/README.markdown | 0 .../eslint/node_modules/deep-is/index.js | 0 .../eslint/node_modules/deep-is/package.json | 0 .../eslint/node_modules/del/index.js | 0 .../eslint/node_modules/del/license | 0 .../eslint/node_modules/del/package.json | 0 .../eslint/node_modules/del/readme.md | 0 .../eslint/node_modules/doctrine/LICENSE | 0 .../doctrine/LICENSE.closure-compiler | 0 .../node_modules/doctrine/LICENSE.esprima | 0 .../eslint/node_modules/doctrine/README.md | 0 .../node_modules/doctrine/lib/doctrine.js | 0 .../eslint/node_modules/doctrine/lib/typed.js | 0 .../node_modules/doctrine/lib/utility.js | 0 .../eslint/node_modules/doctrine/package.json | 0 .../escape-string-regexp/index.js | 0 .../node_modules/escape-string-regexp/license | 0 .../escape-string-regexp/package.json | 0 .../escape-string-regexp/readme.md | 0 .../eslint-plugin-markdown/LICENSE | 0 .../eslint-plugin-markdown/README.md | 0 .../eslint-plugin-markdown/index.js | 0 .../eslint-plugin-markdown/lib/index.js | 0 .../eslint-plugin-markdown/lib/processor.js | 0 .../eslint-plugin-markdown/package.json | 0 .../eslint/node_modules/eslint-scope/LICENSE | 0 .../node_modules/eslint-scope/README.md | 0 .../eslint-scope/lib/definition.js | 0 .../node_modules/eslint-scope/lib/index.js | 0 .../eslint-scope/lib/pattern-visitor.js | 0 .../eslint-scope/lib/reference.js | 0 .../eslint-scope/lib/referencer.js | 0 .../eslint-scope/lib/scope-manager.js | 0 .../node_modules/eslint-scope/lib/scope.js | 0 .../node_modules/eslint-scope/lib/variable.js | 0 .../node_modules/eslint-scope/package.json | 0 .../eslint/node_modules/espree/LICENSE | 0 .../eslint/node_modules/espree/README.md | 0 .../eslint/node_modules/espree/espree.js | 0 .../node_modules/espree/lib/ast-node-types.js | 0 .../espree/lib/comment-attachment.js | 0 .../node_modules/espree/lib/features.js | 0 .../espree/lib/token-translator.js | 0 .../node_modules/espree/lib/visitor-keys.js | 0 .../eslint/node_modules/espree/package.json | 0 .../eslint/node_modules/esprima/LICENSE.BSD | 0 .../eslint/node_modules/esprima/README.md | 0 .../node_modules/esprima/bin/esparse.js | 0 .../node_modules/esprima/bin/esvalidate.js | 0 .../node_modules/esprima/dist/esprima.js | 0 .../eslint/node_modules/esprima/package.json | 0 .../eslint/node_modules/esquery/README.md | 0 .../eslint/node_modules/esquery/esquery.js | 0 .../eslint/node_modules/esquery/license.txt | 0 .../eslint/node_modules/esquery/package.json | 0 .../eslint/node_modules/esquery/parser.js | 0 .../eslint/node_modules/esrecurse/.babelrc | 0 .../eslint/node_modules/esrecurse/README.md | 0 .../node_modules/esrecurse/esrecurse.js | 0 .../node_modules/esrecurse/package-lock.json | 0 .../node_modules/esrecurse/package.json | 0 .../eslint/node_modules/estraverse/.babelrc | 0 .../node_modules/estraverse/LICENSE.BSD | 0 .../node_modules/estraverse/estraverse.js | 0 .../node_modules/estraverse/package.json | 0 .../eslint/node_modules/esutils/LICENSE.BSD | 0 .../eslint/node_modules/esutils/README.md | 0 .../eslint/node_modules/esutils/lib/ast.js | 0 .../eslint/node_modules/esutils/lib/code.js | 0 .../node_modules/esutils/lib/keyword.js | 0 .../eslint/node_modules/esutils/lib/utils.js | 0 .../eslint/node_modules/esutils/package.json | 0 .../eslint/node_modules/extend/LICENSE | 0 .../eslint/node_modules/extend/README.md | 0 .../eslint/node_modules/extend/index.js | 0 .../eslint/node_modules/extend/package.json | 0 .../node_modules/external-editor/LICENSE | 0 .../node_modules/external-editor/README.md | 0 .../external-editor/example_async.js | 0 .../external-editor/example_sync.js | 0 .../main/errors/CreateFileError.js | 0 .../main/errors/LaunchEditorError.js | 0 .../main/errors/ReadFileError.js | 0 .../main/errors/RemoveFileError.js | 0 .../external-editor/main/index.js | 0 .../node_modules/external-editor/package.json | 0 .../fast-deep-equal/.eslintrc.yml | 0 .../node_modules/fast-deep-equal/LICENSE | 0 .../node_modules/fast-deep-equal/README.md | 0 .../node_modules/fast-deep-equal/index.js | 0 .../node_modules/fast-deep-equal/package.json | 0 .../fast-json-stable-stringify/.eslintrc.yml | 0 .../fast-json-stable-stringify/LICENSE | 0 .../fast-json-stable-stringify/README.md | 0 .../fast-json-stable-stringify/index.js | 0 .../fast-json-stable-stringify/package.json | 0 .../node_modules/fast-levenshtein/LICENSE.md | 0 .../node_modules/fast-levenshtein/README.md | 0 .../fast-levenshtein/levenshtein.js | 0 .../fast-levenshtein/package.json | 0 .../eslint/node_modules/figures/index.js | 0 .../eslint/node_modules/figures/license | 0 .../eslint/node_modules/figures/package.json | 0 .../eslint/node_modules/figures/readme.md | 0 .../node_modules/file-entry-cache/LICENSE | 0 .../node_modules/file-entry-cache/README.md | 0 .../node_modules/file-entry-cache/cache.js | 0 .../file-entry-cache/changelog.md | 0 .../file-entry-cache/package.json | 0 .../eslint/node_modules/flat-cache/LICENSE | 0 .../eslint/node_modules/flat-cache/README.md | 0 .../eslint/node_modules/flat-cache/cache.js | 0 .../node_modules/flat-cache/changelog.md | 0 .../node_modules/flat-cache/package.json | 0 .../eslint/node_modules/flat-cache/utils.js | 0 .../eslint/node_modules/fs.realpath/LICENSE | 0 .../eslint/node_modules/fs.realpath/README.md | 0 .../eslint/node_modules/fs.realpath/index.js | 0 .../eslint/node_modules/fs.realpath/old.js | 0 .../node_modules/fs.realpath/package.json | 0 .../eslint/node_modules/function-bind/LICENSE | 0 .../node_modules/function-bind/README.md | 0 .../function-bind/implementation.js | 0 .../node_modules/function-bind/index.js | 0 .../node_modules/function-bind/package.json | 0 .../functional-red-black-tree/LICENSE | 0 .../functional-red-black-tree/README.md | 0 .../functional-red-black-tree/bench/test.js | 0 .../functional-red-black-tree/package.json | 0 .../functional-red-black-tree/rbtree.js | 0 .../eslint/node_modules/glob/LICENSE | 0 .../eslint/node_modules/glob/README.md | 0 .../eslint/node_modules/glob/changelog.md | 0 .../eslint/node_modules/glob/common.js | 0 .../eslint/node_modules/glob/glob.js | 0 .../eslint/node_modules/glob/package.json | 0 .../eslint/node_modules/glob/sync.js | 0 .../eslint/node_modules/globals/globals.json | 0 .../eslint/node_modules/globals/index.js | 0 .../eslint/node_modules/globals/license | 0 .../eslint/node_modules/globals/package.json | 0 .../eslint/node_modules/globals/readme.md | 0 .../eslint/node_modules/globby/index.js | 0 .../eslint/node_modules/globby/license | 0 .../eslint/node_modules/globby/package.json | 0 .../eslint/node_modules/globby/readme.md | 0 .../eslint/node_modules/graceful-fs/LICENSE | 0 .../eslint/node_modules/graceful-fs/README.md | 0 .../eslint/node_modules/graceful-fs/fs.js | 0 .../node_modules/graceful-fs/graceful-fs.js | 0 .../graceful-fs/legacy-streams.js | 0 .../node_modules/graceful-fs/package.json | 0 .../node_modules/graceful-fs/polyfills.js | 0 .../eslint/node_modules/has-ansi/index.js | 0 .../eslint/node_modules/has-ansi/license | 0 .../eslint/node_modules/has-ansi/package.json | 0 .../eslint/node_modules/has-ansi/readme.md | 0 .../eslint/node_modules/has-flag/index.js | 0 .../eslint/node_modules/has-flag/license | 0 .../eslint/node_modules/has-flag/package.json | 0 .../eslint/node_modules/has-flag/readme.md | 0 .../eslint/node_modules/has/LICENSE-MIT | 0 .../eslint/node_modules/has/README.mkd | 0 .../eslint/node_modules/has/package.json | 0 .../eslint/node_modules/has/src/index.js | 0 .../eslint/node_modules/iconv-lite/LICENSE | 0 .../eslint/node_modules/iconv-lite/README.md | 0 .../iconv-lite/encodings/dbcs-codec.js | 0 .../iconv-lite/encodings/dbcs-data.js | 0 .../iconv-lite/encodings/index.js | 0 .../iconv-lite/encodings/internal.js | 0 .../iconv-lite/encodings/sbcs-codec.js | 0 .../encodings/sbcs-data-generated.js | 0 .../iconv-lite/encodings/sbcs-data.js | 0 .../encodings/tables/big5-added.json | 0 .../iconv-lite/encodings/tables/cp936.json | 0 .../iconv-lite/encodings/tables/cp949.json | 0 .../iconv-lite/encodings/tables/cp950.json | 0 .../iconv-lite/encodings/tables/eucjp.json | 0 .../encodings/tables/gb18030-ranges.json | 0 .../encodings/tables/gbk-added.json | 0 .../iconv-lite/encodings/tables/shiftjis.json | 0 .../iconv-lite/encodings/utf16.js | 0 .../node_modules/iconv-lite/encodings/utf7.js | 0 .../iconv-lite/lib/bom-handling.js | 0 .../iconv-lite/lib/extend-node.js | 0 .../node_modules/iconv-lite/lib/index.d.ts | 0 .../node_modules/iconv-lite/lib/index.js | 0 .../node_modules/iconv-lite/lib/streams.js | 0 .../node_modules/iconv-lite/package.json | 0 .../eslint/node_modules/ignore/README.md | 0 .../eslint/node_modules/ignore/ignore.js | 0 .../eslint/node_modules/ignore/index.d.ts | 0 .../eslint/node_modules/ignore/package.json | 0 .../eslint/node_modules/imurmurhash/README.md | 0 .../node_modules/imurmurhash/imurmurhash.js | 0 .../imurmurhash/imurmurhash.min.js | 0 .../node_modules/imurmurhash/package.json | 0 .../eslint/node_modules/inflight/LICENSE | 0 .../eslint/node_modules/inflight/README.md | 0 .../eslint/node_modules/inflight/inflight.js | 0 .../eslint/node_modules/inflight/package.json | 0 .../eslint/node_modules/inherits/LICENSE | 0 .../eslint/node_modules/inherits/README.md | 0 .../eslint/node_modules/inherits/inherits.js | 0 .../node_modules/inherits/inherits_browser.js | 0 .../eslint/node_modules/inherits/package.json | 0 .../eslint/node_modules/inquirer/README.md | 0 .../node_modules/inquirer/lib/inquirer.js | 0 .../inquirer/lib/objects/choice.js | 0 .../inquirer/lib/objects/choices.js | 0 .../inquirer/lib/objects/separator.js | 0 .../node_modules/inquirer/lib/prompts/base.js | 0 .../inquirer/lib/prompts/checkbox.js | 0 .../inquirer/lib/prompts/confirm.js | 0 .../inquirer/lib/prompts/editor.js | 0 .../inquirer/lib/prompts/expand.js | 0 .../inquirer/lib/prompts/input.js | 0 .../node_modules/inquirer/lib/prompts/list.js | 0 .../inquirer/lib/prompts/password.js | 0 .../inquirer/lib/prompts/rawlist.js | 0 .../node_modules/inquirer/lib/ui/baseUI.js | 0 .../inquirer/lib/ui/bottom-bar.js | 0 .../node_modules/inquirer/lib/ui/prompt.js | 0 .../node_modules/inquirer/lib/utils/events.js | 0 .../inquirer/lib/utils/paginator.js | 0 .../inquirer/lib/utils/readline.js | 0 .../inquirer/lib/utils/screen-manager.js | 0 .../node_modules/inquirer/lib/utils/utils.js | 0 .../eslint/node_modules/inquirer/package.json | 0 .../node_modules/is-alphabetical/LICENSE | 0 .../node_modules/is-alphabetical/index.js | 0 .../node_modules/is-alphabetical/package.json | 0 .../node_modules/is-alphabetical/readme.md | 0 .../node_modules/is-alphanumerical/LICENSE | 0 .../node_modules/is-alphanumerical/index.js | 0 .../is-alphanumerical/package.json | 0 .../node_modules/is-alphanumerical/readme.md | 0 .../eslint/node_modules/is-buffer/LICENSE | 0 .../eslint/node_modules/is-buffer/README.md | 0 .../eslint/node_modules/is-buffer/index.js | 0 .../node_modules/is-buffer/package.json | 0 .../eslint/node_modules/is-decimal/LICENSE | 0 .../eslint/node_modules/is-decimal/index.js | 0 .../node_modules/is-decimal/package.json | 0 .../eslint/node_modules/is-decimal/readme.md | 0 .../is-fullwidth-code-point/index.js | 0 .../is-fullwidth-code-point/license | 0 .../is-fullwidth-code-point/package.json | 0 .../is-fullwidth-code-point/readme.md | 0 .../node_modules/is-hexadecimal/LICENSE | 0 .../node_modules/is-hexadecimal/index.js | 0 .../node_modules/is-hexadecimal/package.json | 0 .../node_modules/is-hexadecimal/readme.md | 0 .../eslint/node_modules/is-path-cwd/index.js | 0 .../node_modules/is-path-cwd/package.json | 0 .../eslint/node_modules/is-path-cwd/readme.md | 0 .../node_modules/is-path-in-cwd/index.js | 0 .../node_modules/is-path-in-cwd/package.json | 0 .../node_modules/is-path-in-cwd/readme.md | 0 .../node_modules/is-path-inside/index.js | 0 .../node_modules/is-path-inside/package.json | 0 .../node_modules/is-path-inside/readme.md | 0 .../eslint/node_modules/is-plain-obj/index.js | 0 .../eslint/node_modules/is-plain-obj/license | 0 .../node_modules/is-plain-obj/package.json | 0 .../node_modules/is-plain-obj/readme.md | 0 .../eslint/node_modules/is-promise/LICENSE | 0 .../eslint/node_modules/is-promise/index.js | 0 .../node_modules/is-promise/package.json | 0 .../eslint/node_modules/is-promise/readme.md | 0 .../eslint/node_modules/is-resolvable/LICENSE | 0 .../node_modules/is-resolvable/README.md | 0 .../node_modules/is-resolvable/index.js | 0 .../node_modules/is-resolvable/package.json | 0 .../is-whitespace-character/LICENSE | 0 .../is-whitespace-character/index.js | 0 .../is-whitespace-character/package.json | 0 .../is-whitespace-character/readme.md | 0 .../node_modules/is-word-character/LICENSE | 0 .../node_modules/is-word-character/index.js | 0 .../is-word-character/package.json | 0 .../node_modules/is-word-character/readme.md | 0 .../eslint/node_modules/isarray/Makefile | 0 .../eslint/node_modules/isarray/README.md | 0 .../eslint/node_modules/isarray/index.js | 0 .../eslint/node_modules/isarray/package.json | 0 .../eslint/node_modules/isexe/LICENSE | 0 .../eslint/node_modules/isexe/README.md | 0 .../eslint/node_modules/isexe/index.js | 0 .../eslint/node_modules/isexe/mode.js | 0 .../eslint/node_modules/isexe/package.json | 0 .../eslint/node_modules/isexe/windows.js | 0 .../eslint/node_modules/js-tokens/LICENSE | 0 .../eslint/node_modules/js-tokens/index.js | 0 .../node_modules/js-tokens/package.json | 0 .../eslint/node_modules/js-tokens/readme.md | 0 .../eslint/node_modules/js-yaml/LICENSE | 0 .../eslint/node_modules/js-yaml/README.md | 0 .../node_modules/js-yaml/bin/js-yaml.js | 0 .../node_modules/js-yaml/dist/js-yaml.js | 0 .../node_modules/js-yaml/dist/js-yaml.min.js | 0 .../eslint/node_modules/js-yaml/index.js | 0 .../node_modules/js-yaml/lib/js-yaml.js | 0 .../js-yaml/lib/js-yaml/common.js | 0 .../js-yaml/lib/js-yaml/dumper.js | 0 .../js-yaml/lib/js-yaml/exception.js | 0 .../js-yaml/lib/js-yaml/loader.js | 0 .../node_modules/js-yaml/lib/js-yaml/mark.js | 0 .../js-yaml/lib/js-yaml/schema.js | 0 .../js-yaml/lib/js-yaml/schema/core.js | 0 .../lib/js-yaml/schema/default_full.js | 0 .../lib/js-yaml/schema/default_safe.js | 0 .../js-yaml/lib/js-yaml/schema/failsafe.js | 0 .../js-yaml/lib/js-yaml/schema/json.js | 0 .../node_modules/js-yaml/lib/js-yaml/type.js | 0 .../js-yaml/lib/js-yaml/type/binary.js | 0 .../js-yaml/lib/js-yaml/type/bool.js | 0 .../js-yaml/lib/js-yaml/type/float.js | 0 .../js-yaml/lib/js-yaml/type/int.js | 0 .../js-yaml/lib/js-yaml/type/js/function.js | 0 .../js-yaml/lib/js-yaml/type/js/regexp.js | 0 .../js-yaml/lib/js-yaml/type/js/undefined.js | 0 .../js-yaml/lib/js-yaml/type/map.js | 0 .../js-yaml/lib/js-yaml/type/merge.js | 0 .../js-yaml/lib/js-yaml/type/null.js | 0 .../js-yaml/lib/js-yaml/type/omap.js | 0 .../js-yaml/lib/js-yaml/type/pairs.js | 0 .../js-yaml/lib/js-yaml/type/seq.js | 0 .../js-yaml/lib/js-yaml/type/set.js | 0 .../js-yaml/lib/js-yaml/type/str.js | 0 .../js-yaml/lib/js-yaml/type/timestamp.js | 0 .../eslint/node_modules/js-yaml/package.json | 0 .../json-schema-traverse/.eslintrc.yml | 0 .../node_modules/json-schema-traverse/LICENSE | 0 .../json-schema-traverse/README.md | 0 .../json-schema-traverse/index.js | 0 .../json-schema-traverse/package.json | 0 .../LICENSE | 0 .../index.js | 0 .../package.json | 0 .../readme.markdown | 0 .../eslint/node_modules/levn/LICENSE | 0 .../eslint/node_modules/levn/README.md | 0 .../eslint/node_modules/levn/lib/cast.js | 0 .../eslint/node_modules/levn/lib/coerce.js | 0 .../eslint/node_modules/levn/lib/index.js | 0 .../node_modules/levn/lib/parse-string.js | 0 .../eslint/node_modules/levn/lib/parse.js | 0 .../eslint/node_modules/levn/package.json | 0 .../eslint/node_modules/lodash/LICENSE | 0 .../eslint/node_modules/lodash/README.md | 0 .../eslint/node_modules/lodash/_DataView.js | 0 .../eslint/node_modules/lodash/_Hash.js | 0 .../node_modules/lodash/_LazyWrapper.js | 0 .../eslint/node_modules/lodash/_ListCache.js | 0 .../node_modules/lodash/_LodashWrapper.js | 0 .../eslint/node_modules/lodash/_Map.js | 0 .../eslint/node_modules/lodash/_MapCache.js | 0 .../eslint/node_modules/lodash/_Promise.js | 0 .../eslint/node_modules/lodash/_Set.js | 0 .../eslint/node_modules/lodash/_SetCache.js | 0 .../eslint/node_modules/lodash/_Stack.js | 0 .../eslint/node_modules/lodash/_Symbol.js | 0 .../eslint/node_modules/lodash/_Uint8Array.js | 0 .../eslint/node_modules/lodash/_WeakMap.js | 0 .../node_modules/lodash/_addMapEntry.js | 0 .../node_modules/lodash/_addSetEntry.js | 0 .../eslint/node_modules/lodash/_apply.js | 0 .../node_modules/lodash/_arrayAggregator.js | 0 .../eslint/node_modules/lodash/_arrayEach.js | 0 .../node_modules/lodash/_arrayEachRight.js | 0 .../eslint/node_modules/lodash/_arrayEvery.js | 0 .../node_modules/lodash/_arrayFilter.js | 0 .../node_modules/lodash/_arrayIncludes.js | 0 .../node_modules/lodash/_arrayIncludesWith.js | 0 .../node_modules/lodash/_arrayLikeKeys.js | 0 .../eslint/node_modules/lodash/_arrayMap.js | 0 .../eslint/node_modules/lodash/_arrayPush.js | 0 .../node_modules/lodash/_arrayReduce.js | 0 .../node_modules/lodash/_arrayReduceRight.js | 0 .../node_modules/lodash/_arraySample.js | 0 .../node_modules/lodash/_arraySampleSize.js | 0 .../node_modules/lodash/_arrayShuffle.js | 0 .../eslint/node_modules/lodash/_arraySome.js | 0 .../eslint/node_modules/lodash/_asciiSize.js | 0 .../node_modules/lodash/_asciiToArray.js | 0 .../eslint/node_modules/lodash/_asciiWords.js | 0 .../node_modules/lodash/_assignMergeValue.js | 0 .../node_modules/lodash/_assignValue.js | 0 .../node_modules/lodash/_assocIndexOf.js | 0 .../node_modules/lodash/_baseAggregator.js | 0 .../eslint/node_modules/lodash/_baseAssign.js | 0 .../node_modules/lodash/_baseAssignIn.js | 0 .../node_modules/lodash/_baseAssignValue.js | 0 .../eslint/node_modules/lodash/_baseAt.js | 0 .../eslint/node_modules/lodash/_baseClamp.js | 0 .../eslint/node_modules/lodash/_baseClone.js | 0 .../node_modules/lodash/_baseConforms.js | 0 .../node_modules/lodash/_baseConformsTo.js | 0 .../eslint/node_modules/lodash/_baseCreate.js | 0 .../eslint/node_modules/lodash/_baseDelay.js | 0 .../node_modules/lodash/_baseDifference.js | 0 .../eslint/node_modules/lodash/_baseEach.js | 0 .../node_modules/lodash/_baseEachRight.js | 0 .../eslint/node_modules/lodash/_baseEvery.js | 0 .../node_modules/lodash/_baseExtremum.js | 0 .../eslint/node_modules/lodash/_baseFill.js | 0 .../eslint/node_modules/lodash/_baseFilter.js | 0 .../node_modules/lodash/_baseFindIndex.js | 0 .../node_modules/lodash/_baseFindKey.js | 0 .../node_modules/lodash/_baseFlatten.js | 0 .../eslint/node_modules/lodash/_baseFor.js | 0 .../eslint/node_modules/lodash/_baseForOwn.js | 0 .../node_modules/lodash/_baseForOwnRight.js | 0 .../node_modules/lodash/_baseForRight.js | 0 .../node_modules/lodash/_baseFunctions.js | 0 .../eslint/node_modules/lodash/_baseGet.js | 0 .../node_modules/lodash/_baseGetAllKeys.js | 0 .../eslint/node_modules/lodash/_baseGetTag.js | 0 .../eslint/node_modules/lodash/_baseGt.js | 0 .../eslint/node_modules/lodash/_baseHas.js | 0 .../eslint/node_modules/lodash/_baseHasIn.js | 0 .../node_modules/lodash/_baseInRange.js | 0 .../node_modules/lodash/_baseIndexOf.js | 0 .../node_modules/lodash/_baseIndexOfWith.js | 0 .../node_modules/lodash/_baseIntersection.js | 0 .../node_modules/lodash/_baseInverter.js | 0 .../eslint/node_modules/lodash/_baseInvoke.js | 0 .../node_modules/lodash/_baseIsArguments.js | 0 .../node_modules/lodash/_baseIsArrayBuffer.js | 0 .../eslint/node_modules/lodash/_baseIsDate.js | 0 .../node_modules/lodash/_baseIsEqual.js | 0 .../node_modules/lodash/_baseIsEqualDeep.js | 0 .../eslint/node_modules/lodash/_baseIsMap.js | 0 .../node_modules/lodash/_baseIsMatch.js | 0 .../eslint/node_modules/lodash/_baseIsNaN.js | 0 .../node_modules/lodash/_baseIsNative.js | 0 .../node_modules/lodash/_baseIsRegExp.js | 0 .../eslint/node_modules/lodash/_baseIsSet.js | 0 .../node_modules/lodash/_baseIsTypedArray.js | 0 .../node_modules/lodash/_baseIteratee.js | 0 .../eslint/node_modules/lodash/_baseKeys.js | 0 .../eslint/node_modules/lodash/_baseKeysIn.js | 0 .../eslint/node_modules/lodash/_baseLodash.js | 0 .../eslint/node_modules/lodash/_baseLt.js | 0 .../eslint/node_modules/lodash/_baseMap.js | 0 .../node_modules/lodash/_baseMatches.js | 0 .../lodash/_baseMatchesProperty.js | 0 .../eslint/node_modules/lodash/_baseMean.js | 0 .../eslint/node_modules/lodash/_baseMerge.js | 0 .../node_modules/lodash/_baseMergeDeep.js | 0 .../eslint/node_modules/lodash/_baseNth.js | 0 .../node_modules/lodash/_baseOrderBy.js | 0 .../eslint/node_modules/lodash/_basePick.js | 0 .../eslint/node_modules/lodash/_basePickBy.js | 0 .../node_modules/lodash/_baseProperty.js | 0 .../node_modules/lodash/_basePropertyDeep.js | 0 .../node_modules/lodash/_basePropertyOf.js | 0 .../node_modules/lodash/_basePullAll.js | 0 .../eslint/node_modules/lodash/_basePullAt.js | 0 .../eslint/node_modules/lodash/_baseRandom.js | 0 .../eslint/node_modules/lodash/_baseRange.js | 0 .../eslint/node_modules/lodash/_baseReduce.js | 0 .../eslint/node_modules/lodash/_baseRepeat.js | 0 .../eslint/node_modules/lodash/_baseRest.js | 0 .../eslint/node_modules/lodash/_baseSample.js | 0 .../node_modules/lodash/_baseSampleSize.js | 0 .../eslint/node_modules/lodash/_baseSet.js | 0 .../node_modules/lodash/_baseSetData.js | 0 .../node_modules/lodash/_baseSetToString.js | 0 .../node_modules/lodash/_baseShuffle.js | 0 .../eslint/node_modules/lodash/_baseSlice.js | 0 .../eslint/node_modules/lodash/_baseSome.js | 0 .../eslint/node_modules/lodash/_baseSortBy.js | 0 .../node_modules/lodash/_baseSortedIndex.js | 0 .../node_modules/lodash/_baseSortedIndexBy.js | 0 .../node_modules/lodash/_baseSortedUniq.js | 0 .../eslint/node_modules/lodash/_baseSum.js | 0 .../eslint/node_modules/lodash/_baseTimes.js | 0 .../node_modules/lodash/_baseToNumber.js | 0 .../node_modules/lodash/_baseToPairs.js | 0 .../node_modules/lodash/_baseToString.js | 0 .../eslint/node_modules/lodash/_baseUnary.js | 0 .../eslint/node_modules/lodash/_baseUniq.js | 0 .../eslint/node_modules/lodash/_baseUnset.js | 0 .../eslint/node_modules/lodash/_baseUpdate.js | 0 .../eslint/node_modules/lodash/_baseValues.js | 0 .../eslint/node_modules/lodash/_baseWhile.js | 0 .../node_modules/lodash/_baseWrapperValue.js | 0 .../eslint/node_modules/lodash/_baseXor.js | 0 .../node_modules/lodash/_baseZipObject.js | 0 .../eslint/node_modules/lodash/_cacheHas.js | 0 .../lodash/_castArrayLikeObject.js | 0 .../node_modules/lodash/_castFunction.js | 0 .../eslint/node_modules/lodash/_castPath.js | 0 .../eslint/node_modules/lodash/_castRest.js | 0 .../eslint/node_modules/lodash/_castSlice.js | 0 .../node_modules/lodash/_charsEndIndex.js | 0 .../node_modules/lodash/_charsStartIndex.js | 0 .../node_modules/lodash/_cloneArrayBuffer.js | 0 .../node_modules/lodash/_cloneBuffer.js | 0 .../node_modules/lodash/_cloneDataView.js | 0 .../eslint/node_modules/lodash/_cloneMap.js | 0 .../node_modules/lodash/_cloneRegExp.js | 0 .../eslint/node_modules/lodash/_cloneSet.js | 0 .../node_modules/lodash/_cloneSymbol.js | 0 .../node_modules/lodash/_cloneTypedArray.js | 0 .../node_modules/lodash/_compareAscending.js | 0 .../node_modules/lodash/_compareMultiple.js | 0 .../node_modules/lodash/_composeArgs.js | 0 .../node_modules/lodash/_composeArgsRight.js | 0 .../eslint/node_modules/lodash/_copyArray.js | 0 .../eslint/node_modules/lodash/_copyObject.js | 0 .../node_modules/lodash/_copySymbols.js | 0 .../node_modules/lodash/_copySymbolsIn.js | 0 .../eslint/node_modules/lodash/_coreJsData.js | 0 .../node_modules/lodash/_countHolders.js | 0 .../node_modules/lodash/_createAggregator.js | 0 .../node_modules/lodash/_createAssigner.js | 0 .../node_modules/lodash/_createBaseEach.js | 0 .../node_modules/lodash/_createBaseFor.js | 0 .../eslint/node_modules/lodash/_createBind.js | 0 .../node_modules/lodash/_createCaseFirst.js | 0 .../node_modules/lodash/_createCompounder.js | 0 .../eslint/node_modules/lodash/_createCtor.js | 0 .../node_modules/lodash/_createCurry.js | 0 .../eslint/node_modules/lodash/_createFind.js | 0 .../eslint/node_modules/lodash/_createFlow.js | 0 .../node_modules/lodash/_createHybrid.js | 0 .../node_modules/lodash/_createInverter.js | 0 .../lodash/_createMathOperation.js | 0 .../eslint/node_modules/lodash/_createOver.js | 0 .../node_modules/lodash/_createPadding.js | 0 .../node_modules/lodash/_createPartial.js | 0 .../node_modules/lodash/_createRange.js | 0 .../node_modules/lodash/_createRecurry.js | 0 .../lodash/_createRelationalOperation.js | 0 .../node_modules/lodash/_createRound.js | 0 .../eslint/node_modules/lodash/_createSet.js | 0 .../node_modules/lodash/_createToPairs.js | 0 .../eslint/node_modules/lodash/_createWrap.js | 0 .../lodash/_customDefaultsAssignIn.js | 0 .../lodash/_customDefaultsMerge.js | 0 .../node_modules/lodash/_customOmitClone.js | 0 .../node_modules/lodash/_deburrLetter.js | 0 .../node_modules/lodash/_defineProperty.js | 0 .../node_modules/lodash/_equalArrays.js | 0 .../eslint/node_modules/lodash/_equalByTag.js | 0 .../node_modules/lodash/_equalObjects.js | 0 .../node_modules/lodash/_escapeHtmlChar.js | 0 .../node_modules/lodash/_escapeStringChar.js | 0 .../eslint/node_modules/lodash/_flatRest.js | 0 .../eslint/node_modules/lodash/_freeGlobal.js | 0 .../eslint/node_modules/lodash/_getAllKeys.js | 0 .../node_modules/lodash/_getAllKeysIn.js | 0 .../eslint/node_modules/lodash/_getData.js | 0 .../node_modules/lodash/_getFuncName.js | 0 .../eslint/node_modules/lodash/_getHolder.js | 0 .../eslint/node_modules/lodash/_getMapData.js | 0 .../node_modules/lodash/_getMatchData.js | 0 .../eslint/node_modules/lodash/_getNative.js | 0 .../node_modules/lodash/_getPrototype.js | 0 .../eslint/node_modules/lodash/_getRawTag.js | 0 .../eslint/node_modules/lodash/_getSymbols.js | 0 .../node_modules/lodash/_getSymbolsIn.js | 0 .../eslint/node_modules/lodash/_getTag.js | 0 .../eslint/node_modules/lodash/_getValue.js | 0 .../eslint/node_modules/lodash/_getView.js | 0 .../node_modules/lodash/_getWrapDetails.js | 0 .../eslint/node_modules/lodash/_hasPath.js | 0 .../eslint/node_modules/lodash/_hasUnicode.js | 0 .../node_modules/lodash/_hasUnicodeWord.js | 0 .../eslint/node_modules/lodash/_hashClear.js | 0 .../eslint/node_modules/lodash/_hashDelete.js | 0 .../eslint/node_modules/lodash/_hashGet.js | 0 .../eslint/node_modules/lodash/_hashHas.js | 0 .../eslint/node_modules/lodash/_hashSet.js | 0 .../node_modules/lodash/_initCloneArray.js | 0 .../node_modules/lodash/_initCloneByTag.js | 0 .../node_modules/lodash/_initCloneObject.js | 0 .../node_modules/lodash/_insertWrapDetails.js | 0 .../node_modules/lodash/_isFlattenable.js | 0 .../eslint/node_modules/lodash/_isIndex.js | 0 .../node_modules/lodash/_isIterateeCall.js | 0 .../eslint/node_modules/lodash/_isKey.js | 0 .../eslint/node_modules/lodash/_isKeyable.js | 0 .../eslint/node_modules/lodash/_isLaziable.js | 0 .../eslint/node_modules/lodash/_isMaskable.js | 0 .../eslint/node_modules/lodash/_isMasked.js | 0 .../node_modules/lodash/_isPrototype.js | 0 .../lodash/_isStrictComparable.js | 0 .../node_modules/lodash/_iteratorToArray.js | 0 .../eslint/node_modules/lodash/_lazyClone.js | 0 .../node_modules/lodash/_lazyReverse.js | 0 .../eslint/node_modules/lodash/_lazyValue.js | 0 .../node_modules/lodash/_listCacheClear.js | 0 .../node_modules/lodash/_listCacheDelete.js | 0 .../node_modules/lodash/_listCacheGet.js | 0 .../node_modules/lodash/_listCacheHas.js | 0 .../node_modules/lodash/_listCacheSet.js | 0 .../node_modules/lodash/_mapCacheClear.js | 0 .../node_modules/lodash/_mapCacheDelete.js | 0 .../node_modules/lodash/_mapCacheGet.js | 0 .../node_modules/lodash/_mapCacheHas.js | 0 .../node_modules/lodash/_mapCacheSet.js | 0 .../eslint/node_modules/lodash/_mapToArray.js | 0 .../lodash/_matchesStrictComparable.js | 0 .../node_modules/lodash/_memoizeCapped.js | 0 .../eslint/node_modules/lodash/_mergeData.js | 0 .../eslint/node_modules/lodash/_metaMap.js | 0 .../node_modules/lodash/_nativeCreate.js | 0 .../eslint/node_modules/lodash/_nativeKeys.js | 0 .../node_modules/lodash/_nativeKeysIn.js | 0 .../eslint/node_modules/lodash/_nodeUtil.js | 0 .../node_modules/lodash/_objectToString.js | 0 .../eslint/node_modules/lodash/_overArg.js | 0 .../eslint/node_modules/lodash/_overRest.js | 0 .../eslint/node_modules/lodash/_parent.js | 0 .../eslint/node_modules/lodash/_reEscape.js | 0 .../eslint/node_modules/lodash/_reEvaluate.js | 0 .../node_modules/lodash/_reInterpolate.js | 0 .../eslint/node_modules/lodash/_realNames.js | 0 .../eslint/node_modules/lodash/_reorder.js | 0 .../node_modules/lodash/_replaceHolders.js | 0 .../eslint/node_modules/lodash/_root.js | 0 .../node_modules/lodash/_setCacheAdd.js | 0 .../node_modules/lodash/_setCacheHas.js | 0 .../eslint/node_modules/lodash/_setData.js | 0 .../eslint/node_modules/lodash/_setToArray.js | 0 .../eslint/node_modules/lodash/_setToPairs.js | 0 .../node_modules/lodash/_setToString.js | 0 .../node_modules/lodash/_setWrapToString.js | 0 .../eslint/node_modules/lodash/_shortOut.js | 0 .../node_modules/lodash/_shuffleSelf.js | 0 .../eslint/node_modules/lodash/_stackClear.js | 0 .../node_modules/lodash/_stackDelete.js | 0 .../eslint/node_modules/lodash/_stackGet.js | 0 .../eslint/node_modules/lodash/_stackHas.js | 0 .../eslint/node_modules/lodash/_stackSet.js | 0 .../node_modules/lodash/_strictIndexOf.js | 0 .../node_modules/lodash/_strictLastIndexOf.js | 0 .../eslint/node_modules/lodash/_stringSize.js | 0 .../node_modules/lodash/_stringToArray.js | 0 .../node_modules/lodash/_stringToPath.js | 0 .../eslint/node_modules/lodash/_toKey.js | 0 .../eslint/node_modules/lodash/_toSource.js | 0 .../node_modules/lodash/_unescapeHtmlChar.js | 0 .../node_modules/lodash/_unicodeSize.js | 0 .../node_modules/lodash/_unicodeToArray.js | 0 .../node_modules/lodash/_unicodeWords.js | 0 .../node_modules/lodash/_updateWrapDetails.js | 0 .../node_modules/lodash/_wrapperClone.js | 0 .../eslint/node_modules/lodash/add.js | 0 .../eslint/node_modules/lodash/after.js | 0 .../eslint/node_modules/lodash/array.js | 0 .../eslint/node_modules/lodash/ary.js | 0 .../eslint/node_modules/lodash/assign.js | 0 .../eslint/node_modules/lodash/assignIn.js | 0 .../node_modules/lodash/assignInWith.js | 0 .../eslint/node_modules/lodash/assignWith.js | 0 .../eslint/node_modules/lodash/at.js | 0 .../eslint/node_modules/lodash/attempt.js | 0 .../eslint/node_modules/lodash/before.js | 0 .../eslint/node_modules/lodash/bind.js | 0 .../eslint/node_modules/lodash/bindAll.js | 0 .../eslint/node_modules/lodash/bindKey.js | 0 .../eslint/node_modules/lodash/camelCase.js | 0 .../eslint/node_modules/lodash/capitalize.js | 0 .../eslint/node_modules/lodash/castArray.js | 0 .../eslint/node_modules/lodash/ceil.js | 0 .../eslint/node_modules/lodash/chain.js | 0 .../eslint/node_modules/lodash/chunk.js | 0 .../eslint/node_modules/lodash/clamp.js | 0 .../eslint/node_modules/lodash/clone.js | 0 .../eslint/node_modules/lodash/cloneDeep.js | 0 .../node_modules/lodash/cloneDeepWith.js | 0 .../eslint/node_modules/lodash/cloneWith.js | 0 .../eslint/node_modules/lodash/collection.js | 0 .../eslint/node_modules/lodash/commit.js | 0 .../eslint/node_modules/lodash/compact.js | 0 .../eslint/node_modules/lodash/concat.js | 0 .../eslint/node_modules/lodash/cond.js | 0 .../eslint/node_modules/lodash/conforms.js | 0 .../eslint/node_modules/lodash/conformsTo.js | 0 .../eslint/node_modules/lodash/constant.js | 0 .../eslint/node_modules/lodash/core.js | 0 .../eslint/node_modules/lodash/core.min.js | 0 .../eslint/node_modules/lodash/countBy.js | 0 .../eslint/node_modules/lodash/create.js | 0 .../eslint/node_modules/lodash/curry.js | 0 .../eslint/node_modules/lodash/curryRight.js | 0 .../eslint/node_modules/lodash/date.js | 0 .../eslint/node_modules/lodash/debounce.js | 0 .../eslint/node_modules/lodash/deburr.js | 0 .../eslint/node_modules/lodash/defaultTo.js | 0 .../eslint/node_modules/lodash/defaults.js | 0 .../node_modules/lodash/defaultsDeep.js | 0 .../eslint/node_modules/lodash/defer.js | 0 .../eslint/node_modules/lodash/delay.js | 0 .../eslint/node_modules/lodash/difference.js | 0 .../node_modules/lodash/differenceBy.js | 0 .../node_modules/lodash/differenceWith.js | 0 .../eslint/node_modules/lodash/divide.js | 0 .../eslint/node_modules/lodash/drop.js | 0 .../eslint/node_modules/lodash/dropRight.js | 0 .../node_modules/lodash/dropRightWhile.js | 0 .../eslint/node_modules/lodash/dropWhile.js | 0 .../eslint/node_modules/lodash/each.js | 0 .../eslint/node_modules/lodash/eachRight.js | 0 .../eslint/node_modules/lodash/endsWith.js | 0 .../eslint/node_modules/lodash/entries.js | 0 .../eslint/node_modules/lodash/entriesIn.js | 0 .../eslint/node_modules/lodash/eq.js | 0 .../eslint/node_modules/lodash/escape.js | 0 .../node_modules/lodash/escapeRegExp.js | 0 .../eslint/node_modules/lodash/every.js | 0 .../eslint/node_modules/lodash/extend.js | 0 .../eslint/node_modules/lodash/extendWith.js | 0 .../eslint/node_modules/lodash/fill.js | 0 .../eslint/node_modules/lodash/filter.js | 0 .../eslint/node_modules/lodash/find.js | 0 .../eslint/node_modules/lodash/findIndex.js | 0 .../eslint/node_modules/lodash/findKey.js | 0 .../eslint/node_modules/lodash/findLast.js | 0 .../node_modules/lodash/findLastIndex.js | 0 .../eslint/node_modules/lodash/findLastKey.js | 0 .../eslint/node_modules/lodash/first.js | 0 .../eslint/node_modules/lodash/flatMap.js | 0 .../eslint/node_modules/lodash/flatMapDeep.js | 0 .../node_modules/lodash/flatMapDepth.js | 0 .../eslint/node_modules/lodash/flatten.js | 0 .../eslint/node_modules/lodash/flattenDeep.js | 0 .../node_modules/lodash/flattenDepth.js | 0 .../eslint/node_modules/lodash/flip.js | 0 .../eslint/node_modules/lodash/floor.js | 0 .../eslint/node_modules/lodash/flow.js | 0 .../eslint/node_modules/lodash/flowRight.js | 0 .../eslint/node_modules/lodash/forEach.js | 0 .../node_modules/lodash/forEachRight.js | 0 .../eslint/node_modules/lodash/forIn.js | 0 .../eslint/node_modules/lodash/forInRight.js | 0 .../eslint/node_modules/lodash/forOwn.js | 0 .../eslint/node_modules/lodash/forOwnRight.js | 0 .../eslint/node_modules/lodash/fp.js | 0 .../eslint/node_modules/lodash/fp/F.js | 0 .../eslint/node_modules/lodash/fp/T.js | 0 .../eslint/node_modules/lodash/fp/__.js | 0 .../node_modules/lodash/fp/_baseConvert.js | 0 .../node_modules/lodash/fp/_convertBrowser.js | 0 .../node_modules/lodash/fp/_falseOptions.js | 0 .../eslint/node_modules/lodash/fp/_mapping.js | 0 .../eslint/node_modules/lodash/fp/_util.js | 0 .../eslint/node_modules/lodash/fp/add.js | 0 .../eslint/node_modules/lodash/fp/after.js | 0 .../eslint/node_modules/lodash/fp/all.js | 0 .../eslint/node_modules/lodash/fp/allPass.js | 0 .../eslint/node_modules/lodash/fp/always.js | 0 .../eslint/node_modules/lodash/fp/any.js | 0 .../eslint/node_modules/lodash/fp/anyPass.js | 0 .../eslint/node_modules/lodash/fp/apply.js | 0 .../eslint/node_modules/lodash/fp/array.js | 0 .../eslint/node_modules/lodash/fp/ary.js | 0 .../eslint/node_modules/lodash/fp/assign.js | 0 .../node_modules/lodash/fp/assignAll.js | 0 .../node_modules/lodash/fp/assignAllWith.js | 0 .../eslint/node_modules/lodash/fp/assignIn.js | 0 .../node_modules/lodash/fp/assignInAll.js | 0 .../node_modules/lodash/fp/assignInAllWith.js | 0 .../node_modules/lodash/fp/assignInWith.js | 0 .../node_modules/lodash/fp/assignWith.js | 0 .../eslint/node_modules/lodash/fp/assoc.js | 0 .../node_modules/lodash/fp/assocPath.js | 0 .../eslint/node_modules/lodash/fp/at.js | 0 .../eslint/node_modules/lodash/fp/attempt.js | 0 .../eslint/node_modules/lodash/fp/before.js | 0 .../eslint/node_modules/lodash/fp/bind.js | 0 .../eslint/node_modules/lodash/fp/bindAll.js | 0 .../eslint/node_modules/lodash/fp/bindKey.js | 0 .../node_modules/lodash/fp/camelCase.js | 0 .../node_modules/lodash/fp/capitalize.js | 0 .../node_modules/lodash/fp/castArray.js | 0 .../eslint/node_modules/lodash/fp/ceil.js | 0 .../eslint/node_modules/lodash/fp/chain.js | 0 .../eslint/node_modules/lodash/fp/chunk.js | 0 .../eslint/node_modules/lodash/fp/clamp.js | 0 .../eslint/node_modules/lodash/fp/clone.js | 0 .../node_modules/lodash/fp/cloneDeep.js | 0 .../node_modules/lodash/fp/cloneDeepWith.js | 0 .../node_modules/lodash/fp/cloneWith.js | 0 .../node_modules/lodash/fp/collection.js | 0 .../eslint/node_modules/lodash/fp/commit.js | 0 .../eslint/node_modules/lodash/fp/compact.js | 0 .../node_modules/lodash/fp/complement.js | 0 .../eslint/node_modules/lodash/fp/compose.js | 0 .../eslint/node_modules/lodash/fp/concat.js | 0 .../eslint/node_modules/lodash/fp/cond.js | 0 .../eslint/node_modules/lodash/fp/conforms.js | 0 .../node_modules/lodash/fp/conformsTo.js | 0 .../eslint/node_modules/lodash/fp/constant.js | 0 .../eslint/node_modules/lodash/fp/contains.js | 0 .../eslint/node_modules/lodash/fp/convert.js | 0 .../eslint/node_modules/lodash/fp/countBy.js | 0 .../eslint/node_modules/lodash/fp/create.js | 0 .../eslint/node_modules/lodash/fp/curry.js | 0 .../eslint/node_modules/lodash/fp/curryN.js | 0 .../node_modules/lodash/fp/curryRight.js | 0 .../node_modules/lodash/fp/curryRightN.js | 0 .../eslint/node_modules/lodash/fp/date.js | 0 .../eslint/node_modules/lodash/fp/debounce.js | 0 .../eslint/node_modules/lodash/fp/deburr.js | 0 .../node_modules/lodash/fp/defaultTo.js | 0 .../eslint/node_modules/lodash/fp/defaults.js | 0 .../node_modules/lodash/fp/defaultsAll.js | 0 .../node_modules/lodash/fp/defaultsDeep.js | 0 .../node_modules/lodash/fp/defaultsDeepAll.js | 0 .../eslint/node_modules/lodash/fp/defer.js | 0 .../eslint/node_modules/lodash/fp/delay.js | 0 .../node_modules/lodash/fp/difference.js | 0 .../node_modules/lodash/fp/differenceBy.js | 0 .../node_modules/lodash/fp/differenceWith.js | 0 .../eslint/node_modules/lodash/fp/dissoc.js | 0 .../node_modules/lodash/fp/dissocPath.js | 0 .../eslint/node_modules/lodash/fp/divide.js | 0 .../eslint/node_modules/lodash/fp/drop.js | 0 .../eslint/node_modules/lodash/fp/dropLast.js | 0 .../node_modules/lodash/fp/dropLastWhile.js | 0 .../node_modules/lodash/fp/dropRight.js | 0 .../node_modules/lodash/fp/dropRightWhile.js | 0 .../node_modules/lodash/fp/dropWhile.js | 0 .../eslint/node_modules/lodash/fp/each.js | 0 .../node_modules/lodash/fp/eachRight.js | 0 .../eslint/node_modules/lodash/fp/endsWith.js | 0 .../eslint/node_modules/lodash/fp/entries.js | 0 .../node_modules/lodash/fp/entriesIn.js | 0 .../eslint/node_modules/lodash/fp/eq.js | 0 .../eslint/node_modules/lodash/fp/equals.js | 0 .../eslint/node_modules/lodash/fp/escape.js | 0 .../node_modules/lodash/fp/escapeRegExp.js | 0 .../eslint/node_modules/lodash/fp/every.js | 0 .../eslint/node_modules/lodash/fp/extend.js | 0 .../node_modules/lodash/fp/extendAll.js | 0 .../node_modules/lodash/fp/extendAllWith.js | 0 .../node_modules/lodash/fp/extendWith.js | 0 .../eslint/node_modules/lodash/fp/fill.js | 0 .../eslint/node_modules/lodash/fp/filter.js | 0 .../eslint/node_modules/lodash/fp/find.js | 0 .../eslint/node_modules/lodash/fp/findFrom.js | 0 .../node_modules/lodash/fp/findIndex.js | 0 .../node_modules/lodash/fp/findIndexFrom.js | 0 .../eslint/node_modules/lodash/fp/findKey.js | 0 .../eslint/node_modules/lodash/fp/findLast.js | 0 .../node_modules/lodash/fp/findLastFrom.js | 0 .../node_modules/lodash/fp/findLastIndex.js | 0 .../lodash/fp/findLastIndexFrom.js | 0 .../node_modules/lodash/fp/findLastKey.js | 0 .../eslint/node_modules/lodash/fp/first.js | 0 .../eslint/node_modules/lodash/fp/flatMap.js | 0 .../node_modules/lodash/fp/flatMapDeep.js | 0 .../node_modules/lodash/fp/flatMapDepth.js | 0 .../eslint/node_modules/lodash/fp/flatten.js | 0 .../node_modules/lodash/fp/flattenDeep.js | 0 .../node_modules/lodash/fp/flattenDepth.js | 0 .../eslint/node_modules/lodash/fp/flip.js | 0 .../eslint/node_modules/lodash/fp/floor.js | 0 .../eslint/node_modules/lodash/fp/flow.js | 0 .../node_modules/lodash/fp/flowRight.js | 0 .../eslint/node_modules/lodash/fp/forEach.js | 0 .../node_modules/lodash/fp/forEachRight.js | 0 .../eslint/node_modules/lodash/fp/forIn.js | 0 .../node_modules/lodash/fp/forInRight.js | 0 .../eslint/node_modules/lodash/fp/forOwn.js | 0 .../node_modules/lodash/fp/forOwnRight.js | 0 .../node_modules/lodash/fp/fromPairs.js | 0 .../eslint/node_modules/lodash/fp/function.js | 0 .../node_modules/lodash/fp/functions.js | 0 .../node_modules/lodash/fp/functionsIn.js | 0 .../eslint/node_modules/lodash/fp/get.js | 0 .../eslint/node_modules/lodash/fp/getOr.js | 0 .../eslint/node_modules/lodash/fp/groupBy.js | 0 .../eslint/node_modules/lodash/fp/gt.js | 0 .../eslint/node_modules/lodash/fp/gte.js | 0 .../eslint/node_modules/lodash/fp/has.js | 0 .../eslint/node_modules/lodash/fp/hasIn.js | 0 .../eslint/node_modules/lodash/fp/head.js | 0 .../node_modules/lodash/fp/identical.js | 0 .../eslint/node_modules/lodash/fp/identity.js | 0 .../eslint/node_modules/lodash/fp/inRange.js | 0 .../eslint/node_modules/lodash/fp/includes.js | 0 .../node_modules/lodash/fp/includesFrom.js | 0 .../eslint/node_modules/lodash/fp/indexBy.js | 0 .../eslint/node_modules/lodash/fp/indexOf.js | 0 .../node_modules/lodash/fp/indexOfFrom.js | 0 .../eslint/node_modules/lodash/fp/init.js | 0 .../eslint/node_modules/lodash/fp/initial.js | 0 .../node_modules/lodash/fp/intersection.js | 0 .../node_modules/lodash/fp/intersectionBy.js | 0 .../lodash/fp/intersectionWith.js | 0 .../eslint/node_modules/lodash/fp/invert.js | 0 .../eslint/node_modules/lodash/fp/invertBy.js | 0 .../node_modules/lodash/fp/invertObj.js | 0 .../eslint/node_modules/lodash/fp/invoke.js | 0 .../node_modules/lodash/fp/invokeArgs.js | 0 .../node_modules/lodash/fp/invokeArgsMap.js | 0 .../node_modules/lodash/fp/invokeMap.js | 0 .../node_modules/lodash/fp/isArguments.js | 0 .../eslint/node_modules/lodash/fp/isArray.js | 0 .../node_modules/lodash/fp/isArrayBuffer.js | 0 .../node_modules/lodash/fp/isArrayLike.js | 0 .../lodash/fp/isArrayLikeObject.js | 0 .../node_modules/lodash/fp/isBoolean.js | 0 .../eslint/node_modules/lodash/fp/isBuffer.js | 0 .../eslint/node_modules/lodash/fp/isDate.js | 0 .../node_modules/lodash/fp/isElement.js | 0 .../eslint/node_modules/lodash/fp/isEmpty.js | 0 .../eslint/node_modules/lodash/fp/isEqual.js | 0 .../node_modules/lodash/fp/isEqualWith.js | 0 .../eslint/node_modules/lodash/fp/isError.js | 0 .../eslint/node_modules/lodash/fp/isFinite.js | 0 .../node_modules/lodash/fp/isFunction.js | 0 .../node_modules/lodash/fp/isInteger.js | 0 .../eslint/node_modules/lodash/fp/isLength.js | 0 .../eslint/node_modules/lodash/fp/isMap.js | 0 .../eslint/node_modules/lodash/fp/isMatch.js | 0 .../node_modules/lodash/fp/isMatchWith.js | 0 .../eslint/node_modules/lodash/fp/isNaN.js | 0 .../eslint/node_modules/lodash/fp/isNative.js | 0 .../eslint/node_modules/lodash/fp/isNil.js | 0 .../eslint/node_modules/lodash/fp/isNull.js | 0 .../eslint/node_modules/lodash/fp/isNumber.js | 0 .../eslint/node_modules/lodash/fp/isObject.js | 0 .../node_modules/lodash/fp/isObjectLike.js | 0 .../node_modules/lodash/fp/isPlainObject.js | 0 .../eslint/node_modules/lodash/fp/isRegExp.js | 0 .../node_modules/lodash/fp/isSafeInteger.js | 0 .../eslint/node_modules/lodash/fp/isSet.js | 0 .../eslint/node_modules/lodash/fp/isString.js | 0 .../eslint/node_modules/lodash/fp/isSymbol.js | 0 .../node_modules/lodash/fp/isTypedArray.js | 0 .../node_modules/lodash/fp/isUndefined.js | 0 .../node_modules/lodash/fp/isWeakMap.js | 0 .../node_modules/lodash/fp/isWeakSet.js | 0 .../eslint/node_modules/lodash/fp/iteratee.js | 0 .../eslint/node_modules/lodash/fp/join.js | 0 .../eslint/node_modules/lodash/fp/juxt.js | 0 .../node_modules/lodash/fp/kebabCase.js | 0 .../eslint/node_modules/lodash/fp/keyBy.js | 0 .../eslint/node_modules/lodash/fp/keys.js | 0 .../eslint/node_modules/lodash/fp/keysIn.js | 0 .../eslint/node_modules/lodash/fp/lang.js | 0 .../eslint/node_modules/lodash/fp/last.js | 0 .../node_modules/lodash/fp/lastIndexOf.js | 0 .../node_modules/lodash/fp/lastIndexOfFrom.js | 0 .../node_modules/lodash/fp/lowerCase.js | 0 .../node_modules/lodash/fp/lowerFirst.js | 0 .../eslint/node_modules/lodash/fp/lt.js | 0 .../eslint/node_modules/lodash/fp/lte.js | 0 .../eslint/node_modules/lodash/fp/map.js | 0 .../eslint/node_modules/lodash/fp/mapKeys.js | 0 .../node_modules/lodash/fp/mapValues.js | 0 .../eslint/node_modules/lodash/fp/matches.js | 0 .../node_modules/lodash/fp/matchesProperty.js | 0 .../eslint/node_modules/lodash/fp/math.js | 0 .../eslint/node_modules/lodash/fp/max.js | 0 .../eslint/node_modules/lodash/fp/maxBy.js | 0 .../eslint/node_modules/lodash/fp/mean.js | 0 .../eslint/node_modules/lodash/fp/meanBy.js | 0 .../eslint/node_modules/lodash/fp/memoize.js | 0 .../eslint/node_modules/lodash/fp/merge.js | 0 .../eslint/node_modules/lodash/fp/mergeAll.js | 0 .../node_modules/lodash/fp/mergeAllWith.js | 0 .../node_modules/lodash/fp/mergeWith.js | 0 .../eslint/node_modules/lodash/fp/method.js | 0 .../eslint/node_modules/lodash/fp/methodOf.js | 0 .../eslint/node_modules/lodash/fp/min.js | 0 .../eslint/node_modules/lodash/fp/minBy.js | 0 .../eslint/node_modules/lodash/fp/mixin.js | 0 .../eslint/node_modules/lodash/fp/multiply.js | 0 .../eslint/node_modules/lodash/fp/nAry.js | 0 .../eslint/node_modules/lodash/fp/negate.js | 0 .../eslint/node_modules/lodash/fp/next.js | 0 .../eslint/node_modules/lodash/fp/noop.js | 0 .../eslint/node_modules/lodash/fp/now.js | 0 .../eslint/node_modules/lodash/fp/nth.js | 0 .../eslint/node_modules/lodash/fp/nthArg.js | 0 .../eslint/node_modules/lodash/fp/number.js | 0 .../eslint/node_modules/lodash/fp/object.js | 0 .../eslint/node_modules/lodash/fp/omit.js | 0 .../eslint/node_modules/lodash/fp/omitAll.js | 0 .../eslint/node_modules/lodash/fp/omitBy.js | 0 .../eslint/node_modules/lodash/fp/once.js | 0 .../eslint/node_modules/lodash/fp/orderBy.js | 0 .../eslint/node_modules/lodash/fp/over.js | 0 .../eslint/node_modules/lodash/fp/overArgs.js | 0 .../node_modules/lodash/fp/overEvery.js | 0 .../eslint/node_modules/lodash/fp/overSome.js | 0 .../eslint/node_modules/lodash/fp/pad.js | 0 .../eslint/node_modules/lodash/fp/padChars.js | 0 .../node_modules/lodash/fp/padCharsEnd.js | 0 .../node_modules/lodash/fp/padCharsStart.js | 0 .../eslint/node_modules/lodash/fp/padEnd.js | 0 .../eslint/node_modules/lodash/fp/padStart.js | 0 .../eslint/node_modules/lodash/fp/parseInt.js | 0 .../eslint/node_modules/lodash/fp/partial.js | 0 .../node_modules/lodash/fp/partialRight.js | 0 .../node_modules/lodash/fp/partition.js | 0 .../eslint/node_modules/lodash/fp/path.js | 0 .../eslint/node_modules/lodash/fp/pathEq.js | 0 .../eslint/node_modules/lodash/fp/pathOr.js | 0 .../eslint/node_modules/lodash/fp/paths.js | 0 .../eslint/node_modules/lodash/fp/pick.js | 0 .../eslint/node_modules/lodash/fp/pickAll.js | 0 .../eslint/node_modules/lodash/fp/pickBy.js | 0 .../eslint/node_modules/lodash/fp/pipe.js | 0 .../node_modules/lodash/fp/placeholder.js | 0 .../eslint/node_modules/lodash/fp/plant.js | 0 .../eslint/node_modules/lodash/fp/pluck.js | 0 .../eslint/node_modules/lodash/fp/prop.js | 0 .../eslint/node_modules/lodash/fp/propEq.js | 0 .../eslint/node_modules/lodash/fp/propOr.js | 0 .../eslint/node_modules/lodash/fp/property.js | 0 .../node_modules/lodash/fp/propertyOf.js | 0 .../eslint/node_modules/lodash/fp/props.js | 0 .../eslint/node_modules/lodash/fp/pull.js | 0 .../eslint/node_modules/lodash/fp/pullAll.js | 0 .../node_modules/lodash/fp/pullAllBy.js | 0 .../node_modules/lodash/fp/pullAllWith.js | 0 .../eslint/node_modules/lodash/fp/pullAt.js | 0 .../eslint/node_modules/lodash/fp/random.js | 0 .../eslint/node_modules/lodash/fp/range.js | 0 .../node_modules/lodash/fp/rangeRight.js | 0 .../node_modules/lodash/fp/rangeStep.js | 0 .../node_modules/lodash/fp/rangeStepRight.js | 0 .../eslint/node_modules/lodash/fp/rearg.js | 0 .../eslint/node_modules/lodash/fp/reduce.js | 0 .../node_modules/lodash/fp/reduceRight.js | 0 .../eslint/node_modules/lodash/fp/reject.js | 0 .../eslint/node_modules/lodash/fp/remove.js | 0 .../eslint/node_modules/lodash/fp/repeat.js | 0 .../eslint/node_modules/lodash/fp/replace.js | 0 .../eslint/node_modules/lodash/fp/rest.js | 0 .../eslint/node_modules/lodash/fp/restFrom.js | 0 .../eslint/node_modules/lodash/fp/result.js | 0 .../eslint/node_modules/lodash/fp/reverse.js | 0 .../eslint/node_modules/lodash/fp/round.js | 0 .../eslint/node_modules/lodash/fp/sample.js | 0 .../node_modules/lodash/fp/sampleSize.js | 0 .../eslint/node_modules/lodash/fp/seq.js | 0 .../eslint/node_modules/lodash/fp/set.js | 0 .../eslint/node_modules/lodash/fp/setWith.js | 0 .../eslint/node_modules/lodash/fp/shuffle.js | 0 .../eslint/node_modules/lodash/fp/size.js | 0 .../eslint/node_modules/lodash/fp/slice.js | 0 .../node_modules/lodash/fp/snakeCase.js | 0 .../eslint/node_modules/lodash/fp/some.js | 0 .../eslint/node_modules/lodash/fp/sortBy.js | 0 .../node_modules/lodash/fp/sortedIndex.js | 0 .../node_modules/lodash/fp/sortedIndexBy.js | 0 .../node_modules/lodash/fp/sortedIndexOf.js | 0 .../node_modules/lodash/fp/sortedLastIndex.js | 0 .../lodash/fp/sortedLastIndexBy.js | 0 .../lodash/fp/sortedLastIndexOf.js | 0 .../node_modules/lodash/fp/sortedUniq.js | 0 .../node_modules/lodash/fp/sortedUniqBy.js | 0 .../eslint/node_modules/lodash/fp/split.js | 0 .../eslint/node_modules/lodash/fp/spread.js | 0 .../node_modules/lodash/fp/spreadFrom.js | 0 .../node_modules/lodash/fp/startCase.js | 0 .../node_modules/lodash/fp/startsWith.js | 0 .../eslint/node_modules/lodash/fp/string.js | 0 .../node_modules/lodash/fp/stubArray.js | 0 .../node_modules/lodash/fp/stubFalse.js | 0 .../node_modules/lodash/fp/stubObject.js | 0 .../node_modules/lodash/fp/stubString.js | 0 .../eslint/node_modules/lodash/fp/stubTrue.js | 0 .../eslint/node_modules/lodash/fp/subtract.js | 0 .../eslint/node_modules/lodash/fp/sum.js | 0 .../eslint/node_modules/lodash/fp/sumBy.js | 0 .../lodash/fp/symmetricDifference.js | 0 .../lodash/fp/symmetricDifferenceBy.js | 0 .../lodash/fp/symmetricDifferenceWith.js | 0 .../eslint/node_modules/lodash/fp/tail.js | 0 .../eslint/node_modules/lodash/fp/take.js | 0 .../eslint/node_modules/lodash/fp/takeLast.js | 0 .../node_modules/lodash/fp/takeLastWhile.js | 0 .../node_modules/lodash/fp/takeRight.js | 0 .../node_modules/lodash/fp/takeRightWhile.js | 0 .../node_modules/lodash/fp/takeWhile.js | 0 .../eslint/node_modules/lodash/fp/tap.js | 0 .../eslint/node_modules/lodash/fp/template.js | 0 .../lodash/fp/templateSettings.js | 0 .../eslint/node_modules/lodash/fp/throttle.js | 0 .../eslint/node_modules/lodash/fp/thru.js | 0 .../eslint/node_modules/lodash/fp/times.js | 0 .../eslint/node_modules/lodash/fp/toArray.js | 0 .../eslint/node_modules/lodash/fp/toFinite.js | 0 .../node_modules/lodash/fp/toInteger.js | 0 .../node_modules/lodash/fp/toIterator.js | 0 .../eslint/node_modules/lodash/fp/toJSON.js | 0 .../eslint/node_modules/lodash/fp/toLength.js | 0 .../eslint/node_modules/lodash/fp/toLower.js | 0 .../eslint/node_modules/lodash/fp/toNumber.js | 0 .../eslint/node_modules/lodash/fp/toPairs.js | 0 .../node_modules/lodash/fp/toPairsIn.js | 0 .../eslint/node_modules/lodash/fp/toPath.js | 0 .../node_modules/lodash/fp/toPlainObject.js | 0 .../node_modules/lodash/fp/toSafeInteger.js | 0 .../eslint/node_modules/lodash/fp/toString.js | 0 .../eslint/node_modules/lodash/fp/toUpper.js | 0 .../node_modules/lodash/fp/transform.js | 0 .../eslint/node_modules/lodash/fp/trim.js | 0 .../node_modules/lodash/fp/trimChars.js | 0 .../node_modules/lodash/fp/trimCharsEnd.js | 0 .../node_modules/lodash/fp/trimCharsStart.js | 0 .../eslint/node_modules/lodash/fp/trimEnd.js | 0 .../node_modules/lodash/fp/trimStart.js | 0 .../eslint/node_modules/lodash/fp/truncate.js | 0 .../eslint/node_modules/lodash/fp/unapply.js | 0 .../eslint/node_modules/lodash/fp/unary.js | 0 .../eslint/node_modules/lodash/fp/unescape.js | 0 .../eslint/node_modules/lodash/fp/union.js | 0 .../eslint/node_modules/lodash/fp/unionBy.js | 0 .../node_modules/lodash/fp/unionWith.js | 0 .../eslint/node_modules/lodash/fp/uniq.js | 0 .../eslint/node_modules/lodash/fp/uniqBy.js | 0 .../eslint/node_modules/lodash/fp/uniqWith.js | 0 .../eslint/node_modules/lodash/fp/uniqueId.js | 0 .../eslint/node_modules/lodash/fp/unnest.js | 0 .../eslint/node_modules/lodash/fp/unset.js | 0 .../eslint/node_modules/lodash/fp/unzip.js | 0 .../node_modules/lodash/fp/unzipWith.js | 0 .../eslint/node_modules/lodash/fp/update.js | 0 .../node_modules/lodash/fp/updateWith.js | 0 .../node_modules/lodash/fp/upperCase.js | 0 .../node_modules/lodash/fp/upperFirst.js | 0 .../eslint/node_modules/lodash/fp/useWith.js | 0 .../eslint/node_modules/lodash/fp/util.js | 0 .../eslint/node_modules/lodash/fp/value.js | 0 .../eslint/node_modules/lodash/fp/valueOf.js | 0 .../eslint/node_modules/lodash/fp/values.js | 0 .../eslint/node_modules/lodash/fp/valuesIn.js | 0 .../eslint/node_modules/lodash/fp/where.js | 0 .../eslint/node_modules/lodash/fp/whereEq.js | 0 .../eslint/node_modules/lodash/fp/without.js | 0 .../eslint/node_modules/lodash/fp/words.js | 0 .../eslint/node_modules/lodash/fp/wrap.js | 0 .../node_modules/lodash/fp/wrapperAt.js | 0 .../node_modules/lodash/fp/wrapperChain.js | 0 .../node_modules/lodash/fp/wrapperLodash.js | 0 .../node_modules/lodash/fp/wrapperReverse.js | 0 .../node_modules/lodash/fp/wrapperValue.js | 0 .../eslint/node_modules/lodash/fp/xor.js | 0 .../eslint/node_modules/lodash/fp/xorBy.js | 0 .../eslint/node_modules/lodash/fp/xorWith.js | 0 .../eslint/node_modules/lodash/fp/zip.js | 0 .../eslint/node_modules/lodash/fp/zipAll.js | 0 .../eslint/node_modules/lodash/fp/zipObj.js | 0 .../node_modules/lodash/fp/zipObject.js | 0 .../node_modules/lodash/fp/zipObjectDeep.js | 0 .../eslint/node_modules/lodash/fp/zipWith.js | 0 .../eslint/node_modules/lodash/fromPairs.js | 0 .../eslint/node_modules/lodash/function.js | 0 .../eslint/node_modules/lodash/functions.js | 0 .../eslint/node_modules/lodash/functionsIn.js | 0 .../eslint/node_modules/lodash/get.js | 0 .../eslint/node_modules/lodash/groupBy.js | 0 .../eslint/node_modules/lodash/gt.js | 0 .../eslint/node_modules/lodash/gte.js | 0 .../eslint/node_modules/lodash/has.js | 0 .../eslint/node_modules/lodash/hasIn.js | 0 .../eslint/node_modules/lodash/head.js | 0 .../eslint/node_modules/lodash/identity.js | 0 .../eslint/node_modules/lodash/inRange.js | 0 .../eslint/node_modules/lodash/includes.js | 0 .../eslint/node_modules/lodash/index.js | 0 .../eslint/node_modules/lodash/indexOf.js | 0 .../eslint/node_modules/lodash/initial.js | 0 .../node_modules/lodash/intersection.js | 0 .../node_modules/lodash/intersectionBy.js | 0 .../node_modules/lodash/intersectionWith.js | 0 .../eslint/node_modules/lodash/invert.js | 0 .../eslint/node_modules/lodash/invertBy.js | 0 .../eslint/node_modules/lodash/invoke.js | 0 .../eslint/node_modules/lodash/invokeMap.js | 0 .../eslint/node_modules/lodash/isArguments.js | 0 .../eslint/node_modules/lodash/isArray.js | 0 .../node_modules/lodash/isArrayBuffer.js | 0 .../eslint/node_modules/lodash/isArrayLike.js | 0 .../node_modules/lodash/isArrayLikeObject.js | 0 .../eslint/node_modules/lodash/isBoolean.js | 0 .../eslint/node_modules/lodash/isBuffer.js | 0 .../eslint/node_modules/lodash/isDate.js | 0 .../eslint/node_modules/lodash/isElement.js | 0 .../eslint/node_modules/lodash/isEmpty.js | 0 .../eslint/node_modules/lodash/isEqual.js | 0 .../eslint/node_modules/lodash/isEqualWith.js | 0 .../eslint/node_modules/lodash/isError.js | 0 .../eslint/node_modules/lodash/isFinite.js | 0 .../eslint/node_modules/lodash/isFunction.js | 0 .../eslint/node_modules/lodash/isInteger.js | 0 .../eslint/node_modules/lodash/isLength.js | 0 .../eslint/node_modules/lodash/isMap.js | 0 .../eslint/node_modules/lodash/isMatch.js | 0 .../eslint/node_modules/lodash/isMatchWith.js | 0 .../eslint/node_modules/lodash/isNaN.js | 0 .../eslint/node_modules/lodash/isNative.js | 0 .../eslint/node_modules/lodash/isNil.js | 0 .../eslint/node_modules/lodash/isNull.js | 0 .../eslint/node_modules/lodash/isNumber.js | 0 .../eslint/node_modules/lodash/isObject.js | 0 .../node_modules/lodash/isObjectLike.js | 0 .../node_modules/lodash/isPlainObject.js | 0 .../eslint/node_modules/lodash/isRegExp.js | 0 .../node_modules/lodash/isSafeInteger.js | 0 .../eslint/node_modules/lodash/isSet.js | 0 .../eslint/node_modules/lodash/isString.js | 0 .../eslint/node_modules/lodash/isSymbol.js | 0 .../node_modules/lodash/isTypedArray.js | 0 .../eslint/node_modules/lodash/isUndefined.js | 0 .../eslint/node_modules/lodash/isWeakMap.js | 0 .../eslint/node_modules/lodash/isWeakSet.js | 0 .../eslint/node_modules/lodash/iteratee.js | 0 .../eslint/node_modules/lodash/join.js | 0 .../eslint/node_modules/lodash/kebabCase.js | 0 .../eslint/node_modules/lodash/keyBy.js | 0 .../eslint/node_modules/lodash/keys.js | 0 .../eslint/node_modules/lodash/keysIn.js | 0 .../eslint/node_modules/lodash/lang.js | 0 .../eslint/node_modules/lodash/last.js | 0 .../eslint/node_modules/lodash/lastIndexOf.js | 0 .../eslint/node_modules/lodash/lodash.js | 0 .../eslint/node_modules/lodash/lodash.min.js | 0 .../eslint/node_modules/lodash/lowerCase.js | 0 .../eslint/node_modules/lodash/lowerFirst.js | 0 .../eslint/node_modules/lodash/lt.js | 0 .../eslint/node_modules/lodash/lte.js | 0 .../eslint/node_modules/lodash/map.js | 0 .../eslint/node_modules/lodash/mapKeys.js | 0 .../eslint/node_modules/lodash/mapValues.js | 0 .../eslint/node_modules/lodash/matches.js | 0 .../node_modules/lodash/matchesProperty.js | 0 .../eslint/node_modules/lodash/math.js | 0 .../eslint/node_modules/lodash/max.js | 0 .../eslint/node_modules/lodash/maxBy.js | 0 .../eslint/node_modules/lodash/mean.js | 0 .../eslint/node_modules/lodash/meanBy.js | 0 .../eslint/node_modules/lodash/memoize.js | 0 .../eslint/node_modules/lodash/merge.js | 0 .../eslint/node_modules/lodash/mergeWith.js | 0 .../eslint/node_modules/lodash/method.js | 0 .../eslint/node_modules/lodash/methodOf.js | 0 .../eslint/node_modules/lodash/min.js | 0 .../eslint/node_modules/lodash/minBy.js | 0 .../eslint/node_modules/lodash/mixin.js | 0 .../eslint/node_modules/lodash/multiply.js | 0 .../eslint/node_modules/lodash/negate.js | 0 .../eslint/node_modules/lodash/next.js | 0 .../eslint/node_modules/lodash/noop.js | 0 .../eslint/node_modules/lodash/now.js | 0 .../eslint/node_modules/lodash/nth.js | 0 .../eslint/node_modules/lodash/nthArg.js | 0 .../eslint/node_modules/lodash/number.js | 0 .../eslint/node_modules/lodash/object.js | 0 .../eslint/node_modules/lodash/omit.js | 0 .../eslint/node_modules/lodash/omitBy.js | 0 .../eslint/node_modules/lodash/once.js | 0 .../eslint/node_modules/lodash/orderBy.js | 0 .../eslint/node_modules/lodash/over.js | 0 .../eslint/node_modules/lodash/overArgs.js | 0 .../eslint/node_modules/lodash/overEvery.js | 0 .../eslint/node_modules/lodash/overSome.js | 0 .../eslint/node_modules/lodash/package.json | 0 .../eslint/node_modules/lodash/pad.js | 0 .../eslint/node_modules/lodash/padEnd.js | 0 .../eslint/node_modules/lodash/padStart.js | 0 .../eslint/node_modules/lodash/parseInt.js | 0 .../eslint/node_modules/lodash/partial.js | 0 .../node_modules/lodash/partialRight.js | 0 .../eslint/node_modules/lodash/partition.js | 0 .../eslint/node_modules/lodash/pick.js | 0 .../eslint/node_modules/lodash/pickBy.js | 0 .../eslint/node_modules/lodash/plant.js | 0 .../eslint/node_modules/lodash/property.js | 0 .../eslint/node_modules/lodash/propertyOf.js | 0 .../eslint/node_modules/lodash/pull.js | 0 .../eslint/node_modules/lodash/pullAll.js | 0 .../eslint/node_modules/lodash/pullAllBy.js | 0 .../eslint/node_modules/lodash/pullAllWith.js | 0 .../eslint/node_modules/lodash/pullAt.js | 0 .../eslint/node_modules/lodash/random.js | 0 .../eslint/node_modules/lodash/range.js | 0 .../eslint/node_modules/lodash/rangeRight.js | 0 .../eslint/node_modules/lodash/rearg.js | 0 .../eslint/node_modules/lodash/reduce.js | 0 .../eslint/node_modules/lodash/reduceRight.js | 0 .../eslint/node_modules/lodash/reject.js | 0 .../eslint/node_modules/lodash/remove.js | 0 .../eslint/node_modules/lodash/repeat.js | 0 .../eslint/node_modules/lodash/replace.js | 0 .../eslint/node_modules/lodash/rest.js | 0 .../eslint/node_modules/lodash/result.js | 0 .../eslint/node_modules/lodash/reverse.js | 0 .../eslint/node_modules/lodash/round.js | 0 .../eslint/node_modules/lodash/sample.js | 0 .../eslint/node_modules/lodash/sampleSize.js | 0 .../eslint/node_modules/lodash/seq.js | 0 .../eslint/node_modules/lodash/set.js | 0 .../eslint/node_modules/lodash/setWith.js | 0 .../eslint/node_modules/lodash/shuffle.js | 0 .../eslint/node_modules/lodash/size.js | 0 .../eslint/node_modules/lodash/slice.js | 0 .../eslint/node_modules/lodash/snakeCase.js | 0 .../eslint/node_modules/lodash/some.js | 0 .../eslint/node_modules/lodash/sortBy.js | 0 .../eslint/node_modules/lodash/sortedIndex.js | 0 .../node_modules/lodash/sortedIndexBy.js | 0 .../node_modules/lodash/sortedIndexOf.js | 0 .../node_modules/lodash/sortedLastIndex.js | 0 .../node_modules/lodash/sortedLastIndexBy.js | 0 .../node_modules/lodash/sortedLastIndexOf.js | 0 .../eslint/node_modules/lodash/sortedUniq.js | 0 .../node_modules/lodash/sortedUniqBy.js | 0 .../eslint/node_modules/lodash/split.js | 0 .../eslint/node_modules/lodash/spread.js | 0 .../eslint/node_modules/lodash/startCase.js | 0 .../eslint/node_modules/lodash/startsWith.js | 0 .../eslint/node_modules/lodash/string.js | 0 .../eslint/node_modules/lodash/stubArray.js | 0 .../eslint/node_modules/lodash/stubFalse.js | 0 .../eslint/node_modules/lodash/stubObject.js | 0 .../eslint/node_modules/lodash/stubString.js | 0 .../eslint/node_modules/lodash/stubTrue.js | 0 .../eslint/node_modules/lodash/subtract.js | 0 .../eslint/node_modules/lodash/sum.js | 0 .../eslint/node_modules/lodash/sumBy.js | 0 .../eslint/node_modules/lodash/tail.js | 0 .../eslint/node_modules/lodash/take.js | 0 .../eslint/node_modules/lodash/takeRight.js | 0 .../node_modules/lodash/takeRightWhile.js | 0 .../eslint/node_modules/lodash/takeWhile.js | 0 .../eslint/node_modules/lodash/tap.js | 0 .../eslint/node_modules/lodash/template.js | 0 .../node_modules/lodash/templateSettings.js | 0 .../eslint/node_modules/lodash/throttle.js | 0 .../eslint/node_modules/lodash/thru.js | 0 .../eslint/node_modules/lodash/times.js | 0 .../eslint/node_modules/lodash/toArray.js | 0 .../eslint/node_modules/lodash/toFinite.js | 0 .../eslint/node_modules/lodash/toInteger.js | 0 .../eslint/node_modules/lodash/toIterator.js | 0 .../eslint/node_modules/lodash/toJSON.js | 0 .../eslint/node_modules/lodash/toLength.js | 0 .../eslint/node_modules/lodash/toLower.js | 0 .../eslint/node_modules/lodash/toNumber.js | 0 .../eslint/node_modules/lodash/toPairs.js | 0 .../eslint/node_modules/lodash/toPairsIn.js | 0 .../eslint/node_modules/lodash/toPath.js | 0 .../node_modules/lodash/toPlainObject.js | 0 .../node_modules/lodash/toSafeInteger.js | 0 .../eslint/node_modules/lodash/toString.js | 0 .../eslint/node_modules/lodash/toUpper.js | 0 .../eslint/node_modules/lodash/transform.js | 0 .../eslint/node_modules/lodash/trim.js | 0 .../eslint/node_modules/lodash/trimEnd.js | 0 .../eslint/node_modules/lodash/trimStart.js | 0 .../eslint/node_modules/lodash/truncate.js | 0 .../eslint/node_modules/lodash/unary.js | 0 .../eslint/node_modules/lodash/unescape.js | 0 .../eslint/node_modules/lodash/union.js | 0 .../eslint/node_modules/lodash/unionBy.js | 0 .../eslint/node_modules/lodash/unionWith.js | 0 .../eslint/node_modules/lodash/uniq.js | 0 .../eslint/node_modules/lodash/uniqBy.js | 0 .../eslint/node_modules/lodash/uniqWith.js | 0 .../eslint/node_modules/lodash/uniqueId.js | 0 .../eslint/node_modules/lodash/unset.js | 0 .../eslint/node_modules/lodash/unzip.js | 0 .../eslint/node_modules/lodash/unzipWith.js | 0 .../eslint/node_modules/lodash/update.js | 0 .../eslint/node_modules/lodash/updateWith.js | 0 .../eslint/node_modules/lodash/upperCase.js | 0 .../eslint/node_modules/lodash/upperFirst.js | 0 .../eslint/node_modules/lodash/util.js | 0 .../eslint/node_modules/lodash/value.js | 0 .../eslint/node_modules/lodash/valueOf.js | 0 .../eslint/node_modules/lodash/values.js | 0 .../eslint/node_modules/lodash/valuesIn.js | 0 .../eslint/node_modules/lodash/without.js | 0 .../eslint/node_modules/lodash/words.js | 0 .../eslint/node_modules/lodash/wrap.js | 0 .../eslint/node_modules/lodash/wrapperAt.js | 0 .../node_modules/lodash/wrapperChain.js | 0 .../node_modules/lodash/wrapperLodash.js | 0 .../node_modules/lodash/wrapperReverse.js | 0 .../node_modules/lodash/wrapperValue.js | 0 .../eslint/node_modules/lodash/xor.js | 0 .../eslint/node_modules/lodash/xorBy.js | 0 .../eslint/node_modules/lodash/xorWith.js | 0 .../eslint/node_modules/lodash/zip.js | 0 .../eslint/node_modules/lodash/zipObject.js | 0 .../node_modules/lodash/zipObjectDeep.js | 0 .../eslint/node_modules/lodash/zipWith.js | 0 .../eslint/node_modules/lru-cache/LICENSE | 0 .../eslint/node_modules/lru-cache/README.md | 0 .../eslint/node_modules/lru-cache/index.js | 0 .../node_modules/lru-cache/package.json | 0 .../node_modules/markdown-escapes/LICENSE | 0 .../node_modules/markdown-escapes/index.js | 0 .../markdown-escapes/package.json | 0 .../node_modules/markdown-escapes/readme.md | 0 .../eslint/node_modules/mimic-fn/index.js | 0 .../eslint/node_modules/mimic-fn/license | 0 .../eslint/node_modules/mimic-fn/package.json | 0 .../eslint/node_modules/mimic-fn/readme.md | 0 .../eslint/node_modules/minimatch/LICENSE | 0 .../eslint/node_modules/minimatch/README.md | 0 .../node_modules/minimatch/minimatch.js | 0 .../node_modules/minimatch/package.json | 0 .../eslint/node_modules/minimist/LICENSE | 0 .../eslint/node_modules/minimist/index.js | 0 .../eslint/node_modules/minimist/package.json | 0 .../node_modules/minimist/readme.markdown | 0 .../eslint/node_modules/mkdirp/LICENSE | 0 .../eslint/node_modules/mkdirp/bin/cmd.js | 0 .../eslint/node_modules/mkdirp/bin/usage.txt | 0 .../eslint/node_modules/mkdirp/index.js | 0 .../eslint/node_modules/mkdirp/package.json | 0 .../node_modules/mkdirp/readme.markdown | 0 .../eslint/node_modules/ms/LICENSE.md | 0 .../eslint/node_modules/ms/README.md | 0 .../eslint/node_modules/ms/index.js | 0 .../eslint/node_modules/ms/package.json | 0 .../mute-stream/.nyc_output/33508.json | 0 .../mute-stream/.nyc_output/33510.json | 0 .../eslint/node_modules/mute-stream/LICENSE | 0 .../eslint/node_modules/mute-stream/README.md | 0 .../eslint/node_modules/mute-stream/mute.js | 0 .../node_modules/mute-stream/package.json | 0 .../node_modules/natural-compare/README.md | 0 .../node_modules/natural-compare/index.js | 0 .../node_modules/natural-compare/package.json | 0 .../node_modules/object-assign/index.js | 0 .../eslint/node_modules/object-assign/license | 0 .../node_modules/object-assign/package.json | 0 .../node_modules/object-assign/readme.md | 0 .../eslint/node_modules/once/LICENSE | 0 .../eslint/node_modules/once/README.md | 0 .../eslint/node_modules/once/once.js | 0 .../eslint/node_modules/once/package.json | 0 .../eslint/node_modules/onetime/index.js | 0 .../eslint/node_modules/onetime/license | 0 .../eslint/node_modules/onetime/package.json | 0 .../eslint/node_modules/onetime/readme.md | 0 .../eslint/node_modules/optionator/LICENSE | 0 .../eslint/node_modules/optionator/README.md | 0 .../node_modules/optionator/lib/help.js | 0 .../node_modules/optionator/lib/index.js | 0 .../node_modules/optionator/lib/util.js | 0 .../node_modules/optionator/package.json | 0 .../eslint/node_modules/os-tmpdir/index.js | 0 .../eslint/node_modules/os-tmpdir/license | 0 .../node_modules/os-tmpdir/package.json | 0 .../eslint/node_modules/os-tmpdir/readme.md | 0 .../node_modules/parse-entities/LICENSE | 0 .../node_modules/parse-entities/index.js | 0 .../node_modules/parse-entities/package.json | 0 .../node_modules/parse-entities/readme.md | 0 .../node_modules/path-is-absolute/index.js | 0 .../node_modules/path-is-absolute/license | 0 .../path-is-absolute/package.json | 0 .../node_modules/path-is-absolute/readme.md | 0 .../node_modules/path-is-inside/LICENSE.txt | 0 .../path-is-inside/lib/path-is-inside.js | 0 .../node_modules/path-is-inside/package.json | 0 .../eslint/node_modules/pify/index.js | 0 .../eslint/node_modules/pify/license | 0 .../eslint/node_modules/pify/package.json | 0 .../eslint/node_modules/pify/readme.md | 0 .../node_modules/pinkie-promise/index.js | 0 .../node_modules/pinkie-promise/license | 0 .../node_modules/pinkie-promise/package.json | 0 .../node_modules/pinkie-promise/readme.md | 0 .../eslint/node_modules/pinkie/index.js | 0 .../eslint/node_modules/pinkie/license | 0 .../eslint/node_modules/pinkie/package.json | 0 .../eslint/node_modules/pinkie/readme.md | 0 .../eslint/node_modules/pluralize/LICENSE | 0 .../eslint/node_modules/pluralize/Readme.md | 0 .../node_modules/pluralize/package.json | 0 .../node_modules/pluralize/pluralize.js | 0 .../eslint/node_modules/prelude-ls/LICENSE | 0 .../eslint/node_modules/prelude-ls/README.md | 0 .../node_modules/prelude-ls/lib/Func.js | 0 .../node_modules/prelude-ls/lib/List.js | 0 .../eslint/node_modules/prelude-ls/lib/Num.js | 0 .../eslint/node_modules/prelude-ls/lib/Obj.js | 0 .../eslint/node_modules/prelude-ls/lib/Str.js | 0 .../node_modules/prelude-ls/lib/index.js | 0 .../node_modules/prelude-ls/package.json | 0 .../process-nextick-args/index.js | 0 .../process-nextick-args/license.md | 0 .../process-nextick-args/package.json | 0 .../process-nextick-args/readme.md | 0 .../eslint/node_modules/progress/LICENSE | 0 .../eslint/node_modules/progress/Makefile | 0 .../eslint/node_modules/progress/Readme.md | 0 .../eslint/node_modules/progress/index.js | 0 .../progress/lib/node-progress.js | 0 .../eslint/node_modules/progress/package.json | 0 .../eslint/node_modules/pseudomap/LICENSE | 0 .../eslint/node_modules/pseudomap/README.md | 0 .../eslint/node_modules/pseudomap/map.js | 0 .../node_modules/pseudomap/package.json | 0 .../node_modules/pseudomap/pseudomap.js | 0 .../readable-stream/GOVERNANCE.md | 0 .../node_modules/readable-stream/LICENSE | 0 .../node_modules/readable-stream/README.md | 0 .../readable-stream/duplex-browser.js | 0 .../node_modules/readable-stream/duplex.js | 0 .../readable-stream/lib/_stream_duplex.js | 0 .../lib/_stream_passthrough.js | 0 .../readable-stream/lib/_stream_readable.js | 0 .../readable-stream/lib/_stream_transform.js | 0 .../readable-stream/lib/_stream_writable.js | 0 .../lib/internal/streams/BufferList.js | 0 .../lib/internal/streams/destroy.js | 0 .../lib/internal/streams/stream-browser.js | 0 .../lib/internal/streams/stream.js | 0 .../node_modules/readable-stream/package.json | 0 .../readable-stream/passthrough.js | 0 .../readable-stream/readable-browser.js | 0 .../node_modules/readable-stream/readable.js | 0 .../node_modules/readable-stream/transform.js | 0 .../readable-stream/writable-browser.js | 0 .../node_modules/readable-stream/writable.js | 0 .../eslint/node_modules/remark-parse/index.js | 0 .../remark-parse/lib/block-elements.json | 0 .../node_modules/remark-parse/lib/decode.js | 0 .../node_modules/remark-parse/lib/defaults.js | 0 .../remark-parse/lib/locate/break.js | 0 .../remark-parse/lib/locate/code-inline.js | 0 .../remark-parse/lib/locate/delete.js | 0 .../remark-parse/lib/locate/emphasis.js | 0 .../remark-parse/lib/locate/escape.js | 0 .../remark-parse/lib/locate/link.js | 0 .../remark-parse/lib/locate/strong.js | 0 .../remark-parse/lib/locate/tag.js | 0 .../remark-parse/lib/locate/url.js | 0 .../node_modules/remark-parse/lib/parse.js | 0 .../node_modules/remark-parse/lib/parser.js | 0 .../remark-parse/lib/set-options.js | 0 .../remark-parse/lib/tokenize/auto-link.js | 0 .../remark-parse/lib/tokenize/blockquote.js | 0 .../remark-parse/lib/tokenize/break.js | 0 .../remark-parse/lib/tokenize/code-fenced.js | 0 .../lib/tokenize/code-indented.js | 0 .../remark-parse/lib/tokenize/code-inline.js | 0 .../remark-parse/lib/tokenize/definition.js | 0 .../remark-parse/lib/tokenize/delete.js | 0 .../remark-parse/lib/tokenize/emphasis.js | 0 .../remark-parse/lib/tokenize/escape.js | 0 .../lib/tokenize/footnote-definition.js | 0 .../remark-parse/lib/tokenize/heading-atx.js | 0 .../lib/tokenize/heading-setext.js | 0 .../remark-parse/lib/tokenize/html-block.js | 0 .../remark-parse/lib/tokenize/html-inline.js | 0 .../remark-parse/lib/tokenize/link.js | 0 .../remark-parse/lib/tokenize/list.js | 0 .../remark-parse/lib/tokenize/newline.js | 0 .../remark-parse/lib/tokenize/paragraph.js | 0 .../remark-parse/lib/tokenize/reference.js | 0 .../remark-parse/lib/tokenize/strong.js | 0 .../remark-parse/lib/tokenize/table.js | 0 .../remark-parse/lib/tokenize/text.js | 0 .../lib/tokenize/thematic-break.js | 0 .../remark-parse/lib/tokenize/url.js | 0 .../remark-parse/lib/tokenize/yaml.js | 0 .../remark-parse/lib/tokenizer.js | 0 .../node_modules/remark-parse/lib/unescape.js | 0 .../remark-parse/lib/util/get-indentation.js | 0 .../remark-parse/lib/util/html.js | 0 .../remark-parse/lib/util/interrupt.js | 0 .../remark-parse/lib/util/normalize.js | 0 .../lib/util/remove-indentation.js | 0 .../node_modules/remark-parse/package.json | 0 .../node_modules/remark-parse/readme.md | 0 .../eslint/node_modules/repeat-string/LICENSE | 0 .../node_modules/repeat-string/README.md | 0 .../node_modules/repeat-string/index.js | 0 .../node_modules/repeat-string/package.json | 0 .../eslint/node_modules/replace-ext/LICENSE | 0 .../eslint/node_modules/replace-ext/README.md | 0 .../eslint/node_modules/replace-ext/index.js | 0 .../node_modules/replace-ext/package.json | 0 .../node_modules/require-uncached/index.js | 0 .../node_modules/require-uncached/license | 0 .../require-uncached/package.json | 0 .../node_modules/require-uncached/readme.md | 0 .../eslint/node_modules/resolve-from/index.js | 0 .../eslint/node_modules/resolve-from/license | 0 .../node_modules/resolve-from/package.json | 0 .../node_modules/resolve-from/readme.md | 0 .../node_modules/restore-cursor/index.js | 0 .../node_modules/restore-cursor/license | 0 .../node_modules/restore-cursor/package.json | 0 .../node_modules/restore-cursor/readme.md | 0 .../eslint/node_modules/rimraf/LICENSE | 0 .../eslint/node_modules/rimraf/README.md | 0 .../eslint/node_modules/rimraf/bin.js | 0 .../eslint/node_modules/rimraf/package.json | 0 .../eslint/node_modules/rimraf/rimraf.js | 0 .../eslint/node_modules/run-async/LICENSE | 0 .../eslint/node_modules/run-async/README.md | 0 .../eslint/node_modules/run-async/index.js | 0 .../node_modules/run-async/package.json | 0 .../rx-lite-aggregates/package.json | 0 .../node_modules/rx-lite-aggregates/readme.md | 0 .../rx-lite-aggregates/rx.lite.aggregates.js | 0 .../rx-lite-aggregates/rx.lite.aggregates.map | 0 .../rx.lite.aggregates.min.js | 0 .../eslint/node_modules/rx-lite/package.json | 0 .../eslint/node_modules/rx-lite/readme.md | 0 .../eslint/node_modules/rx-lite/rx.lite.js | 0 .../eslint/node_modules/rx-lite/rx.lite.map | 0 .../node_modules/rx-lite/rx.lite.min.js | 0 .../eslint/node_modules/safe-buffer/LICENSE | 0 .../eslint/node_modules/safe-buffer/README.md | 0 .../eslint/node_modules/safe-buffer/index.js | 0 .../node_modules/safe-buffer/package.json | 0 .../eslint/node_modules/semver/LICENSE | 0 .../eslint/node_modules/semver/README.md | 0 .../eslint/node_modules/semver/bin/semver | 0 .../eslint/node_modules/semver/package.json | 0 .../eslint/node_modules/semver/range.bnf | 0 .../eslint/node_modules/semver/semver.js | 0 .../node_modules/shebang-command/index.js | 0 .../node_modules/shebang-command/license | 0 .../node_modules/shebang-command/package.json | 0 .../node_modules/shebang-command/readme.md | 0 .../node_modules/shebang-regex/index.js | 0 .../eslint/node_modules/shebang-regex/license | 0 .../node_modules/shebang-regex/package.json | 0 .../node_modules/shebang-regex/readme.md | 0 .../node_modules/signal-exit/LICENSE.txt | 0 .../eslint/node_modules/signal-exit/README.md | 0 .../eslint/node_modules/signal-exit/index.js | 0 .../node_modules/signal-exit/package.json | 0 .../node_modules/signal-exit/signals.js | 0 .../eslint/node_modules/slice-ansi/index.js | 0 .../eslint/node_modules/slice-ansi/license | 0 .../node_modules/slice-ansi/package.json | 0 .../eslint/node_modules/slice-ansi/readme.md | 0 .../eslint/node_modules/sprintf-js/LICENSE | 0 .../eslint/node_modules/sprintf-js/README.md | 0 .../sprintf-js/dist/angular-sprintf.min.js | 0 .../dist/angular-sprintf.min.js.map | 0 .../sprintf-js/dist/angular-sprintf.min.map | 0 .../sprintf-js/dist/sprintf.min.js | 0 .../sprintf-js/dist/sprintf.min.js.map | 0 .../sprintf-js/dist/sprintf.min.map | 0 .../node_modules/sprintf-js/package.json | 0 .../sprintf-js/src/angular-sprintf.js | 0 .../node_modules/sprintf-js/src/sprintf.js | 0 .../eslint/node_modules/state-toggle/LICENSE | 0 .../node_modules/state-toggle/history.md | 0 .../eslint/node_modules/state-toggle/index.js | 0 .../node_modules/state-toggle/package.json | 0 .../node_modules/state-toggle/readme.md | 0 .../eslint/node_modules/string-width/index.js | 0 .../eslint/node_modules/string-width/license | 0 .../node_modules/string-width/package.json | 0 .../node_modules/string-width/readme.md | 0 .../node_modules/string_decoder/LICENSE | 0 .../node_modules/string_decoder/README.md | 0 .../string_decoder/lib/string_decoder.js | 0 .../node_modules/string_decoder/package.json | 0 .../eslint/node_modules/strip-ansi/index.js | 0 .../eslint/node_modules/strip-ansi/license | 0 .../node_modules/ansi-regex/index.js | 0 .../node_modules/ansi-regex/license | 0 .../node_modules/ansi-regex/package.json | 0 .../node_modules/ansi-regex/readme.md | 0 .../node_modules/strip-ansi/package.json | 0 .../eslint/node_modules/strip-ansi/readme.md | 0 .../node_modules/strip-json-comments/index.js | 0 .../node_modules/strip-json-comments/license | 0 .../strip-json-comments/package.json | 0 .../strip-json-comments/readme.md | 0 .../node_modules/supports-color/index.js | 0 .../node_modules/supports-color/license | 0 .../node_modules/supports-color/package.json | 0 .../node_modules/supports-color/readme.md | 0 .../eslint/node_modules/table/LICENSE | 0 .../eslint/node_modules/table/README.md | 0 .../node_modules/table/dist/alignString.js | 0 .../node_modules/table/dist/alignTableData.js | 0 .../table/dist/calculateCellHeight.js | 0 .../table/dist/calculateCellWidthIndex.js | 0 .../dist/calculateMaximumColumnWidthIndex.js | 0 .../table/dist/calculateRowHeightIndex.js | 0 .../node_modules/table/dist/createStream.js | 0 .../node_modules/table/dist/drawBorder.js | 0 .../eslint/node_modules/table/dist/drawRow.js | 0 .../node_modules/table/dist/drawTable.js | 0 .../table/dist/getBorderCharacters.js | 0 .../eslint/node_modules/table/dist/index.js | 0 .../node_modules/table/dist/makeConfig.js | 0 .../table/dist/makeStreamConfig.js | 0 .../table/dist/mapDataUsingRowHeightIndex.js | 0 .../node_modules/table/dist/padTableData.js | 0 .../table/dist/schemas/config.json | 0 .../table/dist/schemas/streamConfig.json | 0 .../table/dist/stringifyTableData.js | 0 .../eslint/node_modules/table/dist/table.js | 0 .../table/dist/truncateTableData.js | 0 .../node_modules/table/dist/validateConfig.js | 0 .../table/dist/validateStreamConfig.js | 0 .../table/dist/validateTableData.js | 0 .../node_modules/table/dist/wrapString.js | 0 .../node_modules/table/dist/wrapWord.js | 0 .../eslint/node_modules/table/package.json | 0 .../eslint/node_modules/text-table/LICENSE | 0 .../eslint/node_modules/text-table/index.js | 0 .../node_modules/text-table/package.json | 0 .../node_modules/text-table/readme.markdown | 0 .../node_modules/through/LICENSE.APACHE2 | 0 .../eslint/node_modules/through/LICENSE.MIT | 0 .../eslint/node_modules/through/index.js | 0 .../eslint/node_modules/through/package.json | 0 .../node_modules/through/readme.markdown | 0 .../node_modules/trim-trailing-lines/LICENSE | 0 .../node_modules/trim-trailing-lines/index.js | 0 .../trim-trailing-lines/package.json | 0 .../trim-trailing-lines/readme.md | 0 .../eslint/node_modules/trim/Makefile | 0 .../eslint/node_modules/trim/Readme.md | 0 .../eslint/node_modules/trim/index.js | 0 .../eslint/node_modules/trim/package.json | 0 .../eslint/node_modules/trough/LICENSE | 0 .../eslint/node_modules/trough/index.js | 0 .../eslint/node_modules/trough/package.json | 0 .../eslint/node_modules/trough/readme.md | 0 .../eslint/node_modules/tryit/README.md | 0 .../eslint/node_modules/tryit/package.json | 0 .../eslint/node_modules/tryit/tryit.js | 0 .../eslint/node_modules/type-check/LICENSE | 0 .../eslint/node_modules/type-check/README.md | 0 .../node_modules/type-check/lib/check.js | 0 .../node_modules/type-check/lib/index.js | 0 .../node_modules/type-check/lib/parse-type.js | 0 .../node_modules/type-check/package.json | 0 .../eslint/node_modules/typedarray/LICENSE | 0 .../eslint/node_modules/typedarray/index.js | 0 .../node_modules/typedarray/package.json | 0 .../node_modules/typedarray/readme.markdown | 0 .../eslint/node_modules/unherit/LICENSE | 0 .../eslint/node_modules/unherit/index.js | 0 .../eslint/node_modules/unherit/package.json | 0 .../eslint/node_modules/unherit/readme.md | 0 .../eslint/node_modules/unified/LICENSE | 0 .../eslint/node_modules/unified/index.js | 0 .../eslint/node_modules/unified/package.json | 0 .../eslint/node_modules/unified/readme.md | 0 .../eslint/node_modules/unist-util-is/LICENSE | 0 .../node_modules/unist-util-is/index.js | 0 .../node_modules/unist-util-is/package.json | 0 .../node_modules/unist-util-is/readme.md | 0 .../unist-util-remove-position/LICENSE | 0 .../unist-util-remove-position/index.js | 0 .../unist-util-remove-position/package.json | 0 .../unist-util-remove-position/readme.md | 0 .../unist-util-stringify-position/LICENSE | 0 .../unist-util-stringify-position/index.js | 0 .../package.json | 0 .../unist-util-stringify-position/readme.md | 0 .../node_modules/unist-util-visit/LICENSE | 0 .../node_modules/unist-util-visit/index.js | 0 .../unist-util-visit/package.json | 0 .../node_modules/unist-util-visit/readme.md | 0 .../node_modules/util-deprecate/LICENSE | 0 .../node_modules/util-deprecate/README.md | 0 .../node_modules/util-deprecate/browser.js | 0 .../node_modules/util-deprecate/node.js | 0 .../node_modules/util-deprecate/package.json | 0 .../node_modules/vfile-location/LICENSE | 0 .../node_modules/vfile-location/index.js | 0 .../node_modules/vfile-location/package.json | 0 .../node_modules/vfile-location/readme.md | 0 .../eslint/node_modules/vfile-message/LICENSE | 0 .../node_modules/vfile-message/index.js | 0 .../node_modules/vfile-message/package.json | 0 .../node_modules/vfile-message/readme.md | 0 .../eslint/node_modules/vfile/LICENSE | 0 .../eslint/node_modules/vfile/core.js | 0 .../eslint/node_modules/vfile/index.js | 0 .../eslint/node_modules/vfile/package.json | 0 .../eslint/node_modules/vfile/readme.md | 0 .../eslint/node_modules/which/LICENSE | 0 .../eslint/node_modules/which/README.md | 0 .../eslint/node_modules/which/bin/which | 0 .../eslint/node_modules/which/package.json | 0 .../eslint/node_modules/which/which.js | 0 .../eslint/node_modules/wordwrap/LICENSE | 0 .../node_modules/wordwrap/README.markdown | 0 .../eslint/node_modules/wordwrap/index.js | 0 .../eslint/node_modules/wordwrap/package.json | 0 .../eslint/node_modules/wrappy/LICENSE | 0 .../eslint/node_modules/wrappy/README.md | 0 .../eslint/node_modules/wrappy/package.json | 0 .../eslint/node_modules/wrappy/wrappy.js | 0 .../eslint/node_modules/write/LICENSE | 0 .../eslint/node_modules/write/README.md | 0 .../eslint/node_modules/write/index.js | 0 .../eslint/node_modules/write/package.json | 0 .../eslint/node_modules/x-is-function/LICENSE | 0 .../node_modules/x-is-function/README.md | 0 .../node_modules/x-is-function/index.js | 0 .../node_modules/x-is-function/package.json | 0 .../eslint/node_modules/x-is-string/LICENCE | 0 .../eslint/node_modules/x-is-string/README.md | 0 .../eslint/node_modules/x-is-string/index.js | 0 .../node_modules/x-is-string/package.json | 0 .../eslint/node_modules/xtend/LICENCE | 0 .../eslint/node_modules/xtend/Makefile | 0 .../eslint/node_modules/xtend/README.md | 0 .../eslint/node_modules/xtend/immutable.js | 0 .../eslint/node_modules/xtend/mutable.js | 0 .../eslint/node_modules/xtend/package.json | 0 .../eslint/node_modules/yallist/LICENSE | 0 .../eslint/node_modules/yallist/README.md | 0 .../eslint/node_modules/yallist/iterator.js | 0 .../eslint/node_modules/yallist/package.json | 0 .../eslint/node_modules/yallist/yallist.js | 0 tools/{ => node_modules}/eslint/package.json | 0 tools/update-eslint.sh | 4 +- vcbuild.bat | 4 +- 2582 files changed, 72 insertions(+), 71 deletions(-) rename tools/{ => node_modules}/eslint/LICENSE (100%) rename tools/{ => node_modules}/eslint/README.md (100%) rename tools/{ => node_modules}/eslint/bin/eslint.js (100%) rename tools/{ => node_modules}/eslint/conf/blank-script.json (100%) rename tools/{ => node_modules}/eslint/conf/category-list.json (100%) rename tools/{ => node_modules}/eslint/conf/config-schema.js (100%) rename tools/{ => node_modules}/eslint/conf/default-cli-options.js (100%) rename tools/{ => node_modules}/eslint/conf/default-config-options.js (100%) rename tools/{ => node_modules}/eslint/conf/environments.js (100%) rename tools/{ => node_modules}/eslint/conf/eslint-all.js (100%) rename tools/{ => node_modules}/eslint/conf/eslint-recommended.js (100%) rename tools/{ => node_modules}/eslint/conf/replacements.json (100%) rename tools/{ => node_modules}/eslint/lib/api.js (100%) rename tools/{ => node_modules}/eslint/lib/ast-utils.js (100%) rename tools/{ => node_modules}/eslint/lib/cli-engine.js (100%) rename tools/{ => node_modules}/eslint/lib/cli.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/code-path-analyzer.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/code-path-segment.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/code-path-state.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/code-path.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/debug-helpers.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/fork-context.js (100%) rename tools/{ => node_modules}/eslint/lib/code-path-analysis/id-generator.js (100%) rename tools/{ => node_modules}/eslint/lib/config.js (100%) rename tools/{ => node_modules}/eslint/lib/config/autoconfig.js (100%) rename tools/{ => node_modules}/eslint/lib/config/config-cache.js (100%) rename tools/{ => node_modules}/eslint/lib/config/config-file.js (100%) rename tools/{ => node_modules}/eslint/lib/config/config-initializer.js (100%) rename tools/{ => node_modules}/eslint/lib/config/config-ops.js (100%) rename tools/{ => node_modules}/eslint/lib/config/config-rule.js (100%) rename tools/{ => node_modules}/eslint/lib/config/config-validator.js (100%) rename tools/{ => node_modules}/eslint/lib/config/environments.js (100%) rename tools/{ => node_modules}/eslint/lib/config/plugins.js (100%) rename tools/{ => node_modules}/eslint/lib/file-finder.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/checkstyle.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/codeframe.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/compact.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/html-template-message.html (100%) rename tools/{ => node_modules}/eslint/lib/formatters/html-template-page.html (100%) rename tools/{ => node_modules}/eslint/lib/formatters/html-template-result.html (100%) rename tools/{ => node_modules}/eslint/lib/formatters/html.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/jslint-xml.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/json.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/junit.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/stylish.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/table.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/tap.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/unix.js (100%) rename tools/{ => node_modules}/eslint/lib/formatters/visualstudio.js (100%) rename tools/{ => node_modules}/eslint/lib/ignored-paths.js (100%) rename tools/{ => node_modules}/eslint/lib/linter.js (100%) rename tools/{ => node_modules}/eslint/lib/load-rules.js (100%) rename tools/{ => node_modules}/eslint/lib/logging.js (100%) rename tools/{ => node_modules}/eslint/lib/options.js (100%) rename tools/{ => node_modules}/eslint/lib/report-translator.js (100%) rename tools/{ => node_modules}/eslint/lib/rules.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/.eslintrc.yml (100%) rename tools/{ => node_modules}/eslint/lib/rules/accessor-pairs.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/array-bracket-newline.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/array-bracket-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/array-callback-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/array-element-newline.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/arrow-body-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/arrow-parens.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/arrow-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/block-scoped-var.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/block-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/brace-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/callback-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/camelcase.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/capitalized-comments.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/class-methods-use-this.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/comma-dangle.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/comma-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/comma-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/complexity.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/computed-property-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/consistent-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/consistent-this.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/constructor-super.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/curly.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/default-case.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/dot-location.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/dot-notation.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/eol-last.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/eqeqeq.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/for-direction.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/func-call-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/func-name-matching.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/func-names.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/func-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/function-paren-newline.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/generator-star-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/getter-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/global-require.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/guard-for-in.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/handle-callback-err.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/id-blacklist.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/id-length.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/id-match.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/implicit-arrow-linebreak.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/indent-legacy.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/indent.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/init-declarations.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/jsx-quotes.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/key-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/keyword-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/line-comment-position.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/linebreak-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/lines-around-comment.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/lines-around-directive.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/lines-between-class-members.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-depth.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-len.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-lines.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-nested-callbacks.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-params.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-statements-per-line.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/max-statements.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/multiline-comment-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/multiline-ternary.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/new-cap.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/new-parens.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/newline-after-var.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/newline-before-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/newline-per-chained-call.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-alert.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-array-constructor.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-await-in-loop.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-bitwise.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-buffer-constructor.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-caller.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-case-declarations.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-catch-shadow.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-class-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-compare-neg-zero.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-cond-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-confusing-arrow.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-console.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-const-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-constant-condition.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-continue.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-control-regex.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-debugger.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-delete-var.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-div-regex.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-dupe-args.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-dupe-class-members.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-dupe-keys.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-duplicate-case.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-duplicate-imports.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-else-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-empty-character-class.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-empty-function.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-empty-pattern.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-empty.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-eq-null.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-eval.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-ex-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-extend-native.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-extra-bind.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-extra-boolean-cast.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-extra-label.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-extra-parens.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-extra-semi.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-fallthrough.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-floating-decimal.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-func-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-global-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-implicit-coercion.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-implicit-globals.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-implied-eval.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-inline-comments.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-inner-declarations.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-invalid-regexp.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-invalid-this.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-irregular-whitespace.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-iterator.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-label-var.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-labels.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-lone-blocks.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-lonely-if.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-loop-func.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-magic-numbers.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-mixed-operators.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-mixed-requires.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-mixed-spaces-and-tabs.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-multi-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-multi-spaces.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-multi-str.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-multiple-empty-lines.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-native-reassign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-negated-condition.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-negated-in-lhs.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-nested-ternary.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-new-func.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-new-object.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-new-require.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-new-symbol.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-new-wrappers.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-new.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-obj-calls.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-octal-escape.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-octal.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-param-reassign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-path-concat.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-plusplus.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-process-env.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-process-exit.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-proto.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-prototype-builtins.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-redeclare.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-regex-spaces.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-restricted-globals.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-restricted-imports.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-restricted-modules.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-restricted-properties.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-restricted-syntax.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-return-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-return-await.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-script-url.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-self-assign.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-self-compare.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-sequences.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-shadow-restricted-names.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-shadow.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-spaced-func.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-sparse-arrays.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-sync.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-tabs.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-template-curly-in-string.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-ternary.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-this-before-super.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-throw-literal.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-trailing-spaces.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-undef-init.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-undef.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-undefined.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-underscore-dangle.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unexpected-multiline.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unmodified-loop-condition.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unneeded-ternary.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unreachable.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unsafe-finally.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unsafe-negation.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unused-expressions.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unused-labels.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-unused-vars.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-use-before-define.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-call.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-computed-key.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-concat.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-constructor.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-escape.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-rename.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-useless-return.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-var.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-void.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-warning-comments.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-whitespace-before-property.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/no-with.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/nonblock-statement-body-position.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/object-curly-newline.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/object-curly-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/object-property-newline.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/object-shorthand.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/one-var-declaration-per-line.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/one-var.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/operator-assignment.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/operator-linebreak.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/padded-blocks.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/padding-line-between-statements.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-arrow-callback.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-const.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-destructuring.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-numeric-literals.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-promise-reject-errors.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-reflect.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-rest-params.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-spread.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/prefer-template.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/quote-props.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/quotes.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/radix.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/require-await.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/require-jsdoc.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/require-yield.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/rest-spread-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/semi-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/semi-style.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/semi.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/sort-imports.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/sort-keys.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/sort-vars.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/space-before-blocks.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/space-before-function-paren.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/space-in-parens.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/space-infix-ops.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/space-unary-ops.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/spaced-comment.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/strict.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/switch-colon-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/symbol-description.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/template-curly-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/template-tag-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/unicode-bom.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/use-isnan.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/valid-jsdoc.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/valid-typeof.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/vars-on-top.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/wrap-iife.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/wrap-regex.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/yield-star-spacing.js (100%) rename tools/{ => node_modules}/eslint/lib/rules/yoda.js (100%) rename tools/{ => node_modules}/eslint/lib/testers/rule-tester.js (100%) rename tools/{ => node_modules}/eslint/lib/timing.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/backward-token-comment-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/backward-token-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/cursors.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/decorative-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/filter-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/forward-token-comment-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/forward-token-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/index.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/limit-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/padded-token-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/skip-cursor.js (100%) rename tools/{ => node_modules}/eslint/lib/token-store/utils.js (100%) rename tools/{ => node_modules}/eslint/lib/util/ajv.js (100%) rename tools/{ => node_modules}/eslint/lib/util/apply-disable-directives.js (100%) rename tools/{ => node_modules}/eslint/lib/util/fix-tracker.js (100%) rename tools/{ => node_modules}/eslint/lib/util/glob-util.js (100%) rename tools/{ => node_modules}/eslint/lib/util/glob.js (100%) rename tools/{ => node_modules}/eslint/lib/util/hash.js (100%) rename tools/{ => node_modules}/eslint/lib/util/keywords.js (100%) rename tools/{ => node_modules}/eslint/lib/util/module-resolver.js (100%) rename tools/{ => node_modules}/eslint/lib/util/naming.js (100%) rename tools/{ => node_modules}/eslint/lib/util/node-event-generator.js (100%) rename tools/{ => node_modules}/eslint/lib/util/npm-util.js (100%) rename tools/{ => node_modules}/eslint/lib/util/path-util.js (100%) rename tools/{ => node_modules}/eslint/lib/util/patterns/letters.js (100%) rename tools/{ => node_modules}/eslint/lib/util/rule-fixer.js (100%) rename tools/{ => node_modules}/eslint/lib/util/safe-emitter.js (100%) rename tools/{ => node_modules}/eslint/lib/util/source-code-fixer.js (100%) rename tools/{ => node_modules}/eslint/lib/util/source-code-util.js (100%) rename tools/{ => node_modules}/eslint/lib/util/source-code.js (100%) rename tools/{ => node_modules}/eslint/lib/util/traverser.js (100%) rename tools/{ => node_modules}/eslint/lib/util/xml-escape.js (100%) rename tools/{ => node_modules}/eslint/messages/extend-config-missing.txt (100%) rename tools/{ => node_modules}/eslint/messages/no-config-found.txt (100%) rename tools/{ => node_modules}/eslint/messages/plugin-missing.txt (100%) rename tools/{ => node_modules}/eslint/messages/whitespace-found.txt (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/inject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/.tern-project (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/AUTHORS (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/acorn (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/generate-identifier-regex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/.keep (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.es.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.es.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.es.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.bin.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.loose.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.main.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.walk.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/bin/acorn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/expression.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/identifier.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/location.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/locutil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/expression.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/parseutil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/state.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/statement.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/tokenize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/lval.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/node.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/options.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/parseutil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/state.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/statement.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokencontext.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokenize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokentype.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/walk/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/node_modules/acorn/src/whitespace.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn-jsx/xhtml.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/AUTHORS (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/bin/acorn (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/.keep (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/acorn.es.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/acorn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/acorn_loose.es.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/acorn_loose.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/walk.es.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/dist/walk.js (100%) rename tools/{ => node_modules}/eslint/node_modules/acorn/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/_formatLimit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/_util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/deepProperties.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/deepRequired.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dot/patternRequired.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dot/switch.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dotjs/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/formatMaximum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/formatMinimum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/if.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/instanceof.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/patternRequired.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/prohibited.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/range.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/regexp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/select.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/switch.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/typeof.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv-keywords/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/.tonic_example.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/dist/ajv.bundle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/dist/ajv.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/dist/ajv.min.js.map (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/dist/nodent.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/dist/regenerator.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/$data.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/ajv.d.ts (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/ajv.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/cache.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/_rules.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/async.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/equal.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/error_classes.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/formats.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/resolve.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/rules.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/schema_obj.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/ucs2length.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/compile/util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/_limit.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/_limitItems.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/_limitLength.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/_limitProperties.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/allOf.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/anyOf.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/coerce.def (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/const.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/contains.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/custom.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/defaults.def (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/definitions.def (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/dependencies.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/enum.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/errors.def (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/format.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/items.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/missing.def (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/multipleOf.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/not.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/oneOf.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/pattern.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/properties.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/propertyNames.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/ref.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/required.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/uniqueItems.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dot/validate.jst (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/_limit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/_limitItems.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/_limitLength.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/allOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/anyOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/const.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/contains.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/custom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/dependencies.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/enum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/format.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/items.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/multipleOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/not.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/oneOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/pattern.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/properties.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/propertyNames.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/ref.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/required.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/dotjs/validate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/keyword.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/patternGroups.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/refs/$data.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/lib/refs/json-schema-v5.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/scripts/.eslintrc.yml (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/scripts/bundle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/scripts/compile-dots.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/scripts/info (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/scripts/prepare-tests (100%) rename tools/{ => node_modules}/eslint/node_modules/ajv/scripts/travis-gh-pages (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-escapes/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-escapes/license (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-escapes/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-escapes/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-regex/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-regex/license (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-regex/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-regex/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-styles/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-styles/license (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-styles/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ansi-styles/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/append.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/append/constant.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/count.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/help.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/store.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/store/constant.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/store/false.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/store/true.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/subparsers.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action/version.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/action_container.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/argparse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/argument/error.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/argument/exclusive.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/argument/group.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/argument_parser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/const.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/help/added_formatters.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/help/formatter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/namespace.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/lib/utils.js (100%) rename tools/{ => node_modules}/eslint/node_modules/argparse/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/array-union/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/array-union/license (100%) rename tools/{ => node_modules}/eslint/node_modules/array-union/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/array-union/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/array-uniq/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/array-uniq/license (100%) rename tools/{ => node_modules}/eslint/node_modules/array-uniq/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/array-uniq/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/arrify/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/arrify/license (100%) rename tools/{ => node_modules}/eslint/node_modules/arrify/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/arrify/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/chalk/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/chalk/license (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/chalk/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/chalk/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/license (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/package-lock.json (100%) rename tools/{ => node_modules}/eslint/node_modules/babel-code-frame/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/bail/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/bail/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/bail/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/bail/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/balanced-match/LICENSE.md (100%) rename tools/{ => node_modules}/eslint/node_modules/balanced-match/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/balanced-match/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/balanced-match/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/brace-expansion/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/brace-expansion/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/brace-expansion/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/caller-path/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/caller-path/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/caller-path/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/callsites/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/callsites/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/callsites/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/license (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/ansi-styles/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/ansi-styles/license (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/ansi-styles/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/ansi-styles/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/supports-color/browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/supports-color/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/supports-color/license (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/supports-color/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/node_modules/supports-color/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/templates.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chalk/types/index.d.ts (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities-legacy/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities-legacy/index.json (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities-legacy/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities-legacy/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities/index.json (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/character-entities/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/character-reference-invalid/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/character-reference-invalid/index.json (100%) rename tools/{ => node_modules}/eslint/node_modules/character-reference-invalid/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/character-reference-invalid/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/encoding/iso2022.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/encoding/mbcs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/encoding/sbcs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/encoding/unicode.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/encoding/utf8.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/match.js (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/scripts/release (100%) rename tools/{ => node_modules}/eslint/node_modules/chardet/yarn.lock (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/LICENSE.txt (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/build/circular-json.js (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/build/circular-json.max.js (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/build/circular-json.node.js (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/template/license.after (100%) rename tools/{ => node_modules}/eslint/node_modules/circular-json/template/license.before (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-cursor/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-cursor/license (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-cursor/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-cursor/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-width/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-width/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-width/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cli-width/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/co/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/co/Readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/co/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/co/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/collapse-white-space/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/collapse-white-space/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/collapse-white-space/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/collapse-white-space/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/color-convert/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/color-convert/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/color-convert/conversions.js (100%) rename tools/{ => node_modules}/eslint/node_modules/color-convert/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/color-convert/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/color-convert/route.js (100%) rename tools/{ => node_modules}/eslint/node_modules/color-name/.eslintrc.json (100%) rename tools/{ => node_modules}/eslint/node_modules/color-name/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/color-name/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/color-name/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/color-name/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-map/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-map/README.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-map/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-map/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-stream/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-stream/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-stream/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/concat-stream/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/core-util-is/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/core-util-is/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/core-util-is/float.patch (100%) rename tools/{ => node_modules}/eslint/node_modules/core-util-is/lib/util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/core-util-is/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/enoent.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/parse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/util/readShebang.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js (100%) rename tools/{ => node_modules}/eslint/node_modules/cross-spawn/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/.coveralls.yml (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/Makefile (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/Readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/karma.conf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/node.js (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/src/browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/src/debug.js (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/src/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/debug/src/node.js (100%) rename tools/{ => node_modules}/eslint/node_modules/deep-is/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/deep-is/README.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/deep-is/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/deep-is/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/del/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/del/license (100%) rename tools/{ => node_modules}/eslint/node_modules/del/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/del/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/LICENSE.closure-compiler (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/LICENSE.esprima (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/lib/doctrine.js (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/lib/typed.js (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/lib/utility.js (100%) rename tools/{ => node_modules}/eslint/node_modules/doctrine/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/escape-string-regexp/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/escape-string-regexp/license (100%) rename tools/{ => node_modules}/eslint/node_modules/escape-string-regexp/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/escape-string-regexp/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-plugin-markdown/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-plugin-markdown/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-plugin-markdown/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-plugin-markdown/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-plugin-markdown/lib/processor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-plugin-markdown/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/definition.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/pattern-visitor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/reference.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/referencer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/scope-manager.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/scope.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/lib/variable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/eslint-scope/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/espree.js (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/lib/ast-node-types.js (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/lib/comment-attachment.js (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/lib/features.js (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/lib/token-translator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/lib/visitor-keys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/espree/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/esprima/LICENSE.BSD (100%) rename tools/{ => node_modules}/eslint/node_modules/esprima/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/esprima/bin/esparse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esprima/bin/esvalidate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esprima/dist/esprima.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esprima/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/esquery/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/esquery/esquery.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esquery/license.txt (100%) rename tools/{ => node_modules}/eslint/node_modules/esquery/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/esquery/parser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esrecurse/.babelrc (100%) rename tools/{ => node_modules}/eslint/node_modules/esrecurse/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/esrecurse/esrecurse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esrecurse/package-lock.json (100%) rename tools/{ => node_modules}/eslint/node_modules/esrecurse/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/estraverse/.babelrc (100%) rename tools/{ => node_modules}/eslint/node_modules/estraverse/LICENSE.BSD (100%) rename tools/{ => node_modules}/eslint/node_modules/estraverse/estraverse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/estraverse/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/LICENSE.BSD (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/lib/ast.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/lib/code.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/lib/keyword.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/lib/utils.js (100%) rename tools/{ => node_modules}/eslint/node_modules/esutils/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/extend/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/extend/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/extend/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/extend/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/example_async.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/example_sync.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/main/errors/CreateFileError.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/main/errors/LaunchEditorError.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/main/errors/ReadFileError.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/main/errors/RemoveFileError.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/main/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/external-editor/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-deep-equal/.eslintrc.yml (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-deep-equal/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-deep-equal/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-deep-equal/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-deep-equal/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-json-stable-stringify/.eslintrc.yml (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-json-stable-stringify/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-json-stable-stringify/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-json-stable-stringify/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-json-stable-stringify/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-levenshtein/LICENSE.md (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-levenshtein/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-levenshtein/levenshtein.js (100%) rename tools/{ => node_modules}/eslint/node_modules/fast-levenshtein/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/figures/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/figures/license (100%) rename tools/{ => node_modules}/eslint/node_modules/figures/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/figures/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/file-entry-cache/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/file-entry-cache/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/file-entry-cache/cache.js (100%) rename tools/{ => node_modules}/eslint/node_modules/file-entry-cache/changelog.md (100%) rename tools/{ => node_modules}/eslint/node_modules/file-entry-cache/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/flat-cache/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/flat-cache/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/flat-cache/cache.js (100%) rename tools/{ => node_modules}/eslint/node_modules/flat-cache/changelog.md (100%) rename tools/{ => node_modules}/eslint/node_modules/flat-cache/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/flat-cache/utils.js (100%) rename tools/{ => node_modules}/eslint/node_modules/fs.realpath/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/fs.realpath/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/fs.realpath/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/fs.realpath/old.js (100%) rename tools/{ => node_modules}/eslint/node_modules/fs.realpath/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/function-bind/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/function-bind/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/function-bind/implementation.js (100%) rename tools/{ => node_modules}/eslint/node_modules/function-bind/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/function-bind/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/functional-red-black-tree/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/functional-red-black-tree/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/functional-red-black-tree/bench/test.js (100%) rename tools/{ => node_modules}/eslint/node_modules/functional-red-black-tree/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/functional-red-black-tree/rbtree.js (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/changelog.md (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/common.js (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/glob.js (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/glob/sync.js (100%) rename tools/{ => node_modules}/eslint/node_modules/globals/globals.json (100%) rename tools/{ => node_modules}/eslint/node_modules/globals/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/globals/license (100%) rename tools/{ => node_modules}/eslint/node_modules/globals/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/globals/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/globby/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/globby/license (100%) rename tools/{ => node_modules}/eslint/node_modules/globby/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/globby/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/fs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/graceful-fs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/legacy-streams.js (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/graceful-fs/polyfills.js (100%) rename tools/{ => node_modules}/eslint/node_modules/has-ansi/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/has-ansi/license (100%) rename tools/{ => node_modules}/eslint/node_modules/has-ansi/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/has-ansi/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/has-flag/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/has-flag/license (100%) rename tools/{ => node_modules}/eslint/node_modules/has-flag/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/has-flag/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/has/LICENSE-MIT (100%) rename tools/{ => node_modules}/eslint/node_modules/has/README.mkd (100%) rename tools/{ => node_modules}/eslint/node_modules/has/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/has/src/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/dbcs-codec.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/dbcs-data.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/internal.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/sbcs-codec.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/sbcs-data-generated.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/sbcs-data.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/big5-added.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/cp936.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/cp949.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/cp950.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/eucjp.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/gbk-added.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/tables/shiftjis.json (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/utf16.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/encodings/utf7.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/lib/bom-handling.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/lib/extend-node.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/lib/index.d.ts (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/lib/streams.js (100%) rename tools/{ => node_modules}/eslint/node_modules/iconv-lite/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/ignore/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ignore/ignore.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ignore/index.d.ts (100%) rename tools/{ => node_modules}/eslint/node_modules/ignore/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/imurmurhash/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/imurmurhash/imurmurhash.js (100%) rename tools/{ => node_modules}/eslint/node_modules/imurmurhash/imurmurhash.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/imurmurhash/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/inflight/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/inflight/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/inflight/inflight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inflight/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/inherits/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/inherits/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/inherits/inherits.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inherits/inherits_browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inherits/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/inquirer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/objects/choice.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/objects/choices.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/objects/separator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/base.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/checkbox.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/confirm.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/editor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/expand.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/input.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/list.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/password.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/prompts/rawlist.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/ui/baseUI.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/ui/bottom-bar.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/ui/prompt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/utils/events.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/utils/paginator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/utils/readline.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/utils/screen-manager.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/lib/utils/utils.js (100%) rename tools/{ => node_modules}/eslint/node_modules/inquirer/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphabetical/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphabetical/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphabetical/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphabetical/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphanumerical/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphanumerical/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphanumerical/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-alphanumerical/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-buffer/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-buffer/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-buffer/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-buffer/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-decimal/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-decimal/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-decimal/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-decimal/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-fullwidth-code-point/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-fullwidth-code-point/license (100%) rename tools/{ => node_modules}/eslint/node_modules/is-fullwidth-code-point/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-fullwidth-code-point/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-hexadecimal/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-hexadecimal/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-hexadecimal/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-hexadecimal/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-cwd/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-cwd/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-cwd/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-in-cwd/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-in-cwd/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-in-cwd/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-inside/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-inside/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-path-inside/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-plain-obj/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-plain-obj/license (100%) rename tools/{ => node_modules}/eslint/node_modules/is-plain-obj/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-plain-obj/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-promise/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-promise/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-promise/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-promise/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-resolvable/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-resolvable/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-resolvable/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-resolvable/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-whitespace-character/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-whitespace-character/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-whitespace-character/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-whitespace-character/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/is-word-character/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/is-word-character/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/is-word-character/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/is-word-character/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/isarray/Makefile (100%) rename tools/{ => node_modules}/eslint/node_modules/isarray/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/isarray/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/isarray/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/isexe/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/isexe/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/isexe/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/isexe/mode.js (100%) rename tools/{ => node_modules}/eslint/node_modules/isexe/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/isexe/windows.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-tokens/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/js-tokens/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-tokens/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/js-tokens/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/bin/js-yaml.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/dist/js-yaml.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/dist/js-yaml.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/common.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/dumper.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/exception.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/loader.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/mark.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/schema.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/schema/core.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_full.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/schema/json.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/binary.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/bool.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/float.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/int.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/js/function.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/map.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/merge.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/null.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/pairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/seq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/set.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/str.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/lib/js-yaml/type/timestamp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/js-yaml/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/json-schema-traverse/.eslintrc.yml (100%) rename tools/{ => node_modules}/eslint/node_modules/json-schema-traverse/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/json-schema-traverse/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/json-schema-traverse/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/json-schema-traverse/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/json-stable-stringify-without-jsonify/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/json-stable-stringify-without-jsonify/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/json-stable-stringify-without-jsonify/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/json-stable-stringify-without-jsonify/readme.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/lib/cast.js (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/lib/coerce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/lib/parse-string.js (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/lib/parse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/levn/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_DataView.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Hash.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_LazyWrapper.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_ListCache.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_LodashWrapper.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Map.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_MapCache.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Promise.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Set.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_SetCache.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Stack.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Symbol.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_Uint8Array.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_WeakMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_addMapEntry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_addSetEntry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_apply.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayAggregator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayEach.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayEachRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayEvery.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayFilter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayIncludes.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayIncludesWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayLikeKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayPush.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayReduce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayReduceRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arraySample.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arraySampleSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arrayShuffle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_arraySome.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_asciiSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_asciiToArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_asciiWords.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_assignMergeValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_assignValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_assocIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseAggregator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseAssign.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseAssignIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseAssignValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseAt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseClamp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseClone.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseConforms.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseConformsTo.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseCreate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseDelay.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseDifference.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseEach.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseEachRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseEvery.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseExtremum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFill.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFilter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFindIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFindKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFlatten.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseForOwn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseForOwnRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseForRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseFunctions.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseGet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseGetAllKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseGetTag.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseGt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseHasIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseInRange.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIndexOfWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIntersection.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseInverter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseInvoke.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsArguments.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsArrayBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsDate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsEqual.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsEqualDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsMatch.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsNaN.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsNative.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsRegExp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIsTypedArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseIteratee.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseKeysIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseLodash.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseLt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseMatches.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseMatchesProperty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseMean.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseMerge.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseMergeDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseNth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseOrderBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_basePick.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_basePickBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseProperty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_basePropertyDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_basePropertyOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_basePullAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_basePullAt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseRandom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseRange.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseReduce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseRepeat.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseRest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSample.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSampleSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSetData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSetToString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseShuffle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSlice.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSome.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSortBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSortedIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSortedIndexBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSortedUniq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseSum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseTimes.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseToNumber.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseToPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseToString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseUnary.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseUniq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseUnset.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseUpdate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseValues.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseWrapperValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseXor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_baseZipObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cacheHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_castArrayLikeObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_castFunction.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_castPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_castRest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_castSlice.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_charsEndIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_charsStartIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneArrayBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneDataView.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneRegExp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneSymbol.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_cloneTypedArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_compareAscending.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_compareMultiple.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_composeArgs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_composeArgsRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_copyArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_copyObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_copySymbols.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_copySymbolsIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_coreJsData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_countHolders.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createAggregator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createAssigner.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createBaseEach.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createBaseFor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createBind.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createCaseFirst.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createCompounder.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createCtor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createCurry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createFind.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createFlow.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createHybrid.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createInverter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createMathOperation.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createOver.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createPadding.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createPartial.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createRange.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createRecurry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createRelationalOperation.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createRound.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createToPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_createWrap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_customDefaultsAssignIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_customDefaultsMerge.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_customOmitClone.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_deburrLetter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_defineProperty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_equalArrays.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_equalByTag.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_equalObjects.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_escapeHtmlChar.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_escapeStringChar.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_flatRest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_freeGlobal.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getAllKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getAllKeysIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getFuncName.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getHolder.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getMapData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getMatchData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getNative.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getPrototype.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getRawTag.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getSymbols.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getSymbolsIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getTag.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getView.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_getWrapDetails.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hasPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hasUnicode.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hasUnicodeWord.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hashClear.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hashDelete.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hashGet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hashHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_hashSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_initCloneArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_initCloneByTag.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_initCloneObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_insertWrapDetails.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isFlattenable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isIterateeCall.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isKeyable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isLaziable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isMaskable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isMasked.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isPrototype.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_isStrictComparable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_iteratorToArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_lazyClone.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_lazyReverse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_lazyValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_listCacheClear.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_listCacheDelete.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_listCacheGet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_listCacheHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_listCacheSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mapCacheClear.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mapCacheDelete.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mapCacheGet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mapCacheHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mapCacheSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mapToArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_matchesStrictComparable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_memoizeCapped.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_mergeData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_metaMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_nativeCreate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_nativeKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_nativeKeysIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_nodeUtil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_objectToString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_overArg.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_overRest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_parent.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_reEscape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_reEvaluate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_reInterpolate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_realNames.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_reorder.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_replaceHolders.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_root.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setCacheAdd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setCacheHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setToArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setToPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setToString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_setWrapToString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_shortOut.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_shuffleSelf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stackClear.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stackDelete.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stackGet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stackHas.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stackSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_strictIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_strictLastIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stringSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stringToArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_stringToPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_toKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_toSource.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_unescapeHtmlChar.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_unicodeSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_unicodeToArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_unicodeWords.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_updateWrapDetails.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/_wrapperClone.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/add.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/after.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/array.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/ary.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/assign.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/assignIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/assignInWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/assignWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/at.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/attempt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/before.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/bind.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/bindAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/bindKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/camelCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/capitalize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/castArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/ceil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/chain.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/chunk.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/clamp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/clone.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/cloneDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/cloneDeepWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/cloneWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/collection.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/commit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/compact.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/concat.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/cond.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/conforms.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/conformsTo.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/constant.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/core.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/core.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/countBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/create.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/curry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/curryRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/date.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/debounce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/deburr.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/defaultTo.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/defaults.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/defaultsDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/defer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/delay.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/difference.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/differenceBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/differenceWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/divide.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/drop.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/dropRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/dropRightWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/dropWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/each.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/eachRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/endsWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/entries.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/entriesIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/eq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/escape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/escapeRegExp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/every.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/extend.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/extendWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fill.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/filter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/find.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/findIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/findKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/findLast.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/findLastIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/findLastKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/first.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flatMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flatMapDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flatMapDepth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flatten.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flattenDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flattenDepth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flip.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/floor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flow.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/flowRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/forEach.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/forEachRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/forIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/forInRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/forOwn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/forOwnRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/F.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/T.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/__.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/_baseConvert.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/_convertBrowser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/_falseOptions.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/_mapping.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/_util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/add.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/after.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/all.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/allPass.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/always.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/any.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/anyPass.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/apply.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/array.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/ary.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assign.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignAllWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignInAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignInAllWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignInWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assignWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assoc.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/assocPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/at.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/attempt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/before.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/bind.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/bindAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/bindKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/camelCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/capitalize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/castArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/ceil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/chain.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/chunk.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/clamp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/clone.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/cloneDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/cloneDeepWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/cloneWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/collection.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/commit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/compact.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/complement.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/compose.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/concat.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/cond.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/conforms.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/conformsTo.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/constant.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/contains.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/convert.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/countBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/create.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/curry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/curryN.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/curryRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/curryRightN.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/date.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/debounce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/deburr.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/defaultTo.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/defaults.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/defaultsAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/defaultsDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/defaultsDeepAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/defer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/delay.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/difference.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/differenceBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/differenceWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dissoc.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dissocPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/divide.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/drop.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dropLast.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dropLastWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dropRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dropRightWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/dropWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/each.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/eachRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/endsWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/entries.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/entriesIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/eq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/equals.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/escape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/escapeRegExp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/every.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/extend.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/extendAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/extendAllWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/extendWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/fill.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/filter.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/find.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findIndexFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findLast.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findLastFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findLastIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findLastIndexFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/findLastKey.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/first.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flatMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flatMapDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flatMapDepth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flatten.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flattenDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flattenDepth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flip.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/floor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flow.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/flowRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/forEach.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/forEachRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/forIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/forInRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/forOwn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/forOwnRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/fromPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/function.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/functions.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/functionsIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/get.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/getOr.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/groupBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/gt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/gte.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/has.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/hasIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/head.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/identical.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/identity.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/inRange.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/includes.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/includesFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/indexBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/indexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/indexOfFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/init.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/initial.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/intersection.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/intersectionBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/intersectionWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invert.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invertBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invertObj.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invoke.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invokeArgs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invokeArgsMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/invokeMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isArguments.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isArrayBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isArrayLike.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isArrayLikeObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isBoolean.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isDate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isElement.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isEmpty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isEqual.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isEqualWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isError.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isFinite.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isFunction.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isLength.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isMatch.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isMatchWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isNaN.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isNative.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isNil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isNull.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isNumber.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isObjectLike.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isPlainObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isRegExp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isSafeInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isSymbol.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isTypedArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isUndefined.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isWeakMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/isWeakSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/iteratee.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/join.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/juxt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/kebabCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/keyBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/keys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/keysIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lang.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/last.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lastIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lastIndexOfFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lowerCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lowerFirst.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/lte.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/map.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mapKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mapValues.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/matches.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/matchesProperty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/math.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/max.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/maxBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mean.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/meanBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/memoize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/merge.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mergeAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mergeAllWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mergeWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/method.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/methodOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/minBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/mixin.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/multiply.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/nAry.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/negate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/next.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/noop.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/now.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/nth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/nthArg.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/number.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/object.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/omit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/omitAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/omitBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/once.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/orderBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/over.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/overArgs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/overEvery.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/overSome.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pad.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/padChars.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/padCharsEnd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/padCharsStart.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/padEnd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/padStart.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/parseInt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/partial.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/partialRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/partition.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/path.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pathEq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pathOr.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/paths.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pick.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pickAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pickBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pipe.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/placeholder.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/plant.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pluck.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/prop.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/propEq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/propOr.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/property.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/propertyOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/props.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pull.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pullAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pullAllBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pullAllWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/pullAt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/random.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/range.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/rangeRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/rangeStep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/rangeStepRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/rearg.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/reduce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/reduceRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/reject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/remove.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/repeat.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/replace.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/rest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/restFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/result.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/reverse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/round.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sample.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sampleSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/seq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/set.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/setWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/shuffle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/size.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/slice.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/snakeCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/some.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedIndexBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedLastIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedLastIndexBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedLastIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedUniq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sortedUniqBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/split.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/spread.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/spreadFrom.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/startCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/startsWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/string.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/stubArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/stubFalse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/stubObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/stubString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/stubTrue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/subtract.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/sumBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/symmetricDifference.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/symmetricDifferenceBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/symmetricDifferenceWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/tail.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/take.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/takeLast.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/takeLastWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/takeRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/takeRightWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/takeWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/tap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/template.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/templateSettings.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/throttle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/thru.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/times.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toFinite.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toIterator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toJSON.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toLength.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toLower.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toNumber.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toPairsIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toPlainObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toSafeInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/toUpper.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/transform.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/trim.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/trimChars.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/trimCharsEnd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/trimCharsStart.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/trimEnd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/trimStart.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/truncate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unapply.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unary.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unescape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/union.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unionBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unionWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/uniq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/uniqBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/uniqWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/uniqueId.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unnest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unset.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unzip.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/unzipWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/update.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/updateWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/upperCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/upperFirst.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/useWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/value.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/valueOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/values.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/valuesIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/where.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/whereEq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/without.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/words.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/wrap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/wrapperAt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/wrapperChain.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/wrapperLodash.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/wrapperReverse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/wrapperValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/xor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/xorBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/xorWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/zip.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/zipAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/zipObj.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/zipObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/zipObjectDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fp/zipWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/fromPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/function.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/functions.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/functionsIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/get.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/groupBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/gt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/gte.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/has.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/hasIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/head.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/identity.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/inRange.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/includes.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/indexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/initial.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/intersection.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/intersectionBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/intersectionWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/invert.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/invertBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/invoke.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/invokeMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isArguments.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isArrayBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isArrayLike.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isArrayLikeObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isBoolean.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isBuffer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isDate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isElement.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isEmpty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isEqual.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isEqualWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isError.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isFinite.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isFunction.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isLength.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isMatch.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isMatchWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isNaN.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isNative.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isNil.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isNull.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isNumber.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isObjectLike.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isPlainObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isRegExp.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isSafeInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isSymbol.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isTypedArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isUndefined.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isWeakMap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/isWeakSet.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/iteratee.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/join.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/kebabCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/keyBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/keys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/keysIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lang.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/last.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lastIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lodash.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lodash.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lowerCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lowerFirst.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/lte.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/map.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/mapKeys.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/mapValues.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/matches.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/matchesProperty.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/math.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/max.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/maxBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/mean.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/meanBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/memoize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/merge.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/mergeWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/method.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/methodOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/minBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/mixin.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/multiply.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/negate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/next.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/noop.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/now.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/nth.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/nthArg.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/number.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/object.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/omit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/omitBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/once.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/orderBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/over.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/overArgs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/overEvery.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/overSome.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pad.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/padEnd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/padStart.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/parseInt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/partial.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/partialRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/partition.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pick.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pickBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/plant.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/property.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/propertyOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pull.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pullAll.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pullAllBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pullAllWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/pullAt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/random.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/range.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/rangeRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/rearg.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/reduce.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/reduceRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/reject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/remove.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/repeat.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/replace.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/rest.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/result.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/reverse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/round.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sample.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sampleSize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/seq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/set.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/setWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/shuffle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/size.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/slice.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/snakeCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/some.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedIndexBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedLastIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedLastIndexBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedLastIndexOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedUniq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sortedUniqBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/split.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/spread.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/startCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/startsWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/string.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/stubArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/stubFalse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/stubObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/stubString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/stubTrue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/subtract.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sum.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/sumBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/tail.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/take.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/takeRight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/takeRightWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/takeWhile.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/tap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/template.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/templateSettings.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/throttle.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/thru.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/times.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toArray.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toFinite.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toIterator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toJSON.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toLength.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toLower.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toNumber.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toPairs.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toPairsIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toPath.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toPlainObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toSafeInteger.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/toUpper.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/transform.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/trim.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/trimEnd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/trimStart.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/truncate.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unary.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unescape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/union.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unionBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unionWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/uniq.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/uniqBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/uniqWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/uniqueId.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unset.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unzip.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/unzipWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/update.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/updateWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/upperCase.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/upperFirst.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/value.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/valueOf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/values.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/valuesIn.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/without.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/words.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/wrap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/wrapperAt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/wrapperChain.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/wrapperLodash.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/wrapperReverse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/wrapperValue.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/xor.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/xorBy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/xorWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/zip.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/zipObject.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/zipObjectDeep.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lodash/zipWith.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lru-cache/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/lru-cache/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/lru-cache/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/lru-cache/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/markdown-escapes/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/markdown-escapes/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/markdown-escapes/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/markdown-escapes/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/mimic-fn/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/mimic-fn/license (100%) rename tools/{ => node_modules}/eslint/node_modules/mimic-fn/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/mimic-fn/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/minimatch/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/minimatch/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/minimatch/minimatch.js (100%) rename tools/{ => node_modules}/eslint/node_modules/minimatch/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/minimist/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/minimist/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/minimist/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/minimist/readme.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/mkdirp/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/mkdirp/bin/cmd.js (100%) rename tools/{ => node_modules}/eslint/node_modules/mkdirp/bin/usage.txt (100%) rename tools/{ => node_modules}/eslint/node_modules/mkdirp/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/mkdirp/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/mkdirp/readme.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/ms/LICENSE.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ms/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/ms/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/ms/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/mute-stream/.nyc_output/33508.json (100%) rename tools/{ => node_modules}/eslint/node_modules/mute-stream/.nyc_output/33510.json (100%) rename tools/{ => node_modules}/eslint/node_modules/mute-stream/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/mute-stream/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/mute-stream/mute.js (100%) rename tools/{ => node_modules}/eslint/node_modules/mute-stream/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/natural-compare/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/natural-compare/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/natural-compare/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/object-assign/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/object-assign/license (100%) rename tools/{ => node_modules}/eslint/node_modules/object-assign/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/object-assign/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/once/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/once/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/once/once.js (100%) rename tools/{ => node_modules}/eslint/node_modules/once/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/onetime/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/onetime/license (100%) rename tools/{ => node_modules}/eslint/node_modules/onetime/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/onetime/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/optionator/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/optionator/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/optionator/lib/help.js (100%) rename tools/{ => node_modules}/eslint/node_modules/optionator/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/optionator/lib/util.js (100%) rename tools/{ => node_modules}/eslint/node_modules/optionator/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/os-tmpdir/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/os-tmpdir/license (100%) rename tools/{ => node_modules}/eslint/node_modules/os-tmpdir/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/os-tmpdir/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/parse-entities/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/parse-entities/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/parse-entities/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/parse-entities/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-absolute/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-absolute/license (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-absolute/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-absolute/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-inside/LICENSE.txt (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-inside/lib/path-is-inside.js (100%) rename tools/{ => node_modules}/eslint/node_modules/path-is-inside/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pify/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/pify/license (100%) rename tools/{ => node_modules}/eslint/node_modules/pify/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pify/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie-promise/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie-promise/license (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie-promise/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie-promise/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie/license (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pinkie/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/pluralize/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/pluralize/Readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/pluralize/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pluralize/pluralize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/lib/Func.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/lib/List.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/lib/Num.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/lib/Obj.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/lib/Str.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/prelude-ls/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/process-nextick-args/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/process-nextick-args/license.md (100%) rename tools/{ => node_modules}/eslint/node_modules/process-nextick-args/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/process-nextick-args/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/progress/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/progress/Makefile (100%) rename tools/{ => node_modules}/eslint/node_modules/progress/Readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/progress/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/progress/lib/node-progress.js (100%) rename tools/{ => node_modules}/eslint/node_modules/progress/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pseudomap/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/pseudomap/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/pseudomap/map.js (100%) rename tools/{ => node_modules}/eslint/node_modules/pseudomap/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/pseudomap/pseudomap.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/GOVERNANCE.md (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/duplex-browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/duplex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/_stream_duplex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/_stream_passthrough.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/_stream_readable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/_stream_transform.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/_stream_writable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/internal/streams/BufferList.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/internal/streams/destroy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/internal/streams/stream-browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/lib/internal/streams/stream.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/passthrough.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/readable-browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/readable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/transform.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/writable-browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/readable-stream/writable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/block-elements.json (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/decode.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/defaults.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/break.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/code-inline.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/delete.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/emphasis.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/escape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/link.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/strong.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/tag.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/locate/url.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/parse.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/parser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/set-options.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/auto-link.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/blockquote.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/break.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/code-fenced.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/code-indented.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/code-inline.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/definition.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/delete.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/emphasis.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/escape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/footnote-definition.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/heading-atx.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/heading-setext.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/html-block.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/link.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/list.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/newline.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/paragraph.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/reference.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/strong.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/table.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/text.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/thematic-break.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/url.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenize/yaml.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/tokenizer.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/unescape.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/util/get-indentation.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/util/html.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/util/interrupt.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/util/normalize.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/lib/util/remove-indentation.js (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/remark-parse/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/repeat-string/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/repeat-string/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/repeat-string/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/repeat-string/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/replace-ext/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/replace-ext/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/replace-ext/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/replace-ext/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/require-uncached/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/require-uncached/license (100%) rename tools/{ => node_modules}/eslint/node_modules/require-uncached/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/require-uncached/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/resolve-from/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/resolve-from/license (100%) rename tools/{ => node_modules}/eslint/node_modules/resolve-from/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/resolve-from/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/restore-cursor/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/restore-cursor/license (100%) rename tools/{ => node_modules}/eslint/node_modules/restore-cursor/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/restore-cursor/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/rimraf/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/rimraf/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/rimraf/bin.js (100%) rename tools/{ => node_modules}/eslint/node_modules/rimraf/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/rimraf/rimraf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/run-async/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/run-async/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/run-async/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/run-async/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite-aggregates/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite-aggregates/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.js (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.map (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite/rx.lite.js (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite/rx.lite.map (100%) rename tools/{ => node_modules}/eslint/node_modules/rx-lite/rx.lite.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/safe-buffer/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/safe-buffer/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/safe-buffer/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/safe-buffer/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/semver/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/semver/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/semver/bin/semver (100%) rename tools/{ => node_modules}/eslint/node_modules/semver/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/semver/range.bnf (100%) rename tools/{ => node_modules}/eslint/node_modules/semver/semver.js (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-command/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-command/license (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-command/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-command/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-regex/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-regex/license (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-regex/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/shebang-regex/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/signal-exit/LICENSE.txt (100%) rename tools/{ => node_modules}/eslint/node_modules/signal-exit/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/signal-exit/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/signal-exit/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/signal-exit/signals.js (100%) rename tools/{ => node_modules}/eslint/node_modules/slice-ansi/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/slice-ansi/license (100%) rename tools/{ => node_modules}/eslint/node_modules/slice-ansi/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/slice-ansi/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js.map (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.map (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/dist/sprintf.min.js (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/dist/sprintf.min.js.map (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/dist/sprintf.min.map (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/src/angular-sprintf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/sprintf-js/src/sprintf.js (100%) rename tools/{ => node_modules}/eslint/node_modules/state-toggle/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/state-toggle/history.md (100%) rename tools/{ => node_modules}/eslint/node_modules/state-toggle/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/state-toggle/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/state-toggle/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/string-width/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/string-width/license (100%) rename tools/{ => node_modules}/eslint/node_modules/string-width/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/string-width/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/string_decoder/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/string_decoder/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/string_decoder/lib/string_decoder.js (100%) rename tools/{ => node_modules}/eslint/node_modules/string_decoder/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/license (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-ansi/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-json-comments/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-json-comments/license (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-json-comments/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/strip-json-comments/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/supports-color/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/supports-color/license (100%) rename tools/{ => node_modules}/eslint/node_modules/supports-color/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/supports-color/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/table/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/table/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/alignString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/alignTableData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/calculateCellHeight.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/calculateCellWidthIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/calculateMaximumColumnWidthIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/calculateRowHeightIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/createStream.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/drawBorder.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/drawRow.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/drawTable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/getBorderCharacters.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/makeConfig.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/makeStreamConfig.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/mapDataUsingRowHeightIndex.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/padTableData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/schemas/config.json (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/schemas/streamConfig.json (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/stringifyTableData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/table.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/truncateTableData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/validateConfig.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/validateStreamConfig.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/validateTableData.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/wrapString.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/dist/wrapWord.js (100%) rename tools/{ => node_modules}/eslint/node_modules/table/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/text-table/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/text-table/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/text-table/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/text-table/readme.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/through/LICENSE.APACHE2 (100%) rename tools/{ => node_modules}/eslint/node_modules/through/LICENSE.MIT (100%) rename tools/{ => node_modules}/eslint/node_modules/through/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/through/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/through/readme.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/trim-trailing-lines/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/trim-trailing-lines/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/trim-trailing-lines/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/trim-trailing-lines/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/trim/Makefile (100%) rename tools/{ => node_modules}/eslint/node_modules/trim/Readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/trim/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/trim/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/trough/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/trough/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/trough/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/trough/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/tryit/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/tryit/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/tryit/tryit.js (100%) rename tools/{ => node_modules}/eslint/node_modules/type-check/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/type-check/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/type-check/lib/check.js (100%) rename tools/{ => node_modules}/eslint/node_modules/type-check/lib/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/type-check/lib/parse-type.js (100%) rename tools/{ => node_modules}/eslint/node_modules/type-check/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/typedarray/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/typedarray/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/typedarray/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/typedarray/readme.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/unherit/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/unherit/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/unherit/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/unherit/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/unified/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/unified/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/unified/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/unified/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-is/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-is/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-is/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-is/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-remove-position/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-remove-position/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-remove-position/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-remove-position/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-stringify-position/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-stringify-position/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-stringify-position/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-stringify-position/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-visit/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-visit/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-visit/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/unist-util-visit/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/util-deprecate/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/util-deprecate/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/util-deprecate/browser.js (100%) rename tools/{ => node_modules}/eslint/node_modules/util-deprecate/node.js (100%) rename tools/{ => node_modules}/eslint/node_modules/util-deprecate/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-location/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-location/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-location/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-location/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-message/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-message/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-message/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile-message/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile/core.js (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/vfile/readme.md (100%) rename tools/{ => node_modules}/eslint/node_modules/which/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/which/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/which/bin/which (100%) rename tools/{ => node_modules}/eslint/node_modules/which/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/which/which.js (100%) rename tools/{ => node_modules}/eslint/node_modules/wordwrap/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/wordwrap/README.markdown (100%) rename tools/{ => node_modules}/eslint/node_modules/wordwrap/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/wordwrap/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/wrappy/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/wrappy/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/wrappy/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/wrappy/wrappy.js (100%) rename tools/{ => node_modules}/eslint/node_modules/write/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/write/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/write/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/write/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-function/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-function/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-function/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-function/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-string/LICENCE (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-string/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-string/index.js (100%) rename tools/{ => node_modules}/eslint/node_modules/x-is-string/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/xtend/LICENCE (100%) rename tools/{ => node_modules}/eslint/node_modules/xtend/Makefile (100%) rename tools/{ => node_modules}/eslint/node_modules/xtend/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/xtend/immutable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/xtend/mutable.js (100%) rename tools/{ => node_modules}/eslint/node_modules/xtend/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/yallist/LICENSE (100%) rename tools/{ => node_modules}/eslint/node_modules/yallist/README.md (100%) rename tools/{ => node_modules}/eslint/node_modules/yallist/iterator.js (100%) rename tools/{ => node_modules}/eslint/node_modules/yallist/package.json (100%) rename tools/{ => node_modules}/eslint/node_modules/yallist/yallist.js (100%) rename tools/{ => node_modules}/eslint/package.json (100%) diff --git a/.editorconfig b/.editorconfig index 1c1b4418547481..9eda3f95b66ab0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -36,5 +36,5 @@ end_of_line = ignore trim_trailing_whitespace = ignore charset = ignore -[{test/fixtures,deps,tools/eslint,tools/gyp,tools/icu,tools/msvs}/**] +[{test/fixtures,deps,tools/node_modules,tools/gyp,tools/icu,tools/msvs}/**] insert_final_newline = false diff --git a/.eslintignore b/.eslintignore index b9b743fb536cf5..27d1707084861f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,7 +3,7 @@ lib/punycode.js test/addons/??_* test/fixtures test/message/esm_display_syntax_error.mjs -tools/eslint +tools/node_modules tools/icu tools/remark-* node_modules diff --git a/.gitignore b/.gitignore index 40838bcc7fa8d7..0ff301ace3824d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ .* !deps/**/.* !test/fixtures/**/.* -!tools/eslint/**/.* +!tools/node_modules/**/.* !tools/doc/node_modules/**/.* !.editorconfig !.eslintignore diff --git a/LICENSE b/LICENSE index 5cb6d3a6f68d73..c0578539494b70 100644 --- a/LICENSE +++ b/LICENSE @@ -1038,7 +1038,7 @@ The externally maintained libraries used by Node.js are: OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -- ESLint, located at tools/eslint, is licensed as follows: +- ESLint, located at tools/node_modules/eslint, is licensed as follows: """ Copyright JS Foundation and other contributors, https://js.foundation diff --git a/Makefile b/Makefile index 3763c78e916bb0..cca7eccfa10681 100644 --- a/Makefile +++ b/Makefile @@ -914,7 +914,7 @@ $(TARBALL): release-only $(NODE_EXE) doc $(RM) -r $(TARNAME)/deps/openssl/openssl/{doc,demos,test} $(RM) -r $(TARNAME)/deps/zlib/contrib # too big, unused $(RM) -r $(TARNAME)/.{editorconfig,git*,mailmap} - $(RM) -r $(TARNAME)/tools/{eslint,eslint-rules,osx-pkg.pmdoc,pkgsrc,remark-cli,remark-preset-lint-node} + $(RM) -r $(TARNAME)/tools/{eslint-rules,node_modules,osx-pkg.pmdoc,pkgsrc,remark-cli,remark-preset-lint-node} $(RM) -r $(TARNAME)/tools/{osx-*,license-builder.sh,cpplint.py} $(RM) -r $(TARNAME)/test*.tap find $(TARNAME)/ -name ".eslint*" -maxdepth 2 | xargs $(RM) @@ -1116,7 +1116,7 @@ lint-md: endif LINT_JS_TARGETS = benchmark doc lib test tools -LINT_JS_CMD = tools/eslint/bin/eslint.js --cache \ +LINT_JS_CMD = tools/node_modules/eslint/bin/eslint.js --cache \ --rulesdir=tools/eslint-rules --ext=.js,.mjs,.md \ $(LINT_JS_TARGETS) @@ -1207,7 +1207,7 @@ cpplint: lint-cpp .PHONY: lint .PHONY: lint-ci -ifneq ("","$(wildcard tools/eslint/)") +ifneq ("","$(wildcard tools/node_modules/eslint/)") lint: ## Run JS, C++, MD and doc linters. @EXIT_STATUS=0 ; \ $(MAKE) lint-js || EXIT_STATUS=$$? ; \ diff --git a/doc/onboarding-extras.md b/doc/onboarding-extras.md index 9b00b2cecfcbb3..4d389376c98d20 100644 --- a/doc/onboarding-extras.md +++ b/doc/onboarding-extras.md @@ -2,45 +2,45 @@ ## Who to CC in issues -| Subsystem | Maintainers | -| --- | --- | -| `benchmark/*` | @nodejs/benchmarking, @mscdex | -| `bootstrap_node.js` | @fishrock123 | -| `doc/*`, `*.md` | @nodejs/documentation | -| `lib/assert` | @nodejs/testing | -| `lib/async_hooks` | @nodejs/async\_hooks for bugs/reviews (+ @nodejs/diagnostics for API) | -| `lib/buffer` | @nodejs/buffer | -| `lib/child_process` | @bnoordhuis, @cjihrig | -| `lib/cluster` | @bnoordhuis, @cjihrig, @mcollina | -| `lib/{crypto,tls,https}` | @nodejs/crypto | -| `lib/dgram` | @cjihrig, @mcollina | -| `lib/domains` | @misterdjules | -| `lib/fs`, `src/{fs,file}` | @nodejs/fs | -| `lib/{_}http{*}` | @nodejs/http | -| `lib/inspector.js`, `src/inspector_*` | @nodejs/v8-inspector | -| `lib/internal/url`, `src/node_url` | @nodejs/url | -| `lib/net` | @bnoordhuis, @indutny, @nodejs/streams | -| `lib/repl` | @addaleax, @fishrock123 | -| `lib/{_}stream{*}` | @nodejs/streams | -| `lib/timers` | @fishrock123, @misterdjules | -| `lib/util` | @bnoordhuis, @cjihrig, @evanlucas | -| `lib/zlib` | @addaleax, @bnoordhuis, @indutny | -| `src/async-wrap.*` | @nodejs/async\_hooks | -| `src/node_api.*` | @nodejs/n-api | -| `src/node_crypto.*` | @nodejs/crypto | -| `test/*` | @nodejs/testing | -| `tools/eslint`, `.eslintrc` | @not-an-aardvark, @silverwind, @trott | -| build | @nodejs/build | -| ES Modules | @bmeck, @Fishrock123, @guybedford, @MylesBorins, @targos | -| GYP | @nodejs/gyp | -| performance | @nodejs/performance | -| platform specific | @nodejs/platform-{aix,arm,freebsd,macos,ppc,smartos,s390,windows} | -| python code | @nodejs/python | -| upgrading c-ares | @jbergstroem | -| upgrading http-parser | @jbergstroem, @nodejs/http | -| upgrading libuv | @saghul | -| upgrading npm | @fishrock123, @MylesBorins | -| upgrading V8 | @nodejs/v8, @nodejs/post-mortem | +| Subsystem | Maintainers | +| --- | --- | +| `benchmark/*` | @nodejs/benchmarking, @mscdex | +| `bootstrap_node.js` | @fishrock123 | +| `doc/*`, `*.md` | @nodejs/documentation | +| `lib/assert` | @nodejs/testing | +| `lib/async_hooks` | @nodejs/async\_hooks for bugs/reviews (+ @nodejs/diagnostics for API) | +| `lib/buffer` | @nodejs/buffer | +| `lib/child_process` | @bnoordhuis, @cjihrig | +| `lib/cluster` | @bnoordhuis, @cjihrig, @mcollina | +| `lib/{crypto,tls,https}` | @nodejs/crypto | +| `lib/dgram` | @cjihrig, @mcollina | +| `lib/domains` | @misterdjules | +| `lib/fs`, `src/{fs,file}` | @nodejs/fs | +| `lib/{_}http{*}` | @nodejs/http | +| `lib/inspector.js`, `src/inspector_*` | @nodejs/v8-inspector | +| `lib/internal/url`, `src/node_url` | @nodejs/url | +| `lib/net` | @bnoordhuis, @indutny, @nodejs/streams | +| `lib/repl` | @addaleax, @fishrock123 | +| `lib/{_}stream{*}` | @nodejs/streams | +| `lib/timers` | @fishrock123, @misterdjules | +| `lib/util` | @bnoordhuis, @cjihrig, @evanlucas | +| `lib/zlib` | @addaleax, @bnoordhuis, @indutny | +| `src/async-wrap.*` | @nodejs/async\_hooks | +| `src/node_api.*` | @nodejs/n-api | +| `src/node_crypto.*` | @nodejs/crypto | +| `test/*` | @nodejs/testing | +| `tools/node_modules/eslint`, `.eslintrc` | @not-an-aardvark, @silverwind, @trott | +| build | @nodejs/build | +| ES Modules | @bmeck, @Fishrock123, @guybedford, @MylesBorins, @targos | +| GYP | @nodejs/gyp | +| performance | @nodejs/performance | +| platform specific | @nodejs/platform-{aix,arm,freebsd,macos,ppc,smartos,s390,windows} | +| python code | @nodejs/python | +| upgrading c-ares | @jbergstroem | +| upgrading http-parser | @jbergstroem, @nodejs/http | +| upgrading libuv | @saghul | +| upgrading npm | @fishrock123, @MylesBorins | +| upgrading V8 | @nodejs/v8, @nodejs/post-mortem | When things need extra attention, are controversial, or `semver-major`: @nodejs/tsc diff --git a/test/doctool/test-doctool-html.js b/test/doctool/test-doctool-html.js index 40d7b54f59320a..bd1c5ddecac321 100644 --- a/test/doctool/test-doctool-html.js +++ b/test/doctool/test-doctool-html.js @@ -1,9 +1,9 @@ 'use strict'; const common = require('../common'); -// The doctool currently uses js-yaml from the tool/eslint/ tree. +// The doctool currently uses js-yaml from the tool/node_modules/eslint/ tree. try { - require('../../tools/eslint/node_modules/js-yaml'); + require('../../tools/node_modules/eslint/node_modules/js-yaml'); } catch (e) { common.skip('missing js-yaml (eslint not present)'); } diff --git a/test/parallel/test-eslint-alphabetize-errors.js b/test/parallel/test-eslint-alphabetize-errors.js index 83c73fc78c8486..220f09d54eb69e 100644 --- a/test/parallel/test-eslint-alphabetize-errors.js +++ b/test/parallel/test-eslint-alphabetize-errors.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/alphabetize-errors'); new RuleTester().run('alphabetize-errors', rule, { diff --git a/test/parallel/test-eslint-buffer-constructor.js b/test/parallel/test-eslint-buffer-constructor.js index dfff1374c1b9c0..6b9254f9379b06 100644 --- a/test/parallel/test-eslint-buffer-constructor.js +++ b/test/parallel/test-eslint-buffer-constructor.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/buffer-constructor'); const message = 'Use of the Buffer() constructor has been deprecated. ' + diff --git a/test/parallel/test-eslint-crypto-check.js b/test/parallel/test-eslint-crypto-check.js index 102560e78ecee7..325fb7a057c98b 100644 --- a/test/parallel/test-eslint-crypto-check.js +++ b/test/parallel/test-eslint-crypto-check.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/crypto-check'); const message = 'Please add a hasCrypto check to allow this test to be ' + diff --git a/test/parallel/test-eslint-documented-errors.js b/test/parallel/test-eslint-documented-errors.js index 94e81ff3abaecc..50c92acd151215 100644 --- a/test/parallel/test-eslint-documented-errors.js +++ b/test/parallel/test-eslint-documented-errors.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/documented-errors'); const invalidCode = 'UNDOCUMENTED ERROR CODE'; diff --git a/test/parallel/test-eslint-inspector-check.js b/test/parallel/test-eslint-inspector-check.js index 20774284abccdd..ab8314b63818c7 100644 --- a/test/parallel/test-eslint-inspector-check.js +++ b/test/parallel/test-eslint-inspector-check.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/inspector-check'); const message = 'Please add a skipIfInspectorDisabled() call to allow this ' + diff --git a/test/parallel/test-eslint-lowercase-name-for-primitive.js b/test/parallel/test-eslint-lowercase-name-for-primitive.js index 3eb0d838346865..3449095d6639f9 100644 --- a/test/parallel/test-eslint-lowercase-name-for-primitive.js +++ b/test/parallel/test-eslint-lowercase-name-for-primitive.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/lowercase-name-for-primitive'); const valid = [ diff --git a/test/parallel/test-eslint-no-let-in-for-declaration.js b/test/parallel/test-eslint-no-let-in-for-declaration.js index c3c1e17a729252..ea5b681854621c 100644 --- a/test/parallel/test-eslint-no-let-in-for-declaration.js +++ b/test/parallel/test-eslint-no-let-in-for-declaration.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/no-let-in-for-declaration'); const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } }); diff --git a/test/parallel/test-eslint-no-unescaped-regexp-dot.js b/test/parallel/test-eslint-no-unescaped-regexp-dot.js index 5dbd355e71f47d..38a9f3efcc6ff5 100644 --- a/test/parallel/test-eslint-no-unescaped-regexp-dot.js +++ b/test/parallel/test-eslint-no-unescaped-regexp-dot.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/no-unescaped-regexp-dot'); new RuleTester().run('no-unescaped-regexp-dot', rule, { diff --git a/test/parallel/test-eslint-number-isnan.js b/test/parallel/test-eslint-number-isnan.js index deeac48bcccb68..9f6af407e469a6 100644 --- a/test/parallel/test-eslint-number-isnan.js +++ b/test/parallel/test-eslint-number-isnan.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/number-isnan'); const message = 'Please use Number.isNaN instead of the global isNaN function'; diff --git a/test/parallel/test-eslint-prefer-assert-iferror.js b/test/parallel/test-eslint-prefer-assert-iferror.js index 00df47975b8007..6e577b1fc35ace 100644 --- a/test/parallel/test-eslint-prefer-assert-iferror.js +++ b/test/parallel/test-eslint-prefer-assert-iferror.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/prefer-assert-iferror'); new RuleTester().run('prefer-assert-iferror', rule, { diff --git a/test/parallel/test-eslint-prefer-assert-methods.js b/test/parallel/test-eslint-prefer-assert-methods.js index 2129c083224f0e..57596132d88ec3 100644 --- a/test/parallel/test-eslint-prefer-assert-methods.js +++ b/test/parallel/test-eslint-prefer-assert-methods.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/prefer-assert-methods'); new RuleTester().run('prefer-assert-methods', rule, { diff --git a/test/parallel/test-eslint-prefer-common-expectserror.js b/test/parallel/test-eslint-prefer-common-expectserror.js index 16ce66bc24e644..1fe7b1bc9761ac 100644 --- a/test/parallel/test-eslint-prefer-common-expectserror.js +++ b/test/parallel/test-eslint-prefer-common-expectserror.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/prefer-common-expectserror'); const message = 'Please use common.expectsError(fn, err) instead of ' + diff --git a/test/parallel/test-eslint-prefer-common-mustnotcall.js b/test/parallel/test-eslint-prefer-common-mustnotcall.js index 848e762ce38ff2..c2e298cde2153c 100644 --- a/test/parallel/test-eslint-prefer-common-mustnotcall.js +++ b/test/parallel/test-eslint-prefer-common-mustnotcall.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/prefer-common-mustnotcall'); const message = 'Please use common.mustNotCall(msg) instead of ' + diff --git a/test/parallel/test-eslint-prefer-util-format-errors.js b/test/parallel/test-eslint-prefer-util-format-errors.js index 265a0752c50d43..7ccbb8a1335dfa 100644 --- a/test/parallel/test-eslint-prefer-util-format-errors.js +++ b/test/parallel/test-eslint-prefer-util-format-errors.js @@ -4,7 +4,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/prefer-util-format-errors'); new RuleTester({ parserOptions: { ecmaVersion: 6 } }) diff --git a/test/parallel/test-eslint-require-buffer.js b/test/parallel/test-eslint-require-buffer.js index 282f983c782d4e..23bf7c0afa05dd 100644 --- a/test/parallel/test-eslint-require-buffer.js +++ b/test/parallel/test-eslint-require-buffer.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/require-buffer'); const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 }, diff --git a/test/parallel/test-eslint-required-modules.js b/test/parallel/test-eslint-required-modules.js index 8203cd0d0a0317..1ef96521ec7037 100644 --- a/test/parallel/test-eslint-required-modules.js +++ b/test/parallel/test-eslint-required-modules.js @@ -2,7 +2,7 @@ require('../common'); -const RuleTester = require('../../tools/eslint').RuleTester; +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; const rule = require('../../tools/eslint-rules/required-modules'); new RuleTester().run('required-modules', rule, { diff --git a/tools/doc/node_modules/js-yaml/index.js b/tools/doc/node_modules/js-yaml/index.js index 620bc293ffe032..476b3a0d487c4a 100644 --- a/tools/doc/node_modules/js-yaml/index.js +++ b/tools/doc/node_modules/js-yaml/index.js @@ -7,6 +7,7 @@ const path = require('path'); const realJSYaml = path.resolve( __dirname, '..', '..', '..', // tools/ + 'node_modules', 'eslint', 'node_modules', 'js-yaml' diff --git a/tools/license-builder.sh b/tools/license-builder.sh index 39b0a15b2b273e..dcd10e270c8bbb 100755 --- a/tools/license-builder.sh +++ b/tools/license-builder.sh @@ -76,7 +76,7 @@ addlicense "marked" "tools/doc/node_modules/marked" \ # Testing tools addlicense "cpplint.py" "tools/cpplint.py" \ "$(sed -e '/^$/,$d' -e 's/^#$//' -e 's/^# //' ${rootdir}/tools/cpplint.py | tail -n +3)" -addlicense "ESLint" "tools/eslint" "$(cat ${rootdir}/tools/eslint/LICENSE)" +addlicense "ESLint" "tools/node_modules/eslint" "$(cat ${rootdir}/tools/node_modules/eslint/LICENSE)" addlicense "gtest" "deps/gtest" "$(cat ${rootdir}/deps/gtest/LICENSE)" # nghttp2 diff --git a/tools/lint-js.js b/tools/lint-js.js index a22fb9439c7e06..69e5dd10e1a23a 100644 --- a/tools/lint-js.js +++ b/tools/lint-js.js @@ -10,8 +10,8 @@ const path = require('path'); const fs = require('fs'); const totalCPUs = require('os').cpus().length; -const CLIEngine = require('./eslint').CLIEngine; -const glob = require('./eslint/node_modules/glob'); +const CLIEngine = require('eslint').CLIEngine; +const glob = require('eslint/node_modules/glob'); const cliOptions = { rulePaths: rulesDirs, diff --git a/tools/eslint/LICENSE b/tools/node_modules/eslint/LICENSE similarity index 100% rename from tools/eslint/LICENSE rename to tools/node_modules/eslint/LICENSE diff --git a/tools/eslint/README.md b/tools/node_modules/eslint/README.md similarity index 100% rename from tools/eslint/README.md rename to tools/node_modules/eslint/README.md diff --git a/tools/eslint/bin/eslint.js b/tools/node_modules/eslint/bin/eslint.js similarity index 100% rename from tools/eslint/bin/eslint.js rename to tools/node_modules/eslint/bin/eslint.js diff --git a/tools/eslint/conf/blank-script.json b/tools/node_modules/eslint/conf/blank-script.json similarity index 100% rename from tools/eslint/conf/blank-script.json rename to tools/node_modules/eslint/conf/blank-script.json diff --git a/tools/eslint/conf/category-list.json b/tools/node_modules/eslint/conf/category-list.json similarity index 100% rename from tools/eslint/conf/category-list.json rename to tools/node_modules/eslint/conf/category-list.json diff --git a/tools/eslint/conf/config-schema.js b/tools/node_modules/eslint/conf/config-schema.js similarity index 100% rename from tools/eslint/conf/config-schema.js rename to tools/node_modules/eslint/conf/config-schema.js diff --git a/tools/eslint/conf/default-cli-options.js b/tools/node_modules/eslint/conf/default-cli-options.js similarity index 100% rename from tools/eslint/conf/default-cli-options.js rename to tools/node_modules/eslint/conf/default-cli-options.js diff --git a/tools/eslint/conf/default-config-options.js b/tools/node_modules/eslint/conf/default-config-options.js similarity index 100% rename from tools/eslint/conf/default-config-options.js rename to tools/node_modules/eslint/conf/default-config-options.js diff --git a/tools/eslint/conf/environments.js b/tools/node_modules/eslint/conf/environments.js similarity index 100% rename from tools/eslint/conf/environments.js rename to tools/node_modules/eslint/conf/environments.js diff --git a/tools/eslint/conf/eslint-all.js b/tools/node_modules/eslint/conf/eslint-all.js similarity index 100% rename from tools/eslint/conf/eslint-all.js rename to tools/node_modules/eslint/conf/eslint-all.js diff --git a/tools/eslint/conf/eslint-recommended.js b/tools/node_modules/eslint/conf/eslint-recommended.js similarity index 100% rename from tools/eslint/conf/eslint-recommended.js rename to tools/node_modules/eslint/conf/eslint-recommended.js diff --git a/tools/eslint/conf/replacements.json b/tools/node_modules/eslint/conf/replacements.json similarity index 100% rename from tools/eslint/conf/replacements.json rename to tools/node_modules/eslint/conf/replacements.json diff --git a/tools/eslint/lib/api.js b/tools/node_modules/eslint/lib/api.js similarity index 100% rename from tools/eslint/lib/api.js rename to tools/node_modules/eslint/lib/api.js diff --git a/tools/eslint/lib/ast-utils.js b/tools/node_modules/eslint/lib/ast-utils.js similarity index 100% rename from tools/eslint/lib/ast-utils.js rename to tools/node_modules/eslint/lib/ast-utils.js diff --git a/tools/eslint/lib/cli-engine.js b/tools/node_modules/eslint/lib/cli-engine.js similarity index 100% rename from tools/eslint/lib/cli-engine.js rename to tools/node_modules/eslint/lib/cli-engine.js diff --git a/tools/eslint/lib/cli.js b/tools/node_modules/eslint/lib/cli.js similarity index 100% rename from tools/eslint/lib/cli.js rename to tools/node_modules/eslint/lib/cli.js diff --git a/tools/eslint/lib/code-path-analysis/code-path-analyzer.js b/tools/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/code-path-analyzer.js rename to tools/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js diff --git a/tools/eslint/lib/code-path-analysis/code-path-segment.js b/tools/node_modules/eslint/lib/code-path-analysis/code-path-segment.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/code-path-segment.js rename to tools/node_modules/eslint/lib/code-path-analysis/code-path-segment.js diff --git a/tools/eslint/lib/code-path-analysis/code-path-state.js b/tools/node_modules/eslint/lib/code-path-analysis/code-path-state.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/code-path-state.js rename to tools/node_modules/eslint/lib/code-path-analysis/code-path-state.js diff --git a/tools/eslint/lib/code-path-analysis/code-path.js b/tools/node_modules/eslint/lib/code-path-analysis/code-path.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/code-path.js rename to tools/node_modules/eslint/lib/code-path-analysis/code-path.js diff --git a/tools/eslint/lib/code-path-analysis/debug-helpers.js b/tools/node_modules/eslint/lib/code-path-analysis/debug-helpers.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/debug-helpers.js rename to tools/node_modules/eslint/lib/code-path-analysis/debug-helpers.js diff --git a/tools/eslint/lib/code-path-analysis/fork-context.js b/tools/node_modules/eslint/lib/code-path-analysis/fork-context.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/fork-context.js rename to tools/node_modules/eslint/lib/code-path-analysis/fork-context.js diff --git a/tools/eslint/lib/code-path-analysis/id-generator.js b/tools/node_modules/eslint/lib/code-path-analysis/id-generator.js similarity index 100% rename from tools/eslint/lib/code-path-analysis/id-generator.js rename to tools/node_modules/eslint/lib/code-path-analysis/id-generator.js diff --git a/tools/eslint/lib/config.js b/tools/node_modules/eslint/lib/config.js similarity index 100% rename from tools/eslint/lib/config.js rename to tools/node_modules/eslint/lib/config.js diff --git a/tools/eslint/lib/config/autoconfig.js b/tools/node_modules/eslint/lib/config/autoconfig.js similarity index 100% rename from tools/eslint/lib/config/autoconfig.js rename to tools/node_modules/eslint/lib/config/autoconfig.js diff --git a/tools/eslint/lib/config/config-cache.js b/tools/node_modules/eslint/lib/config/config-cache.js similarity index 100% rename from tools/eslint/lib/config/config-cache.js rename to tools/node_modules/eslint/lib/config/config-cache.js diff --git a/tools/eslint/lib/config/config-file.js b/tools/node_modules/eslint/lib/config/config-file.js similarity index 100% rename from tools/eslint/lib/config/config-file.js rename to tools/node_modules/eslint/lib/config/config-file.js diff --git a/tools/eslint/lib/config/config-initializer.js b/tools/node_modules/eslint/lib/config/config-initializer.js similarity index 100% rename from tools/eslint/lib/config/config-initializer.js rename to tools/node_modules/eslint/lib/config/config-initializer.js diff --git a/tools/eslint/lib/config/config-ops.js b/tools/node_modules/eslint/lib/config/config-ops.js similarity index 100% rename from tools/eslint/lib/config/config-ops.js rename to tools/node_modules/eslint/lib/config/config-ops.js diff --git a/tools/eslint/lib/config/config-rule.js b/tools/node_modules/eslint/lib/config/config-rule.js similarity index 100% rename from tools/eslint/lib/config/config-rule.js rename to tools/node_modules/eslint/lib/config/config-rule.js diff --git a/tools/eslint/lib/config/config-validator.js b/tools/node_modules/eslint/lib/config/config-validator.js similarity index 100% rename from tools/eslint/lib/config/config-validator.js rename to tools/node_modules/eslint/lib/config/config-validator.js diff --git a/tools/eslint/lib/config/environments.js b/tools/node_modules/eslint/lib/config/environments.js similarity index 100% rename from tools/eslint/lib/config/environments.js rename to tools/node_modules/eslint/lib/config/environments.js diff --git a/tools/eslint/lib/config/plugins.js b/tools/node_modules/eslint/lib/config/plugins.js similarity index 100% rename from tools/eslint/lib/config/plugins.js rename to tools/node_modules/eslint/lib/config/plugins.js diff --git a/tools/eslint/lib/file-finder.js b/tools/node_modules/eslint/lib/file-finder.js similarity index 100% rename from tools/eslint/lib/file-finder.js rename to tools/node_modules/eslint/lib/file-finder.js diff --git a/tools/eslint/lib/formatters/checkstyle.js b/tools/node_modules/eslint/lib/formatters/checkstyle.js similarity index 100% rename from tools/eslint/lib/formatters/checkstyle.js rename to tools/node_modules/eslint/lib/formatters/checkstyle.js diff --git a/tools/eslint/lib/formatters/codeframe.js b/tools/node_modules/eslint/lib/formatters/codeframe.js similarity index 100% rename from tools/eslint/lib/formatters/codeframe.js rename to tools/node_modules/eslint/lib/formatters/codeframe.js diff --git a/tools/eslint/lib/formatters/compact.js b/tools/node_modules/eslint/lib/formatters/compact.js similarity index 100% rename from tools/eslint/lib/formatters/compact.js rename to tools/node_modules/eslint/lib/formatters/compact.js diff --git a/tools/eslint/lib/formatters/html-template-message.html b/tools/node_modules/eslint/lib/formatters/html-template-message.html similarity index 100% rename from tools/eslint/lib/formatters/html-template-message.html rename to tools/node_modules/eslint/lib/formatters/html-template-message.html diff --git a/tools/eslint/lib/formatters/html-template-page.html b/tools/node_modules/eslint/lib/formatters/html-template-page.html similarity index 100% rename from tools/eslint/lib/formatters/html-template-page.html rename to tools/node_modules/eslint/lib/formatters/html-template-page.html diff --git a/tools/eslint/lib/formatters/html-template-result.html b/tools/node_modules/eslint/lib/formatters/html-template-result.html similarity index 100% rename from tools/eslint/lib/formatters/html-template-result.html rename to tools/node_modules/eslint/lib/formatters/html-template-result.html diff --git a/tools/eslint/lib/formatters/html.js b/tools/node_modules/eslint/lib/formatters/html.js similarity index 100% rename from tools/eslint/lib/formatters/html.js rename to tools/node_modules/eslint/lib/formatters/html.js diff --git a/tools/eslint/lib/formatters/jslint-xml.js b/tools/node_modules/eslint/lib/formatters/jslint-xml.js similarity index 100% rename from tools/eslint/lib/formatters/jslint-xml.js rename to tools/node_modules/eslint/lib/formatters/jslint-xml.js diff --git a/tools/eslint/lib/formatters/json.js b/tools/node_modules/eslint/lib/formatters/json.js similarity index 100% rename from tools/eslint/lib/formatters/json.js rename to tools/node_modules/eslint/lib/formatters/json.js diff --git a/tools/eslint/lib/formatters/junit.js b/tools/node_modules/eslint/lib/formatters/junit.js similarity index 100% rename from tools/eslint/lib/formatters/junit.js rename to tools/node_modules/eslint/lib/formatters/junit.js diff --git a/tools/eslint/lib/formatters/stylish.js b/tools/node_modules/eslint/lib/formatters/stylish.js similarity index 100% rename from tools/eslint/lib/formatters/stylish.js rename to tools/node_modules/eslint/lib/formatters/stylish.js diff --git a/tools/eslint/lib/formatters/table.js b/tools/node_modules/eslint/lib/formatters/table.js similarity index 100% rename from tools/eslint/lib/formatters/table.js rename to tools/node_modules/eslint/lib/formatters/table.js diff --git a/tools/eslint/lib/formatters/tap.js b/tools/node_modules/eslint/lib/formatters/tap.js similarity index 100% rename from tools/eslint/lib/formatters/tap.js rename to tools/node_modules/eslint/lib/formatters/tap.js diff --git a/tools/eslint/lib/formatters/unix.js b/tools/node_modules/eslint/lib/formatters/unix.js similarity index 100% rename from tools/eslint/lib/formatters/unix.js rename to tools/node_modules/eslint/lib/formatters/unix.js diff --git a/tools/eslint/lib/formatters/visualstudio.js b/tools/node_modules/eslint/lib/formatters/visualstudio.js similarity index 100% rename from tools/eslint/lib/formatters/visualstudio.js rename to tools/node_modules/eslint/lib/formatters/visualstudio.js diff --git a/tools/eslint/lib/ignored-paths.js b/tools/node_modules/eslint/lib/ignored-paths.js similarity index 100% rename from tools/eslint/lib/ignored-paths.js rename to tools/node_modules/eslint/lib/ignored-paths.js diff --git a/tools/eslint/lib/linter.js b/tools/node_modules/eslint/lib/linter.js similarity index 100% rename from tools/eslint/lib/linter.js rename to tools/node_modules/eslint/lib/linter.js diff --git a/tools/eslint/lib/load-rules.js b/tools/node_modules/eslint/lib/load-rules.js similarity index 100% rename from tools/eslint/lib/load-rules.js rename to tools/node_modules/eslint/lib/load-rules.js diff --git a/tools/eslint/lib/logging.js b/tools/node_modules/eslint/lib/logging.js similarity index 100% rename from tools/eslint/lib/logging.js rename to tools/node_modules/eslint/lib/logging.js diff --git a/tools/eslint/lib/options.js b/tools/node_modules/eslint/lib/options.js similarity index 100% rename from tools/eslint/lib/options.js rename to tools/node_modules/eslint/lib/options.js diff --git a/tools/eslint/lib/report-translator.js b/tools/node_modules/eslint/lib/report-translator.js similarity index 100% rename from tools/eslint/lib/report-translator.js rename to tools/node_modules/eslint/lib/report-translator.js diff --git a/tools/eslint/lib/rules.js b/tools/node_modules/eslint/lib/rules.js similarity index 100% rename from tools/eslint/lib/rules.js rename to tools/node_modules/eslint/lib/rules.js diff --git a/tools/eslint/lib/rules/.eslintrc.yml b/tools/node_modules/eslint/lib/rules/.eslintrc.yml similarity index 100% rename from tools/eslint/lib/rules/.eslintrc.yml rename to tools/node_modules/eslint/lib/rules/.eslintrc.yml diff --git a/tools/eslint/lib/rules/accessor-pairs.js b/tools/node_modules/eslint/lib/rules/accessor-pairs.js similarity index 100% rename from tools/eslint/lib/rules/accessor-pairs.js rename to tools/node_modules/eslint/lib/rules/accessor-pairs.js diff --git a/tools/eslint/lib/rules/array-bracket-newline.js b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js similarity index 100% rename from tools/eslint/lib/rules/array-bracket-newline.js rename to tools/node_modules/eslint/lib/rules/array-bracket-newline.js diff --git a/tools/eslint/lib/rules/array-bracket-spacing.js b/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js similarity index 100% rename from tools/eslint/lib/rules/array-bracket-spacing.js rename to tools/node_modules/eslint/lib/rules/array-bracket-spacing.js diff --git a/tools/eslint/lib/rules/array-callback-return.js b/tools/node_modules/eslint/lib/rules/array-callback-return.js similarity index 100% rename from tools/eslint/lib/rules/array-callback-return.js rename to tools/node_modules/eslint/lib/rules/array-callback-return.js diff --git a/tools/eslint/lib/rules/array-element-newline.js b/tools/node_modules/eslint/lib/rules/array-element-newline.js similarity index 100% rename from tools/eslint/lib/rules/array-element-newline.js rename to tools/node_modules/eslint/lib/rules/array-element-newline.js diff --git a/tools/eslint/lib/rules/arrow-body-style.js b/tools/node_modules/eslint/lib/rules/arrow-body-style.js similarity index 100% rename from tools/eslint/lib/rules/arrow-body-style.js rename to tools/node_modules/eslint/lib/rules/arrow-body-style.js diff --git a/tools/eslint/lib/rules/arrow-parens.js b/tools/node_modules/eslint/lib/rules/arrow-parens.js similarity index 100% rename from tools/eslint/lib/rules/arrow-parens.js rename to tools/node_modules/eslint/lib/rules/arrow-parens.js diff --git a/tools/eslint/lib/rules/arrow-spacing.js b/tools/node_modules/eslint/lib/rules/arrow-spacing.js similarity index 100% rename from tools/eslint/lib/rules/arrow-spacing.js rename to tools/node_modules/eslint/lib/rules/arrow-spacing.js diff --git a/tools/eslint/lib/rules/block-scoped-var.js b/tools/node_modules/eslint/lib/rules/block-scoped-var.js similarity index 100% rename from tools/eslint/lib/rules/block-scoped-var.js rename to tools/node_modules/eslint/lib/rules/block-scoped-var.js diff --git a/tools/eslint/lib/rules/block-spacing.js b/tools/node_modules/eslint/lib/rules/block-spacing.js similarity index 100% rename from tools/eslint/lib/rules/block-spacing.js rename to tools/node_modules/eslint/lib/rules/block-spacing.js diff --git a/tools/eslint/lib/rules/brace-style.js b/tools/node_modules/eslint/lib/rules/brace-style.js similarity index 100% rename from tools/eslint/lib/rules/brace-style.js rename to tools/node_modules/eslint/lib/rules/brace-style.js diff --git a/tools/eslint/lib/rules/callback-return.js b/tools/node_modules/eslint/lib/rules/callback-return.js similarity index 100% rename from tools/eslint/lib/rules/callback-return.js rename to tools/node_modules/eslint/lib/rules/callback-return.js diff --git a/tools/eslint/lib/rules/camelcase.js b/tools/node_modules/eslint/lib/rules/camelcase.js similarity index 100% rename from tools/eslint/lib/rules/camelcase.js rename to tools/node_modules/eslint/lib/rules/camelcase.js diff --git a/tools/eslint/lib/rules/capitalized-comments.js b/tools/node_modules/eslint/lib/rules/capitalized-comments.js similarity index 100% rename from tools/eslint/lib/rules/capitalized-comments.js rename to tools/node_modules/eslint/lib/rules/capitalized-comments.js diff --git a/tools/eslint/lib/rules/class-methods-use-this.js b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js similarity index 100% rename from tools/eslint/lib/rules/class-methods-use-this.js rename to tools/node_modules/eslint/lib/rules/class-methods-use-this.js diff --git a/tools/eslint/lib/rules/comma-dangle.js b/tools/node_modules/eslint/lib/rules/comma-dangle.js similarity index 100% rename from tools/eslint/lib/rules/comma-dangle.js rename to tools/node_modules/eslint/lib/rules/comma-dangle.js diff --git a/tools/eslint/lib/rules/comma-spacing.js b/tools/node_modules/eslint/lib/rules/comma-spacing.js similarity index 100% rename from tools/eslint/lib/rules/comma-spacing.js rename to tools/node_modules/eslint/lib/rules/comma-spacing.js diff --git a/tools/eslint/lib/rules/comma-style.js b/tools/node_modules/eslint/lib/rules/comma-style.js similarity index 100% rename from tools/eslint/lib/rules/comma-style.js rename to tools/node_modules/eslint/lib/rules/comma-style.js diff --git a/tools/eslint/lib/rules/complexity.js b/tools/node_modules/eslint/lib/rules/complexity.js similarity index 100% rename from tools/eslint/lib/rules/complexity.js rename to tools/node_modules/eslint/lib/rules/complexity.js diff --git a/tools/eslint/lib/rules/computed-property-spacing.js b/tools/node_modules/eslint/lib/rules/computed-property-spacing.js similarity index 100% rename from tools/eslint/lib/rules/computed-property-spacing.js rename to tools/node_modules/eslint/lib/rules/computed-property-spacing.js diff --git a/tools/eslint/lib/rules/consistent-return.js b/tools/node_modules/eslint/lib/rules/consistent-return.js similarity index 100% rename from tools/eslint/lib/rules/consistent-return.js rename to tools/node_modules/eslint/lib/rules/consistent-return.js diff --git a/tools/eslint/lib/rules/consistent-this.js b/tools/node_modules/eslint/lib/rules/consistent-this.js similarity index 100% rename from tools/eslint/lib/rules/consistent-this.js rename to tools/node_modules/eslint/lib/rules/consistent-this.js diff --git a/tools/eslint/lib/rules/constructor-super.js b/tools/node_modules/eslint/lib/rules/constructor-super.js similarity index 100% rename from tools/eslint/lib/rules/constructor-super.js rename to tools/node_modules/eslint/lib/rules/constructor-super.js diff --git a/tools/eslint/lib/rules/curly.js b/tools/node_modules/eslint/lib/rules/curly.js similarity index 100% rename from tools/eslint/lib/rules/curly.js rename to tools/node_modules/eslint/lib/rules/curly.js diff --git a/tools/eslint/lib/rules/default-case.js b/tools/node_modules/eslint/lib/rules/default-case.js similarity index 100% rename from tools/eslint/lib/rules/default-case.js rename to tools/node_modules/eslint/lib/rules/default-case.js diff --git a/tools/eslint/lib/rules/dot-location.js b/tools/node_modules/eslint/lib/rules/dot-location.js similarity index 100% rename from tools/eslint/lib/rules/dot-location.js rename to tools/node_modules/eslint/lib/rules/dot-location.js diff --git a/tools/eslint/lib/rules/dot-notation.js b/tools/node_modules/eslint/lib/rules/dot-notation.js similarity index 100% rename from tools/eslint/lib/rules/dot-notation.js rename to tools/node_modules/eslint/lib/rules/dot-notation.js diff --git a/tools/eslint/lib/rules/eol-last.js b/tools/node_modules/eslint/lib/rules/eol-last.js similarity index 100% rename from tools/eslint/lib/rules/eol-last.js rename to tools/node_modules/eslint/lib/rules/eol-last.js diff --git a/tools/eslint/lib/rules/eqeqeq.js b/tools/node_modules/eslint/lib/rules/eqeqeq.js similarity index 100% rename from tools/eslint/lib/rules/eqeqeq.js rename to tools/node_modules/eslint/lib/rules/eqeqeq.js diff --git a/tools/eslint/lib/rules/for-direction.js b/tools/node_modules/eslint/lib/rules/for-direction.js similarity index 100% rename from tools/eslint/lib/rules/for-direction.js rename to tools/node_modules/eslint/lib/rules/for-direction.js diff --git a/tools/eslint/lib/rules/func-call-spacing.js b/tools/node_modules/eslint/lib/rules/func-call-spacing.js similarity index 100% rename from tools/eslint/lib/rules/func-call-spacing.js rename to tools/node_modules/eslint/lib/rules/func-call-spacing.js diff --git a/tools/eslint/lib/rules/func-name-matching.js b/tools/node_modules/eslint/lib/rules/func-name-matching.js similarity index 100% rename from tools/eslint/lib/rules/func-name-matching.js rename to tools/node_modules/eslint/lib/rules/func-name-matching.js diff --git a/tools/eslint/lib/rules/func-names.js b/tools/node_modules/eslint/lib/rules/func-names.js similarity index 100% rename from tools/eslint/lib/rules/func-names.js rename to tools/node_modules/eslint/lib/rules/func-names.js diff --git a/tools/eslint/lib/rules/func-style.js b/tools/node_modules/eslint/lib/rules/func-style.js similarity index 100% rename from tools/eslint/lib/rules/func-style.js rename to tools/node_modules/eslint/lib/rules/func-style.js diff --git a/tools/eslint/lib/rules/function-paren-newline.js b/tools/node_modules/eslint/lib/rules/function-paren-newline.js similarity index 100% rename from tools/eslint/lib/rules/function-paren-newline.js rename to tools/node_modules/eslint/lib/rules/function-paren-newline.js diff --git a/tools/eslint/lib/rules/generator-star-spacing.js b/tools/node_modules/eslint/lib/rules/generator-star-spacing.js similarity index 100% rename from tools/eslint/lib/rules/generator-star-spacing.js rename to tools/node_modules/eslint/lib/rules/generator-star-spacing.js diff --git a/tools/eslint/lib/rules/getter-return.js b/tools/node_modules/eslint/lib/rules/getter-return.js similarity index 100% rename from tools/eslint/lib/rules/getter-return.js rename to tools/node_modules/eslint/lib/rules/getter-return.js diff --git a/tools/eslint/lib/rules/global-require.js b/tools/node_modules/eslint/lib/rules/global-require.js similarity index 100% rename from tools/eslint/lib/rules/global-require.js rename to tools/node_modules/eslint/lib/rules/global-require.js diff --git a/tools/eslint/lib/rules/guard-for-in.js b/tools/node_modules/eslint/lib/rules/guard-for-in.js similarity index 100% rename from tools/eslint/lib/rules/guard-for-in.js rename to tools/node_modules/eslint/lib/rules/guard-for-in.js diff --git a/tools/eslint/lib/rules/handle-callback-err.js b/tools/node_modules/eslint/lib/rules/handle-callback-err.js similarity index 100% rename from tools/eslint/lib/rules/handle-callback-err.js rename to tools/node_modules/eslint/lib/rules/handle-callback-err.js diff --git a/tools/eslint/lib/rules/id-blacklist.js b/tools/node_modules/eslint/lib/rules/id-blacklist.js similarity index 100% rename from tools/eslint/lib/rules/id-blacklist.js rename to tools/node_modules/eslint/lib/rules/id-blacklist.js diff --git a/tools/eslint/lib/rules/id-length.js b/tools/node_modules/eslint/lib/rules/id-length.js similarity index 100% rename from tools/eslint/lib/rules/id-length.js rename to tools/node_modules/eslint/lib/rules/id-length.js diff --git a/tools/eslint/lib/rules/id-match.js b/tools/node_modules/eslint/lib/rules/id-match.js similarity index 100% rename from tools/eslint/lib/rules/id-match.js rename to tools/node_modules/eslint/lib/rules/id-match.js diff --git a/tools/eslint/lib/rules/implicit-arrow-linebreak.js b/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js similarity index 100% rename from tools/eslint/lib/rules/implicit-arrow-linebreak.js rename to tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js diff --git a/tools/eslint/lib/rules/indent-legacy.js b/tools/node_modules/eslint/lib/rules/indent-legacy.js similarity index 100% rename from tools/eslint/lib/rules/indent-legacy.js rename to tools/node_modules/eslint/lib/rules/indent-legacy.js diff --git a/tools/eslint/lib/rules/indent.js b/tools/node_modules/eslint/lib/rules/indent.js similarity index 100% rename from tools/eslint/lib/rules/indent.js rename to tools/node_modules/eslint/lib/rules/indent.js diff --git a/tools/eslint/lib/rules/init-declarations.js b/tools/node_modules/eslint/lib/rules/init-declarations.js similarity index 100% rename from tools/eslint/lib/rules/init-declarations.js rename to tools/node_modules/eslint/lib/rules/init-declarations.js diff --git a/tools/eslint/lib/rules/jsx-quotes.js b/tools/node_modules/eslint/lib/rules/jsx-quotes.js similarity index 100% rename from tools/eslint/lib/rules/jsx-quotes.js rename to tools/node_modules/eslint/lib/rules/jsx-quotes.js diff --git a/tools/eslint/lib/rules/key-spacing.js b/tools/node_modules/eslint/lib/rules/key-spacing.js similarity index 100% rename from tools/eslint/lib/rules/key-spacing.js rename to tools/node_modules/eslint/lib/rules/key-spacing.js diff --git a/tools/eslint/lib/rules/keyword-spacing.js b/tools/node_modules/eslint/lib/rules/keyword-spacing.js similarity index 100% rename from tools/eslint/lib/rules/keyword-spacing.js rename to tools/node_modules/eslint/lib/rules/keyword-spacing.js diff --git a/tools/eslint/lib/rules/line-comment-position.js b/tools/node_modules/eslint/lib/rules/line-comment-position.js similarity index 100% rename from tools/eslint/lib/rules/line-comment-position.js rename to tools/node_modules/eslint/lib/rules/line-comment-position.js diff --git a/tools/eslint/lib/rules/linebreak-style.js b/tools/node_modules/eslint/lib/rules/linebreak-style.js similarity index 100% rename from tools/eslint/lib/rules/linebreak-style.js rename to tools/node_modules/eslint/lib/rules/linebreak-style.js diff --git a/tools/eslint/lib/rules/lines-around-comment.js b/tools/node_modules/eslint/lib/rules/lines-around-comment.js similarity index 100% rename from tools/eslint/lib/rules/lines-around-comment.js rename to tools/node_modules/eslint/lib/rules/lines-around-comment.js diff --git a/tools/eslint/lib/rules/lines-around-directive.js b/tools/node_modules/eslint/lib/rules/lines-around-directive.js similarity index 100% rename from tools/eslint/lib/rules/lines-around-directive.js rename to tools/node_modules/eslint/lib/rules/lines-around-directive.js diff --git a/tools/eslint/lib/rules/lines-between-class-members.js b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js similarity index 100% rename from tools/eslint/lib/rules/lines-between-class-members.js rename to tools/node_modules/eslint/lib/rules/lines-between-class-members.js diff --git a/tools/eslint/lib/rules/max-depth.js b/tools/node_modules/eslint/lib/rules/max-depth.js similarity index 100% rename from tools/eslint/lib/rules/max-depth.js rename to tools/node_modules/eslint/lib/rules/max-depth.js diff --git a/tools/eslint/lib/rules/max-len.js b/tools/node_modules/eslint/lib/rules/max-len.js similarity index 100% rename from tools/eslint/lib/rules/max-len.js rename to tools/node_modules/eslint/lib/rules/max-len.js diff --git a/tools/eslint/lib/rules/max-lines.js b/tools/node_modules/eslint/lib/rules/max-lines.js similarity index 100% rename from tools/eslint/lib/rules/max-lines.js rename to tools/node_modules/eslint/lib/rules/max-lines.js diff --git a/tools/eslint/lib/rules/max-nested-callbacks.js b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js similarity index 100% rename from tools/eslint/lib/rules/max-nested-callbacks.js rename to tools/node_modules/eslint/lib/rules/max-nested-callbacks.js diff --git a/tools/eslint/lib/rules/max-params.js b/tools/node_modules/eslint/lib/rules/max-params.js similarity index 100% rename from tools/eslint/lib/rules/max-params.js rename to tools/node_modules/eslint/lib/rules/max-params.js diff --git a/tools/eslint/lib/rules/max-statements-per-line.js b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js similarity index 100% rename from tools/eslint/lib/rules/max-statements-per-line.js rename to tools/node_modules/eslint/lib/rules/max-statements-per-line.js diff --git a/tools/eslint/lib/rules/max-statements.js b/tools/node_modules/eslint/lib/rules/max-statements.js similarity index 100% rename from tools/eslint/lib/rules/max-statements.js rename to tools/node_modules/eslint/lib/rules/max-statements.js diff --git a/tools/eslint/lib/rules/multiline-comment-style.js b/tools/node_modules/eslint/lib/rules/multiline-comment-style.js similarity index 100% rename from tools/eslint/lib/rules/multiline-comment-style.js rename to tools/node_modules/eslint/lib/rules/multiline-comment-style.js diff --git a/tools/eslint/lib/rules/multiline-ternary.js b/tools/node_modules/eslint/lib/rules/multiline-ternary.js similarity index 100% rename from tools/eslint/lib/rules/multiline-ternary.js rename to tools/node_modules/eslint/lib/rules/multiline-ternary.js diff --git a/tools/eslint/lib/rules/new-cap.js b/tools/node_modules/eslint/lib/rules/new-cap.js similarity index 100% rename from tools/eslint/lib/rules/new-cap.js rename to tools/node_modules/eslint/lib/rules/new-cap.js diff --git a/tools/eslint/lib/rules/new-parens.js b/tools/node_modules/eslint/lib/rules/new-parens.js similarity index 100% rename from tools/eslint/lib/rules/new-parens.js rename to tools/node_modules/eslint/lib/rules/new-parens.js diff --git a/tools/eslint/lib/rules/newline-after-var.js b/tools/node_modules/eslint/lib/rules/newline-after-var.js similarity index 100% rename from tools/eslint/lib/rules/newline-after-var.js rename to tools/node_modules/eslint/lib/rules/newline-after-var.js diff --git a/tools/eslint/lib/rules/newline-before-return.js b/tools/node_modules/eslint/lib/rules/newline-before-return.js similarity index 100% rename from tools/eslint/lib/rules/newline-before-return.js rename to tools/node_modules/eslint/lib/rules/newline-before-return.js diff --git a/tools/eslint/lib/rules/newline-per-chained-call.js b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js similarity index 100% rename from tools/eslint/lib/rules/newline-per-chained-call.js rename to tools/node_modules/eslint/lib/rules/newline-per-chained-call.js diff --git a/tools/eslint/lib/rules/no-alert.js b/tools/node_modules/eslint/lib/rules/no-alert.js similarity index 100% rename from tools/eslint/lib/rules/no-alert.js rename to tools/node_modules/eslint/lib/rules/no-alert.js diff --git a/tools/eslint/lib/rules/no-array-constructor.js b/tools/node_modules/eslint/lib/rules/no-array-constructor.js similarity index 100% rename from tools/eslint/lib/rules/no-array-constructor.js rename to tools/node_modules/eslint/lib/rules/no-array-constructor.js diff --git a/tools/eslint/lib/rules/no-await-in-loop.js b/tools/node_modules/eslint/lib/rules/no-await-in-loop.js similarity index 100% rename from tools/eslint/lib/rules/no-await-in-loop.js rename to tools/node_modules/eslint/lib/rules/no-await-in-loop.js diff --git a/tools/eslint/lib/rules/no-bitwise.js b/tools/node_modules/eslint/lib/rules/no-bitwise.js similarity index 100% rename from tools/eslint/lib/rules/no-bitwise.js rename to tools/node_modules/eslint/lib/rules/no-bitwise.js diff --git a/tools/eslint/lib/rules/no-buffer-constructor.js b/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js similarity index 100% rename from tools/eslint/lib/rules/no-buffer-constructor.js rename to tools/node_modules/eslint/lib/rules/no-buffer-constructor.js diff --git a/tools/eslint/lib/rules/no-caller.js b/tools/node_modules/eslint/lib/rules/no-caller.js similarity index 100% rename from tools/eslint/lib/rules/no-caller.js rename to tools/node_modules/eslint/lib/rules/no-caller.js diff --git a/tools/eslint/lib/rules/no-case-declarations.js b/tools/node_modules/eslint/lib/rules/no-case-declarations.js similarity index 100% rename from tools/eslint/lib/rules/no-case-declarations.js rename to tools/node_modules/eslint/lib/rules/no-case-declarations.js diff --git a/tools/eslint/lib/rules/no-catch-shadow.js b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js similarity index 100% rename from tools/eslint/lib/rules/no-catch-shadow.js rename to tools/node_modules/eslint/lib/rules/no-catch-shadow.js diff --git a/tools/eslint/lib/rules/no-class-assign.js b/tools/node_modules/eslint/lib/rules/no-class-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-class-assign.js rename to tools/node_modules/eslint/lib/rules/no-class-assign.js diff --git a/tools/eslint/lib/rules/no-compare-neg-zero.js b/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js similarity index 100% rename from tools/eslint/lib/rules/no-compare-neg-zero.js rename to tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js diff --git a/tools/eslint/lib/rules/no-cond-assign.js b/tools/node_modules/eslint/lib/rules/no-cond-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-cond-assign.js rename to tools/node_modules/eslint/lib/rules/no-cond-assign.js diff --git a/tools/eslint/lib/rules/no-confusing-arrow.js b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js similarity index 100% rename from tools/eslint/lib/rules/no-confusing-arrow.js rename to tools/node_modules/eslint/lib/rules/no-confusing-arrow.js diff --git a/tools/eslint/lib/rules/no-console.js b/tools/node_modules/eslint/lib/rules/no-console.js similarity index 100% rename from tools/eslint/lib/rules/no-console.js rename to tools/node_modules/eslint/lib/rules/no-console.js diff --git a/tools/eslint/lib/rules/no-const-assign.js b/tools/node_modules/eslint/lib/rules/no-const-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-const-assign.js rename to tools/node_modules/eslint/lib/rules/no-const-assign.js diff --git a/tools/eslint/lib/rules/no-constant-condition.js b/tools/node_modules/eslint/lib/rules/no-constant-condition.js similarity index 100% rename from tools/eslint/lib/rules/no-constant-condition.js rename to tools/node_modules/eslint/lib/rules/no-constant-condition.js diff --git a/tools/eslint/lib/rules/no-continue.js b/tools/node_modules/eslint/lib/rules/no-continue.js similarity index 100% rename from tools/eslint/lib/rules/no-continue.js rename to tools/node_modules/eslint/lib/rules/no-continue.js diff --git a/tools/eslint/lib/rules/no-control-regex.js b/tools/node_modules/eslint/lib/rules/no-control-regex.js similarity index 100% rename from tools/eslint/lib/rules/no-control-regex.js rename to tools/node_modules/eslint/lib/rules/no-control-regex.js diff --git a/tools/eslint/lib/rules/no-debugger.js b/tools/node_modules/eslint/lib/rules/no-debugger.js similarity index 100% rename from tools/eslint/lib/rules/no-debugger.js rename to tools/node_modules/eslint/lib/rules/no-debugger.js diff --git a/tools/eslint/lib/rules/no-delete-var.js b/tools/node_modules/eslint/lib/rules/no-delete-var.js similarity index 100% rename from tools/eslint/lib/rules/no-delete-var.js rename to tools/node_modules/eslint/lib/rules/no-delete-var.js diff --git a/tools/eslint/lib/rules/no-div-regex.js b/tools/node_modules/eslint/lib/rules/no-div-regex.js similarity index 100% rename from tools/eslint/lib/rules/no-div-regex.js rename to tools/node_modules/eslint/lib/rules/no-div-regex.js diff --git a/tools/eslint/lib/rules/no-dupe-args.js b/tools/node_modules/eslint/lib/rules/no-dupe-args.js similarity index 100% rename from tools/eslint/lib/rules/no-dupe-args.js rename to tools/node_modules/eslint/lib/rules/no-dupe-args.js diff --git a/tools/eslint/lib/rules/no-dupe-class-members.js b/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js similarity index 100% rename from tools/eslint/lib/rules/no-dupe-class-members.js rename to tools/node_modules/eslint/lib/rules/no-dupe-class-members.js diff --git a/tools/eslint/lib/rules/no-dupe-keys.js b/tools/node_modules/eslint/lib/rules/no-dupe-keys.js similarity index 100% rename from tools/eslint/lib/rules/no-dupe-keys.js rename to tools/node_modules/eslint/lib/rules/no-dupe-keys.js diff --git a/tools/eslint/lib/rules/no-duplicate-case.js b/tools/node_modules/eslint/lib/rules/no-duplicate-case.js similarity index 100% rename from tools/eslint/lib/rules/no-duplicate-case.js rename to tools/node_modules/eslint/lib/rules/no-duplicate-case.js diff --git a/tools/eslint/lib/rules/no-duplicate-imports.js b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js similarity index 100% rename from tools/eslint/lib/rules/no-duplicate-imports.js rename to tools/node_modules/eslint/lib/rules/no-duplicate-imports.js diff --git a/tools/eslint/lib/rules/no-else-return.js b/tools/node_modules/eslint/lib/rules/no-else-return.js similarity index 100% rename from tools/eslint/lib/rules/no-else-return.js rename to tools/node_modules/eslint/lib/rules/no-else-return.js diff --git a/tools/eslint/lib/rules/no-empty-character-class.js b/tools/node_modules/eslint/lib/rules/no-empty-character-class.js similarity index 100% rename from tools/eslint/lib/rules/no-empty-character-class.js rename to tools/node_modules/eslint/lib/rules/no-empty-character-class.js diff --git a/tools/eslint/lib/rules/no-empty-function.js b/tools/node_modules/eslint/lib/rules/no-empty-function.js similarity index 100% rename from tools/eslint/lib/rules/no-empty-function.js rename to tools/node_modules/eslint/lib/rules/no-empty-function.js diff --git a/tools/eslint/lib/rules/no-empty-pattern.js b/tools/node_modules/eslint/lib/rules/no-empty-pattern.js similarity index 100% rename from tools/eslint/lib/rules/no-empty-pattern.js rename to tools/node_modules/eslint/lib/rules/no-empty-pattern.js diff --git a/tools/eslint/lib/rules/no-empty.js b/tools/node_modules/eslint/lib/rules/no-empty.js similarity index 100% rename from tools/eslint/lib/rules/no-empty.js rename to tools/node_modules/eslint/lib/rules/no-empty.js diff --git a/tools/eslint/lib/rules/no-eq-null.js b/tools/node_modules/eslint/lib/rules/no-eq-null.js similarity index 100% rename from tools/eslint/lib/rules/no-eq-null.js rename to tools/node_modules/eslint/lib/rules/no-eq-null.js diff --git a/tools/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js similarity index 100% rename from tools/eslint/lib/rules/no-eval.js rename to tools/node_modules/eslint/lib/rules/no-eval.js diff --git a/tools/eslint/lib/rules/no-ex-assign.js b/tools/node_modules/eslint/lib/rules/no-ex-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-ex-assign.js rename to tools/node_modules/eslint/lib/rules/no-ex-assign.js diff --git a/tools/eslint/lib/rules/no-extend-native.js b/tools/node_modules/eslint/lib/rules/no-extend-native.js similarity index 100% rename from tools/eslint/lib/rules/no-extend-native.js rename to tools/node_modules/eslint/lib/rules/no-extend-native.js diff --git a/tools/eslint/lib/rules/no-extra-bind.js b/tools/node_modules/eslint/lib/rules/no-extra-bind.js similarity index 100% rename from tools/eslint/lib/rules/no-extra-bind.js rename to tools/node_modules/eslint/lib/rules/no-extra-bind.js diff --git a/tools/eslint/lib/rules/no-extra-boolean-cast.js b/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js similarity index 100% rename from tools/eslint/lib/rules/no-extra-boolean-cast.js rename to tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js diff --git a/tools/eslint/lib/rules/no-extra-label.js b/tools/node_modules/eslint/lib/rules/no-extra-label.js similarity index 100% rename from tools/eslint/lib/rules/no-extra-label.js rename to tools/node_modules/eslint/lib/rules/no-extra-label.js diff --git a/tools/eslint/lib/rules/no-extra-parens.js b/tools/node_modules/eslint/lib/rules/no-extra-parens.js similarity index 100% rename from tools/eslint/lib/rules/no-extra-parens.js rename to tools/node_modules/eslint/lib/rules/no-extra-parens.js diff --git a/tools/eslint/lib/rules/no-extra-semi.js b/tools/node_modules/eslint/lib/rules/no-extra-semi.js similarity index 100% rename from tools/eslint/lib/rules/no-extra-semi.js rename to tools/node_modules/eslint/lib/rules/no-extra-semi.js diff --git a/tools/eslint/lib/rules/no-fallthrough.js b/tools/node_modules/eslint/lib/rules/no-fallthrough.js similarity index 100% rename from tools/eslint/lib/rules/no-fallthrough.js rename to tools/node_modules/eslint/lib/rules/no-fallthrough.js diff --git a/tools/eslint/lib/rules/no-floating-decimal.js b/tools/node_modules/eslint/lib/rules/no-floating-decimal.js similarity index 100% rename from tools/eslint/lib/rules/no-floating-decimal.js rename to tools/node_modules/eslint/lib/rules/no-floating-decimal.js diff --git a/tools/eslint/lib/rules/no-func-assign.js b/tools/node_modules/eslint/lib/rules/no-func-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-func-assign.js rename to tools/node_modules/eslint/lib/rules/no-func-assign.js diff --git a/tools/eslint/lib/rules/no-global-assign.js b/tools/node_modules/eslint/lib/rules/no-global-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-global-assign.js rename to tools/node_modules/eslint/lib/rules/no-global-assign.js diff --git a/tools/eslint/lib/rules/no-implicit-coercion.js b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js similarity index 100% rename from tools/eslint/lib/rules/no-implicit-coercion.js rename to tools/node_modules/eslint/lib/rules/no-implicit-coercion.js diff --git a/tools/eslint/lib/rules/no-implicit-globals.js b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js similarity index 100% rename from tools/eslint/lib/rules/no-implicit-globals.js rename to tools/node_modules/eslint/lib/rules/no-implicit-globals.js diff --git a/tools/eslint/lib/rules/no-implied-eval.js b/tools/node_modules/eslint/lib/rules/no-implied-eval.js similarity index 100% rename from tools/eslint/lib/rules/no-implied-eval.js rename to tools/node_modules/eslint/lib/rules/no-implied-eval.js diff --git a/tools/eslint/lib/rules/no-inline-comments.js b/tools/node_modules/eslint/lib/rules/no-inline-comments.js similarity index 100% rename from tools/eslint/lib/rules/no-inline-comments.js rename to tools/node_modules/eslint/lib/rules/no-inline-comments.js diff --git a/tools/eslint/lib/rules/no-inner-declarations.js b/tools/node_modules/eslint/lib/rules/no-inner-declarations.js similarity index 100% rename from tools/eslint/lib/rules/no-inner-declarations.js rename to tools/node_modules/eslint/lib/rules/no-inner-declarations.js diff --git a/tools/eslint/lib/rules/no-invalid-regexp.js b/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js similarity index 100% rename from tools/eslint/lib/rules/no-invalid-regexp.js rename to tools/node_modules/eslint/lib/rules/no-invalid-regexp.js diff --git a/tools/eslint/lib/rules/no-invalid-this.js b/tools/node_modules/eslint/lib/rules/no-invalid-this.js similarity index 100% rename from tools/eslint/lib/rules/no-invalid-this.js rename to tools/node_modules/eslint/lib/rules/no-invalid-this.js diff --git a/tools/eslint/lib/rules/no-irregular-whitespace.js b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js similarity index 100% rename from tools/eslint/lib/rules/no-irregular-whitespace.js rename to tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js diff --git a/tools/eslint/lib/rules/no-iterator.js b/tools/node_modules/eslint/lib/rules/no-iterator.js similarity index 100% rename from tools/eslint/lib/rules/no-iterator.js rename to tools/node_modules/eslint/lib/rules/no-iterator.js diff --git a/tools/eslint/lib/rules/no-label-var.js b/tools/node_modules/eslint/lib/rules/no-label-var.js similarity index 100% rename from tools/eslint/lib/rules/no-label-var.js rename to tools/node_modules/eslint/lib/rules/no-label-var.js diff --git a/tools/eslint/lib/rules/no-labels.js b/tools/node_modules/eslint/lib/rules/no-labels.js similarity index 100% rename from tools/eslint/lib/rules/no-labels.js rename to tools/node_modules/eslint/lib/rules/no-labels.js diff --git a/tools/eslint/lib/rules/no-lone-blocks.js b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js similarity index 100% rename from tools/eslint/lib/rules/no-lone-blocks.js rename to tools/node_modules/eslint/lib/rules/no-lone-blocks.js diff --git a/tools/eslint/lib/rules/no-lonely-if.js b/tools/node_modules/eslint/lib/rules/no-lonely-if.js similarity index 100% rename from tools/eslint/lib/rules/no-lonely-if.js rename to tools/node_modules/eslint/lib/rules/no-lonely-if.js diff --git a/tools/eslint/lib/rules/no-loop-func.js b/tools/node_modules/eslint/lib/rules/no-loop-func.js similarity index 100% rename from tools/eslint/lib/rules/no-loop-func.js rename to tools/node_modules/eslint/lib/rules/no-loop-func.js diff --git a/tools/eslint/lib/rules/no-magic-numbers.js b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js similarity index 100% rename from tools/eslint/lib/rules/no-magic-numbers.js rename to tools/node_modules/eslint/lib/rules/no-magic-numbers.js diff --git a/tools/eslint/lib/rules/no-mixed-operators.js b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js similarity index 100% rename from tools/eslint/lib/rules/no-mixed-operators.js rename to tools/node_modules/eslint/lib/rules/no-mixed-operators.js diff --git a/tools/eslint/lib/rules/no-mixed-requires.js b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js similarity index 100% rename from tools/eslint/lib/rules/no-mixed-requires.js rename to tools/node_modules/eslint/lib/rules/no-mixed-requires.js diff --git a/tools/eslint/lib/rules/no-mixed-spaces-and-tabs.js b/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js similarity index 100% rename from tools/eslint/lib/rules/no-mixed-spaces-and-tabs.js rename to tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js diff --git a/tools/eslint/lib/rules/no-multi-assign.js b/tools/node_modules/eslint/lib/rules/no-multi-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-multi-assign.js rename to tools/node_modules/eslint/lib/rules/no-multi-assign.js diff --git a/tools/eslint/lib/rules/no-multi-spaces.js b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js similarity index 100% rename from tools/eslint/lib/rules/no-multi-spaces.js rename to tools/node_modules/eslint/lib/rules/no-multi-spaces.js diff --git a/tools/eslint/lib/rules/no-multi-str.js b/tools/node_modules/eslint/lib/rules/no-multi-str.js similarity index 100% rename from tools/eslint/lib/rules/no-multi-str.js rename to tools/node_modules/eslint/lib/rules/no-multi-str.js diff --git a/tools/eslint/lib/rules/no-multiple-empty-lines.js b/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js similarity index 100% rename from tools/eslint/lib/rules/no-multiple-empty-lines.js rename to tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js diff --git a/tools/eslint/lib/rules/no-native-reassign.js b/tools/node_modules/eslint/lib/rules/no-native-reassign.js similarity index 100% rename from tools/eslint/lib/rules/no-native-reassign.js rename to tools/node_modules/eslint/lib/rules/no-native-reassign.js diff --git a/tools/eslint/lib/rules/no-negated-condition.js b/tools/node_modules/eslint/lib/rules/no-negated-condition.js similarity index 100% rename from tools/eslint/lib/rules/no-negated-condition.js rename to tools/node_modules/eslint/lib/rules/no-negated-condition.js diff --git a/tools/eslint/lib/rules/no-negated-in-lhs.js b/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js similarity index 100% rename from tools/eslint/lib/rules/no-negated-in-lhs.js rename to tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js diff --git a/tools/eslint/lib/rules/no-nested-ternary.js b/tools/node_modules/eslint/lib/rules/no-nested-ternary.js similarity index 100% rename from tools/eslint/lib/rules/no-nested-ternary.js rename to tools/node_modules/eslint/lib/rules/no-nested-ternary.js diff --git a/tools/eslint/lib/rules/no-new-func.js b/tools/node_modules/eslint/lib/rules/no-new-func.js similarity index 100% rename from tools/eslint/lib/rules/no-new-func.js rename to tools/node_modules/eslint/lib/rules/no-new-func.js diff --git a/tools/eslint/lib/rules/no-new-object.js b/tools/node_modules/eslint/lib/rules/no-new-object.js similarity index 100% rename from tools/eslint/lib/rules/no-new-object.js rename to tools/node_modules/eslint/lib/rules/no-new-object.js diff --git a/tools/eslint/lib/rules/no-new-require.js b/tools/node_modules/eslint/lib/rules/no-new-require.js similarity index 100% rename from tools/eslint/lib/rules/no-new-require.js rename to tools/node_modules/eslint/lib/rules/no-new-require.js diff --git a/tools/eslint/lib/rules/no-new-symbol.js b/tools/node_modules/eslint/lib/rules/no-new-symbol.js similarity index 100% rename from tools/eslint/lib/rules/no-new-symbol.js rename to tools/node_modules/eslint/lib/rules/no-new-symbol.js diff --git a/tools/eslint/lib/rules/no-new-wrappers.js b/tools/node_modules/eslint/lib/rules/no-new-wrappers.js similarity index 100% rename from tools/eslint/lib/rules/no-new-wrappers.js rename to tools/node_modules/eslint/lib/rules/no-new-wrappers.js diff --git a/tools/eslint/lib/rules/no-new.js b/tools/node_modules/eslint/lib/rules/no-new.js similarity index 100% rename from tools/eslint/lib/rules/no-new.js rename to tools/node_modules/eslint/lib/rules/no-new.js diff --git a/tools/eslint/lib/rules/no-obj-calls.js b/tools/node_modules/eslint/lib/rules/no-obj-calls.js similarity index 100% rename from tools/eslint/lib/rules/no-obj-calls.js rename to tools/node_modules/eslint/lib/rules/no-obj-calls.js diff --git a/tools/eslint/lib/rules/no-octal-escape.js b/tools/node_modules/eslint/lib/rules/no-octal-escape.js similarity index 100% rename from tools/eslint/lib/rules/no-octal-escape.js rename to tools/node_modules/eslint/lib/rules/no-octal-escape.js diff --git a/tools/eslint/lib/rules/no-octal.js b/tools/node_modules/eslint/lib/rules/no-octal.js similarity index 100% rename from tools/eslint/lib/rules/no-octal.js rename to tools/node_modules/eslint/lib/rules/no-octal.js diff --git a/tools/eslint/lib/rules/no-param-reassign.js b/tools/node_modules/eslint/lib/rules/no-param-reassign.js similarity index 100% rename from tools/eslint/lib/rules/no-param-reassign.js rename to tools/node_modules/eslint/lib/rules/no-param-reassign.js diff --git a/tools/eslint/lib/rules/no-path-concat.js b/tools/node_modules/eslint/lib/rules/no-path-concat.js similarity index 100% rename from tools/eslint/lib/rules/no-path-concat.js rename to tools/node_modules/eslint/lib/rules/no-path-concat.js diff --git a/tools/eslint/lib/rules/no-plusplus.js b/tools/node_modules/eslint/lib/rules/no-plusplus.js similarity index 100% rename from tools/eslint/lib/rules/no-plusplus.js rename to tools/node_modules/eslint/lib/rules/no-plusplus.js diff --git a/tools/eslint/lib/rules/no-process-env.js b/tools/node_modules/eslint/lib/rules/no-process-env.js similarity index 100% rename from tools/eslint/lib/rules/no-process-env.js rename to tools/node_modules/eslint/lib/rules/no-process-env.js diff --git a/tools/eslint/lib/rules/no-process-exit.js b/tools/node_modules/eslint/lib/rules/no-process-exit.js similarity index 100% rename from tools/eslint/lib/rules/no-process-exit.js rename to tools/node_modules/eslint/lib/rules/no-process-exit.js diff --git a/tools/eslint/lib/rules/no-proto.js b/tools/node_modules/eslint/lib/rules/no-proto.js similarity index 100% rename from tools/eslint/lib/rules/no-proto.js rename to tools/node_modules/eslint/lib/rules/no-proto.js diff --git a/tools/eslint/lib/rules/no-prototype-builtins.js b/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js similarity index 100% rename from tools/eslint/lib/rules/no-prototype-builtins.js rename to tools/node_modules/eslint/lib/rules/no-prototype-builtins.js diff --git a/tools/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js similarity index 100% rename from tools/eslint/lib/rules/no-redeclare.js rename to tools/node_modules/eslint/lib/rules/no-redeclare.js diff --git a/tools/eslint/lib/rules/no-regex-spaces.js b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js similarity index 100% rename from tools/eslint/lib/rules/no-regex-spaces.js rename to tools/node_modules/eslint/lib/rules/no-regex-spaces.js diff --git a/tools/eslint/lib/rules/no-restricted-globals.js b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js similarity index 100% rename from tools/eslint/lib/rules/no-restricted-globals.js rename to tools/node_modules/eslint/lib/rules/no-restricted-globals.js diff --git a/tools/eslint/lib/rules/no-restricted-imports.js b/tools/node_modules/eslint/lib/rules/no-restricted-imports.js similarity index 100% rename from tools/eslint/lib/rules/no-restricted-imports.js rename to tools/node_modules/eslint/lib/rules/no-restricted-imports.js diff --git a/tools/eslint/lib/rules/no-restricted-modules.js b/tools/node_modules/eslint/lib/rules/no-restricted-modules.js similarity index 100% rename from tools/eslint/lib/rules/no-restricted-modules.js rename to tools/node_modules/eslint/lib/rules/no-restricted-modules.js diff --git a/tools/eslint/lib/rules/no-restricted-properties.js b/tools/node_modules/eslint/lib/rules/no-restricted-properties.js similarity index 100% rename from tools/eslint/lib/rules/no-restricted-properties.js rename to tools/node_modules/eslint/lib/rules/no-restricted-properties.js diff --git a/tools/eslint/lib/rules/no-restricted-syntax.js b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js similarity index 100% rename from tools/eslint/lib/rules/no-restricted-syntax.js rename to tools/node_modules/eslint/lib/rules/no-restricted-syntax.js diff --git a/tools/eslint/lib/rules/no-return-assign.js b/tools/node_modules/eslint/lib/rules/no-return-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-return-assign.js rename to tools/node_modules/eslint/lib/rules/no-return-assign.js diff --git a/tools/eslint/lib/rules/no-return-await.js b/tools/node_modules/eslint/lib/rules/no-return-await.js similarity index 100% rename from tools/eslint/lib/rules/no-return-await.js rename to tools/node_modules/eslint/lib/rules/no-return-await.js diff --git a/tools/eslint/lib/rules/no-script-url.js b/tools/node_modules/eslint/lib/rules/no-script-url.js similarity index 100% rename from tools/eslint/lib/rules/no-script-url.js rename to tools/node_modules/eslint/lib/rules/no-script-url.js diff --git a/tools/eslint/lib/rules/no-self-assign.js b/tools/node_modules/eslint/lib/rules/no-self-assign.js similarity index 100% rename from tools/eslint/lib/rules/no-self-assign.js rename to tools/node_modules/eslint/lib/rules/no-self-assign.js diff --git a/tools/eslint/lib/rules/no-self-compare.js b/tools/node_modules/eslint/lib/rules/no-self-compare.js similarity index 100% rename from tools/eslint/lib/rules/no-self-compare.js rename to tools/node_modules/eslint/lib/rules/no-self-compare.js diff --git a/tools/eslint/lib/rules/no-sequences.js b/tools/node_modules/eslint/lib/rules/no-sequences.js similarity index 100% rename from tools/eslint/lib/rules/no-sequences.js rename to tools/node_modules/eslint/lib/rules/no-sequences.js diff --git a/tools/eslint/lib/rules/no-shadow-restricted-names.js b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js similarity index 100% rename from tools/eslint/lib/rules/no-shadow-restricted-names.js rename to tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js diff --git a/tools/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js similarity index 100% rename from tools/eslint/lib/rules/no-shadow.js rename to tools/node_modules/eslint/lib/rules/no-shadow.js diff --git a/tools/eslint/lib/rules/no-spaced-func.js b/tools/node_modules/eslint/lib/rules/no-spaced-func.js similarity index 100% rename from tools/eslint/lib/rules/no-spaced-func.js rename to tools/node_modules/eslint/lib/rules/no-spaced-func.js diff --git a/tools/eslint/lib/rules/no-sparse-arrays.js b/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js similarity index 100% rename from tools/eslint/lib/rules/no-sparse-arrays.js rename to tools/node_modules/eslint/lib/rules/no-sparse-arrays.js diff --git a/tools/eslint/lib/rules/no-sync.js b/tools/node_modules/eslint/lib/rules/no-sync.js similarity index 100% rename from tools/eslint/lib/rules/no-sync.js rename to tools/node_modules/eslint/lib/rules/no-sync.js diff --git a/tools/eslint/lib/rules/no-tabs.js b/tools/node_modules/eslint/lib/rules/no-tabs.js similarity index 100% rename from tools/eslint/lib/rules/no-tabs.js rename to tools/node_modules/eslint/lib/rules/no-tabs.js diff --git a/tools/eslint/lib/rules/no-template-curly-in-string.js b/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js similarity index 100% rename from tools/eslint/lib/rules/no-template-curly-in-string.js rename to tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js diff --git a/tools/eslint/lib/rules/no-ternary.js b/tools/node_modules/eslint/lib/rules/no-ternary.js similarity index 100% rename from tools/eslint/lib/rules/no-ternary.js rename to tools/node_modules/eslint/lib/rules/no-ternary.js diff --git a/tools/eslint/lib/rules/no-this-before-super.js b/tools/node_modules/eslint/lib/rules/no-this-before-super.js similarity index 100% rename from tools/eslint/lib/rules/no-this-before-super.js rename to tools/node_modules/eslint/lib/rules/no-this-before-super.js diff --git a/tools/eslint/lib/rules/no-throw-literal.js b/tools/node_modules/eslint/lib/rules/no-throw-literal.js similarity index 100% rename from tools/eslint/lib/rules/no-throw-literal.js rename to tools/node_modules/eslint/lib/rules/no-throw-literal.js diff --git a/tools/eslint/lib/rules/no-trailing-spaces.js b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js similarity index 100% rename from tools/eslint/lib/rules/no-trailing-spaces.js rename to tools/node_modules/eslint/lib/rules/no-trailing-spaces.js diff --git a/tools/eslint/lib/rules/no-undef-init.js b/tools/node_modules/eslint/lib/rules/no-undef-init.js similarity index 100% rename from tools/eslint/lib/rules/no-undef-init.js rename to tools/node_modules/eslint/lib/rules/no-undef-init.js diff --git a/tools/eslint/lib/rules/no-undef.js b/tools/node_modules/eslint/lib/rules/no-undef.js similarity index 100% rename from tools/eslint/lib/rules/no-undef.js rename to tools/node_modules/eslint/lib/rules/no-undef.js diff --git a/tools/eslint/lib/rules/no-undefined.js b/tools/node_modules/eslint/lib/rules/no-undefined.js similarity index 100% rename from tools/eslint/lib/rules/no-undefined.js rename to tools/node_modules/eslint/lib/rules/no-undefined.js diff --git a/tools/eslint/lib/rules/no-underscore-dangle.js b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js similarity index 100% rename from tools/eslint/lib/rules/no-underscore-dangle.js rename to tools/node_modules/eslint/lib/rules/no-underscore-dangle.js diff --git a/tools/eslint/lib/rules/no-unexpected-multiline.js b/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js similarity index 100% rename from tools/eslint/lib/rules/no-unexpected-multiline.js rename to tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js diff --git a/tools/eslint/lib/rules/no-unmodified-loop-condition.js b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js similarity index 100% rename from tools/eslint/lib/rules/no-unmodified-loop-condition.js rename to tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js diff --git a/tools/eslint/lib/rules/no-unneeded-ternary.js b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js similarity index 100% rename from tools/eslint/lib/rules/no-unneeded-ternary.js rename to tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js diff --git a/tools/eslint/lib/rules/no-unreachable.js b/tools/node_modules/eslint/lib/rules/no-unreachable.js similarity index 100% rename from tools/eslint/lib/rules/no-unreachable.js rename to tools/node_modules/eslint/lib/rules/no-unreachable.js diff --git a/tools/eslint/lib/rules/no-unsafe-finally.js b/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js similarity index 100% rename from tools/eslint/lib/rules/no-unsafe-finally.js rename to tools/node_modules/eslint/lib/rules/no-unsafe-finally.js diff --git a/tools/eslint/lib/rules/no-unsafe-negation.js b/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js similarity index 100% rename from tools/eslint/lib/rules/no-unsafe-negation.js rename to tools/node_modules/eslint/lib/rules/no-unsafe-negation.js diff --git a/tools/eslint/lib/rules/no-unused-expressions.js b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js similarity index 100% rename from tools/eslint/lib/rules/no-unused-expressions.js rename to tools/node_modules/eslint/lib/rules/no-unused-expressions.js diff --git a/tools/eslint/lib/rules/no-unused-labels.js b/tools/node_modules/eslint/lib/rules/no-unused-labels.js similarity index 100% rename from tools/eslint/lib/rules/no-unused-labels.js rename to tools/node_modules/eslint/lib/rules/no-unused-labels.js diff --git a/tools/eslint/lib/rules/no-unused-vars.js b/tools/node_modules/eslint/lib/rules/no-unused-vars.js similarity index 100% rename from tools/eslint/lib/rules/no-unused-vars.js rename to tools/node_modules/eslint/lib/rules/no-unused-vars.js diff --git a/tools/eslint/lib/rules/no-use-before-define.js b/tools/node_modules/eslint/lib/rules/no-use-before-define.js similarity index 100% rename from tools/eslint/lib/rules/no-use-before-define.js rename to tools/node_modules/eslint/lib/rules/no-use-before-define.js diff --git a/tools/eslint/lib/rules/no-useless-call.js b/tools/node_modules/eslint/lib/rules/no-useless-call.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-call.js rename to tools/node_modules/eslint/lib/rules/no-useless-call.js diff --git a/tools/eslint/lib/rules/no-useless-computed-key.js b/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-computed-key.js rename to tools/node_modules/eslint/lib/rules/no-useless-computed-key.js diff --git a/tools/eslint/lib/rules/no-useless-concat.js b/tools/node_modules/eslint/lib/rules/no-useless-concat.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-concat.js rename to tools/node_modules/eslint/lib/rules/no-useless-concat.js diff --git a/tools/eslint/lib/rules/no-useless-constructor.js b/tools/node_modules/eslint/lib/rules/no-useless-constructor.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-constructor.js rename to tools/node_modules/eslint/lib/rules/no-useless-constructor.js diff --git a/tools/eslint/lib/rules/no-useless-escape.js b/tools/node_modules/eslint/lib/rules/no-useless-escape.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-escape.js rename to tools/node_modules/eslint/lib/rules/no-useless-escape.js diff --git a/tools/eslint/lib/rules/no-useless-rename.js b/tools/node_modules/eslint/lib/rules/no-useless-rename.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-rename.js rename to tools/node_modules/eslint/lib/rules/no-useless-rename.js diff --git a/tools/eslint/lib/rules/no-useless-return.js b/tools/node_modules/eslint/lib/rules/no-useless-return.js similarity index 100% rename from tools/eslint/lib/rules/no-useless-return.js rename to tools/node_modules/eslint/lib/rules/no-useless-return.js diff --git a/tools/eslint/lib/rules/no-var.js b/tools/node_modules/eslint/lib/rules/no-var.js similarity index 100% rename from tools/eslint/lib/rules/no-var.js rename to tools/node_modules/eslint/lib/rules/no-var.js diff --git a/tools/eslint/lib/rules/no-void.js b/tools/node_modules/eslint/lib/rules/no-void.js similarity index 100% rename from tools/eslint/lib/rules/no-void.js rename to tools/node_modules/eslint/lib/rules/no-void.js diff --git a/tools/eslint/lib/rules/no-warning-comments.js b/tools/node_modules/eslint/lib/rules/no-warning-comments.js similarity index 100% rename from tools/eslint/lib/rules/no-warning-comments.js rename to tools/node_modules/eslint/lib/rules/no-warning-comments.js diff --git a/tools/eslint/lib/rules/no-whitespace-before-property.js b/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js similarity index 100% rename from tools/eslint/lib/rules/no-whitespace-before-property.js rename to tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js diff --git a/tools/eslint/lib/rules/no-with.js b/tools/node_modules/eslint/lib/rules/no-with.js similarity index 100% rename from tools/eslint/lib/rules/no-with.js rename to tools/node_modules/eslint/lib/rules/no-with.js diff --git a/tools/eslint/lib/rules/nonblock-statement-body-position.js b/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js similarity index 100% rename from tools/eslint/lib/rules/nonblock-statement-body-position.js rename to tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js diff --git a/tools/eslint/lib/rules/object-curly-newline.js b/tools/node_modules/eslint/lib/rules/object-curly-newline.js similarity index 100% rename from tools/eslint/lib/rules/object-curly-newline.js rename to tools/node_modules/eslint/lib/rules/object-curly-newline.js diff --git a/tools/eslint/lib/rules/object-curly-spacing.js b/tools/node_modules/eslint/lib/rules/object-curly-spacing.js similarity index 100% rename from tools/eslint/lib/rules/object-curly-spacing.js rename to tools/node_modules/eslint/lib/rules/object-curly-spacing.js diff --git a/tools/eslint/lib/rules/object-property-newline.js b/tools/node_modules/eslint/lib/rules/object-property-newline.js similarity index 100% rename from tools/eslint/lib/rules/object-property-newline.js rename to tools/node_modules/eslint/lib/rules/object-property-newline.js diff --git a/tools/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js similarity index 100% rename from tools/eslint/lib/rules/object-shorthand.js rename to tools/node_modules/eslint/lib/rules/object-shorthand.js diff --git a/tools/eslint/lib/rules/one-var-declaration-per-line.js b/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js similarity index 100% rename from tools/eslint/lib/rules/one-var-declaration-per-line.js rename to tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js diff --git a/tools/eslint/lib/rules/one-var.js b/tools/node_modules/eslint/lib/rules/one-var.js similarity index 100% rename from tools/eslint/lib/rules/one-var.js rename to tools/node_modules/eslint/lib/rules/one-var.js diff --git a/tools/eslint/lib/rules/operator-assignment.js b/tools/node_modules/eslint/lib/rules/operator-assignment.js similarity index 100% rename from tools/eslint/lib/rules/operator-assignment.js rename to tools/node_modules/eslint/lib/rules/operator-assignment.js diff --git a/tools/eslint/lib/rules/operator-linebreak.js b/tools/node_modules/eslint/lib/rules/operator-linebreak.js similarity index 100% rename from tools/eslint/lib/rules/operator-linebreak.js rename to tools/node_modules/eslint/lib/rules/operator-linebreak.js diff --git a/tools/eslint/lib/rules/padded-blocks.js b/tools/node_modules/eslint/lib/rules/padded-blocks.js similarity index 100% rename from tools/eslint/lib/rules/padded-blocks.js rename to tools/node_modules/eslint/lib/rules/padded-blocks.js diff --git a/tools/eslint/lib/rules/padding-line-between-statements.js b/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js similarity index 100% rename from tools/eslint/lib/rules/padding-line-between-statements.js rename to tools/node_modules/eslint/lib/rules/padding-line-between-statements.js diff --git a/tools/eslint/lib/rules/prefer-arrow-callback.js b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js similarity index 100% rename from tools/eslint/lib/rules/prefer-arrow-callback.js rename to tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js diff --git a/tools/eslint/lib/rules/prefer-const.js b/tools/node_modules/eslint/lib/rules/prefer-const.js similarity index 100% rename from tools/eslint/lib/rules/prefer-const.js rename to tools/node_modules/eslint/lib/rules/prefer-const.js diff --git a/tools/eslint/lib/rules/prefer-destructuring.js b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js similarity index 100% rename from tools/eslint/lib/rules/prefer-destructuring.js rename to tools/node_modules/eslint/lib/rules/prefer-destructuring.js diff --git a/tools/eslint/lib/rules/prefer-numeric-literals.js b/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js similarity index 100% rename from tools/eslint/lib/rules/prefer-numeric-literals.js rename to tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js diff --git a/tools/eslint/lib/rules/prefer-promise-reject-errors.js b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js similarity index 100% rename from tools/eslint/lib/rules/prefer-promise-reject-errors.js rename to tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js diff --git a/tools/eslint/lib/rules/prefer-reflect.js b/tools/node_modules/eslint/lib/rules/prefer-reflect.js similarity index 100% rename from tools/eslint/lib/rules/prefer-reflect.js rename to tools/node_modules/eslint/lib/rules/prefer-reflect.js diff --git a/tools/eslint/lib/rules/prefer-rest-params.js b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js similarity index 100% rename from tools/eslint/lib/rules/prefer-rest-params.js rename to tools/node_modules/eslint/lib/rules/prefer-rest-params.js diff --git a/tools/eslint/lib/rules/prefer-spread.js b/tools/node_modules/eslint/lib/rules/prefer-spread.js similarity index 100% rename from tools/eslint/lib/rules/prefer-spread.js rename to tools/node_modules/eslint/lib/rules/prefer-spread.js diff --git a/tools/eslint/lib/rules/prefer-template.js b/tools/node_modules/eslint/lib/rules/prefer-template.js similarity index 100% rename from tools/eslint/lib/rules/prefer-template.js rename to tools/node_modules/eslint/lib/rules/prefer-template.js diff --git a/tools/eslint/lib/rules/quote-props.js b/tools/node_modules/eslint/lib/rules/quote-props.js similarity index 100% rename from tools/eslint/lib/rules/quote-props.js rename to tools/node_modules/eslint/lib/rules/quote-props.js diff --git a/tools/eslint/lib/rules/quotes.js b/tools/node_modules/eslint/lib/rules/quotes.js similarity index 100% rename from tools/eslint/lib/rules/quotes.js rename to tools/node_modules/eslint/lib/rules/quotes.js diff --git a/tools/eslint/lib/rules/radix.js b/tools/node_modules/eslint/lib/rules/radix.js similarity index 100% rename from tools/eslint/lib/rules/radix.js rename to tools/node_modules/eslint/lib/rules/radix.js diff --git a/tools/eslint/lib/rules/require-await.js b/tools/node_modules/eslint/lib/rules/require-await.js similarity index 100% rename from tools/eslint/lib/rules/require-await.js rename to tools/node_modules/eslint/lib/rules/require-await.js diff --git a/tools/eslint/lib/rules/require-jsdoc.js b/tools/node_modules/eslint/lib/rules/require-jsdoc.js similarity index 100% rename from tools/eslint/lib/rules/require-jsdoc.js rename to tools/node_modules/eslint/lib/rules/require-jsdoc.js diff --git a/tools/eslint/lib/rules/require-yield.js b/tools/node_modules/eslint/lib/rules/require-yield.js similarity index 100% rename from tools/eslint/lib/rules/require-yield.js rename to tools/node_modules/eslint/lib/rules/require-yield.js diff --git a/tools/eslint/lib/rules/rest-spread-spacing.js b/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js similarity index 100% rename from tools/eslint/lib/rules/rest-spread-spacing.js rename to tools/node_modules/eslint/lib/rules/rest-spread-spacing.js diff --git a/tools/eslint/lib/rules/semi-spacing.js b/tools/node_modules/eslint/lib/rules/semi-spacing.js similarity index 100% rename from tools/eslint/lib/rules/semi-spacing.js rename to tools/node_modules/eslint/lib/rules/semi-spacing.js diff --git a/tools/eslint/lib/rules/semi-style.js b/tools/node_modules/eslint/lib/rules/semi-style.js similarity index 100% rename from tools/eslint/lib/rules/semi-style.js rename to tools/node_modules/eslint/lib/rules/semi-style.js diff --git a/tools/eslint/lib/rules/semi.js b/tools/node_modules/eslint/lib/rules/semi.js similarity index 100% rename from tools/eslint/lib/rules/semi.js rename to tools/node_modules/eslint/lib/rules/semi.js diff --git a/tools/eslint/lib/rules/sort-imports.js b/tools/node_modules/eslint/lib/rules/sort-imports.js similarity index 100% rename from tools/eslint/lib/rules/sort-imports.js rename to tools/node_modules/eslint/lib/rules/sort-imports.js diff --git a/tools/eslint/lib/rules/sort-keys.js b/tools/node_modules/eslint/lib/rules/sort-keys.js similarity index 100% rename from tools/eslint/lib/rules/sort-keys.js rename to tools/node_modules/eslint/lib/rules/sort-keys.js diff --git a/tools/eslint/lib/rules/sort-vars.js b/tools/node_modules/eslint/lib/rules/sort-vars.js similarity index 100% rename from tools/eslint/lib/rules/sort-vars.js rename to tools/node_modules/eslint/lib/rules/sort-vars.js diff --git a/tools/eslint/lib/rules/space-before-blocks.js b/tools/node_modules/eslint/lib/rules/space-before-blocks.js similarity index 100% rename from tools/eslint/lib/rules/space-before-blocks.js rename to tools/node_modules/eslint/lib/rules/space-before-blocks.js diff --git a/tools/eslint/lib/rules/space-before-function-paren.js b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js similarity index 100% rename from tools/eslint/lib/rules/space-before-function-paren.js rename to tools/node_modules/eslint/lib/rules/space-before-function-paren.js diff --git a/tools/eslint/lib/rules/space-in-parens.js b/tools/node_modules/eslint/lib/rules/space-in-parens.js similarity index 100% rename from tools/eslint/lib/rules/space-in-parens.js rename to tools/node_modules/eslint/lib/rules/space-in-parens.js diff --git a/tools/eslint/lib/rules/space-infix-ops.js b/tools/node_modules/eslint/lib/rules/space-infix-ops.js similarity index 100% rename from tools/eslint/lib/rules/space-infix-ops.js rename to tools/node_modules/eslint/lib/rules/space-infix-ops.js diff --git a/tools/eslint/lib/rules/space-unary-ops.js b/tools/node_modules/eslint/lib/rules/space-unary-ops.js similarity index 100% rename from tools/eslint/lib/rules/space-unary-ops.js rename to tools/node_modules/eslint/lib/rules/space-unary-ops.js diff --git a/tools/eslint/lib/rules/spaced-comment.js b/tools/node_modules/eslint/lib/rules/spaced-comment.js similarity index 100% rename from tools/eslint/lib/rules/spaced-comment.js rename to tools/node_modules/eslint/lib/rules/spaced-comment.js diff --git a/tools/eslint/lib/rules/strict.js b/tools/node_modules/eslint/lib/rules/strict.js similarity index 100% rename from tools/eslint/lib/rules/strict.js rename to tools/node_modules/eslint/lib/rules/strict.js diff --git a/tools/eslint/lib/rules/switch-colon-spacing.js b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js similarity index 100% rename from tools/eslint/lib/rules/switch-colon-spacing.js rename to tools/node_modules/eslint/lib/rules/switch-colon-spacing.js diff --git a/tools/eslint/lib/rules/symbol-description.js b/tools/node_modules/eslint/lib/rules/symbol-description.js similarity index 100% rename from tools/eslint/lib/rules/symbol-description.js rename to tools/node_modules/eslint/lib/rules/symbol-description.js diff --git a/tools/eslint/lib/rules/template-curly-spacing.js b/tools/node_modules/eslint/lib/rules/template-curly-spacing.js similarity index 100% rename from tools/eslint/lib/rules/template-curly-spacing.js rename to tools/node_modules/eslint/lib/rules/template-curly-spacing.js diff --git a/tools/eslint/lib/rules/template-tag-spacing.js b/tools/node_modules/eslint/lib/rules/template-tag-spacing.js similarity index 100% rename from tools/eslint/lib/rules/template-tag-spacing.js rename to tools/node_modules/eslint/lib/rules/template-tag-spacing.js diff --git a/tools/eslint/lib/rules/unicode-bom.js b/tools/node_modules/eslint/lib/rules/unicode-bom.js similarity index 100% rename from tools/eslint/lib/rules/unicode-bom.js rename to tools/node_modules/eslint/lib/rules/unicode-bom.js diff --git a/tools/eslint/lib/rules/use-isnan.js b/tools/node_modules/eslint/lib/rules/use-isnan.js similarity index 100% rename from tools/eslint/lib/rules/use-isnan.js rename to tools/node_modules/eslint/lib/rules/use-isnan.js diff --git a/tools/eslint/lib/rules/valid-jsdoc.js b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js similarity index 100% rename from tools/eslint/lib/rules/valid-jsdoc.js rename to tools/node_modules/eslint/lib/rules/valid-jsdoc.js diff --git a/tools/eslint/lib/rules/valid-typeof.js b/tools/node_modules/eslint/lib/rules/valid-typeof.js similarity index 100% rename from tools/eslint/lib/rules/valid-typeof.js rename to tools/node_modules/eslint/lib/rules/valid-typeof.js diff --git a/tools/eslint/lib/rules/vars-on-top.js b/tools/node_modules/eslint/lib/rules/vars-on-top.js similarity index 100% rename from tools/eslint/lib/rules/vars-on-top.js rename to tools/node_modules/eslint/lib/rules/vars-on-top.js diff --git a/tools/eslint/lib/rules/wrap-iife.js b/tools/node_modules/eslint/lib/rules/wrap-iife.js similarity index 100% rename from tools/eslint/lib/rules/wrap-iife.js rename to tools/node_modules/eslint/lib/rules/wrap-iife.js diff --git a/tools/eslint/lib/rules/wrap-regex.js b/tools/node_modules/eslint/lib/rules/wrap-regex.js similarity index 100% rename from tools/eslint/lib/rules/wrap-regex.js rename to tools/node_modules/eslint/lib/rules/wrap-regex.js diff --git a/tools/eslint/lib/rules/yield-star-spacing.js b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js similarity index 100% rename from tools/eslint/lib/rules/yield-star-spacing.js rename to tools/node_modules/eslint/lib/rules/yield-star-spacing.js diff --git a/tools/eslint/lib/rules/yoda.js b/tools/node_modules/eslint/lib/rules/yoda.js similarity index 100% rename from tools/eslint/lib/rules/yoda.js rename to tools/node_modules/eslint/lib/rules/yoda.js diff --git a/tools/eslint/lib/testers/rule-tester.js b/tools/node_modules/eslint/lib/testers/rule-tester.js similarity index 100% rename from tools/eslint/lib/testers/rule-tester.js rename to tools/node_modules/eslint/lib/testers/rule-tester.js diff --git a/tools/eslint/lib/timing.js b/tools/node_modules/eslint/lib/timing.js similarity index 100% rename from tools/eslint/lib/timing.js rename to tools/node_modules/eslint/lib/timing.js diff --git a/tools/eslint/lib/token-store/backward-token-comment-cursor.js b/tools/node_modules/eslint/lib/token-store/backward-token-comment-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/backward-token-comment-cursor.js rename to tools/node_modules/eslint/lib/token-store/backward-token-comment-cursor.js diff --git a/tools/eslint/lib/token-store/backward-token-cursor.js b/tools/node_modules/eslint/lib/token-store/backward-token-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/backward-token-cursor.js rename to tools/node_modules/eslint/lib/token-store/backward-token-cursor.js diff --git a/tools/eslint/lib/token-store/cursor.js b/tools/node_modules/eslint/lib/token-store/cursor.js similarity index 100% rename from tools/eslint/lib/token-store/cursor.js rename to tools/node_modules/eslint/lib/token-store/cursor.js diff --git a/tools/eslint/lib/token-store/cursors.js b/tools/node_modules/eslint/lib/token-store/cursors.js similarity index 100% rename from tools/eslint/lib/token-store/cursors.js rename to tools/node_modules/eslint/lib/token-store/cursors.js diff --git a/tools/eslint/lib/token-store/decorative-cursor.js b/tools/node_modules/eslint/lib/token-store/decorative-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/decorative-cursor.js rename to tools/node_modules/eslint/lib/token-store/decorative-cursor.js diff --git a/tools/eslint/lib/token-store/filter-cursor.js b/tools/node_modules/eslint/lib/token-store/filter-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/filter-cursor.js rename to tools/node_modules/eslint/lib/token-store/filter-cursor.js diff --git a/tools/eslint/lib/token-store/forward-token-comment-cursor.js b/tools/node_modules/eslint/lib/token-store/forward-token-comment-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/forward-token-comment-cursor.js rename to tools/node_modules/eslint/lib/token-store/forward-token-comment-cursor.js diff --git a/tools/eslint/lib/token-store/forward-token-cursor.js b/tools/node_modules/eslint/lib/token-store/forward-token-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/forward-token-cursor.js rename to tools/node_modules/eslint/lib/token-store/forward-token-cursor.js diff --git a/tools/eslint/lib/token-store/index.js b/tools/node_modules/eslint/lib/token-store/index.js similarity index 100% rename from tools/eslint/lib/token-store/index.js rename to tools/node_modules/eslint/lib/token-store/index.js diff --git a/tools/eslint/lib/token-store/limit-cursor.js b/tools/node_modules/eslint/lib/token-store/limit-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/limit-cursor.js rename to tools/node_modules/eslint/lib/token-store/limit-cursor.js diff --git a/tools/eslint/lib/token-store/padded-token-cursor.js b/tools/node_modules/eslint/lib/token-store/padded-token-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/padded-token-cursor.js rename to tools/node_modules/eslint/lib/token-store/padded-token-cursor.js diff --git a/tools/eslint/lib/token-store/skip-cursor.js b/tools/node_modules/eslint/lib/token-store/skip-cursor.js similarity index 100% rename from tools/eslint/lib/token-store/skip-cursor.js rename to tools/node_modules/eslint/lib/token-store/skip-cursor.js diff --git a/tools/eslint/lib/token-store/utils.js b/tools/node_modules/eslint/lib/token-store/utils.js similarity index 100% rename from tools/eslint/lib/token-store/utils.js rename to tools/node_modules/eslint/lib/token-store/utils.js diff --git a/tools/eslint/lib/util/ajv.js b/tools/node_modules/eslint/lib/util/ajv.js similarity index 100% rename from tools/eslint/lib/util/ajv.js rename to tools/node_modules/eslint/lib/util/ajv.js diff --git a/tools/eslint/lib/util/apply-disable-directives.js b/tools/node_modules/eslint/lib/util/apply-disable-directives.js similarity index 100% rename from tools/eslint/lib/util/apply-disable-directives.js rename to tools/node_modules/eslint/lib/util/apply-disable-directives.js diff --git a/tools/eslint/lib/util/fix-tracker.js b/tools/node_modules/eslint/lib/util/fix-tracker.js similarity index 100% rename from tools/eslint/lib/util/fix-tracker.js rename to tools/node_modules/eslint/lib/util/fix-tracker.js diff --git a/tools/eslint/lib/util/glob-util.js b/tools/node_modules/eslint/lib/util/glob-util.js similarity index 100% rename from tools/eslint/lib/util/glob-util.js rename to tools/node_modules/eslint/lib/util/glob-util.js diff --git a/tools/eslint/lib/util/glob.js b/tools/node_modules/eslint/lib/util/glob.js similarity index 100% rename from tools/eslint/lib/util/glob.js rename to tools/node_modules/eslint/lib/util/glob.js diff --git a/tools/eslint/lib/util/hash.js b/tools/node_modules/eslint/lib/util/hash.js similarity index 100% rename from tools/eslint/lib/util/hash.js rename to tools/node_modules/eslint/lib/util/hash.js diff --git a/tools/eslint/lib/util/keywords.js b/tools/node_modules/eslint/lib/util/keywords.js similarity index 100% rename from tools/eslint/lib/util/keywords.js rename to tools/node_modules/eslint/lib/util/keywords.js diff --git a/tools/eslint/lib/util/module-resolver.js b/tools/node_modules/eslint/lib/util/module-resolver.js similarity index 100% rename from tools/eslint/lib/util/module-resolver.js rename to tools/node_modules/eslint/lib/util/module-resolver.js diff --git a/tools/eslint/lib/util/naming.js b/tools/node_modules/eslint/lib/util/naming.js similarity index 100% rename from tools/eslint/lib/util/naming.js rename to tools/node_modules/eslint/lib/util/naming.js diff --git a/tools/eslint/lib/util/node-event-generator.js b/tools/node_modules/eslint/lib/util/node-event-generator.js similarity index 100% rename from tools/eslint/lib/util/node-event-generator.js rename to tools/node_modules/eslint/lib/util/node-event-generator.js diff --git a/tools/eslint/lib/util/npm-util.js b/tools/node_modules/eslint/lib/util/npm-util.js similarity index 100% rename from tools/eslint/lib/util/npm-util.js rename to tools/node_modules/eslint/lib/util/npm-util.js diff --git a/tools/eslint/lib/util/path-util.js b/tools/node_modules/eslint/lib/util/path-util.js similarity index 100% rename from tools/eslint/lib/util/path-util.js rename to tools/node_modules/eslint/lib/util/path-util.js diff --git a/tools/eslint/lib/util/patterns/letters.js b/tools/node_modules/eslint/lib/util/patterns/letters.js similarity index 100% rename from tools/eslint/lib/util/patterns/letters.js rename to tools/node_modules/eslint/lib/util/patterns/letters.js diff --git a/tools/eslint/lib/util/rule-fixer.js b/tools/node_modules/eslint/lib/util/rule-fixer.js similarity index 100% rename from tools/eslint/lib/util/rule-fixer.js rename to tools/node_modules/eslint/lib/util/rule-fixer.js diff --git a/tools/eslint/lib/util/safe-emitter.js b/tools/node_modules/eslint/lib/util/safe-emitter.js similarity index 100% rename from tools/eslint/lib/util/safe-emitter.js rename to tools/node_modules/eslint/lib/util/safe-emitter.js diff --git a/tools/eslint/lib/util/source-code-fixer.js b/tools/node_modules/eslint/lib/util/source-code-fixer.js similarity index 100% rename from tools/eslint/lib/util/source-code-fixer.js rename to tools/node_modules/eslint/lib/util/source-code-fixer.js diff --git a/tools/eslint/lib/util/source-code-util.js b/tools/node_modules/eslint/lib/util/source-code-util.js similarity index 100% rename from tools/eslint/lib/util/source-code-util.js rename to tools/node_modules/eslint/lib/util/source-code-util.js diff --git a/tools/eslint/lib/util/source-code.js b/tools/node_modules/eslint/lib/util/source-code.js similarity index 100% rename from tools/eslint/lib/util/source-code.js rename to tools/node_modules/eslint/lib/util/source-code.js diff --git a/tools/eslint/lib/util/traverser.js b/tools/node_modules/eslint/lib/util/traverser.js similarity index 100% rename from tools/eslint/lib/util/traverser.js rename to tools/node_modules/eslint/lib/util/traverser.js diff --git a/tools/eslint/lib/util/xml-escape.js b/tools/node_modules/eslint/lib/util/xml-escape.js similarity index 100% rename from tools/eslint/lib/util/xml-escape.js rename to tools/node_modules/eslint/lib/util/xml-escape.js diff --git a/tools/eslint/messages/extend-config-missing.txt b/tools/node_modules/eslint/messages/extend-config-missing.txt similarity index 100% rename from tools/eslint/messages/extend-config-missing.txt rename to tools/node_modules/eslint/messages/extend-config-missing.txt diff --git a/tools/eslint/messages/no-config-found.txt b/tools/node_modules/eslint/messages/no-config-found.txt similarity index 100% rename from tools/eslint/messages/no-config-found.txt rename to tools/node_modules/eslint/messages/no-config-found.txt diff --git a/tools/eslint/messages/plugin-missing.txt b/tools/node_modules/eslint/messages/plugin-missing.txt similarity index 100% rename from tools/eslint/messages/plugin-missing.txt rename to tools/node_modules/eslint/messages/plugin-missing.txt diff --git a/tools/eslint/messages/whitespace-found.txt b/tools/node_modules/eslint/messages/whitespace-found.txt similarity index 100% rename from tools/eslint/messages/whitespace-found.txt rename to tools/node_modules/eslint/messages/whitespace-found.txt diff --git a/tools/eslint/node_modules/acorn-jsx/LICENSE b/tools/node_modules/eslint/node_modules/acorn-jsx/LICENSE similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/LICENSE rename to tools/node_modules/eslint/node_modules/acorn-jsx/LICENSE diff --git a/tools/eslint/node_modules/acorn-jsx/README.md b/tools/node_modules/eslint/node_modules/acorn-jsx/README.md similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/README.md rename to tools/node_modules/eslint/node_modules/acorn-jsx/README.md diff --git a/tools/eslint/node_modules/acorn-jsx/index.js b/tools/node_modules/eslint/node_modules/acorn-jsx/index.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/index.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/index.js diff --git a/tools/eslint/node_modules/acorn-jsx/inject.js b/tools/node_modules/eslint/node_modules/acorn-jsx/inject.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/inject.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/inject.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/.tern-project b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/.tern-project similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/.tern-project rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/.tern-project diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/AUTHORS b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/AUTHORS similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/AUTHORS rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/AUTHORS diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/LICENSE b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/LICENSE similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/LICENSE rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/LICENSE diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/README.md b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/README.md similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/README.md rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/README.md diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/acorn b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/acorn similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/acorn rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/acorn diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/generate-identifier-regex.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/generate-identifier-regex.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/generate-identifier-regex.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/generate-identifier-regex.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/.keep b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/.keep similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/.keep rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/.keep diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.es.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.es.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.es.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.es.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.es.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.es.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.es.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.es.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/acorn_loose.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.es.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.es.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.es.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.es.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/dist/walk.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.bin.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.bin.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.bin.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.bin.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.loose.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.loose.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.loose.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.loose.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.main.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.main.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.main.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.main.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.walk.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.walk.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.walk.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/rollup/config.walk.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/bin/acorn.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/bin/acorn.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/bin/acorn.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/bin/acorn.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/expression.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/expression.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/expression.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/expression.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/identifier.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/identifier.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/identifier.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/identifier.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/index.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/index.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/index.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/index.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/location.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/location.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/location.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/location.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/locutil.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/locutil.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/locutil.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/locutil.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/expression.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/expression.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/expression.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/expression.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/parseutil.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/parseutil.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/parseutil.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/parseutil.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/state.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/state.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/state.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/state.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/statement.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/statement.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/statement.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/statement.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/tokenize.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/tokenize.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/tokenize.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/loose/tokenize.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/lval.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/lval.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/lval.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/lval.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/node.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/node.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/node.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/node.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/options.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/options.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/options.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/options.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/parseutil.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/parseutil.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/parseutil.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/parseutil.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/state.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/state.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/state.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/state.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/statement.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/statement.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/statement.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/statement.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokencontext.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokencontext.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokencontext.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokencontext.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokenize.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokenize.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokenize.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokenize.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokentype.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokentype.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokentype.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/tokentype.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/util.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/util.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/util.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/util.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/walk/index.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/walk/index.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/walk/index.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/walk/index.js diff --git a/tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/whitespace.js b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/whitespace.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/node_modules/acorn/src/whitespace.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/src/whitespace.js diff --git a/tools/eslint/node_modules/acorn-jsx/package.json b/tools/node_modules/eslint/node_modules/acorn-jsx/package.json similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/package.json rename to tools/node_modules/eslint/node_modules/acorn-jsx/package.json diff --git a/tools/eslint/node_modules/acorn-jsx/xhtml.js b/tools/node_modules/eslint/node_modules/acorn-jsx/xhtml.js similarity index 100% rename from tools/eslint/node_modules/acorn-jsx/xhtml.js rename to tools/node_modules/eslint/node_modules/acorn-jsx/xhtml.js diff --git a/tools/eslint/node_modules/acorn/AUTHORS b/tools/node_modules/eslint/node_modules/acorn/AUTHORS similarity index 100% rename from tools/eslint/node_modules/acorn/AUTHORS rename to tools/node_modules/eslint/node_modules/acorn/AUTHORS diff --git a/tools/eslint/node_modules/acorn/LICENSE b/tools/node_modules/eslint/node_modules/acorn/LICENSE similarity index 100% rename from tools/eslint/node_modules/acorn/LICENSE rename to tools/node_modules/eslint/node_modules/acorn/LICENSE diff --git a/tools/eslint/node_modules/acorn/README.md b/tools/node_modules/eslint/node_modules/acorn/README.md similarity index 100% rename from tools/eslint/node_modules/acorn/README.md rename to tools/node_modules/eslint/node_modules/acorn/README.md diff --git a/tools/eslint/node_modules/acorn/bin/acorn b/tools/node_modules/eslint/node_modules/acorn/bin/acorn similarity index 100% rename from tools/eslint/node_modules/acorn/bin/acorn rename to tools/node_modules/eslint/node_modules/acorn/bin/acorn diff --git a/tools/eslint/node_modules/acorn/dist/.keep b/tools/node_modules/eslint/node_modules/acorn/dist/.keep similarity index 100% rename from tools/eslint/node_modules/acorn/dist/.keep rename to tools/node_modules/eslint/node_modules/acorn/dist/.keep diff --git a/tools/eslint/node_modules/acorn/dist/acorn.es.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.es.js similarity index 100% rename from tools/eslint/node_modules/acorn/dist/acorn.es.js rename to tools/node_modules/eslint/node_modules/acorn/dist/acorn.es.js diff --git a/tools/eslint/node_modules/acorn/dist/acorn.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js similarity index 100% rename from tools/eslint/node_modules/acorn/dist/acorn.js rename to tools/node_modules/eslint/node_modules/acorn/dist/acorn.js diff --git a/tools/eslint/node_modules/acorn/dist/acorn_loose.es.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.es.js similarity index 100% rename from tools/eslint/node_modules/acorn/dist/acorn_loose.es.js rename to tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.es.js diff --git a/tools/eslint/node_modules/acorn/dist/acorn_loose.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.js similarity index 100% rename from tools/eslint/node_modules/acorn/dist/acorn_loose.js rename to tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.js diff --git a/tools/eslint/node_modules/acorn/dist/walk.es.js b/tools/node_modules/eslint/node_modules/acorn/dist/walk.es.js similarity index 100% rename from tools/eslint/node_modules/acorn/dist/walk.es.js rename to tools/node_modules/eslint/node_modules/acorn/dist/walk.es.js diff --git a/tools/eslint/node_modules/acorn/dist/walk.js b/tools/node_modules/eslint/node_modules/acorn/dist/walk.js similarity index 100% rename from tools/eslint/node_modules/acorn/dist/walk.js rename to tools/node_modules/eslint/node_modules/acorn/dist/walk.js diff --git a/tools/eslint/node_modules/acorn/package.json b/tools/node_modules/eslint/node_modules/acorn/package.json similarity index 100% rename from tools/eslint/node_modules/acorn/package.json rename to tools/node_modules/eslint/node_modules/acorn/package.json diff --git a/tools/eslint/node_modules/ajv-keywords/LICENSE b/tools/node_modules/eslint/node_modules/ajv-keywords/LICENSE similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/LICENSE rename to tools/node_modules/eslint/node_modules/ajv-keywords/LICENSE diff --git a/tools/eslint/node_modules/ajv-keywords/README.md b/tools/node_modules/eslint/node_modules/ajv-keywords/README.md similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/README.md rename to tools/node_modules/eslint/node_modules/ajv-keywords/README.md diff --git a/tools/eslint/node_modules/ajv-keywords/index.js b/tools/node_modules/eslint/node_modules/ajv-keywords/index.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/index.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/index.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/_formatLimit.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/_formatLimit.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/_formatLimit.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/_formatLimit.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/_util.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/_util.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/_util.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/_util.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/deepProperties.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/deepProperties.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/deepProperties.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/deepProperties.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/deepRequired.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/deepRequired.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/deepRequired.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/deepRequired.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dot/patternRequired.jst b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dot/patternRequired.jst similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dot/patternRequired.jst rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dot/patternRequired.jst diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dot/switch.jst b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dot/switch.jst similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dot/switch.jst rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dot/switch.jst diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/README.md b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/README.md similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dotjs/README.md rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/README.md diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/formatMaximum.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/formatMaximum.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/formatMaximum.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/formatMaximum.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/formatMinimum.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/formatMinimum.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/formatMinimum.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/formatMinimum.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/if.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/if.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/if.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/if.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/index.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/index.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/index.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/index.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/instanceof.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/instanceof.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/instanceof.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/instanceof.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/patternRequired.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/patternRequired.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/patternRequired.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/patternRequired.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/prohibited.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/prohibited.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/prohibited.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/prohibited.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/range.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/range.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/regexp.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/regexp.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/regexp.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/regexp.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/select.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/select.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/select.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/select.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/switch.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/switch.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/switch.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/switch.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/typeof.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/typeof.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/typeof.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/typeof.js diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js rename to tools/node_modules/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js diff --git a/tools/eslint/node_modules/ajv-keywords/package.json b/tools/node_modules/eslint/node_modules/ajv-keywords/package.json similarity index 100% rename from tools/eslint/node_modules/ajv-keywords/package.json rename to tools/node_modules/eslint/node_modules/ajv-keywords/package.json diff --git a/tools/eslint/node_modules/ajv/.tonic_example.js b/tools/node_modules/eslint/node_modules/ajv/.tonic_example.js similarity index 100% rename from tools/eslint/node_modules/ajv/.tonic_example.js rename to tools/node_modules/eslint/node_modules/ajv/.tonic_example.js diff --git a/tools/eslint/node_modules/ajv/LICENSE b/tools/node_modules/eslint/node_modules/ajv/LICENSE similarity index 100% rename from tools/eslint/node_modules/ajv/LICENSE rename to tools/node_modules/eslint/node_modules/ajv/LICENSE diff --git a/tools/eslint/node_modules/ajv/README.md b/tools/node_modules/eslint/node_modules/ajv/README.md similarity index 100% rename from tools/eslint/node_modules/ajv/README.md rename to tools/node_modules/eslint/node_modules/ajv/README.md diff --git a/tools/eslint/node_modules/ajv/dist/ajv.bundle.js b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js similarity index 100% rename from tools/eslint/node_modules/ajv/dist/ajv.bundle.js rename to tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js diff --git a/tools/eslint/node_modules/ajv/dist/ajv.min.js b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js similarity index 100% rename from tools/eslint/node_modules/ajv/dist/ajv.min.js rename to tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js diff --git a/tools/eslint/node_modules/ajv/dist/ajv.min.js.map b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map similarity index 100% rename from tools/eslint/node_modules/ajv/dist/ajv.min.js.map rename to tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map diff --git a/tools/eslint/node_modules/ajv/dist/nodent.min.js b/tools/node_modules/eslint/node_modules/ajv/dist/nodent.min.js similarity index 100% rename from tools/eslint/node_modules/ajv/dist/nodent.min.js rename to tools/node_modules/eslint/node_modules/ajv/dist/nodent.min.js diff --git a/tools/eslint/node_modules/ajv/dist/regenerator.min.js b/tools/node_modules/eslint/node_modules/ajv/dist/regenerator.min.js similarity index 100% rename from tools/eslint/node_modules/ajv/dist/regenerator.min.js rename to tools/node_modules/eslint/node_modules/ajv/dist/regenerator.min.js diff --git a/tools/eslint/node_modules/ajv/lib/$data.js b/tools/node_modules/eslint/node_modules/ajv/lib/$data.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/$data.js rename to tools/node_modules/eslint/node_modules/ajv/lib/$data.js diff --git a/tools/eslint/node_modules/ajv/lib/ajv.d.ts b/tools/node_modules/eslint/node_modules/ajv/lib/ajv.d.ts similarity index 100% rename from tools/eslint/node_modules/ajv/lib/ajv.d.ts rename to tools/node_modules/eslint/node_modules/ajv/lib/ajv.d.ts diff --git a/tools/eslint/node_modules/ajv/lib/ajv.js b/tools/node_modules/eslint/node_modules/ajv/lib/ajv.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/ajv.js rename to tools/node_modules/eslint/node_modules/ajv/lib/ajv.js diff --git a/tools/eslint/node_modules/ajv/lib/cache.js b/tools/node_modules/eslint/node_modules/ajv/lib/cache.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/cache.js rename to tools/node_modules/eslint/node_modules/ajv/lib/cache.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/_rules.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/_rules.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/_rules.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/_rules.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/async.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/async.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/async.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/async.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/equal.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/equal.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/equal.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/equal.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/error_classes.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/error_classes.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/error_classes.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/error_classes.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/formats.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/formats.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/formats.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/formats.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/index.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/index.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/resolve.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/resolve.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/resolve.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/resolve.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/rules.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/rules.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/rules.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/rules.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/schema_obj.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/schema_obj.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/schema_obj.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/schema_obj.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/ucs2length.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/ucs2length.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/ucs2length.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/ucs2length.js diff --git a/tools/eslint/node_modules/ajv/lib/compile/util.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/util.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/compile/util.js rename to tools/node_modules/eslint/node_modules/ajv/lib/compile/util.js diff --git a/tools/eslint/node_modules/ajv/lib/dot/_limit.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/_limit.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/_limit.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/_limit.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/_limitItems.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/_limitItems.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/_limitItems.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/_limitItems.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/_limitLength.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/_limitLength.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/_limitLength.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/_limitLength.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/_limitProperties.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/_limitProperties.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/_limitProperties.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/_limitProperties.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/allOf.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/allOf.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/allOf.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/allOf.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/anyOf.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/anyOf.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/anyOf.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/anyOf.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/coerce.def b/tools/node_modules/eslint/node_modules/ajv/lib/dot/coerce.def similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/coerce.def rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/coerce.def diff --git a/tools/eslint/node_modules/ajv/lib/dot/const.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/const.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/const.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/const.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/contains.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/contains.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/contains.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/contains.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/custom.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/custom.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/custom.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/custom.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/defaults.def b/tools/node_modules/eslint/node_modules/ajv/lib/dot/defaults.def similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/defaults.def rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/defaults.def diff --git a/tools/eslint/node_modules/ajv/lib/dot/definitions.def b/tools/node_modules/eslint/node_modules/ajv/lib/dot/definitions.def similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/definitions.def rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/definitions.def diff --git a/tools/eslint/node_modules/ajv/lib/dot/dependencies.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/dependencies.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/dependencies.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/dependencies.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/enum.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/enum.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/enum.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/enum.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/errors.def b/tools/node_modules/eslint/node_modules/ajv/lib/dot/errors.def similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/errors.def rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/errors.def diff --git a/tools/eslint/node_modules/ajv/lib/dot/format.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/format.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/format.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/format.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/items.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/items.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/items.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/items.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/missing.def b/tools/node_modules/eslint/node_modules/ajv/lib/dot/missing.def similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/missing.def rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/missing.def diff --git a/tools/eslint/node_modules/ajv/lib/dot/multipleOf.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/multipleOf.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/multipleOf.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/multipleOf.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/not.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/not.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/not.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/not.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/oneOf.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/oneOf.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/oneOf.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/oneOf.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/pattern.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/pattern.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/pattern.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/pattern.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/properties.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/properties.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/properties.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/properties.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/propertyNames.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/propertyNames.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/propertyNames.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/propertyNames.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/ref.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/ref.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/ref.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/ref.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/required.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/required.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/required.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/required.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/uniqueItems.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/uniqueItems.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/uniqueItems.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/uniqueItems.jst diff --git a/tools/eslint/node_modules/ajv/lib/dot/validate.jst b/tools/node_modules/eslint/node_modules/ajv/lib/dot/validate.jst similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dot/validate.jst rename to tools/node_modules/eslint/node_modules/ajv/lib/dot/validate.jst diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/README.md b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/README.md similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/README.md rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/README.md diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/_limit.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limit.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/_limit.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limit.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/_limitItems.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitItems.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/_limitItems.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitItems.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/_limitLength.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitLength.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/_limitLength.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitLength.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/allOf.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/allOf.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/allOf.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/allOf.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/anyOf.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/anyOf.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/anyOf.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/anyOf.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/const.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/const.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/const.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/const.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/contains.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/contains.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/contains.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/contains.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/custom.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/custom.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/custom.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/custom.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/dependencies.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/dependencies.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/dependencies.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/dependencies.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/enum.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/enum.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/enum.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/enum.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/format.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/format.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/format.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/format.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/items.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/items.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/items.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/items.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/multipleOf.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/multipleOf.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/multipleOf.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/multipleOf.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/not.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/not.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/not.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/not.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/oneOf.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/oneOf.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/oneOf.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/oneOf.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/pattern.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/pattern.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/pattern.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/pattern.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/properties.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/properties.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/properties.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/properties.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/propertyNames.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/propertyNames.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/propertyNames.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/propertyNames.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/ref.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/ref.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/ref.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/ref.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/required.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/required.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/required.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/required.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js diff --git a/tools/eslint/node_modules/ajv/lib/dotjs/validate.js b/tools/node_modules/eslint/node_modules/ajv/lib/dotjs/validate.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/dotjs/validate.js rename to tools/node_modules/eslint/node_modules/ajv/lib/dotjs/validate.js diff --git a/tools/eslint/node_modules/ajv/lib/keyword.js b/tools/node_modules/eslint/node_modules/ajv/lib/keyword.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/keyword.js rename to tools/node_modules/eslint/node_modules/ajv/lib/keyword.js diff --git a/tools/eslint/node_modules/ajv/lib/patternGroups.js b/tools/node_modules/eslint/node_modules/ajv/lib/patternGroups.js similarity index 100% rename from tools/eslint/node_modules/ajv/lib/patternGroups.js rename to tools/node_modules/eslint/node_modules/ajv/lib/patternGroups.js diff --git a/tools/eslint/node_modules/ajv/lib/refs/$data.json b/tools/node_modules/eslint/node_modules/ajv/lib/refs/$data.json similarity index 100% rename from tools/eslint/node_modules/ajv/lib/refs/$data.json rename to tools/node_modules/eslint/node_modules/ajv/lib/refs/$data.json diff --git a/tools/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json b/tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json similarity index 100% rename from tools/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json rename to tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json diff --git a/tools/eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json b/tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json similarity index 100% rename from tools/eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json rename to tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json diff --git a/tools/eslint/node_modules/ajv/lib/refs/json-schema-v5.json b/tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-v5.json similarity index 100% rename from tools/eslint/node_modules/ajv/lib/refs/json-schema-v5.json rename to tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-v5.json diff --git a/tools/eslint/node_modules/ajv/package.json b/tools/node_modules/eslint/node_modules/ajv/package.json similarity index 100% rename from tools/eslint/node_modules/ajv/package.json rename to tools/node_modules/eslint/node_modules/ajv/package.json diff --git a/tools/eslint/node_modules/ajv/scripts/.eslintrc.yml b/tools/node_modules/eslint/node_modules/ajv/scripts/.eslintrc.yml similarity index 100% rename from tools/eslint/node_modules/ajv/scripts/.eslintrc.yml rename to tools/node_modules/eslint/node_modules/ajv/scripts/.eslintrc.yml diff --git a/tools/eslint/node_modules/ajv/scripts/bundle.js b/tools/node_modules/eslint/node_modules/ajv/scripts/bundle.js similarity index 100% rename from tools/eslint/node_modules/ajv/scripts/bundle.js rename to tools/node_modules/eslint/node_modules/ajv/scripts/bundle.js diff --git a/tools/eslint/node_modules/ajv/scripts/compile-dots.js b/tools/node_modules/eslint/node_modules/ajv/scripts/compile-dots.js similarity index 100% rename from tools/eslint/node_modules/ajv/scripts/compile-dots.js rename to tools/node_modules/eslint/node_modules/ajv/scripts/compile-dots.js diff --git a/tools/eslint/node_modules/ajv/scripts/info b/tools/node_modules/eslint/node_modules/ajv/scripts/info similarity index 100% rename from tools/eslint/node_modules/ajv/scripts/info rename to tools/node_modules/eslint/node_modules/ajv/scripts/info diff --git a/tools/eslint/node_modules/ajv/scripts/prepare-tests b/tools/node_modules/eslint/node_modules/ajv/scripts/prepare-tests similarity index 100% rename from tools/eslint/node_modules/ajv/scripts/prepare-tests rename to tools/node_modules/eslint/node_modules/ajv/scripts/prepare-tests diff --git a/tools/eslint/node_modules/ajv/scripts/travis-gh-pages b/tools/node_modules/eslint/node_modules/ajv/scripts/travis-gh-pages similarity index 100% rename from tools/eslint/node_modules/ajv/scripts/travis-gh-pages rename to tools/node_modules/eslint/node_modules/ajv/scripts/travis-gh-pages diff --git a/tools/eslint/node_modules/ansi-escapes/index.js b/tools/node_modules/eslint/node_modules/ansi-escapes/index.js similarity index 100% rename from tools/eslint/node_modules/ansi-escapes/index.js rename to tools/node_modules/eslint/node_modules/ansi-escapes/index.js diff --git a/tools/eslint/node_modules/ansi-escapes/license b/tools/node_modules/eslint/node_modules/ansi-escapes/license similarity index 100% rename from tools/eslint/node_modules/ansi-escapes/license rename to tools/node_modules/eslint/node_modules/ansi-escapes/license diff --git a/tools/eslint/node_modules/ansi-escapes/package.json b/tools/node_modules/eslint/node_modules/ansi-escapes/package.json similarity index 100% rename from tools/eslint/node_modules/ansi-escapes/package.json rename to tools/node_modules/eslint/node_modules/ansi-escapes/package.json diff --git a/tools/eslint/node_modules/ansi-escapes/readme.md b/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md similarity index 100% rename from tools/eslint/node_modules/ansi-escapes/readme.md rename to tools/node_modules/eslint/node_modules/ansi-escapes/readme.md diff --git a/tools/eslint/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/ansi-regex/index.js similarity index 100% rename from tools/eslint/node_modules/ansi-regex/index.js rename to tools/node_modules/eslint/node_modules/ansi-regex/index.js diff --git a/tools/eslint/node_modules/ansi-regex/license b/tools/node_modules/eslint/node_modules/ansi-regex/license similarity index 100% rename from tools/eslint/node_modules/ansi-regex/license rename to tools/node_modules/eslint/node_modules/ansi-regex/license diff --git a/tools/eslint/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/ansi-regex/package.json similarity index 100% rename from tools/eslint/node_modules/ansi-regex/package.json rename to tools/node_modules/eslint/node_modules/ansi-regex/package.json diff --git a/tools/eslint/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/ansi-regex/readme.md similarity index 100% rename from tools/eslint/node_modules/ansi-regex/readme.md rename to tools/node_modules/eslint/node_modules/ansi-regex/readme.md diff --git a/tools/eslint/node_modules/ansi-styles/index.js b/tools/node_modules/eslint/node_modules/ansi-styles/index.js similarity index 100% rename from tools/eslint/node_modules/ansi-styles/index.js rename to tools/node_modules/eslint/node_modules/ansi-styles/index.js diff --git a/tools/eslint/node_modules/ansi-styles/license b/tools/node_modules/eslint/node_modules/ansi-styles/license similarity index 100% rename from tools/eslint/node_modules/ansi-styles/license rename to tools/node_modules/eslint/node_modules/ansi-styles/license diff --git a/tools/eslint/node_modules/ansi-styles/package.json b/tools/node_modules/eslint/node_modules/ansi-styles/package.json similarity index 100% rename from tools/eslint/node_modules/ansi-styles/package.json rename to tools/node_modules/eslint/node_modules/ansi-styles/package.json diff --git a/tools/eslint/node_modules/ansi-styles/readme.md b/tools/node_modules/eslint/node_modules/ansi-styles/readme.md similarity index 100% rename from tools/eslint/node_modules/ansi-styles/readme.md rename to tools/node_modules/eslint/node_modules/ansi-styles/readme.md diff --git a/tools/eslint/node_modules/argparse/LICENSE b/tools/node_modules/eslint/node_modules/argparse/LICENSE similarity index 100% rename from tools/eslint/node_modules/argparse/LICENSE rename to tools/node_modules/eslint/node_modules/argparse/LICENSE diff --git a/tools/eslint/node_modules/argparse/README.md b/tools/node_modules/eslint/node_modules/argparse/README.md similarity index 100% rename from tools/eslint/node_modules/argparse/README.md rename to tools/node_modules/eslint/node_modules/argparse/README.md diff --git a/tools/eslint/node_modules/argparse/index.js b/tools/node_modules/eslint/node_modules/argparse/index.js similarity index 100% rename from tools/eslint/node_modules/argparse/index.js rename to tools/node_modules/eslint/node_modules/argparse/index.js diff --git a/tools/eslint/node_modules/argparse/lib/action.js b/tools/node_modules/eslint/node_modules/argparse/lib/action.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action.js diff --git a/tools/eslint/node_modules/argparse/lib/action/append.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/append.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/append.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/append.js diff --git a/tools/eslint/node_modules/argparse/lib/action/append/constant.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/append/constant.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/append/constant.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/append/constant.js diff --git a/tools/eslint/node_modules/argparse/lib/action/count.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/count.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/count.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/count.js diff --git a/tools/eslint/node_modules/argparse/lib/action/help.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/help.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/help.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/help.js diff --git a/tools/eslint/node_modules/argparse/lib/action/store.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/store.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/store.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/store.js diff --git a/tools/eslint/node_modules/argparse/lib/action/store/constant.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/store/constant.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/store/constant.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/store/constant.js diff --git a/tools/eslint/node_modules/argparse/lib/action/store/false.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/store/false.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/store/false.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/store/false.js diff --git a/tools/eslint/node_modules/argparse/lib/action/store/true.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/store/true.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/store/true.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/store/true.js diff --git a/tools/eslint/node_modules/argparse/lib/action/subparsers.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/subparsers.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/subparsers.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/subparsers.js diff --git a/tools/eslint/node_modules/argparse/lib/action/version.js b/tools/node_modules/eslint/node_modules/argparse/lib/action/version.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action/version.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action/version.js diff --git a/tools/eslint/node_modules/argparse/lib/action_container.js b/tools/node_modules/eslint/node_modules/argparse/lib/action_container.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/action_container.js rename to tools/node_modules/eslint/node_modules/argparse/lib/action_container.js diff --git a/tools/eslint/node_modules/argparse/lib/argparse.js b/tools/node_modules/eslint/node_modules/argparse/lib/argparse.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/argparse.js rename to tools/node_modules/eslint/node_modules/argparse/lib/argparse.js diff --git a/tools/eslint/node_modules/argparse/lib/argument/error.js b/tools/node_modules/eslint/node_modules/argparse/lib/argument/error.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/argument/error.js rename to tools/node_modules/eslint/node_modules/argparse/lib/argument/error.js diff --git a/tools/eslint/node_modules/argparse/lib/argument/exclusive.js b/tools/node_modules/eslint/node_modules/argparse/lib/argument/exclusive.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/argument/exclusive.js rename to tools/node_modules/eslint/node_modules/argparse/lib/argument/exclusive.js diff --git a/tools/eslint/node_modules/argparse/lib/argument/group.js b/tools/node_modules/eslint/node_modules/argparse/lib/argument/group.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/argument/group.js rename to tools/node_modules/eslint/node_modules/argparse/lib/argument/group.js diff --git a/tools/eslint/node_modules/argparse/lib/argument_parser.js b/tools/node_modules/eslint/node_modules/argparse/lib/argument_parser.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/argument_parser.js rename to tools/node_modules/eslint/node_modules/argparse/lib/argument_parser.js diff --git a/tools/eslint/node_modules/argparse/lib/const.js b/tools/node_modules/eslint/node_modules/argparse/lib/const.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/const.js rename to tools/node_modules/eslint/node_modules/argparse/lib/const.js diff --git a/tools/eslint/node_modules/argparse/lib/help/added_formatters.js b/tools/node_modules/eslint/node_modules/argparse/lib/help/added_formatters.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/help/added_formatters.js rename to tools/node_modules/eslint/node_modules/argparse/lib/help/added_formatters.js diff --git a/tools/eslint/node_modules/argparse/lib/help/formatter.js b/tools/node_modules/eslint/node_modules/argparse/lib/help/formatter.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/help/formatter.js rename to tools/node_modules/eslint/node_modules/argparse/lib/help/formatter.js diff --git a/tools/eslint/node_modules/argparse/lib/namespace.js b/tools/node_modules/eslint/node_modules/argparse/lib/namespace.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/namespace.js rename to tools/node_modules/eslint/node_modules/argparse/lib/namespace.js diff --git a/tools/eslint/node_modules/argparse/lib/utils.js b/tools/node_modules/eslint/node_modules/argparse/lib/utils.js similarity index 100% rename from tools/eslint/node_modules/argparse/lib/utils.js rename to tools/node_modules/eslint/node_modules/argparse/lib/utils.js diff --git a/tools/eslint/node_modules/argparse/package.json b/tools/node_modules/eslint/node_modules/argparse/package.json similarity index 100% rename from tools/eslint/node_modules/argparse/package.json rename to tools/node_modules/eslint/node_modules/argparse/package.json diff --git a/tools/eslint/node_modules/array-union/index.js b/tools/node_modules/eslint/node_modules/array-union/index.js similarity index 100% rename from tools/eslint/node_modules/array-union/index.js rename to tools/node_modules/eslint/node_modules/array-union/index.js diff --git a/tools/eslint/node_modules/array-union/license b/tools/node_modules/eslint/node_modules/array-union/license similarity index 100% rename from tools/eslint/node_modules/array-union/license rename to tools/node_modules/eslint/node_modules/array-union/license diff --git a/tools/eslint/node_modules/array-union/package.json b/tools/node_modules/eslint/node_modules/array-union/package.json similarity index 100% rename from tools/eslint/node_modules/array-union/package.json rename to tools/node_modules/eslint/node_modules/array-union/package.json diff --git a/tools/eslint/node_modules/array-union/readme.md b/tools/node_modules/eslint/node_modules/array-union/readme.md similarity index 100% rename from tools/eslint/node_modules/array-union/readme.md rename to tools/node_modules/eslint/node_modules/array-union/readme.md diff --git a/tools/eslint/node_modules/array-uniq/index.js b/tools/node_modules/eslint/node_modules/array-uniq/index.js similarity index 100% rename from tools/eslint/node_modules/array-uniq/index.js rename to tools/node_modules/eslint/node_modules/array-uniq/index.js diff --git a/tools/eslint/node_modules/array-uniq/license b/tools/node_modules/eslint/node_modules/array-uniq/license similarity index 100% rename from tools/eslint/node_modules/array-uniq/license rename to tools/node_modules/eslint/node_modules/array-uniq/license diff --git a/tools/eslint/node_modules/array-uniq/package.json b/tools/node_modules/eslint/node_modules/array-uniq/package.json similarity index 100% rename from tools/eslint/node_modules/array-uniq/package.json rename to tools/node_modules/eslint/node_modules/array-uniq/package.json diff --git a/tools/eslint/node_modules/array-uniq/readme.md b/tools/node_modules/eslint/node_modules/array-uniq/readme.md similarity index 100% rename from tools/eslint/node_modules/array-uniq/readme.md rename to tools/node_modules/eslint/node_modules/array-uniq/readme.md diff --git a/tools/eslint/node_modules/arrify/index.js b/tools/node_modules/eslint/node_modules/arrify/index.js similarity index 100% rename from tools/eslint/node_modules/arrify/index.js rename to tools/node_modules/eslint/node_modules/arrify/index.js diff --git a/tools/eslint/node_modules/arrify/license b/tools/node_modules/eslint/node_modules/arrify/license similarity index 100% rename from tools/eslint/node_modules/arrify/license rename to tools/node_modules/eslint/node_modules/arrify/license diff --git a/tools/eslint/node_modules/arrify/package.json b/tools/node_modules/eslint/node_modules/arrify/package.json similarity index 100% rename from tools/eslint/node_modules/arrify/package.json rename to tools/node_modules/eslint/node_modules/arrify/package.json diff --git a/tools/eslint/node_modules/arrify/readme.md b/tools/node_modules/eslint/node_modules/arrify/readme.md similarity index 100% rename from tools/eslint/node_modules/arrify/readme.md rename to tools/node_modules/eslint/node_modules/arrify/readme.md diff --git a/tools/eslint/node_modules/babel-code-frame/README.md b/tools/node_modules/eslint/node_modules/babel-code-frame/README.md similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/README.md rename to tools/node_modules/eslint/node_modules/babel-code-frame/README.md diff --git a/tools/eslint/node_modules/babel-code-frame/lib/index.js b/tools/node_modules/eslint/node_modules/babel-code-frame/lib/index.js similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/lib/index.js rename to tools/node_modules/eslint/node_modules/babel-code-frame/lib/index.js diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/chalk/index.js b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/index.js similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/chalk/index.js rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/index.js diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/chalk/license b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/license similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/chalk/license rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/license diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/chalk/package.json b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/package.json similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/chalk/package.json rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/package.json diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/chalk/readme.md b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/readme.md similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/chalk/readme.md rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/chalk/readme.md diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/index.js b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/index.js similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/index.js rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/index.js diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/license b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/license similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/license rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/license diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/package.json b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/package.json similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/package.json rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/package.json diff --git a/tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/readme.md b/tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/readme.md similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/readme.md rename to tools/node_modules/eslint/node_modules/babel-code-frame/node_modules/strip-ansi/readme.md diff --git a/tools/eslint/node_modules/babel-code-frame/package-lock.json b/tools/node_modules/eslint/node_modules/babel-code-frame/package-lock.json similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/package-lock.json rename to tools/node_modules/eslint/node_modules/babel-code-frame/package-lock.json diff --git a/tools/eslint/node_modules/babel-code-frame/package.json b/tools/node_modules/eslint/node_modules/babel-code-frame/package.json similarity index 100% rename from tools/eslint/node_modules/babel-code-frame/package.json rename to tools/node_modules/eslint/node_modules/babel-code-frame/package.json diff --git a/tools/eslint/node_modules/bail/LICENSE b/tools/node_modules/eslint/node_modules/bail/LICENSE similarity index 100% rename from tools/eslint/node_modules/bail/LICENSE rename to tools/node_modules/eslint/node_modules/bail/LICENSE diff --git a/tools/eslint/node_modules/bail/index.js b/tools/node_modules/eslint/node_modules/bail/index.js similarity index 100% rename from tools/eslint/node_modules/bail/index.js rename to tools/node_modules/eslint/node_modules/bail/index.js diff --git a/tools/eslint/node_modules/bail/package.json b/tools/node_modules/eslint/node_modules/bail/package.json similarity index 100% rename from tools/eslint/node_modules/bail/package.json rename to tools/node_modules/eslint/node_modules/bail/package.json diff --git a/tools/eslint/node_modules/bail/readme.md b/tools/node_modules/eslint/node_modules/bail/readme.md similarity index 100% rename from tools/eslint/node_modules/bail/readme.md rename to tools/node_modules/eslint/node_modules/bail/readme.md diff --git a/tools/eslint/node_modules/balanced-match/LICENSE.md b/tools/node_modules/eslint/node_modules/balanced-match/LICENSE.md similarity index 100% rename from tools/eslint/node_modules/balanced-match/LICENSE.md rename to tools/node_modules/eslint/node_modules/balanced-match/LICENSE.md diff --git a/tools/eslint/node_modules/balanced-match/README.md b/tools/node_modules/eslint/node_modules/balanced-match/README.md similarity index 100% rename from tools/eslint/node_modules/balanced-match/README.md rename to tools/node_modules/eslint/node_modules/balanced-match/README.md diff --git a/tools/eslint/node_modules/balanced-match/index.js b/tools/node_modules/eslint/node_modules/balanced-match/index.js similarity index 100% rename from tools/eslint/node_modules/balanced-match/index.js rename to tools/node_modules/eslint/node_modules/balanced-match/index.js diff --git a/tools/eslint/node_modules/balanced-match/package.json b/tools/node_modules/eslint/node_modules/balanced-match/package.json similarity index 100% rename from tools/eslint/node_modules/balanced-match/package.json rename to tools/node_modules/eslint/node_modules/balanced-match/package.json diff --git a/tools/eslint/node_modules/brace-expansion/README.md b/tools/node_modules/eslint/node_modules/brace-expansion/README.md similarity index 100% rename from tools/eslint/node_modules/brace-expansion/README.md rename to tools/node_modules/eslint/node_modules/brace-expansion/README.md diff --git a/tools/eslint/node_modules/brace-expansion/index.js b/tools/node_modules/eslint/node_modules/brace-expansion/index.js similarity index 100% rename from tools/eslint/node_modules/brace-expansion/index.js rename to tools/node_modules/eslint/node_modules/brace-expansion/index.js diff --git a/tools/eslint/node_modules/brace-expansion/package.json b/tools/node_modules/eslint/node_modules/brace-expansion/package.json similarity index 100% rename from tools/eslint/node_modules/brace-expansion/package.json rename to tools/node_modules/eslint/node_modules/brace-expansion/package.json diff --git a/tools/eslint/node_modules/caller-path/index.js b/tools/node_modules/eslint/node_modules/caller-path/index.js similarity index 100% rename from tools/eslint/node_modules/caller-path/index.js rename to tools/node_modules/eslint/node_modules/caller-path/index.js diff --git a/tools/eslint/node_modules/caller-path/package.json b/tools/node_modules/eslint/node_modules/caller-path/package.json similarity index 100% rename from tools/eslint/node_modules/caller-path/package.json rename to tools/node_modules/eslint/node_modules/caller-path/package.json diff --git a/tools/eslint/node_modules/caller-path/readme.md b/tools/node_modules/eslint/node_modules/caller-path/readme.md similarity index 100% rename from tools/eslint/node_modules/caller-path/readme.md rename to tools/node_modules/eslint/node_modules/caller-path/readme.md diff --git a/tools/eslint/node_modules/callsites/index.js b/tools/node_modules/eslint/node_modules/callsites/index.js similarity index 100% rename from tools/eslint/node_modules/callsites/index.js rename to tools/node_modules/eslint/node_modules/callsites/index.js diff --git a/tools/eslint/node_modules/callsites/package.json b/tools/node_modules/eslint/node_modules/callsites/package.json similarity index 100% rename from tools/eslint/node_modules/callsites/package.json rename to tools/node_modules/eslint/node_modules/callsites/package.json diff --git a/tools/eslint/node_modules/callsites/readme.md b/tools/node_modules/eslint/node_modules/callsites/readme.md similarity index 100% rename from tools/eslint/node_modules/callsites/readme.md rename to tools/node_modules/eslint/node_modules/callsites/readme.md diff --git a/tools/eslint/node_modules/chalk/index.js b/tools/node_modules/eslint/node_modules/chalk/index.js similarity index 100% rename from tools/eslint/node_modules/chalk/index.js rename to tools/node_modules/eslint/node_modules/chalk/index.js diff --git a/tools/eslint/node_modules/chalk/license b/tools/node_modules/eslint/node_modules/chalk/license similarity index 100% rename from tools/eslint/node_modules/chalk/license rename to tools/node_modules/eslint/node_modules/chalk/license diff --git a/tools/eslint/node_modules/chalk/node_modules/ansi-styles/index.js b/tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/index.js similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/ansi-styles/index.js rename to tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/index.js diff --git a/tools/eslint/node_modules/chalk/node_modules/ansi-styles/license b/tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/license similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/ansi-styles/license rename to tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/license diff --git a/tools/eslint/node_modules/chalk/node_modules/ansi-styles/package.json b/tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/package.json similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/ansi-styles/package.json rename to tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/package.json diff --git a/tools/eslint/node_modules/chalk/node_modules/ansi-styles/readme.md b/tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/readme.md similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/ansi-styles/readme.md rename to tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/readme.md diff --git a/tools/eslint/node_modules/chalk/node_modules/supports-color/browser.js b/tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/browser.js similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/supports-color/browser.js rename to tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/browser.js diff --git a/tools/eslint/node_modules/chalk/node_modules/supports-color/index.js b/tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/index.js similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/supports-color/index.js rename to tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/index.js diff --git a/tools/eslint/node_modules/chalk/node_modules/supports-color/license b/tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/license similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/supports-color/license rename to tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/license diff --git a/tools/eslint/node_modules/chalk/node_modules/supports-color/package.json b/tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/package.json similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/supports-color/package.json rename to tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/package.json diff --git a/tools/eslint/node_modules/chalk/node_modules/supports-color/readme.md b/tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/readme.md similarity index 100% rename from tools/eslint/node_modules/chalk/node_modules/supports-color/readme.md rename to tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/readme.md diff --git a/tools/eslint/node_modules/chalk/package.json b/tools/node_modules/eslint/node_modules/chalk/package.json similarity index 100% rename from tools/eslint/node_modules/chalk/package.json rename to tools/node_modules/eslint/node_modules/chalk/package.json diff --git a/tools/eslint/node_modules/chalk/readme.md b/tools/node_modules/eslint/node_modules/chalk/readme.md similarity index 100% rename from tools/eslint/node_modules/chalk/readme.md rename to tools/node_modules/eslint/node_modules/chalk/readme.md diff --git a/tools/eslint/node_modules/chalk/templates.js b/tools/node_modules/eslint/node_modules/chalk/templates.js similarity index 100% rename from tools/eslint/node_modules/chalk/templates.js rename to tools/node_modules/eslint/node_modules/chalk/templates.js diff --git a/tools/eslint/node_modules/chalk/types/index.d.ts b/tools/node_modules/eslint/node_modules/chalk/types/index.d.ts similarity index 100% rename from tools/eslint/node_modules/chalk/types/index.d.ts rename to tools/node_modules/eslint/node_modules/chalk/types/index.d.ts diff --git a/tools/eslint/node_modules/character-entities-legacy/LICENSE b/tools/node_modules/eslint/node_modules/character-entities-legacy/LICENSE similarity index 100% rename from tools/eslint/node_modules/character-entities-legacy/LICENSE rename to tools/node_modules/eslint/node_modules/character-entities-legacy/LICENSE diff --git a/tools/eslint/node_modules/character-entities-legacy/index.json b/tools/node_modules/eslint/node_modules/character-entities-legacy/index.json similarity index 100% rename from tools/eslint/node_modules/character-entities-legacy/index.json rename to tools/node_modules/eslint/node_modules/character-entities-legacy/index.json diff --git a/tools/eslint/node_modules/character-entities-legacy/package.json b/tools/node_modules/eslint/node_modules/character-entities-legacy/package.json similarity index 100% rename from tools/eslint/node_modules/character-entities-legacy/package.json rename to tools/node_modules/eslint/node_modules/character-entities-legacy/package.json diff --git a/tools/eslint/node_modules/character-entities-legacy/readme.md b/tools/node_modules/eslint/node_modules/character-entities-legacy/readme.md similarity index 100% rename from tools/eslint/node_modules/character-entities-legacy/readme.md rename to tools/node_modules/eslint/node_modules/character-entities-legacy/readme.md diff --git a/tools/eslint/node_modules/character-entities/LICENSE b/tools/node_modules/eslint/node_modules/character-entities/LICENSE similarity index 100% rename from tools/eslint/node_modules/character-entities/LICENSE rename to tools/node_modules/eslint/node_modules/character-entities/LICENSE diff --git a/tools/eslint/node_modules/character-entities/index.json b/tools/node_modules/eslint/node_modules/character-entities/index.json similarity index 100% rename from tools/eslint/node_modules/character-entities/index.json rename to tools/node_modules/eslint/node_modules/character-entities/index.json diff --git a/tools/eslint/node_modules/character-entities/package.json b/tools/node_modules/eslint/node_modules/character-entities/package.json similarity index 100% rename from tools/eslint/node_modules/character-entities/package.json rename to tools/node_modules/eslint/node_modules/character-entities/package.json diff --git a/tools/eslint/node_modules/character-entities/readme.md b/tools/node_modules/eslint/node_modules/character-entities/readme.md similarity index 100% rename from tools/eslint/node_modules/character-entities/readme.md rename to tools/node_modules/eslint/node_modules/character-entities/readme.md diff --git a/tools/eslint/node_modules/character-reference-invalid/LICENSE b/tools/node_modules/eslint/node_modules/character-reference-invalid/LICENSE similarity index 100% rename from tools/eslint/node_modules/character-reference-invalid/LICENSE rename to tools/node_modules/eslint/node_modules/character-reference-invalid/LICENSE diff --git a/tools/eslint/node_modules/character-reference-invalid/index.json b/tools/node_modules/eslint/node_modules/character-reference-invalid/index.json similarity index 100% rename from tools/eslint/node_modules/character-reference-invalid/index.json rename to tools/node_modules/eslint/node_modules/character-reference-invalid/index.json diff --git a/tools/eslint/node_modules/character-reference-invalid/package.json b/tools/node_modules/eslint/node_modules/character-reference-invalid/package.json similarity index 100% rename from tools/eslint/node_modules/character-reference-invalid/package.json rename to tools/node_modules/eslint/node_modules/character-reference-invalid/package.json diff --git a/tools/eslint/node_modules/character-reference-invalid/readme.md b/tools/node_modules/eslint/node_modules/character-reference-invalid/readme.md similarity index 100% rename from tools/eslint/node_modules/character-reference-invalid/readme.md rename to tools/node_modules/eslint/node_modules/character-reference-invalid/readme.md diff --git a/tools/eslint/node_modules/chardet/LICENSE b/tools/node_modules/eslint/node_modules/chardet/LICENSE similarity index 100% rename from tools/eslint/node_modules/chardet/LICENSE rename to tools/node_modules/eslint/node_modules/chardet/LICENSE diff --git a/tools/eslint/node_modules/chardet/README.md b/tools/node_modules/eslint/node_modules/chardet/README.md similarity index 100% rename from tools/eslint/node_modules/chardet/README.md rename to tools/node_modules/eslint/node_modules/chardet/README.md diff --git a/tools/eslint/node_modules/chardet/encoding/iso2022.js b/tools/node_modules/eslint/node_modules/chardet/encoding/iso2022.js similarity index 100% rename from tools/eslint/node_modules/chardet/encoding/iso2022.js rename to tools/node_modules/eslint/node_modules/chardet/encoding/iso2022.js diff --git a/tools/eslint/node_modules/chardet/encoding/mbcs.js b/tools/node_modules/eslint/node_modules/chardet/encoding/mbcs.js similarity index 100% rename from tools/eslint/node_modules/chardet/encoding/mbcs.js rename to tools/node_modules/eslint/node_modules/chardet/encoding/mbcs.js diff --git a/tools/eslint/node_modules/chardet/encoding/sbcs.js b/tools/node_modules/eslint/node_modules/chardet/encoding/sbcs.js similarity index 100% rename from tools/eslint/node_modules/chardet/encoding/sbcs.js rename to tools/node_modules/eslint/node_modules/chardet/encoding/sbcs.js diff --git a/tools/eslint/node_modules/chardet/encoding/unicode.js b/tools/node_modules/eslint/node_modules/chardet/encoding/unicode.js similarity index 100% rename from tools/eslint/node_modules/chardet/encoding/unicode.js rename to tools/node_modules/eslint/node_modules/chardet/encoding/unicode.js diff --git a/tools/eslint/node_modules/chardet/encoding/utf8.js b/tools/node_modules/eslint/node_modules/chardet/encoding/utf8.js similarity index 100% rename from tools/eslint/node_modules/chardet/encoding/utf8.js rename to tools/node_modules/eslint/node_modules/chardet/encoding/utf8.js diff --git a/tools/eslint/node_modules/chardet/index.js b/tools/node_modules/eslint/node_modules/chardet/index.js similarity index 100% rename from tools/eslint/node_modules/chardet/index.js rename to tools/node_modules/eslint/node_modules/chardet/index.js diff --git a/tools/eslint/node_modules/chardet/match.js b/tools/node_modules/eslint/node_modules/chardet/match.js similarity index 100% rename from tools/eslint/node_modules/chardet/match.js rename to tools/node_modules/eslint/node_modules/chardet/match.js diff --git a/tools/eslint/node_modules/chardet/package.json b/tools/node_modules/eslint/node_modules/chardet/package.json similarity index 100% rename from tools/eslint/node_modules/chardet/package.json rename to tools/node_modules/eslint/node_modules/chardet/package.json diff --git a/tools/eslint/node_modules/chardet/scripts/release b/tools/node_modules/eslint/node_modules/chardet/scripts/release similarity index 100% rename from tools/eslint/node_modules/chardet/scripts/release rename to tools/node_modules/eslint/node_modules/chardet/scripts/release diff --git a/tools/eslint/node_modules/chardet/yarn.lock b/tools/node_modules/eslint/node_modules/chardet/yarn.lock similarity index 100% rename from tools/eslint/node_modules/chardet/yarn.lock rename to tools/node_modules/eslint/node_modules/chardet/yarn.lock diff --git a/tools/eslint/node_modules/circular-json/LICENSE.txt b/tools/node_modules/eslint/node_modules/circular-json/LICENSE.txt similarity index 100% rename from tools/eslint/node_modules/circular-json/LICENSE.txt rename to tools/node_modules/eslint/node_modules/circular-json/LICENSE.txt diff --git a/tools/eslint/node_modules/circular-json/README.md b/tools/node_modules/eslint/node_modules/circular-json/README.md similarity index 100% rename from tools/eslint/node_modules/circular-json/README.md rename to tools/node_modules/eslint/node_modules/circular-json/README.md diff --git a/tools/eslint/node_modules/circular-json/build/circular-json.js b/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.js similarity index 100% rename from tools/eslint/node_modules/circular-json/build/circular-json.js rename to tools/node_modules/eslint/node_modules/circular-json/build/circular-json.js diff --git a/tools/eslint/node_modules/circular-json/build/circular-json.max.js b/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.max.js similarity index 100% rename from tools/eslint/node_modules/circular-json/build/circular-json.max.js rename to tools/node_modules/eslint/node_modules/circular-json/build/circular-json.max.js diff --git a/tools/eslint/node_modules/circular-json/build/circular-json.node.js b/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.node.js similarity index 100% rename from tools/eslint/node_modules/circular-json/build/circular-json.node.js rename to tools/node_modules/eslint/node_modules/circular-json/build/circular-json.node.js diff --git a/tools/eslint/node_modules/circular-json/package.json b/tools/node_modules/eslint/node_modules/circular-json/package.json similarity index 100% rename from tools/eslint/node_modules/circular-json/package.json rename to tools/node_modules/eslint/node_modules/circular-json/package.json diff --git a/tools/eslint/node_modules/circular-json/template/license.after b/tools/node_modules/eslint/node_modules/circular-json/template/license.after similarity index 100% rename from tools/eslint/node_modules/circular-json/template/license.after rename to tools/node_modules/eslint/node_modules/circular-json/template/license.after diff --git a/tools/eslint/node_modules/circular-json/template/license.before b/tools/node_modules/eslint/node_modules/circular-json/template/license.before similarity index 100% rename from tools/eslint/node_modules/circular-json/template/license.before rename to tools/node_modules/eslint/node_modules/circular-json/template/license.before diff --git a/tools/eslint/node_modules/cli-cursor/index.js b/tools/node_modules/eslint/node_modules/cli-cursor/index.js similarity index 100% rename from tools/eslint/node_modules/cli-cursor/index.js rename to tools/node_modules/eslint/node_modules/cli-cursor/index.js diff --git a/tools/eslint/node_modules/cli-cursor/license b/tools/node_modules/eslint/node_modules/cli-cursor/license similarity index 100% rename from tools/eslint/node_modules/cli-cursor/license rename to tools/node_modules/eslint/node_modules/cli-cursor/license diff --git a/tools/eslint/node_modules/cli-cursor/package.json b/tools/node_modules/eslint/node_modules/cli-cursor/package.json similarity index 100% rename from tools/eslint/node_modules/cli-cursor/package.json rename to tools/node_modules/eslint/node_modules/cli-cursor/package.json diff --git a/tools/eslint/node_modules/cli-cursor/readme.md b/tools/node_modules/eslint/node_modules/cli-cursor/readme.md similarity index 100% rename from tools/eslint/node_modules/cli-cursor/readme.md rename to tools/node_modules/eslint/node_modules/cli-cursor/readme.md diff --git a/tools/eslint/node_modules/cli-width/LICENSE b/tools/node_modules/eslint/node_modules/cli-width/LICENSE similarity index 100% rename from tools/eslint/node_modules/cli-width/LICENSE rename to tools/node_modules/eslint/node_modules/cli-width/LICENSE diff --git a/tools/eslint/node_modules/cli-width/README.md b/tools/node_modules/eslint/node_modules/cli-width/README.md similarity index 100% rename from tools/eslint/node_modules/cli-width/README.md rename to tools/node_modules/eslint/node_modules/cli-width/README.md diff --git a/tools/eslint/node_modules/cli-width/index.js b/tools/node_modules/eslint/node_modules/cli-width/index.js similarity index 100% rename from tools/eslint/node_modules/cli-width/index.js rename to tools/node_modules/eslint/node_modules/cli-width/index.js diff --git a/tools/eslint/node_modules/cli-width/package.json b/tools/node_modules/eslint/node_modules/cli-width/package.json similarity index 100% rename from tools/eslint/node_modules/cli-width/package.json rename to tools/node_modules/eslint/node_modules/cli-width/package.json diff --git a/tools/eslint/node_modules/co/LICENSE b/tools/node_modules/eslint/node_modules/co/LICENSE similarity index 100% rename from tools/eslint/node_modules/co/LICENSE rename to tools/node_modules/eslint/node_modules/co/LICENSE diff --git a/tools/eslint/node_modules/co/Readme.md b/tools/node_modules/eslint/node_modules/co/Readme.md similarity index 100% rename from tools/eslint/node_modules/co/Readme.md rename to tools/node_modules/eslint/node_modules/co/Readme.md diff --git a/tools/eslint/node_modules/co/index.js b/tools/node_modules/eslint/node_modules/co/index.js similarity index 100% rename from tools/eslint/node_modules/co/index.js rename to tools/node_modules/eslint/node_modules/co/index.js diff --git a/tools/eslint/node_modules/co/package.json b/tools/node_modules/eslint/node_modules/co/package.json similarity index 100% rename from tools/eslint/node_modules/co/package.json rename to tools/node_modules/eslint/node_modules/co/package.json diff --git a/tools/eslint/node_modules/collapse-white-space/LICENSE b/tools/node_modules/eslint/node_modules/collapse-white-space/LICENSE similarity index 100% rename from tools/eslint/node_modules/collapse-white-space/LICENSE rename to tools/node_modules/eslint/node_modules/collapse-white-space/LICENSE diff --git a/tools/eslint/node_modules/collapse-white-space/index.js b/tools/node_modules/eslint/node_modules/collapse-white-space/index.js similarity index 100% rename from tools/eslint/node_modules/collapse-white-space/index.js rename to tools/node_modules/eslint/node_modules/collapse-white-space/index.js diff --git a/tools/eslint/node_modules/collapse-white-space/package.json b/tools/node_modules/eslint/node_modules/collapse-white-space/package.json similarity index 100% rename from tools/eslint/node_modules/collapse-white-space/package.json rename to tools/node_modules/eslint/node_modules/collapse-white-space/package.json diff --git a/tools/eslint/node_modules/collapse-white-space/readme.md b/tools/node_modules/eslint/node_modules/collapse-white-space/readme.md similarity index 100% rename from tools/eslint/node_modules/collapse-white-space/readme.md rename to tools/node_modules/eslint/node_modules/collapse-white-space/readme.md diff --git a/tools/eslint/node_modules/color-convert/LICENSE b/tools/node_modules/eslint/node_modules/color-convert/LICENSE similarity index 100% rename from tools/eslint/node_modules/color-convert/LICENSE rename to tools/node_modules/eslint/node_modules/color-convert/LICENSE diff --git a/tools/eslint/node_modules/color-convert/README.md b/tools/node_modules/eslint/node_modules/color-convert/README.md similarity index 100% rename from tools/eslint/node_modules/color-convert/README.md rename to tools/node_modules/eslint/node_modules/color-convert/README.md diff --git a/tools/eslint/node_modules/color-convert/conversions.js b/tools/node_modules/eslint/node_modules/color-convert/conversions.js similarity index 100% rename from tools/eslint/node_modules/color-convert/conversions.js rename to tools/node_modules/eslint/node_modules/color-convert/conversions.js diff --git a/tools/eslint/node_modules/color-convert/index.js b/tools/node_modules/eslint/node_modules/color-convert/index.js similarity index 100% rename from tools/eslint/node_modules/color-convert/index.js rename to tools/node_modules/eslint/node_modules/color-convert/index.js diff --git a/tools/eslint/node_modules/color-convert/package.json b/tools/node_modules/eslint/node_modules/color-convert/package.json similarity index 100% rename from tools/eslint/node_modules/color-convert/package.json rename to tools/node_modules/eslint/node_modules/color-convert/package.json diff --git a/tools/eslint/node_modules/color-convert/route.js b/tools/node_modules/eslint/node_modules/color-convert/route.js similarity index 100% rename from tools/eslint/node_modules/color-convert/route.js rename to tools/node_modules/eslint/node_modules/color-convert/route.js diff --git a/tools/eslint/node_modules/color-name/.eslintrc.json b/tools/node_modules/eslint/node_modules/color-name/.eslintrc.json similarity index 100% rename from tools/eslint/node_modules/color-name/.eslintrc.json rename to tools/node_modules/eslint/node_modules/color-name/.eslintrc.json diff --git a/tools/eslint/node_modules/color-name/LICENSE b/tools/node_modules/eslint/node_modules/color-name/LICENSE similarity index 100% rename from tools/eslint/node_modules/color-name/LICENSE rename to tools/node_modules/eslint/node_modules/color-name/LICENSE diff --git a/tools/eslint/node_modules/color-name/README.md b/tools/node_modules/eslint/node_modules/color-name/README.md similarity index 100% rename from tools/eslint/node_modules/color-name/README.md rename to tools/node_modules/eslint/node_modules/color-name/README.md diff --git a/tools/eslint/node_modules/color-name/index.js b/tools/node_modules/eslint/node_modules/color-name/index.js similarity index 100% rename from tools/eslint/node_modules/color-name/index.js rename to tools/node_modules/eslint/node_modules/color-name/index.js diff --git a/tools/eslint/node_modules/color-name/package.json b/tools/node_modules/eslint/node_modules/color-name/package.json similarity index 100% rename from tools/eslint/node_modules/color-name/package.json rename to tools/node_modules/eslint/node_modules/color-name/package.json diff --git a/tools/eslint/node_modules/concat-map/LICENSE b/tools/node_modules/eslint/node_modules/concat-map/LICENSE similarity index 100% rename from tools/eslint/node_modules/concat-map/LICENSE rename to tools/node_modules/eslint/node_modules/concat-map/LICENSE diff --git a/tools/eslint/node_modules/concat-map/README.markdown b/tools/node_modules/eslint/node_modules/concat-map/README.markdown similarity index 100% rename from tools/eslint/node_modules/concat-map/README.markdown rename to tools/node_modules/eslint/node_modules/concat-map/README.markdown diff --git a/tools/eslint/node_modules/concat-map/index.js b/tools/node_modules/eslint/node_modules/concat-map/index.js similarity index 100% rename from tools/eslint/node_modules/concat-map/index.js rename to tools/node_modules/eslint/node_modules/concat-map/index.js diff --git a/tools/eslint/node_modules/concat-map/package.json b/tools/node_modules/eslint/node_modules/concat-map/package.json similarity index 100% rename from tools/eslint/node_modules/concat-map/package.json rename to tools/node_modules/eslint/node_modules/concat-map/package.json diff --git a/tools/eslint/node_modules/concat-stream/LICENSE b/tools/node_modules/eslint/node_modules/concat-stream/LICENSE similarity index 100% rename from tools/eslint/node_modules/concat-stream/LICENSE rename to tools/node_modules/eslint/node_modules/concat-stream/LICENSE diff --git a/tools/eslint/node_modules/concat-stream/index.js b/tools/node_modules/eslint/node_modules/concat-stream/index.js similarity index 100% rename from tools/eslint/node_modules/concat-stream/index.js rename to tools/node_modules/eslint/node_modules/concat-stream/index.js diff --git a/tools/eslint/node_modules/concat-stream/package.json b/tools/node_modules/eslint/node_modules/concat-stream/package.json similarity index 100% rename from tools/eslint/node_modules/concat-stream/package.json rename to tools/node_modules/eslint/node_modules/concat-stream/package.json diff --git a/tools/eslint/node_modules/concat-stream/readme.md b/tools/node_modules/eslint/node_modules/concat-stream/readme.md similarity index 100% rename from tools/eslint/node_modules/concat-stream/readme.md rename to tools/node_modules/eslint/node_modules/concat-stream/readme.md diff --git a/tools/eslint/node_modules/core-util-is/LICENSE b/tools/node_modules/eslint/node_modules/core-util-is/LICENSE similarity index 100% rename from tools/eslint/node_modules/core-util-is/LICENSE rename to tools/node_modules/eslint/node_modules/core-util-is/LICENSE diff --git a/tools/eslint/node_modules/core-util-is/README.md b/tools/node_modules/eslint/node_modules/core-util-is/README.md similarity index 100% rename from tools/eslint/node_modules/core-util-is/README.md rename to tools/node_modules/eslint/node_modules/core-util-is/README.md diff --git a/tools/eslint/node_modules/core-util-is/float.patch b/tools/node_modules/eslint/node_modules/core-util-is/float.patch similarity index 100% rename from tools/eslint/node_modules/core-util-is/float.patch rename to tools/node_modules/eslint/node_modules/core-util-is/float.patch diff --git a/tools/eslint/node_modules/core-util-is/lib/util.js b/tools/node_modules/eslint/node_modules/core-util-is/lib/util.js similarity index 100% rename from tools/eslint/node_modules/core-util-is/lib/util.js rename to tools/node_modules/eslint/node_modules/core-util-is/lib/util.js diff --git a/tools/eslint/node_modules/core-util-is/package.json b/tools/node_modules/eslint/node_modules/core-util-is/package.json similarity index 100% rename from tools/eslint/node_modules/core-util-is/package.json rename to tools/node_modules/eslint/node_modules/core-util-is/package.json diff --git a/tools/eslint/node_modules/cross-spawn/LICENSE b/tools/node_modules/eslint/node_modules/cross-spawn/LICENSE similarity index 100% rename from tools/eslint/node_modules/cross-spawn/LICENSE rename to tools/node_modules/eslint/node_modules/cross-spawn/LICENSE diff --git a/tools/eslint/node_modules/cross-spawn/README.md b/tools/node_modules/eslint/node_modules/cross-spawn/README.md similarity index 100% rename from tools/eslint/node_modules/cross-spawn/README.md rename to tools/node_modules/eslint/node_modules/cross-spawn/README.md diff --git a/tools/eslint/node_modules/cross-spawn/index.js b/tools/node_modules/eslint/node_modules/cross-spawn/index.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/index.js rename to tools/node_modules/eslint/node_modules/cross-spawn/index.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/enoent.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/enoent.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/enoent.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/enoent.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/parse.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/parse.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/parse.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/parse.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/readShebang.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/util/readShebang.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/util/readShebang.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/util/readShebang.js diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js b/tools/node_modules/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js similarity index 100% rename from tools/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js rename to tools/node_modules/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js diff --git a/tools/eslint/node_modules/cross-spawn/package.json b/tools/node_modules/eslint/node_modules/cross-spawn/package.json similarity index 100% rename from tools/eslint/node_modules/cross-spawn/package.json rename to tools/node_modules/eslint/node_modules/cross-spawn/package.json diff --git a/tools/eslint/node_modules/debug/.coveralls.yml b/tools/node_modules/eslint/node_modules/debug/.coveralls.yml similarity index 100% rename from tools/eslint/node_modules/debug/.coveralls.yml rename to tools/node_modules/eslint/node_modules/debug/.coveralls.yml diff --git a/tools/eslint/node_modules/debug/LICENSE b/tools/node_modules/eslint/node_modules/debug/LICENSE similarity index 100% rename from tools/eslint/node_modules/debug/LICENSE rename to tools/node_modules/eslint/node_modules/debug/LICENSE diff --git a/tools/eslint/node_modules/debug/Makefile b/tools/node_modules/eslint/node_modules/debug/Makefile similarity index 100% rename from tools/eslint/node_modules/debug/Makefile rename to tools/node_modules/eslint/node_modules/debug/Makefile diff --git a/tools/eslint/node_modules/debug/Readme.md b/tools/node_modules/eslint/node_modules/debug/Readme.md similarity index 100% rename from tools/eslint/node_modules/debug/Readme.md rename to tools/node_modules/eslint/node_modules/debug/Readme.md diff --git a/tools/eslint/node_modules/debug/karma.conf.js b/tools/node_modules/eslint/node_modules/debug/karma.conf.js similarity index 100% rename from tools/eslint/node_modules/debug/karma.conf.js rename to tools/node_modules/eslint/node_modules/debug/karma.conf.js diff --git a/tools/eslint/node_modules/debug/node.js b/tools/node_modules/eslint/node_modules/debug/node.js similarity index 100% rename from tools/eslint/node_modules/debug/node.js rename to tools/node_modules/eslint/node_modules/debug/node.js diff --git a/tools/eslint/node_modules/debug/package.json b/tools/node_modules/eslint/node_modules/debug/package.json similarity index 100% rename from tools/eslint/node_modules/debug/package.json rename to tools/node_modules/eslint/node_modules/debug/package.json diff --git a/tools/eslint/node_modules/debug/src/browser.js b/tools/node_modules/eslint/node_modules/debug/src/browser.js similarity index 100% rename from tools/eslint/node_modules/debug/src/browser.js rename to tools/node_modules/eslint/node_modules/debug/src/browser.js diff --git a/tools/eslint/node_modules/debug/src/debug.js b/tools/node_modules/eslint/node_modules/debug/src/debug.js similarity index 100% rename from tools/eslint/node_modules/debug/src/debug.js rename to tools/node_modules/eslint/node_modules/debug/src/debug.js diff --git a/tools/eslint/node_modules/debug/src/index.js b/tools/node_modules/eslint/node_modules/debug/src/index.js similarity index 100% rename from tools/eslint/node_modules/debug/src/index.js rename to tools/node_modules/eslint/node_modules/debug/src/index.js diff --git a/tools/eslint/node_modules/debug/src/node.js b/tools/node_modules/eslint/node_modules/debug/src/node.js similarity index 100% rename from tools/eslint/node_modules/debug/src/node.js rename to tools/node_modules/eslint/node_modules/debug/src/node.js diff --git a/tools/eslint/node_modules/deep-is/LICENSE b/tools/node_modules/eslint/node_modules/deep-is/LICENSE similarity index 100% rename from tools/eslint/node_modules/deep-is/LICENSE rename to tools/node_modules/eslint/node_modules/deep-is/LICENSE diff --git a/tools/eslint/node_modules/deep-is/README.markdown b/tools/node_modules/eslint/node_modules/deep-is/README.markdown similarity index 100% rename from tools/eslint/node_modules/deep-is/README.markdown rename to tools/node_modules/eslint/node_modules/deep-is/README.markdown diff --git a/tools/eslint/node_modules/deep-is/index.js b/tools/node_modules/eslint/node_modules/deep-is/index.js similarity index 100% rename from tools/eslint/node_modules/deep-is/index.js rename to tools/node_modules/eslint/node_modules/deep-is/index.js diff --git a/tools/eslint/node_modules/deep-is/package.json b/tools/node_modules/eslint/node_modules/deep-is/package.json similarity index 100% rename from tools/eslint/node_modules/deep-is/package.json rename to tools/node_modules/eslint/node_modules/deep-is/package.json diff --git a/tools/eslint/node_modules/del/index.js b/tools/node_modules/eslint/node_modules/del/index.js similarity index 100% rename from tools/eslint/node_modules/del/index.js rename to tools/node_modules/eslint/node_modules/del/index.js diff --git a/tools/eslint/node_modules/del/license b/tools/node_modules/eslint/node_modules/del/license similarity index 100% rename from tools/eslint/node_modules/del/license rename to tools/node_modules/eslint/node_modules/del/license diff --git a/tools/eslint/node_modules/del/package.json b/tools/node_modules/eslint/node_modules/del/package.json similarity index 100% rename from tools/eslint/node_modules/del/package.json rename to tools/node_modules/eslint/node_modules/del/package.json diff --git a/tools/eslint/node_modules/del/readme.md b/tools/node_modules/eslint/node_modules/del/readme.md similarity index 100% rename from tools/eslint/node_modules/del/readme.md rename to tools/node_modules/eslint/node_modules/del/readme.md diff --git a/tools/eslint/node_modules/doctrine/LICENSE b/tools/node_modules/eslint/node_modules/doctrine/LICENSE similarity index 100% rename from tools/eslint/node_modules/doctrine/LICENSE rename to tools/node_modules/eslint/node_modules/doctrine/LICENSE diff --git a/tools/eslint/node_modules/doctrine/LICENSE.closure-compiler b/tools/node_modules/eslint/node_modules/doctrine/LICENSE.closure-compiler similarity index 100% rename from tools/eslint/node_modules/doctrine/LICENSE.closure-compiler rename to tools/node_modules/eslint/node_modules/doctrine/LICENSE.closure-compiler diff --git a/tools/eslint/node_modules/doctrine/LICENSE.esprima b/tools/node_modules/eslint/node_modules/doctrine/LICENSE.esprima similarity index 100% rename from tools/eslint/node_modules/doctrine/LICENSE.esprima rename to tools/node_modules/eslint/node_modules/doctrine/LICENSE.esprima diff --git a/tools/eslint/node_modules/doctrine/README.md b/tools/node_modules/eslint/node_modules/doctrine/README.md similarity index 100% rename from tools/eslint/node_modules/doctrine/README.md rename to tools/node_modules/eslint/node_modules/doctrine/README.md diff --git a/tools/eslint/node_modules/doctrine/lib/doctrine.js b/tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js similarity index 100% rename from tools/eslint/node_modules/doctrine/lib/doctrine.js rename to tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js diff --git a/tools/eslint/node_modules/doctrine/lib/typed.js b/tools/node_modules/eslint/node_modules/doctrine/lib/typed.js similarity index 100% rename from tools/eslint/node_modules/doctrine/lib/typed.js rename to tools/node_modules/eslint/node_modules/doctrine/lib/typed.js diff --git a/tools/eslint/node_modules/doctrine/lib/utility.js b/tools/node_modules/eslint/node_modules/doctrine/lib/utility.js similarity index 100% rename from tools/eslint/node_modules/doctrine/lib/utility.js rename to tools/node_modules/eslint/node_modules/doctrine/lib/utility.js diff --git a/tools/eslint/node_modules/doctrine/package.json b/tools/node_modules/eslint/node_modules/doctrine/package.json similarity index 100% rename from tools/eslint/node_modules/doctrine/package.json rename to tools/node_modules/eslint/node_modules/doctrine/package.json diff --git a/tools/eslint/node_modules/escape-string-regexp/index.js b/tools/node_modules/eslint/node_modules/escape-string-regexp/index.js similarity index 100% rename from tools/eslint/node_modules/escape-string-regexp/index.js rename to tools/node_modules/eslint/node_modules/escape-string-regexp/index.js diff --git a/tools/eslint/node_modules/escape-string-regexp/license b/tools/node_modules/eslint/node_modules/escape-string-regexp/license similarity index 100% rename from tools/eslint/node_modules/escape-string-regexp/license rename to tools/node_modules/eslint/node_modules/escape-string-regexp/license diff --git a/tools/eslint/node_modules/escape-string-regexp/package.json b/tools/node_modules/eslint/node_modules/escape-string-regexp/package.json similarity index 100% rename from tools/eslint/node_modules/escape-string-regexp/package.json rename to tools/node_modules/eslint/node_modules/escape-string-regexp/package.json diff --git a/tools/eslint/node_modules/escape-string-regexp/readme.md b/tools/node_modules/eslint/node_modules/escape-string-regexp/readme.md similarity index 100% rename from tools/eslint/node_modules/escape-string-regexp/readme.md rename to tools/node_modules/eslint/node_modules/escape-string-regexp/readme.md diff --git a/tools/eslint/node_modules/eslint-plugin-markdown/LICENSE b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/LICENSE similarity index 100% rename from tools/eslint/node_modules/eslint-plugin-markdown/LICENSE rename to tools/node_modules/eslint/node_modules/eslint-plugin-markdown/LICENSE diff --git a/tools/eslint/node_modules/eslint-plugin-markdown/README.md b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md similarity index 100% rename from tools/eslint/node_modules/eslint-plugin-markdown/README.md rename to tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md diff --git a/tools/eslint/node_modules/eslint-plugin-markdown/index.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/index.js similarity index 100% rename from tools/eslint/node_modules/eslint-plugin-markdown/index.js rename to tools/node_modules/eslint/node_modules/eslint-plugin-markdown/index.js diff --git a/tools/eslint/node_modules/eslint-plugin-markdown/lib/index.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js similarity index 100% rename from tools/eslint/node_modules/eslint-plugin-markdown/lib/index.js rename to tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js diff --git a/tools/eslint/node_modules/eslint-plugin-markdown/lib/processor.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js similarity index 100% rename from tools/eslint/node_modules/eslint-plugin-markdown/lib/processor.js rename to tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js diff --git a/tools/eslint/node_modules/eslint-plugin-markdown/package.json b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json similarity index 100% rename from tools/eslint/node_modules/eslint-plugin-markdown/package.json rename to tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json diff --git a/tools/eslint/node_modules/eslint-scope/LICENSE b/tools/node_modules/eslint/node_modules/eslint-scope/LICENSE similarity index 100% rename from tools/eslint/node_modules/eslint-scope/LICENSE rename to tools/node_modules/eslint/node_modules/eslint-scope/LICENSE diff --git a/tools/eslint/node_modules/eslint-scope/README.md b/tools/node_modules/eslint/node_modules/eslint-scope/README.md similarity index 100% rename from tools/eslint/node_modules/eslint-scope/README.md rename to tools/node_modules/eslint/node_modules/eslint-scope/README.md diff --git a/tools/eslint/node_modules/eslint-scope/lib/definition.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/definition.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/definition.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/definition.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/index.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/index.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/index.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/index.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/pattern-visitor.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/pattern-visitor.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/pattern-visitor.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/pattern-visitor.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/reference.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/reference.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/reference.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/reference.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/referencer.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/referencer.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/referencer.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/referencer.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/scope-manager.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/scope-manager.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/scope-manager.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/scope-manager.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/scope.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/scope.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/scope.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/scope.js diff --git a/tools/eslint/node_modules/eslint-scope/lib/variable.js b/tools/node_modules/eslint/node_modules/eslint-scope/lib/variable.js similarity index 100% rename from tools/eslint/node_modules/eslint-scope/lib/variable.js rename to tools/node_modules/eslint/node_modules/eslint-scope/lib/variable.js diff --git a/tools/eslint/node_modules/eslint-scope/package.json b/tools/node_modules/eslint/node_modules/eslint-scope/package.json similarity index 100% rename from tools/eslint/node_modules/eslint-scope/package.json rename to tools/node_modules/eslint/node_modules/eslint-scope/package.json diff --git a/tools/eslint/node_modules/espree/LICENSE b/tools/node_modules/eslint/node_modules/espree/LICENSE similarity index 100% rename from tools/eslint/node_modules/espree/LICENSE rename to tools/node_modules/eslint/node_modules/espree/LICENSE diff --git a/tools/eslint/node_modules/espree/README.md b/tools/node_modules/eslint/node_modules/espree/README.md similarity index 100% rename from tools/eslint/node_modules/espree/README.md rename to tools/node_modules/eslint/node_modules/espree/README.md diff --git a/tools/eslint/node_modules/espree/espree.js b/tools/node_modules/eslint/node_modules/espree/espree.js similarity index 100% rename from tools/eslint/node_modules/espree/espree.js rename to tools/node_modules/eslint/node_modules/espree/espree.js diff --git a/tools/eslint/node_modules/espree/lib/ast-node-types.js b/tools/node_modules/eslint/node_modules/espree/lib/ast-node-types.js similarity index 100% rename from tools/eslint/node_modules/espree/lib/ast-node-types.js rename to tools/node_modules/eslint/node_modules/espree/lib/ast-node-types.js diff --git a/tools/eslint/node_modules/espree/lib/comment-attachment.js b/tools/node_modules/eslint/node_modules/espree/lib/comment-attachment.js similarity index 100% rename from tools/eslint/node_modules/espree/lib/comment-attachment.js rename to tools/node_modules/eslint/node_modules/espree/lib/comment-attachment.js diff --git a/tools/eslint/node_modules/espree/lib/features.js b/tools/node_modules/eslint/node_modules/espree/lib/features.js similarity index 100% rename from tools/eslint/node_modules/espree/lib/features.js rename to tools/node_modules/eslint/node_modules/espree/lib/features.js diff --git a/tools/eslint/node_modules/espree/lib/token-translator.js b/tools/node_modules/eslint/node_modules/espree/lib/token-translator.js similarity index 100% rename from tools/eslint/node_modules/espree/lib/token-translator.js rename to tools/node_modules/eslint/node_modules/espree/lib/token-translator.js diff --git a/tools/eslint/node_modules/espree/lib/visitor-keys.js b/tools/node_modules/eslint/node_modules/espree/lib/visitor-keys.js similarity index 100% rename from tools/eslint/node_modules/espree/lib/visitor-keys.js rename to tools/node_modules/eslint/node_modules/espree/lib/visitor-keys.js diff --git a/tools/eslint/node_modules/espree/package.json b/tools/node_modules/eslint/node_modules/espree/package.json similarity index 100% rename from tools/eslint/node_modules/espree/package.json rename to tools/node_modules/eslint/node_modules/espree/package.json diff --git a/tools/eslint/node_modules/esprima/LICENSE.BSD b/tools/node_modules/eslint/node_modules/esprima/LICENSE.BSD similarity index 100% rename from tools/eslint/node_modules/esprima/LICENSE.BSD rename to tools/node_modules/eslint/node_modules/esprima/LICENSE.BSD diff --git a/tools/eslint/node_modules/esprima/README.md b/tools/node_modules/eslint/node_modules/esprima/README.md similarity index 100% rename from tools/eslint/node_modules/esprima/README.md rename to tools/node_modules/eslint/node_modules/esprima/README.md diff --git a/tools/eslint/node_modules/esprima/bin/esparse.js b/tools/node_modules/eslint/node_modules/esprima/bin/esparse.js similarity index 100% rename from tools/eslint/node_modules/esprima/bin/esparse.js rename to tools/node_modules/eslint/node_modules/esprima/bin/esparse.js diff --git a/tools/eslint/node_modules/esprima/bin/esvalidate.js b/tools/node_modules/eslint/node_modules/esprima/bin/esvalidate.js similarity index 100% rename from tools/eslint/node_modules/esprima/bin/esvalidate.js rename to tools/node_modules/eslint/node_modules/esprima/bin/esvalidate.js diff --git a/tools/eslint/node_modules/esprima/dist/esprima.js b/tools/node_modules/eslint/node_modules/esprima/dist/esprima.js similarity index 100% rename from tools/eslint/node_modules/esprima/dist/esprima.js rename to tools/node_modules/eslint/node_modules/esprima/dist/esprima.js diff --git a/tools/eslint/node_modules/esprima/package.json b/tools/node_modules/eslint/node_modules/esprima/package.json similarity index 100% rename from tools/eslint/node_modules/esprima/package.json rename to tools/node_modules/eslint/node_modules/esprima/package.json diff --git a/tools/eslint/node_modules/esquery/README.md b/tools/node_modules/eslint/node_modules/esquery/README.md similarity index 100% rename from tools/eslint/node_modules/esquery/README.md rename to tools/node_modules/eslint/node_modules/esquery/README.md diff --git a/tools/eslint/node_modules/esquery/esquery.js b/tools/node_modules/eslint/node_modules/esquery/esquery.js similarity index 100% rename from tools/eslint/node_modules/esquery/esquery.js rename to tools/node_modules/eslint/node_modules/esquery/esquery.js diff --git a/tools/eslint/node_modules/esquery/license.txt b/tools/node_modules/eslint/node_modules/esquery/license.txt similarity index 100% rename from tools/eslint/node_modules/esquery/license.txt rename to tools/node_modules/eslint/node_modules/esquery/license.txt diff --git a/tools/eslint/node_modules/esquery/package.json b/tools/node_modules/eslint/node_modules/esquery/package.json similarity index 100% rename from tools/eslint/node_modules/esquery/package.json rename to tools/node_modules/eslint/node_modules/esquery/package.json diff --git a/tools/eslint/node_modules/esquery/parser.js b/tools/node_modules/eslint/node_modules/esquery/parser.js similarity index 100% rename from tools/eslint/node_modules/esquery/parser.js rename to tools/node_modules/eslint/node_modules/esquery/parser.js diff --git a/tools/eslint/node_modules/esrecurse/.babelrc b/tools/node_modules/eslint/node_modules/esrecurse/.babelrc similarity index 100% rename from tools/eslint/node_modules/esrecurse/.babelrc rename to tools/node_modules/eslint/node_modules/esrecurse/.babelrc diff --git a/tools/eslint/node_modules/esrecurse/README.md b/tools/node_modules/eslint/node_modules/esrecurse/README.md similarity index 100% rename from tools/eslint/node_modules/esrecurse/README.md rename to tools/node_modules/eslint/node_modules/esrecurse/README.md diff --git a/tools/eslint/node_modules/esrecurse/esrecurse.js b/tools/node_modules/eslint/node_modules/esrecurse/esrecurse.js similarity index 100% rename from tools/eslint/node_modules/esrecurse/esrecurse.js rename to tools/node_modules/eslint/node_modules/esrecurse/esrecurse.js diff --git a/tools/eslint/node_modules/esrecurse/package-lock.json b/tools/node_modules/eslint/node_modules/esrecurse/package-lock.json similarity index 100% rename from tools/eslint/node_modules/esrecurse/package-lock.json rename to tools/node_modules/eslint/node_modules/esrecurse/package-lock.json diff --git a/tools/eslint/node_modules/esrecurse/package.json b/tools/node_modules/eslint/node_modules/esrecurse/package.json similarity index 100% rename from tools/eslint/node_modules/esrecurse/package.json rename to tools/node_modules/eslint/node_modules/esrecurse/package.json diff --git a/tools/eslint/node_modules/estraverse/.babelrc b/tools/node_modules/eslint/node_modules/estraverse/.babelrc similarity index 100% rename from tools/eslint/node_modules/estraverse/.babelrc rename to tools/node_modules/eslint/node_modules/estraverse/.babelrc diff --git a/tools/eslint/node_modules/estraverse/LICENSE.BSD b/tools/node_modules/eslint/node_modules/estraverse/LICENSE.BSD similarity index 100% rename from tools/eslint/node_modules/estraverse/LICENSE.BSD rename to tools/node_modules/eslint/node_modules/estraverse/LICENSE.BSD diff --git a/tools/eslint/node_modules/estraverse/estraverse.js b/tools/node_modules/eslint/node_modules/estraverse/estraverse.js similarity index 100% rename from tools/eslint/node_modules/estraverse/estraverse.js rename to tools/node_modules/eslint/node_modules/estraverse/estraverse.js diff --git a/tools/eslint/node_modules/estraverse/package.json b/tools/node_modules/eslint/node_modules/estraverse/package.json similarity index 100% rename from tools/eslint/node_modules/estraverse/package.json rename to tools/node_modules/eslint/node_modules/estraverse/package.json diff --git a/tools/eslint/node_modules/esutils/LICENSE.BSD b/tools/node_modules/eslint/node_modules/esutils/LICENSE.BSD similarity index 100% rename from tools/eslint/node_modules/esutils/LICENSE.BSD rename to tools/node_modules/eslint/node_modules/esutils/LICENSE.BSD diff --git a/tools/eslint/node_modules/esutils/README.md b/tools/node_modules/eslint/node_modules/esutils/README.md similarity index 100% rename from tools/eslint/node_modules/esutils/README.md rename to tools/node_modules/eslint/node_modules/esutils/README.md diff --git a/tools/eslint/node_modules/esutils/lib/ast.js b/tools/node_modules/eslint/node_modules/esutils/lib/ast.js similarity index 100% rename from tools/eslint/node_modules/esutils/lib/ast.js rename to tools/node_modules/eslint/node_modules/esutils/lib/ast.js diff --git a/tools/eslint/node_modules/esutils/lib/code.js b/tools/node_modules/eslint/node_modules/esutils/lib/code.js similarity index 100% rename from tools/eslint/node_modules/esutils/lib/code.js rename to tools/node_modules/eslint/node_modules/esutils/lib/code.js diff --git a/tools/eslint/node_modules/esutils/lib/keyword.js b/tools/node_modules/eslint/node_modules/esutils/lib/keyword.js similarity index 100% rename from tools/eslint/node_modules/esutils/lib/keyword.js rename to tools/node_modules/eslint/node_modules/esutils/lib/keyword.js diff --git a/tools/eslint/node_modules/esutils/lib/utils.js b/tools/node_modules/eslint/node_modules/esutils/lib/utils.js similarity index 100% rename from tools/eslint/node_modules/esutils/lib/utils.js rename to tools/node_modules/eslint/node_modules/esutils/lib/utils.js diff --git a/tools/eslint/node_modules/esutils/package.json b/tools/node_modules/eslint/node_modules/esutils/package.json similarity index 100% rename from tools/eslint/node_modules/esutils/package.json rename to tools/node_modules/eslint/node_modules/esutils/package.json diff --git a/tools/eslint/node_modules/extend/LICENSE b/tools/node_modules/eslint/node_modules/extend/LICENSE similarity index 100% rename from tools/eslint/node_modules/extend/LICENSE rename to tools/node_modules/eslint/node_modules/extend/LICENSE diff --git a/tools/eslint/node_modules/extend/README.md b/tools/node_modules/eslint/node_modules/extend/README.md similarity index 100% rename from tools/eslint/node_modules/extend/README.md rename to tools/node_modules/eslint/node_modules/extend/README.md diff --git a/tools/eslint/node_modules/extend/index.js b/tools/node_modules/eslint/node_modules/extend/index.js similarity index 100% rename from tools/eslint/node_modules/extend/index.js rename to tools/node_modules/eslint/node_modules/extend/index.js diff --git a/tools/eslint/node_modules/extend/package.json b/tools/node_modules/eslint/node_modules/extend/package.json similarity index 100% rename from tools/eslint/node_modules/extend/package.json rename to tools/node_modules/eslint/node_modules/extend/package.json diff --git a/tools/eslint/node_modules/external-editor/LICENSE b/tools/node_modules/eslint/node_modules/external-editor/LICENSE similarity index 100% rename from tools/eslint/node_modules/external-editor/LICENSE rename to tools/node_modules/eslint/node_modules/external-editor/LICENSE diff --git a/tools/eslint/node_modules/external-editor/README.md b/tools/node_modules/eslint/node_modules/external-editor/README.md similarity index 100% rename from tools/eslint/node_modules/external-editor/README.md rename to tools/node_modules/eslint/node_modules/external-editor/README.md diff --git a/tools/eslint/node_modules/external-editor/example_async.js b/tools/node_modules/eslint/node_modules/external-editor/example_async.js similarity index 100% rename from tools/eslint/node_modules/external-editor/example_async.js rename to tools/node_modules/eslint/node_modules/external-editor/example_async.js diff --git a/tools/eslint/node_modules/external-editor/example_sync.js b/tools/node_modules/eslint/node_modules/external-editor/example_sync.js similarity index 100% rename from tools/eslint/node_modules/external-editor/example_sync.js rename to tools/node_modules/eslint/node_modules/external-editor/example_sync.js diff --git a/tools/eslint/node_modules/external-editor/main/errors/CreateFileError.js b/tools/node_modules/eslint/node_modules/external-editor/main/errors/CreateFileError.js similarity index 100% rename from tools/eslint/node_modules/external-editor/main/errors/CreateFileError.js rename to tools/node_modules/eslint/node_modules/external-editor/main/errors/CreateFileError.js diff --git a/tools/eslint/node_modules/external-editor/main/errors/LaunchEditorError.js b/tools/node_modules/eslint/node_modules/external-editor/main/errors/LaunchEditorError.js similarity index 100% rename from tools/eslint/node_modules/external-editor/main/errors/LaunchEditorError.js rename to tools/node_modules/eslint/node_modules/external-editor/main/errors/LaunchEditorError.js diff --git a/tools/eslint/node_modules/external-editor/main/errors/ReadFileError.js b/tools/node_modules/eslint/node_modules/external-editor/main/errors/ReadFileError.js similarity index 100% rename from tools/eslint/node_modules/external-editor/main/errors/ReadFileError.js rename to tools/node_modules/eslint/node_modules/external-editor/main/errors/ReadFileError.js diff --git a/tools/eslint/node_modules/external-editor/main/errors/RemoveFileError.js b/tools/node_modules/eslint/node_modules/external-editor/main/errors/RemoveFileError.js similarity index 100% rename from tools/eslint/node_modules/external-editor/main/errors/RemoveFileError.js rename to tools/node_modules/eslint/node_modules/external-editor/main/errors/RemoveFileError.js diff --git a/tools/eslint/node_modules/external-editor/main/index.js b/tools/node_modules/eslint/node_modules/external-editor/main/index.js similarity index 100% rename from tools/eslint/node_modules/external-editor/main/index.js rename to tools/node_modules/eslint/node_modules/external-editor/main/index.js diff --git a/tools/eslint/node_modules/external-editor/package.json b/tools/node_modules/eslint/node_modules/external-editor/package.json similarity index 100% rename from tools/eslint/node_modules/external-editor/package.json rename to tools/node_modules/eslint/node_modules/external-editor/package.json diff --git a/tools/eslint/node_modules/fast-deep-equal/.eslintrc.yml b/tools/node_modules/eslint/node_modules/fast-deep-equal/.eslintrc.yml similarity index 100% rename from tools/eslint/node_modules/fast-deep-equal/.eslintrc.yml rename to tools/node_modules/eslint/node_modules/fast-deep-equal/.eslintrc.yml diff --git a/tools/eslint/node_modules/fast-deep-equal/LICENSE b/tools/node_modules/eslint/node_modules/fast-deep-equal/LICENSE similarity index 100% rename from tools/eslint/node_modules/fast-deep-equal/LICENSE rename to tools/node_modules/eslint/node_modules/fast-deep-equal/LICENSE diff --git a/tools/eslint/node_modules/fast-deep-equal/README.md b/tools/node_modules/eslint/node_modules/fast-deep-equal/README.md similarity index 100% rename from tools/eslint/node_modules/fast-deep-equal/README.md rename to tools/node_modules/eslint/node_modules/fast-deep-equal/README.md diff --git a/tools/eslint/node_modules/fast-deep-equal/index.js b/tools/node_modules/eslint/node_modules/fast-deep-equal/index.js similarity index 100% rename from tools/eslint/node_modules/fast-deep-equal/index.js rename to tools/node_modules/eslint/node_modules/fast-deep-equal/index.js diff --git a/tools/eslint/node_modules/fast-deep-equal/package.json b/tools/node_modules/eslint/node_modules/fast-deep-equal/package.json similarity index 100% rename from tools/eslint/node_modules/fast-deep-equal/package.json rename to tools/node_modules/eslint/node_modules/fast-deep-equal/package.json diff --git a/tools/eslint/node_modules/fast-json-stable-stringify/.eslintrc.yml b/tools/node_modules/eslint/node_modules/fast-json-stable-stringify/.eslintrc.yml similarity index 100% rename from tools/eslint/node_modules/fast-json-stable-stringify/.eslintrc.yml rename to tools/node_modules/eslint/node_modules/fast-json-stable-stringify/.eslintrc.yml diff --git a/tools/eslint/node_modules/fast-json-stable-stringify/LICENSE b/tools/node_modules/eslint/node_modules/fast-json-stable-stringify/LICENSE similarity index 100% rename from tools/eslint/node_modules/fast-json-stable-stringify/LICENSE rename to tools/node_modules/eslint/node_modules/fast-json-stable-stringify/LICENSE diff --git a/tools/eslint/node_modules/fast-json-stable-stringify/README.md b/tools/node_modules/eslint/node_modules/fast-json-stable-stringify/README.md similarity index 100% rename from tools/eslint/node_modules/fast-json-stable-stringify/README.md rename to tools/node_modules/eslint/node_modules/fast-json-stable-stringify/README.md diff --git a/tools/eslint/node_modules/fast-json-stable-stringify/index.js b/tools/node_modules/eslint/node_modules/fast-json-stable-stringify/index.js similarity index 100% rename from tools/eslint/node_modules/fast-json-stable-stringify/index.js rename to tools/node_modules/eslint/node_modules/fast-json-stable-stringify/index.js diff --git a/tools/eslint/node_modules/fast-json-stable-stringify/package.json b/tools/node_modules/eslint/node_modules/fast-json-stable-stringify/package.json similarity index 100% rename from tools/eslint/node_modules/fast-json-stable-stringify/package.json rename to tools/node_modules/eslint/node_modules/fast-json-stable-stringify/package.json diff --git a/tools/eslint/node_modules/fast-levenshtein/LICENSE.md b/tools/node_modules/eslint/node_modules/fast-levenshtein/LICENSE.md similarity index 100% rename from tools/eslint/node_modules/fast-levenshtein/LICENSE.md rename to tools/node_modules/eslint/node_modules/fast-levenshtein/LICENSE.md diff --git a/tools/eslint/node_modules/fast-levenshtein/README.md b/tools/node_modules/eslint/node_modules/fast-levenshtein/README.md similarity index 100% rename from tools/eslint/node_modules/fast-levenshtein/README.md rename to tools/node_modules/eslint/node_modules/fast-levenshtein/README.md diff --git a/tools/eslint/node_modules/fast-levenshtein/levenshtein.js b/tools/node_modules/eslint/node_modules/fast-levenshtein/levenshtein.js similarity index 100% rename from tools/eslint/node_modules/fast-levenshtein/levenshtein.js rename to tools/node_modules/eslint/node_modules/fast-levenshtein/levenshtein.js diff --git a/tools/eslint/node_modules/fast-levenshtein/package.json b/tools/node_modules/eslint/node_modules/fast-levenshtein/package.json similarity index 100% rename from tools/eslint/node_modules/fast-levenshtein/package.json rename to tools/node_modules/eslint/node_modules/fast-levenshtein/package.json diff --git a/tools/eslint/node_modules/figures/index.js b/tools/node_modules/eslint/node_modules/figures/index.js similarity index 100% rename from tools/eslint/node_modules/figures/index.js rename to tools/node_modules/eslint/node_modules/figures/index.js diff --git a/tools/eslint/node_modules/figures/license b/tools/node_modules/eslint/node_modules/figures/license similarity index 100% rename from tools/eslint/node_modules/figures/license rename to tools/node_modules/eslint/node_modules/figures/license diff --git a/tools/eslint/node_modules/figures/package.json b/tools/node_modules/eslint/node_modules/figures/package.json similarity index 100% rename from tools/eslint/node_modules/figures/package.json rename to tools/node_modules/eslint/node_modules/figures/package.json diff --git a/tools/eslint/node_modules/figures/readme.md b/tools/node_modules/eslint/node_modules/figures/readme.md similarity index 100% rename from tools/eslint/node_modules/figures/readme.md rename to tools/node_modules/eslint/node_modules/figures/readme.md diff --git a/tools/eslint/node_modules/file-entry-cache/LICENSE b/tools/node_modules/eslint/node_modules/file-entry-cache/LICENSE similarity index 100% rename from tools/eslint/node_modules/file-entry-cache/LICENSE rename to tools/node_modules/eslint/node_modules/file-entry-cache/LICENSE diff --git a/tools/eslint/node_modules/file-entry-cache/README.md b/tools/node_modules/eslint/node_modules/file-entry-cache/README.md similarity index 100% rename from tools/eslint/node_modules/file-entry-cache/README.md rename to tools/node_modules/eslint/node_modules/file-entry-cache/README.md diff --git a/tools/eslint/node_modules/file-entry-cache/cache.js b/tools/node_modules/eslint/node_modules/file-entry-cache/cache.js similarity index 100% rename from tools/eslint/node_modules/file-entry-cache/cache.js rename to tools/node_modules/eslint/node_modules/file-entry-cache/cache.js diff --git a/tools/eslint/node_modules/file-entry-cache/changelog.md b/tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md similarity index 100% rename from tools/eslint/node_modules/file-entry-cache/changelog.md rename to tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md diff --git a/tools/eslint/node_modules/file-entry-cache/package.json b/tools/node_modules/eslint/node_modules/file-entry-cache/package.json similarity index 100% rename from tools/eslint/node_modules/file-entry-cache/package.json rename to tools/node_modules/eslint/node_modules/file-entry-cache/package.json diff --git a/tools/eslint/node_modules/flat-cache/LICENSE b/tools/node_modules/eslint/node_modules/flat-cache/LICENSE similarity index 100% rename from tools/eslint/node_modules/flat-cache/LICENSE rename to tools/node_modules/eslint/node_modules/flat-cache/LICENSE diff --git a/tools/eslint/node_modules/flat-cache/README.md b/tools/node_modules/eslint/node_modules/flat-cache/README.md similarity index 100% rename from tools/eslint/node_modules/flat-cache/README.md rename to tools/node_modules/eslint/node_modules/flat-cache/README.md diff --git a/tools/eslint/node_modules/flat-cache/cache.js b/tools/node_modules/eslint/node_modules/flat-cache/cache.js similarity index 100% rename from tools/eslint/node_modules/flat-cache/cache.js rename to tools/node_modules/eslint/node_modules/flat-cache/cache.js diff --git a/tools/eslint/node_modules/flat-cache/changelog.md b/tools/node_modules/eslint/node_modules/flat-cache/changelog.md similarity index 100% rename from tools/eslint/node_modules/flat-cache/changelog.md rename to tools/node_modules/eslint/node_modules/flat-cache/changelog.md diff --git a/tools/eslint/node_modules/flat-cache/package.json b/tools/node_modules/eslint/node_modules/flat-cache/package.json similarity index 100% rename from tools/eslint/node_modules/flat-cache/package.json rename to tools/node_modules/eslint/node_modules/flat-cache/package.json diff --git a/tools/eslint/node_modules/flat-cache/utils.js b/tools/node_modules/eslint/node_modules/flat-cache/utils.js similarity index 100% rename from tools/eslint/node_modules/flat-cache/utils.js rename to tools/node_modules/eslint/node_modules/flat-cache/utils.js diff --git a/tools/eslint/node_modules/fs.realpath/LICENSE b/tools/node_modules/eslint/node_modules/fs.realpath/LICENSE similarity index 100% rename from tools/eslint/node_modules/fs.realpath/LICENSE rename to tools/node_modules/eslint/node_modules/fs.realpath/LICENSE diff --git a/tools/eslint/node_modules/fs.realpath/README.md b/tools/node_modules/eslint/node_modules/fs.realpath/README.md similarity index 100% rename from tools/eslint/node_modules/fs.realpath/README.md rename to tools/node_modules/eslint/node_modules/fs.realpath/README.md diff --git a/tools/eslint/node_modules/fs.realpath/index.js b/tools/node_modules/eslint/node_modules/fs.realpath/index.js similarity index 100% rename from tools/eslint/node_modules/fs.realpath/index.js rename to tools/node_modules/eslint/node_modules/fs.realpath/index.js diff --git a/tools/eslint/node_modules/fs.realpath/old.js b/tools/node_modules/eslint/node_modules/fs.realpath/old.js similarity index 100% rename from tools/eslint/node_modules/fs.realpath/old.js rename to tools/node_modules/eslint/node_modules/fs.realpath/old.js diff --git a/tools/eslint/node_modules/fs.realpath/package.json b/tools/node_modules/eslint/node_modules/fs.realpath/package.json similarity index 100% rename from tools/eslint/node_modules/fs.realpath/package.json rename to tools/node_modules/eslint/node_modules/fs.realpath/package.json diff --git a/tools/eslint/node_modules/function-bind/LICENSE b/tools/node_modules/eslint/node_modules/function-bind/LICENSE similarity index 100% rename from tools/eslint/node_modules/function-bind/LICENSE rename to tools/node_modules/eslint/node_modules/function-bind/LICENSE diff --git a/tools/eslint/node_modules/function-bind/README.md b/tools/node_modules/eslint/node_modules/function-bind/README.md similarity index 100% rename from tools/eslint/node_modules/function-bind/README.md rename to tools/node_modules/eslint/node_modules/function-bind/README.md diff --git a/tools/eslint/node_modules/function-bind/implementation.js b/tools/node_modules/eslint/node_modules/function-bind/implementation.js similarity index 100% rename from tools/eslint/node_modules/function-bind/implementation.js rename to tools/node_modules/eslint/node_modules/function-bind/implementation.js diff --git a/tools/eslint/node_modules/function-bind/index.js b/tools/node_modules/eslint/node_modules/function-bind/index.js similarity index 100% rename from tools/eslint/node_modules/function-bind/index.js rename to tools/node_modules/eslint/node_modules/function-bind/index.js diff --git a/tools/eslint/node_modules/function-bind/package.json b/tools/node_modules/eslint/node_modules/function-bind/package.json similarity index 100% rename from tools/eslint/node_modules/function-bind/package.json rename to tools/node_modules/eslint/node_modules/function-bind/package.json diff --git a/tools/eslint/node_modules/functional-red-black-tree/LICENSE b/tools/node_modules/eslint/node_modules/functional-red-black-tree/LICENSE similarity index 100% rename from tools/eslint/node_modules/functional-red-black-tree/LICENSE rename to tools/node_modules/eslint/node_modules/functional-red-black-tree/LICENSE diff --git a/tools/eslint/node_modules/functional-red-black-tree/README.md b/tools/node_modules/eslint/node_modules/functional-red-black-tree/README.md similarity index 100% rename from tools/eslint/node_modules/functional-red-black-tree/README.md rename to tools/node_modules/eslint/node_modules/functional-red-black-tree/README.md diff --git a/tools/eslint/node_modules/functional-red-black-tree/bench/test.js b/tools/node_modules/eslint/node_modules/functional-red-black-tree/bench/test.js similarity index 100% rename from tools/eslint/node_modules/functional-red-black-tree/bench/test.js rename to tools/node_modules/eslint/node_modules/functional-red-black-tree/bench/test.js diff --git a/tools/eslint/node_modules/functional-red-black-tree/package.json b/tools/node_modules/eslint/node_modules/functional-red-black-tree/package.json similarity index 100% rename from tools/eslint/node_modules/functional-red-black-tree/package.json rename to tools/node_modules/eslint/node_modules/functional-red-black-tree/package.json diff --git a/tools/eslint/node_modules/functional-red-black-tree/rbtree.js b/tools/node_modules/eslint/node_modules/functional-red-black-tree/rbtree.js similarity index 100% rename from tools/eslint/node_modules/functional-red-black-tree/rbtree.js rename to tools/node_modules/eslint/node_modules/functional-red-black-tree/rbtree.js diff --git a/tools/eslint/node_modules/glob/LICENSE b/tools/node_modules/eslint/node_modules/glob/LICENSE similarity index 100% rename from tools/eslint/node_modules/glob/LICENSE rename to tools/node_modules/eslint/node_modules/glob/LICENSE diff --git a/tools/eslint/node_modules/glob/README.md b/tools/node_modules/eslint/node_modules/glob/README.md similarity index 100% rename from tools/eslint/node_modules/glob/README.md rename to tools/node_modules/eslint/node_modules/glob/README.md diff --git a/tools/eslint/node_modules/glob/changelog.md b/tools/node_modules/eslint/node_modules/glob/changelog.md similarity index 100% rename from tools/eslint/node_modules/glob/changelog.md rename to tools/node_modules/eslint/node_modules/glob/changelog.md diff --git a/tools/eslint/node_modules/glob/common.js b/tools/node_modules/eslint/node_modules/glob/common.js similarity index 100% rename from tools/eslint/node_modules/glob/common.js rename to tools/node_modules/eslint/node_modules/glob/common.js diff --git a/tools/eslint/node_modules/glob/glob.js b/tools/node_modules/eslint/node_modules/glob/glob.js similarity index 100% rename from tools/eslint/node_modules/glob/glob.js rename to tools/node_modules/eslint/node_modules/glob/glob.js diff --git a/tools/eslint/node_modules/glob/package.json b/tools/node_modules/eslint/node_modules/glob/package.json similarity index 100% rename from tools/eslint/node_modules/glob/package.json rename to tools/node_modules/eslint/node_modules/glob/package.json diff --git a/tools/eslint/node_modules/glob/sync.js b/tools/node_modules/eslint/node_modules/glob/sync.js similarity index 100% rename from tools/eslint/node_modules/glob/sync.js rename to tools/node_modules/eslint/node_modules/glob/sync.js diff --git a/tools/eslint/node_modules/globals/globals.json b/tools/node_modules/eslint/node_modules/globals/globals.json similarity index 100% rename from tools/eslint/node_modules/globals/globals.json rename to tools/node_modules/eslint/node_modules/globals/globals.json diff --git a/tools/eslint/node_modules/globals/index.js b/tools/node_modules/eslint/node_modules/globals/index.js similarity index 100% rename from tools/eslint/node_modules/globals/index.js rename to tools/node_modules/eslint/node_modules/globals/index.js diff --git a/tools/eslint/node_modules/globals/license b/tools/node_modules/eslint/node_modules/globals/license similarity index 100% rename from tools/eslint/node_modules/globals/license rename to tools/node_modules/eslint/node_modules/globals/license diff --git a/tools/eslint/node_modules/globals/package.json b/tools/node_modules/eslint/node_modules/globals/package.json similarity index 100% rename from tools/eslint/node_modules/globals/package.json rename to tools/node_modules/eslint/node_modules/globals/package.json diff --git a/tools/eslint/node_modules/globals/readme.md b/tools/node_modules/eslint/node_modules/globals/readme.md similarity index 100% rename from tools/eslint/node_modules/globals/readme.md rename to tools/node_modules/eslint/node_modules/globals/readme.md diff --git a/tools/eslint/node_modules/globby/index.js b/tools/node_modules/eslint/node_modules/globby/index.js similarity index 100% rename from tools/eslint/node_modules/globby/index.js rename to tools/node_modules/eslint/node_modules/globby/index.js diff --git a/tools/eslint/node_modules/globby/license b/tools/node_modules/eslint/node_modules/globby/license similarity index 100% rename from tools/eslint/node_modules/globby/license rename to tools/node_modules/eslint/node_modules/globby/license diff --git a/tools/eslint/node_modules/globby/package.json b/tools/node_modules/eslint/node_modules/globby/package.json similarity index 100% rename from tools/eslint/node_modules/globby/package.json rename to tools/node_modules/eslint/node_modules/globby/package.json diff --git a/tools/eslint/node_modules/globby/readme.md b/tools/node_modules/eslint/node_modules/globby/readme.md similarity index 100% rename from tools/eslint/node_modules/globby/readme.md rename to tools/node_modules/eslint/node_modules/globby/readme.md diff --git a/tools/eslint/node_modules/graceful-fs/LICENSE b/tools/node_modules/eslint/node_modules/graceful-fs/LICENSE similarity index 100% rename from tools/eslint/node_modules/graceful-fs/LICENSE rename to tools/node_modules/eslint/node_modules/graceful-fs/LICENSE diff --git a/tools/eslint/node_modules/graceful-fs/README.md b/tools/node_modules/eslint/node_modules/graceful-fs/README.md similarity index 100% rename from tools/eslint/node_modules/graceful-fs/README.md rename to tools/node_modules/eslint/node_modules/graceful-fs/README.md diff --git a/tools/eslint/node_modules/graceful-fs/fs.js b/tools/node_modules/eslint/node_modules/graceful-fs/fs.js similarity index 100% rename from tools/eslint/node_modules/graceful-fs/fs.js rename to tools/node_modules/eslint/node_modules/graceful-fs/fs.js diff --git a/tools/eslint/node_modules/graceful-fs/graceful-fs.js b/tools/node_modules/eslint/node_modules/graceful-fs/graceful-fs.js similarity index 100% rename from tools/eslint/node_modules/graceful-fs/graceful-fs.js rename to tools/node_modules/eslint/node_modules/graceful-fs/graceful-fs.js diff --git a/tools/eslint/node_modules/graceful-fs/legacy-streams.js b/tools/node_modules/eslint/node_modules/graceful-fs/legacy-streams.js similarity index 100% rename from tools/eslint/node_modules/graceful-fs/legacy-streams.js rename to tools/node_modules/eslint/node_modules/graceful-fs/legacy-streams.js diff --git a/tools/eslint/node_modules/graceful-fs/package.json b/tools/node_modules/eslint/node_modules/graceful-fs/package.json similarity index 100% rename from tools/eslint/node_modules/graceful-fs/package.json rename to tools/node_modules/eslint/node_modules/graceful-fs/package.json diff --git a/tools/eslint/node_modules/graceful-fs/polyfills.js b/tools/node_modules/eslint/node_modules/graceful-fs/polyfills.js similarity index 100% rename from tools/eslint/node_modules/graceful-fs/polyfills.js rename to tools/node_modules/eslint/node_modules/graceful-fs/polyfills.js diff --git a/tools/eslint/node_modules/has-ansi/index.js b/tools/node_modules/eslint/node_modules/has-ansi/index.js similarity index 100% rename from tools/eslint/node_modules/has-ansi/index.js rename to tools/node_modules/eslint/node_modules/has-ansi/index.js diff --git a/tools/eslint/node_modules/has-ansi/license b/tools/node_modules/eslint/node_modules/has-ansi/license similarity index 100% rename from tools/eslint/node_modules/has-ansi/license rename to tools/node_modules/eslint/node_modules/has-ansi/license diff --git a/tools/eslint/node_modules/has-ansi/package.json b/tools/node_modules/eslint/node_modules/has-ansi/package.json similarity index 100% rename from tools/eslint/node_modules/has-ansi/package.json rename to tools/node_modules/eslint/node_modules/has-ansi/package.json diff --git a/tools/eslint/node_modules/has-ansi/readme.md b/tools/node_modules/eslint/node_modules/has-ansi/readme.md similarity index 100% rename from tools/eslint/node_modules/has-ansi/readme.md rename to tools/node_modules/eslint/node_modules/has-ansi/readme.md diff --git a/tools/eslint/node_modules/has-flag/index.js b/tools/node_modules/eslint/node_modules/has-flag/index.js similarity index 100% rename from tools/eslint/node_modules/has-flag/index.js rename to tools/node_modules/eslint/node_modules/has-flag/index.js diff --git a/tools/eslint/node_modules/has-flag/license b/tools/node_modules/eslint/node_modules/has-flag/license similarity index 100% rename from tools/eslint/node_modules/has-flag/license rename to tools/node_modules/eslint/node_modules/has-flag/license diff --git a/tools/eslint/node_modules/has-flag/package.json b/tools/node_modules/eslint/node_modules/has-flag/package.json similarity index 100% rename from tools/eslint/node_modules/has-flag/package.json rename to tools/node_modules/eslint/node_modules/has-flag/package.json diff --git a/tools/eslint/node_modules/has-flag/readme.md b/tools/node_modules/eslint/node_modules/has-flag/readme.md similarity index 100% rename from tools/eslint/node_modules/has-flag/readme.md rename to tools/node_modules/eslint/node_modules/has-flag/readme.md diff --git a/tools/eslint/node_modules/has/LICENSE-MIT b/tools/node_modules/eslint/node_modules/has/LICENSE-MIT similarity index 100% rename from tools/eslint/node_modules/has/LICENSE-MIT rename to tools/node_modules/eslint/node_modules/has/LICENSE-MIT diff --git a/tools/eslint/node_modules/has/README.mkd b/tools/node_modules/eslint/node_modules/has/README.mkd similarity index 100% rename from tools/eslint/node_modules/has/README.mkd rename to tools/node_modules/eslint/node_modules/has/README.mkd diff --git a/tools/eslint/node_modules/has/package.json b/tools/node_modules/eslint/node_modules/has/package.json similarity index 100% rename from tools/eslint/node_modules/has/package.json rename to tools/node_modules/eslint/node_modules/has/package.json diff --git a/tools/eslint/node_modules/has/src/index.js b/tools/node_modules/eslint/node_modules/has/src/index.js similarity index 100% rename from tools/eslint/node_modules/has/src/index.js rename to tools/node_modules/eslint/node_modules/has/src/index.js diff --git a/tools/eslint/node_modules/iconv-lite/LICENSE b/tools/node_modules/eslint/node_modules/iconv-lite/LICENSE similarity index 100% rename from tools/eslint/node_modules/iconv-lite/LICENSE rename to tools/node_modules/eslint/node_modules/iconv-lite/LICENSE diff --git a/tools/eslint/node_modules/iconv-lite/README.md b/tools/node_modules/eslint/node_modules/iconv-lite/README.md similarity index 100% rename from tools/eslint/node_modules/iconv-lite/README.md rename to tools/node_modules/eslint/node_modules/iconv-lite/README.md diff --git a/tools/eslint/node_modules/iconv-lite/encodings/dbcs-codec.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/dbcs-codec.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/dbcs-codec.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/dbcs-codec.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/dbcs-data.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/dbcs-data.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/dbcs-data.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/dbcs-data.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/index.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/index.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/index.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/index.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/internal.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/internal.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/internal.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/internal.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/sbcs-codec.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/sbcs-codec.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/sbcs-codec.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/sbcs-codec.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/sbcs-data-generated.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/sbcs-data-generated.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/sbcs-data-generated.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/sbcs-data.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/sbcs-data.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/sbcs-data.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/sbcs-data.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/big5-added.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/big5-added.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/big5-added.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/big5-added.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/cp936.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/cp936.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/cp936.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/cp936.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/cp949.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/cp949.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/cp949.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/cp949.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/cp950.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/cp950.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/cp950.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/cp950.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/eucjp.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/eucjp.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/eucjp.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/eucjp.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/gbk-added.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/gbk-added.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/gbk-added.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/gbk-added.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/tables/shiftjis.json b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/shiftjis.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/tables/shiftjis.json rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/tables/shiftjis.json diff --git a/tools/eslint/node_modules/iconv-lite/encodings/utf16.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/utf16.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/utf16.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/utf16.js diff --git a/tools/eslint/node_modules/iconv-lite/encodings/utf7.js b/tools/node_modules/eslint/node_modules/iconv-lite/encodings/utf7.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/encodings/utf7.js rename to tools/node_modules/eslint/node_modules/iconv-lite/encodings/utf7.js diff --git a/tools/eslint/node_modules/iconv-lite/lib/bom-handling.js b/tools/node_modules/eslint/node_modules/iconv-lite/lib/bom-handling.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/lib/bom-handling.js rename to tools/node_modules/eslint/node_modules/iconv-lite/lib/bom-handling.js diff --git a/tools/eslint/node_modules/iconv-lite/lib/extend-node.js b/tools/node_modules/eslint/node_modules/iconv-lite/lib/extend-node.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/lib/extend-node.js rename to tools/node_modules/eslint/node_modules/iconv-lite/lib/extend-node.js diff --git a/tools/eslint/node_modules/iconv-lite/lib/index.d.ts b/tools/node_modules/eslint/node_modules/iconv-lite/lib/index.d.ts similarity index 100% rename from tools/eslint/node_modules/iconv-lite/lib/index.d.ts rename to tools/node_modules/eslint/node_modules/iconv-lite/lib/index.d.ts diff --git a/tools/eslint/node_modules/iconv-lite/lib/index.js b/tools/node_modules/eslint/node_modules/iconv-lite/lib/index.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/lib/index.js rename to tools/node_modules/eslint/node_modules/iconv-lite/lib/index.js diff --git a/tools/eslint/node_modules/iconv-lite/lib/streams.js b/tools/node_modules/eslint/node_modules/iconv-lite/lib/streams.js similarity index 100% rename from tools/eslint/node_modules/iconv-lite/lib/streams.js rename to tools/node_modules/eslint/node_modules/iconv-lite/lib/streams.js diff --git a/tools/eslint/node_modules/iconv-lite/package.json b/tools/node_modules/eslint/node_modules/iconv-lite/package.json similarity index 100% rename from tools/eslint/node_modules/iconv-lite/package.json rename to tools/node_modules/eslint/node_modules/iconv-lite/package.json diff --git a/tools/eslint/node_modules/ignore/README.md b/tools/node_modules/eslint/node_modules/ignore/README.md similarity index 100% rename from tools/eslint/node_modules/ignore/README.md rename to tools/node_modules/eslint/node_modules/ignore/README.md diff --git a/tools/eslint/node_modules/ignore/ignore.js b/tools/node_modules/eslint/node_modules/ignore/ignore.js similarity index 100% rename from tools/eslint/node_modules/ignore/ignore.js rename to tools/node_modules/eslint/node_modules/ignore/ignore.js diff --git a/tools/eslint/node_modules/ignore/index.d.ts b/tools/node_modules/eslint/node_modules/ignore/index.d.ts similarity index 100% rename from tools/eslint/node_modules/ignore/index.d.ts rename to tools/node_modules/eslint/node_modules/ignore/index.d.ts diff --git a/tools/eslint/node_modules/ignore/package.json b/tools/node_modules/eslint/node_modules/ignore/package.json similarity index 100% rename from tools/eslint/node_modules/ignore/package.json rename to tools/node_modules/eslint/node_modules/ignore/package.json diff --git a/tools/eslint/node_modules/imurmurhash/README.md b/tools/node_modules/eslint/node_modules/imurmurhash/README.md similarity index 100% rename from tools/eslint/node_modules/imurmurhash/README.md rename to tools/node_modules/eslint/node_modules/imurmurhash/README.md diff --git a/tools/eslint/node_modules/imurmurhash/imurmurhash.js b/tools/node_modules/eslint/node_modules/imurmurhash/imurmurhash.js similarity index 100% rename from tools/eslint/node_modules/imurmurhash/imurmurhash.js rename to tools/node_modules/eslint/node_modules/imurmurhash/imurmurhash.js diff --git a/tools/eslint/node_modules/imurmurhash/imurmurhash.min.js b/tools/node_modules/eslint/node_modules/imurmurhash/imurmurhash.min.js similarity index 100% rename from tools/eslint/node_modules/imurmurhash/imurmurhash.min.js rename to tools/node_modules/eslint/node_modules/imurmurhash/imurmurhash.min.js diff --git a/tools/eslint/node_modules/imurmurhash/package.json b/tools/node_modules/eslint/node_modules/imurmurhash/package.json similarity index 100% rename from tools/eslint/node_modules/imurmurhash/package.json rename to tools/node_modules/eslint/node_modules/imurmurhash/package.json diff --git a/tools/eslint/node_modules/inflight/LICENSE b/tools/node_modules/eslint/node_modules/inflight/LICENSE similarity index 100% rename from tools/eslint/node_modules/inflight/LICENSE rename to tools/node_modules/eslint/node_modules/inflight/LICENSE diff --git a/tools/eslint/node_modules/inflight/README.md b/tools/node_modules/eslint/node_modules/inflight/README.md similarity index 100% rename from tools/eslint/node_modules/inflight/README.md rename to tools/node_modules/eslint/node_modules/inflight/README.md diff --git a/tools/eslint/node_modules/inflight/inflight.js b/tools/node_modules/eslint/node_modules/inflight/inflight.js similarity index 100% rename from tools/eslint/node_modules/inflight/inflight.js rename to tools/node_modules/eslint/node_modules/inflight/inflight.js diff --git a/tools/eslint/node_modules/inflight/package.json b/tools/node_modules/eslint/node_modules/inflight/package.json similarity index 100% rename from tools/eslint/node_modules/inflight/package.json rename to tools/node_modules/eslint/node_modules/inflight/package.json diff --git a/tools/eslint/node_modules/inherits/LICENSE b/tools/node_modules/eslint/node_modules/inherits/LICENSE similarity index 100% rename from tools/eslint/node_modules/inherits/LICENSE rename to tools/node_modules/eslint/node_modules/inherits/LICENSE diff --git a/tools/eslint/node_modules/inherits/README.md b/tools/node_modules/eslint/node_modules/inherits/README.md similarity index 100% rename from tools/eslint/node_modules/inherits/README.md rename to tools/node_modules/eslint/node_modules/inherits/README.md diff --git a/tools/eslint/node_modules/inherits/inherits.js b/tools/node_modules/eslint/node_modules/inherits/inherits.js similarity index 100% rename from tools/eslint/node_modules/inherits/inherits.js rename to tools/node_modules/eslint/node_modules/inherits/inherits.js diff --git a/tools/eslint/node_modules/inherits/inherits_browser.js b/tools/node_modules/eslint/node_modules/inherits/inherits_browser.js similarity index 100% rename from tools/eslint/node_modules/inherits/inherits_browser.js rename to tools/node_modules/eslint/node_modules/inherits/inherits_browser.js diff --git a/tools/eslint/node_modules/inherits/package.json b/tools/node_modules/eslint/node_modules/inherits/package.json similarity index 100% rename from tools/eslint/node_modules/inherits/package.json rename to tools/node_modules/eslint/node_modules/inherits/package.json diff --git a/tools/eslint/node_modules/inquirer/README.md b/tools/node_modules/eslint/node_modules/inquirer/README.md similarity index 100% rename from tools/eslint/node_modules/inquirer/README.md rename to tools/node_modules/eslint/node_modules/inquirer/README.md diff --git a/tools/eslint/node_modules/inquirer/lib/inquirer.js b/tools/node_modules/eslint/node_modules/inquirer/lib/inquirer.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/inquirer.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/inquirer.js diff --git a/tools/eslint/node_modules/inquirer/lib/objects/choice.js b/tools/node_modules/eslint/node_modules/inquirer/lib/objects/choice.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/objects/choice.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/objects/choice.js diff --git a/tools/eslint/node_modules/inquirer/lib/objects/choices.js b/tools/node_modules/eslint/node_modules/inquirer/lib/objects/choices.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/objects/choices.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/objects/choices.js diff --git a/tools/eslint/node_modules/inquirer/lib/objects/separator.js b/tools/node_modules/eslint/node_modules/inquirer/lib/objects/separator.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/objects/separator.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/objects/separator.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/base.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/base.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/base.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/base.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/checkbox.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/checkbox.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/confirm.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/confirm.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/confirm.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/confirm.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/editor.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/editor.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/editor.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/editor.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/expand.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/expand.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/expand.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/expand.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/input.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/input.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/input.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/input.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/list.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/list.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/list.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/list.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/password.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/password.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/password.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/password.js diff --git a/tools/eslint/node_modules/inquirer/lib/prompts/rawlist.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/rawlist.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/prompts/rawlist.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/prompts/rawlist.js diff --git a/tools/eslint/node_modules/inquirer/lib/ui/baseUI.js b/tools/node_modules/eslint/node_modules/inquirer/lib/ui/baseUI.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/ui/baseUI.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/ui/baseUI.js diff --git a/tools/eslint/node_modules/inquirer/lib/ui/bottom-bar.js b/tools/node_modules/eslint/node_modules/inquirer/lib/ui/bottom-bar.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/ui/bottom-bar.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/ui/bottom-bar.js diff --git a/tools/eslint/node_modules/inquirer/lib/ui/prompt.js b/tools/node_modules/eslint/node_modules/inquirer/lib/ui/prompt.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/ui/prompt.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/ui/prompt.js diff --git a/tools/eslint/node_modules/inquirer/lib/utils/events.js b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/utils/events.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js diff --git a/tools/eslint/node_modules/inquirer/lib/utils/paginator.js b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/paginator.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/utils/paginator.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/utils/paginator.js diff --git a/tools/eslint/node_modules/inquirer/lib/utils/readline.js b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/readline.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/utils/readline.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/utils/readline.js diff --git a/tools/eslint/node_modules/inquirer/lib/utils/screen-manager.js b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/screen-manager.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/utils/screen-manager.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/utils/screen-manager.js diff --git a/tools/eslint/node_modules/inquirer/lib/utils/utils.js b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/utils.js similarity index 100% rename from tools/eslint/node_modules/inquirer/lib/utils/utils.js rename to tools/node_modules/eslint/node_modules/inquirer/lib/utils/utils.js diff --git a/tools/eslint/node_modules/inquirer/package.json b/tools/node_modules/eslint/node_modules/inquirer/package.json similarity index 100% rename from tools/eslint/node_modules/inquirer/package.json rename to tools/node_modules/eslint/node_modules/inquirer/package.json diff --git a/tools/eslint/node_modules/is-alphabetical/LICENSE b/tools/node_modules/eslint/node_modules/is-alphabetical/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-alphabetical/LICENSE rename to tools/node_modules/eslint/node_modules/is-alphabetical/LICENSE diff --git a/tools/eslint/node_modules/is-alphabetical/index.js b/tools/node_modules/eslint/node_modules/is-alphabetical/index.js similarity index 100% rename from tools/eslint/node_modules/is-alphabetical/index.js rename to tools/node_modules/eslint/node_modules/is-alphabetical/index.js diff --git a/tools/eslint/node_modules/is-alphabetical/package.json b/tools/node_modules/eslint/node_modules/is-alphabetical/package.json similarity index 100% rename from tools/eslint/node_modules/is-alphabetical/package.json rename to tools/node_modules/eslint/node_modules/is-alphabetical/package.json diff --git a/tools/eslint/node_modules/is-alphabetical/readme.md b/tools/node_modules/eslint/node_modules/is-alphabetical/readme.md similarity index 100% rename from tools/eslint/node_modules/is-alphabetical/readme.md rename to tools/node_modules/eslint/node_modules/is-alphabetical/readme.md diff --git a/tools/eslint/node_modules/is-alphanumerical/LICENSE b/tools/node_modules/eslint/node_modules/is-alphanumerical/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-alphanumerical/LICENSE rename to tools/node_modules/eslint/node_modules/is-alphanumerical/LICENSE diff --git a/tools/eslint/node_modules/is-alphanumerical/index.js b/tools/node_modules/eslint/node_modules/is-alphanumerical/index.js similarity index 100% rename from tools/eslint/node_modules/is-alphanumerical/index.js rename to tools/node_modules/eslint/node_modules/is-alphanumerical/index.js diff --git a/tools/eslint/node_modules/is-alphanumerical/package.json b/tools/node_modules/eslint/node_modules/is-alphanumerical/package.json similarity index 100% rename from tools/eslint/node_modules/is-alphanumerical/package.json rename to tools/node_modules/eslint/node_modules/is-alphanumerical/package.json diff --git a/tools/eslint/node_modules/is-alphanumerical/readme.md b/tools/node_modules/eslint/node_modules/is-alphanumerical/readme.md similarity index 100% rename from tools/eslint/node_modules/is-alphanumerical/readme.md rename to tools/node_modules/eslint/node_modules/is-alphanumerical/readme.md diff --git a/tools/eslint/node_modules/is-buffer/LICENSE b/tools/node_modules/eslint/node_modules/is-buffer/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-buffer/LICENSE rename to tools/node_modules/eslint/node_modules/is-buffer/LICENSE diff --git a/tools/eslint/node_modules/is-buffer/README.md b/tools/node_modules/eslint/node_modules/is-buffer/README.md similarity index 100% rename from tools/eslint/node_modules/is-buffer/README.md rename to tools/node_modules/eslint/node_modules/is-buffer/README.md diff --git a/tools/eslint/node_modules/is-buffer/index.js b/tools/node_modules/eslint/node_modules/is-buffer/index.js similarity index 100% rename from tools/eslint/node_modules/is-buffer/index.js rename to tools/node_modules/eslint/node_modules/is-buffer/index.js diff --git a/tools/eslint/node_modules/is-buffer/package.json b/tools/node_modules/eslint/node_modules/is-buffer/package.json similarity index 100% rename from tools/eslint/node_modules/is-buffer/package.json rename to tools/node_modules/eslint/node_modules/is-buffer/package.json diff --git a/tools/eslint/node_modules/is-decimal/LICENSE b/tools/node_modules/eslint/node_modules/is-decimal/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-decimal/LICENSE rename to tools/node_modules/eslint/node_modules/is-decimal/LICENSE diff --git a/tools/eslint/node_modules/is-decimal/index.js b/tools/node_modules/eslint/node_modules/is-decimal/index.js similarity index 100% rename from tools/eslint/node_modules/is-decimal/index.js rename to tools/node_modules/eslint/node_modules/is-decimal/index.js diff --git a/tools/eslint/node_modules/is-decimal/package.json b/tools/node_modules/eslint/node_modules/is-decimal/package.json similarity index 100% rename from tools/eslint/node_modules/is-decimal/package.json rename to tools/node_modules/eslint/node_modules/is-decimal/package.json diff --git a/tools/eslint/node_modules/is-decimal/readme.md b/tools/node_modules/eslint/node_modules/is-decimal/readme.md similarity index 100% rename from tools/eslint/node_modules/is-decimal/readme.md rename to tools/node_modules/eslint/node_modules/is-decimal/readme.md diff --git a/tools/eslint/node_modules/is-fullwidth-code-point/index.js b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js similarity index 100% rename from tools/eslint/node_modules/is-fullwidth-code-point/index.js rename to tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js diff --git a/tools/eslint/node_modules/is-fullwidth-code-point/license b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license similarity index 100% rename from tools/eslint/node_modules/is-fullwidth-code-point/license rename to tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license diff --git a/tools/eslint/node_modules/is-fullwidth-code-point/package.json b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/package.json similarity index 100% rename from tools/eslint/node_modules/is-fullwidth-code-point/package.json rename to tools/node_modules/eslint/node_modules/is-fullwidth-code-point/package.json diff --git a/tools/eslint/node_modules/is-fullwidth-code-point/readme.md b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md similarity index 100% rename from tools/eslint/node_modules/is-fullwidth-code-point/readme.md rename to tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md diff --git a/tools/eslint/node_modules/is-hexadecimal/LICENSE b/tools/node_modules/eslint/node_modules/is-hexadecimal/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-hexadecimal/LICENSE rename to tools/node_modules/eslint/node_modules/is-hexadecimal/LICENSE diff --git a/tools/eslint/node_modules/is-hexadecimal/index.js b/tools/node_modules/eslint/node_modules/is-hexadecimal/index.js similarity index 100% rename from tools/eslint/node_modules/is-hexadecimal/index.js rename to tools/node_modules/eslint/node_modules/is-hexadecimal/index.js diff --git a/tools/eslint/node_modules/is-hexadecimal/package.json b/tools/node_modules/eslint/node_modules/is-hexadecimal/package.json similarity index 100% rename from tools/eslint/node_modules/is-hexadecimal/package.json rename to tools/node_modules/eslint/node_modules/is-hexadecimal/package.json diff --git a/tools/eslint/node_modules/is-hexadecimal/readme.md b/tools/node_modules/eslint/node_modules/is-hexadecimal/readme.md similarity index 100% rename from tools/eslint/node_modules/is-hexadecimal/readme.md rename to tools/node_modules/eslint/node_modules/is-hexadecimal/readme.md diff --git a/tools/eslint/node_modules/is-path-cwd/index.js b/tools/node_modules/eslint/node_modules/is-path-cwd/index.js similarity index 100% rename from tools/eslint/node_modules/is-path-cwd/index.js rename to tools/node_modules/eslint/node_modules/is-path-cwd/index.js diff --git a/tools/eslint/node_modules/is-path-cwd/package.json b/tools/node_modules/eslint/node_modules/is-path-cwd/package.json similarity index 100% rename from tools/eslint/node_modules/is-path-cwd/package.json rename to tools/node_modules/eslint/node_modules/is-path-cwd/package.json diff --git a/tools/eslint/node_modules/is-path-cwd/readme.md b/tools/node_modules/eslint/node_modules/is-path-cwd/readme.md similarity index 100% rename from tools/eslint/node_modules/is-path-cwd/readme.md rename to tools/node_modules/eslint/node_modules/is-path-cwd/readme.md diff --git a/tools/eslint/node_modules/is-path-in-cwd/index.js b/tools/node_modules/eslint/node_modules/is-path-in-cwd/index.js similarity index 100% rename from tools/eslint/node_modules/is-path-in-cwd/index.js rename to tools/node_modules/eslint/node_modules/is-path-in-cwd/index.js diff --git a/tools/eslint/node_modules/is-path-in-cwd/package.json b/tools/node_modules/eslint/node_modules/is-path-in-cwd/package.json similarity index 100% rename from tools/eslint/node_modules/is-path-in-cwd/package.json rename to tools/node_modules/eslint/node_modules/is-path-in-cwd/package.json diff --git a/tools/eslint/node_modules/is-path-in-cwd/readme.md b/tools/node_modules/eslint/node_modules/is-path-in-cwd/readme.md similarity index 100% rename from tools/eslint/node_modules/is-path-in-cwd/readme.md rename to tools/node_modules/eslint/node_modules/is-path-in-cwd/readme.md diff --git a/tools/eslint/node_modules/is-path-inside/index.js b/tools/node_modules/eslint/node_modules/is-path-inside/index.js similarity index 100% rename from tools/eslint/node_modules/is-path-inside/index.js rename to tools/node_modules/eslint/node_modules/is-path-inside/index.js diff --git a/tools/eslint/node_modules/is-path-inside/package.json b/tools/node_modules/eslint/node_modules/is-path-inside/package.json similarity index 100% rename from tools/eslint/node_modules/is-path-inside/package.json rename to tools/node_modules/eslint/node_modules/is-path-inside/package.json diff --git a/tools/eslint/node_modules/is-path-inside/readme.md b/tools/node_modules/eslint/node_modules/is-path-inside/readme.md similarity index 100% rename from tools/eslint/node_modules/is-path-inside/readme.md rename to tools/node_modules/eslint/node_modules/is-path-inside/readme.md diff --git a/tools/eslint/node_modules/is-plain-obj/index.js b/tools/node_modules/eslint/node_modules/is-plain-obj/index.js similarity index 100% rename from tools/eslint/node_modules/is-plain-obj/index.js rename to tools/node_modules/eslint/node_modules/is-plain-obj/index.js diff --git a/tools/eslint/node_modules/is-plain-obj/license b/tools/node_modules/eslint/node_modules/is-plain-obj/license similarity index 100% rename from tools/eslint/node_modules/is-plain-obj/license rename to tools/node_modules/eslint/node_modules/is-plain-obj/license diff --git a/tools/eslint/node_modules/is-plain-obj/package.json b/tools/node_modules/eslint/node_modules/is-plain-obj/package.json similarity index 100% rename from tools/eslint/node_modules/is-plain-obj/package.json rename to tools/node_modules/eslint/node_modules/is-plain-obj/package.json diff --git a/tools/eslint/node_modules/is-plain-obj/readme.md b/tools/node_modules/eslint/node_modules/is-plain-obj/readme.md similarity index 100% rename from tools/eslint/node_modules/is-plain-obj/readme.md rename to tools/node_modules/eslint/node_modules/is-plain-obj/readme.md diff --git a/tools/eslint/node_modules/is-promise/LICENSE b/tools/node_modules/eslint/node_modules/is-promise/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-promise/LICENSE rename to tools/node_modules/eslint/node_modules/is-promise/LICENSE diff --git a/tools/eslint/node_modules/is-promise/index.js b/tools/node_modules/eslint/node_modules/is-promise/index.js similarity index 100% rename from tools/eslint/node_modules/is-promise/index.js rename to tools/node_modules/eslint/node_modules/is-promise/index.js diff --git a/tools/eslint/node_modules/is-promise/package.json b/tools/node_modules/eslint/node_modules/is-promise/package.json similarity index 100% rename from tools/eslint/node_modules/is-promise/package.json rename to tools/node_modules/eslint/node_modules/is-promise/package.json diff --git a/tools/eslint/node_modules/is-promise/readme.md b/tools/node_modules/eslint/node_modules/is-promise/readme.md similarity index 100% rename from tools/eslint/node_modules/is-promise/readme.md rename to tools/node_modules/eslint/node_modules/is-promise/readme.md diff --git a/tools/eslint/node_modules/is-resolvable/LICENSE b/tools/node_modules/eslint/node_modules/is-resolvable/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-resolvable/LICENSE rename to tools/node_modules/eslint/node_modules/is-resolvable/LICENSE diff --git a/tools/eslint/node_modules/is-resolvable/README.md b/tools/node_modules/eslint/node_modules/is-resolvable/README.md similarity index 100% rename from tools/eslint/node_modules/is-resolvable/README.md rename to tools/node_modules/eslint/node_modules/is-resolvable/README.md diff --git a/tools/eslint/node_modules/is-resolvable/index.js b/tools/node_modules/eslint/node_modules/is-resolvable/index.js similarity index 100% rename from tools/eslint/node_modules/is-resolvable/index.js rename to tools/node_modules/eslint/node_modules/is-resolvable/index.js diff --git a/tools/eslint/node_modules/is-resolvable/package.json b/tools/node_modules/eslint/node_modules/is-resolvable/package.json similarity index 100% rename from tools/eslint/node_modules/is-resolvable/package.json rename to tools/node_modules/eslint/node_modules/is-resolvable/package.json diff --git a/tools/eslint/node_modules/is-whitespace-character/LICENSE b/tools/node_modules/eslint/node_modules/is-whitespace-character/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-whitespace-character/LICENSE rename to tools/node_modules/eslint/node_modules/is-whitespace-character/LICENSE diff --git a/tools/eslint/node_modules/is-whitespace-character/index.js b/tools/node_modules/eslint/node_modules/is-whitespace-character/index.js similarity index 100% rename from tools/eslint/node_modules/is-whitespace-character/index.js rename to tools/node_modules/eslint/node_modules/is-whitespace-character/index.js diff --git a/tools/eslint/node_modules/is-whitespace-character/package.json b/tools/node_modules/eslint/node_modules/is-whitespace-character/package.json similarity index 100% rename from tools/eslint/node_modules/is-whitespace-character/package.json rename to tools/node_modules/eslint/node_modules/is-whitespace-character/package.json diff --git a/tools/eslint/node_modules/is-whitespace-character/readme.md b/tools/node_modules/eslint/node_modules/is-whitespace-character/readme.md similarity index 100% rename from tools/eslint/node_modules/is-whitespace-character/readme.md rename to tools/node_modules/eslint/node_modules/is-whitespace-character/readme.md diff --git a/tools/eslint/node_modules/is-word-character/LICENSE b/tools/node_modules/eslint/node_modules/is-word-character/LICENSE similarity index 100% rename from tools/eslint/node_modules/is-word-character/LICENSE rename to tools/node_modules/eslint/node_modules/is-word-character/LICENSE diff --git a/tools/eslint/node_modules/is-word-character/index.js b/tools/node_modules/eslint/node_modules/is-word-character/index.js similarity index 100% rename from tools/eslint/node_modules/is-word-character/index.js rename to tools/node_modules/eslint/node_modules/is-word-character/index.js diff --git a/tools/eslint/node_modules/is-word-character/package.json b/tools/node_modules/eslint/node_modules/is-word-character/package.json similarity index 100% rename from tools/eslint/node_modules/is-word-character/package.json rename to tools/node_modules/eslint/node_modules/is-word-character/package.json diff --git a/tools/eslint/node_modules/is-word-character/readme.md b/tools/node_modules/eslint/node_modules/is-word-character/readme.md similarity index 100% rename from tools/eslint/node_modules/is-word-character/readme.md rename to tools/node_modules/eslint/node_modules/is-word-character/readme.md diff --git a/tools/eslint/node_modules/isarray/Makefile b/tools/node_modules/eslint/node_modules/isarray/Makefile similarity index 100% rename from tools/eslint/node_modules/isarray/Makefile rename to tools/node_modules/eslint/node_modules/isarray/Makefile diff --git a/tools/eslint/node_modules/isarray/README.md b/tools/node_modules/eslint/node_modules/isarray/README.md similarity index 100% rename from tools/eslint/node_modules/isarray/README.md rename to tools/node_modules/eslint/node_modules/isarray/README.md diff --git a/tools/eslint/node_modules/isarray/index.js b/tools/node_modules/eslint/node_modules/isarray/index.js similarity index 100% rename from tools/eslint/node_modules/isarray/index.js rename to tools/node_modules/eslint/node_modules/isarray/index.js diff --git a/tools/eslint/node_modules/isarray/package.json b/tools/node_modules/eslint/node_modules/isarray/package.json similarity index 100% rename from tools/eslint/node_modules/isarray/package.json rename to tools/node_modules/eslint/node_modules/isarray/package.json diff --git a/tools/eslint/node_modules/isexe/LICENSE b/tools/node_modules/eslint/node_modules/isexe/LICENSE similarity index 100% rename from tools/eslint/node_modules/isexe/LICENSE rename to tools/node_modules/eslint/node_modules/isexe/LICENSE diff --git a/tools/eslint/node_modules/isexe/README.md b/tools/node_modules/eslint/node_modules/isexe/README.md similarity index 100% rename from tools/eslint/node_modules/isexe/README.md rename to tools/node_modules/eslint/node_modules/isexe/README.md diff --git a/tools/eslint/node_modules/isexe/index.js b/tools/node_modules/eslint/node_modules/isexe/index.js similarity index 100% rename from tools/eslint/node_modules/isexe/index.js rename to tools/node_modules/eslint/node_modules/isexe/index.js diff --git a/tools/eslint/node_modules/isexe/mode.js b/tools/node_modules/eslint/node_modules/isexe/mode.js similarity index 100% rename from tools/eslint/node_modules/isexe/mode.js rename to tools/node_modules/eslint/node_modules/isexe/mode.js diff --git a/tools/eslint/node_modules/isexe/package.json b/tools/node_modules/eslint/node_modules/isexe/package.json similarity index 100% rename from tools/eslint/node_modules/isexe/package.json rename to tools/node_modules/eslint/node_modules/isexe/package.json diff --git a/tools/eslint/node_modules/isexe/windows.js b/tools/node_modules/eslint/node_modules/isexe/windows.js similarity index 100% rename from tools/eslint/node_modules/isexe/windows.js rename to tools/node_modules/eslint/node_modules/isexe/windows.js diff --git a/tools/eslint/node_modules/js-tokens/LICENSE b/tools/node_modules/eslint/node_modules/js-tokens/LICENSE similarity index 100% rename from tools/eslint/node_modules/js-tokens/LICENSE rename to tools/node_modules/eslint/node_modules/js-tokens/LICENSE diff --git a/tools/eslint/node_modules/js-tokens/index.js b/tools/node_modules/eslint/node_modules/js-tokens/index.js similarity index 100% rename from tools/eslint/node_modules/js-tokens/index.js rename to tools/node_modules/eslint/node_modules/js-tokens/index.js diff --git a/tools/eslint/node_modules/js-tokens/package.json b/tools/node_modules/eslint/node_modules/js-tokens/package.json similarity index 100% rename from tools/eslint/node_modules/js-tokens/package.json rename to tools/node_modules/eslint/node_modules/js-tokens/package.json diff --git a/tools/eslint/node_modules/js-tokens/readme.md b/tools/node_modules/eslint/node_modules/js-tokens/readme.md similarity index 100% rename from tools/eslint/node_modules/js-tokens/readme.md rename to tools/node_modules/eslint/node_modules/js-tokens/readme.md diff --git a/tools/eslint/node_modules/js-yaml/LICENSE b/tools/node_modules/eslint/node_modules/js-yaml/LICENSE similarity index 100% rename from tools/eslint/node_modules/js-yaml/LICENSE rename to tools/node_modules/eslint/node_modules/js-yaml/LICENSE diff --git a/tools/eslint/node_modules/js-yaml/README.md b/tools/node_modules/eslint/node_modules/js-yaml/README.md similarity index 100% rename from tools/eslint/node_modules/js-yaml/README.md rename to tools/node_modules/eslint/node_modules/js-yaml/README.md diff --git a/tools/eslint/node_modules/js-yaml/bin/js-yaml.js b/tools/node_modules/eslint/node_modules/js-yaml/bin/js-yaml.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/bin/js-yaml.js rename to tools/node_modules/eslint/node_modules/js-yaml/bin/js-yaml.js diff --git a/tools/eslint/node_modules/js-yaml/dist/js-yaml.js b/tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/dist/js-yaml.js rename to tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.js diff --git a/tools/eslint/node_modules/js-yaml/dist/js-yaml.min.js b/tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.min.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/dist/js-yaml.min.js rename to tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.min.js diff --git a/tools/eslint/node_modules/js-yaml/index.js b/tools/node_modules/eslint/node_modules/js-yaml/index.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/index.js rename to tools/node_modules/eslint/node_modules/js-yaml/index.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/common.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/common.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/common.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/common.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/dumper.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/dumper.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/dumper.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/dumper.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/exception.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/exception.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/exception.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/exception.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/loader.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/loader.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/loader.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/loader.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/mark.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/mark.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/mark.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/mark.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/schema.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/schema.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/core.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/core.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/core.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/core.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_full.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_full.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_full.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_full.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/json.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/json.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/schema/json.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/schema/json.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/binary.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/binary.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/binary.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/binary.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/bool.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/bool.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/bool.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/bool.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/float.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/float.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/float.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/float.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/int.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/int.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/int.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/int.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/js/function.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/js/function.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/js/function.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/js/function.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/map.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/map.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/map.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/map.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/merge.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/merge.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/merge.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/merge.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/null.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/null.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/null.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/null.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/omap.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/pairs.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/pairs.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/pairs.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/pairs.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/seq.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/seq.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/seq.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/seq.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/set.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/set.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/set.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/set.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/str.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/str.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/str.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/str.js diff --git a/tools/eslint/node_modules/js-yaml/lib/js-yaml/type/timestamp.js b/tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/timestamp.js similarity index 100% rename from tools/eslint/node_modules/js-yaml/lib/js-yaml/type/timestamp.js rename to tools/node_modules/eslint/node_modules/js-yaml/lib/js-yaml/type/timestamp.js diff --git a/tools/eslint/node_modules/js-yaml/package.json b/tools/node_modules/eslint/node_modules/js-yaml/package.json similarity index 100% rename from tools/eslint/node_modules/js-yaml/package.json rename to tools/node_modules/eslint/node_modules/js-yaml/package.json diff --git a/tools/eslint/node_modules/json-schema-traverse/.eslintrc.yml b/tools/node_modules/eslint/node_modules/json-schema-traverse/.eslintrc.yml similarity index 100% rename from tools/eslint/node_modules/json-schema-traverse/.eslintrc.yml rename to tools/node_modules/eslint/node_modules/json-schema-traverse/.eslintrc.yml diff --git a/tools/eslint/node_modules/json-schema-traverse/LICENSE b/tools/node_modules/eslint/node_modules/json-schema-traverse/LICENSE similarity index 100% rename from tools/eslint/node_modules/json-schema-traverse/LICENSE rename to tools/node_modules/eslint/node_modules/json-schema-traverse/LICENSE diff --git a/tools/eslint/node_modules/json-schema-traverse/README.md b/tools/node_modules/eslint/node_modules/json-schema-traverse/README.md similarity index 100% rename from tools/eslint/node_modules/json-schema-traverse/README.md rename to tools/node_modules/eslint/node_modules/json-schema-traverse/README.md diff --git a/tools/eslint/node_modules/json-schema-traverse/index.js b/tools/node_modules/eslint/node_modules/json-schema-traverse/index.js similarity index 100% rename from tools/eslint/node_modules/json-schema-traverse/index.js rename to tools/node_modules/eslint/node_modules/json-schema-traverse/index.js diff --git a/tools/eslint/node_modules/json-schema-traverse/package.json b/tools/node_modules/eslint/node_modules/json-schema-traverse/package.json similarity index 100% rename from tools/eslint/node_modules/json-schema-traverse/package.json rename to tools/node_modules/eslint/node_modules/json-schema-traverse/package.json diff --git a/tools/eslint/node_modules/json-stable-stringify-without-jsonify/LICENSE b/tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/LICENSE similarity index 100% rename from tools/eslint/node_modules/json-stable-stringify-without-jsonify/LICENSE rename to tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/LICENSE diff --git a/tools/eslint/node_modules/json-stable-stringify-without-jsonify/index.js b/tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/index.js similarity index 100% rename from tools/eslint/node_modules/json-stable-stringify-without-jsonify/index.js rename to tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/index.js diff --git a/tools/eslint/node_modules/json-stable-stringify-without-jsonify/package.json b/tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/package.json similarity index 100% rename from tools/eslint/node_modules/json-stable-stringify-without-jsonify/package.json rename to tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/package.json diff --git a/tools/eslint/node_modules/json-stable-stringify-without-jsonify/readme.markdown b/tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/readme.markdown similarity index 100% rename from tools/eslint/node_modules/json-stable-stringify-without-jsonify/readme.markdown rename to tools/node_modules/eslint/node_modules/json-stable-stringify-without-jsonify/readme.markdown diff --git a/tools/eslint/node_modules/levn/LICENSE b/tools/node_modules/eslint/node_modules/levn/LICENSE similarity index 100% rename from tools/eslint/node_modules/levn/LICENSE rename to tools/node_modules/eslint/node_modules/levn/LICENSE diff --git a/tools/eslint/node_modules/levn/README.md b/tools/node_modules/eslint/node_modules/levn/README.md similarity index 100% rename from tools/eslint/node_modules/levn/README.md rename to tools/node_modules/eslint/node_modules/levn/README.md diff --git a/tools/eslint/node_modules/levn/lib/cast.js b/tools/node_modules/eslint/node_modules/levn/lib/cast.js similarity index 100% rename from tools/eslint/node_modules/levn/lib/cast.js rename to tools/node_modules/eslint/node_modules/levn/lib/cast.js diff --git a/tools/eslint/node_modules/levn/lib/coerce.js b/tools/node_modules/eslint/node_modules/levn/lib/coerce.js similarity index 100% rename from tools/eslint/node_modules/levn/lib/coerce.js rename to tools/node_modules/eslint/node_modules/levn/lib/coerce.js diff --git a/tools/eslint/node_modules/levn/lib/index.js b/tools/node_modules/eslint/node_modules/levn/lib/index.js similarity index 100% rename from tools/eslint/node_modules/levn/lib/index.js rename to tools/node_modules/eslint/node_modules/levn/lib/index.js diff --git a/tools/eslint/node_modules/levn/lib/parse-string.js b/tools/node_modules/eslint/node_modules/levn/lib/parse-string.js similarity index 100% rename from tools/eslint/node_modules/levn/lib/parse-string.js rename to tools/node_modules/eslint/node_modules/levn/lib/parse-string.js diff --git a/tools/eslint/node_modules/levn/lib/parse.js b/tools/node_modules/eslint/node_modules/levn/lib/parse.js similarity index 100% rename from tools/eslint/node_modules/levn/lib/parse.js rename to tools/node_modules/eslint/node_modules/levn/lib/parse.js diff --git a/tools/eslint/node_modules/levn/package.json b/tools/node_modules/eslint/node_modules/levn/package.json similarity index 100% rename from tools/eslint/node_modules/levn/package.json rename to tools/node_modules/eslint/node_modules/levn/package.json diff --git a/tools/eslint/node_modules/lodash/LICENSE b/tools/node_modules/eslint/node_modules/lodash/LICENSE similarity index 100% rename from tools/eslint/node_modules/lodash/LICENSE rename to tools/node_modules/eslint/node_modules/lodash/LICENSE diff --git a/tools/eslint/node_modules/lodash/README.md b/tools/node_modules/eslint/node_modules/lodash/README.md similarity index 100% rename from tools/eslint/node_modules/lodash/README.md rename to tools/node_modules/eslint/node_modules/lodash/README.md diff --git a/tools/eslint/node_modules/lodash/_DataView.js b/tools/node_modules/eslint/node_modules/lodash/_DataView.js similarity index 100% rename from tools/eslint/node_modules/lodash/_DataView.js rename to tools/node_modules/eslint/node_modules/lodash/_DataView.js diff --git a/tools/eslint/node_modules/lodash/_Hash.js b/tools/node_modules/eslint/node_modules/lodash/_Hash.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Hash.js rename to tools/node_modules/eslint/node_modules/lodash/_Hash.js diff --git a/tools/eslint/node_modules/lodash/_LazyWrapper.js b/tools/node_modules/eslint/node_modules/lodash/_LazyWrapper.js similarity index 100% rename from tools/eslint/node_modules/lodash/_LazyWrapper.js rename to tools/node_modules/eslint/node_modules/lodash/_LazyWrapper.js diff --git a/tools/eslint/node_modules/lodash/_ListCache.js b/tools/node_modules/eslint/node_modules/lodash/_ListCache.js similarity index 100% rename from tools/eslint/node_modules/lodash/_ListCache.js rename to tools/node_modules/eslint/node_modules/lodash/_ListCache.js diff --git a/tools/eslint/node_modules/lodash/_LodashWrapper.js b/tools/node_modules/eslint/node_modules/lodash/_LodashWrapper.js similarity index 100% rename from tools/eslint/node_modules/lodash/_LodashWrapper.js rename to tools/node_modules/eslint/node_modules/lodash/_LodashWrapper.js diff --git a/tools/eslint/node_modules/lodash/_Map.js b/tools/node_modules/eslint/node_modules/lodash/_Map.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Map.js rename to tools/node_modules/eslint/node_modules/lodash/_Map.js diff --git a/tools/eslint/node_modules/lodash/_MapCache.js b/tools/node_modules/eslint/node_modules/lodash/_MapCache.js similarity index 100% rename from tools/eslint/node_modules/lodash/_MapCache.js rename to tools/node_modules/eslint/node_modules/lodash/_MapCache.js diff --git a/tools/eslint/node_modules/lodash/_Promise.js b/tools/node_modules/eslint/node_modules/lodash/_Promise.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Promise.js rename to tools/node_modules/eslint/node_modules/lodash/_Promise.js diff --git a/tools/eslint/node_modules/lodash/_Set.js b/tools/node_modules/eslint/node_modules/lodash/_Set.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Set.js rename to tools/node_modules/eslint/node_modules/lodash/_Set.js diff --git a/tools/eslint/node_modules/lodash/_SetCache.js b/tools/node_modules/eslint/node_modules/lodash/_SetCache.js similarity index 100% rename from tools/eslint/node_modules/lodash/_SetCache.js rename to tools/node_modules/eslint/node_modules/lodash/_SetCache.js diff --git a/tools/eslint/node_modules/lodash/_Stack.js b/tools/node_modules/eslint/node_modules/lodash/_Stack.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Stack.js rename to tools/node_modules/eslint/node_modules/lodash/_Stack.js diff --git a/tools/eslint/node_modules/lodash/_Symbol.js b/tools/node_modules/eslint/node_modules/lodash/_Symbol.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Symbol.js rename to tools/node_modules/eslint/node_modules/lodash/_Symbol.js diff --git a/tools/eslint/node_modules/lodash/_Uint8Array.js b/tools/node_modules/eslint/node_modules/lodash/_Uint8Array.js similarity index 100% rename from tools/eslint/node_modules/lodash/_Uint8Array.js rename to tools/node_modules/eslint/node_modules/lodash/_Uint8Array.js diff --git a/tools/eslint/node_modules/lodash/_WeakMap.js b/tools/node_modules/eslint/node_modules/lodash/_WeakMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_WeakMap.js rename to tools/node_modules/eslint/node_modules/lodash/_WeakMap.js diff --git a/tools/eslint/node_modules/lodash/_addMapEntry.js b/tools/node_modules/eslint/node_modules/lodash/_addMapEntry.js similarity index 100% rename from tools/eslint/node_modules/lodash/_addMapEntry.js rename to tools/node_modules/eslint/node_modules/lodash/_addMapEntry.js diff --git a/tools/eslint/node_modules/lodash/_addSetEntry.js b/tools/node_modules/eslint/node_modules/lodash/_addSetEntry.js similarity index 100% rename from tools/eslint/node_modules/lodash/_addSetEntry.js rename to tools/node_modules/eslint/node_modules/lodash/_addSetEntry.js diff --git a/tools/eslint/node_modules/lodash/_apply.js b/tools/node_modules/eslint/node_modules/lodash/_apply.js similarity index 100% rename from tools/eslint/node_modules/lodash/_apply.js rename to tools/node_modules/eslint/node_modules/lodash/_apply.js diff --git a/tools/eslint/node_modules/lodash/_arrayAggregator.js b/tools/node_modules/eslint/node_modules/lodash/_arrayAggregator.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayAggregator.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayAggregator.js diff --git a/tools/eslint/node_modules/lodash/_arrayEach.js b/tools/node_modules/eslint/node_modules/lodash/_arrayEach.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayEach.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayEach.js diff --git a/tools/eslint/node_modules/lodash/_arrayEachRight.js b/tools/node_modules/eslint/node_modules/lodash/_arrayEachRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayEachRight.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayEachRight.js diff --git a/tools/eslint/node_modules/lodash/_arrayEvery.js b/tools/node_modules/eslint/node_modules/lodash/_arrayEvery.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayEvery.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayEvery.js diff --git a/tools/eslint/node_modules/lodash/_arrayFilter.js b/tools/node_modules/eslint/node_modules/lodash/_arrayFilter.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayFilter.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayFilter.js diff --git a/tools/eslint/node_modules/lodash/_arrayIncludes.js b/tools/node_modules/eslint/node_modules/lodash/_arrayIncludes.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayIncludes.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayIncludes.js diff --git a/tools/eslint/node_modules/lodash/_arrayIncludesWith.js b/tools/node_modules/eslint/node_modules/lodash/_arrayIncludesWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayIncludesWith.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayIncludesWith.js diff --git a/tools/eslint/node_modules/lodash/_arrayLikeKeys.js b/tools/node_modules/eslint/node_modules/lodash/_arrayLikeKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayLikeKeys.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayLikeKeys.js diff --git a/tools/eslint/node_modules/lodash/_arrayMap.js b/tools/node_modules/eslint/node_modules/lodash/_arrayMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayMap.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayMap.js diff --git a/tools/eslint/node_modules/lodash/_arrayPush.js b/tools/node_modules/eslint/node_modules/lodash/_arrayPush.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayPush.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayPush.js diff --git a/tools/eslint/node_modules/lodash/_arrayReduce.js b/tools/node_modules/eslint/node_modules/lodash/_arrayReduce.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayReduce.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayReduce.js diff --git a/tools/eslint/node_modules/lodash/_arrayReduceRight.js b/tools/node_modules/eslint/node_modules/lodash/_arrayReduceRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayReduceRight.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayReduceRight.js diff --git a/tools/eslint/node_modules/lodash/_arraySample.js b/tools/node_modules/eslint/node_modules/lodash/_arraySample.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arraySample.js rename to tools/node_modules/eslint/node_modules/lodash/_arraySample.js diff --git a/tools/eslint/node_modules/lodash/_arraySampleSize.js b/tools/node_modules/eslint/node_modules/lodash/_arraySampleSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arraySampleSize.js rename to tools/node_modules/eslint/node_modules/lodash/_arraySampleSize.js diff --git a/tools/eslint/node_modules/lodash/_arrayShuffle.js b/tools/node_modules/eslint/node_modules/lodash/_arrayShuffle.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arrayShuffle.js rename to tools/node_modules/eslint/node_modules/lodash/_arrayShuffle.js diff --git a/tools/eslint/node_modules/lodash/_arraySome.js b/tools/node_modules/eslint/node_modules/lodash/_arraySome.js similarity index 100% rename from tools/eslint/node_modules/lodash/_arraySome.js rename to tools/node_modules/eslint/node_modules/lodash/_arraySome.js diff --git a/tools/eslint/node_modules/lodash/_asciiSize.js b/tools/node_modules/eslint/node_modules/lodash/_asciiSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/_asciiSize.js rename to tools/node_modules/eslint/node_modules/lodash/_asciiSize.js diff --git a/tools/eslint/node_modules/lodash/_asciiToArray.js b/tools/node_modules/eslint/node_modules/lodash/_asciiToArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_asciiToArray.js rename to tools/node_modules/eslint/node_modules/lodash/_asciiToArray.js diff --git a/tools/eslint/node_modules/lodash/_asciiWords.js b/tools/node_modules/eslint/node_modules/lodash/_asciiWords.js similarity index 100% rename from tools/eslint/node_modules/lodash/_asciiWords.js rename to tools/node_modules/eslint/node_modules/lodash/_asciiWords.js diff --git a/tools/eslint/node_modules/lodash/_assignMergeValue.js b/tools/node_modules/eslint/node_modules/lodash/_assignMergeValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/_assignMergeValue.js rename to tools/node_modules/eslint/node_modules/lodash/_assignMergeValue.js diff --git a/tools/eslint/node_modules/lodash/_assignValue.js b/tools/node_modules/eslint/node_modules/lodash/_assignValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/_assignValue.js rename to tools/node_modules/eslint/node_modules/lodash/_assignValue.js diff --git a/tools/eslint/node_modules/lodash/_assocIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/_assocIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/_assocIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/_assocIndexOf.js diff --git a/tools/eslint/node_modules/lodash/_baseAggregator.js b/tools/node_modules/eslint/node_modules/lodash/_baseAggregator.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseAggregator.js rename to tools/node_modules/eslint/node_modules/lodash/_baseAggregator.js diff --git a/tools/eslint/node_modules/lodash/_baseAssign.js b/tools/node_modules/eslint/node_modules/lodash/_baseAssign.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseAssign.js rename to tools/node_modules/eslint/node_modules/lodash/_baseAssign.js diff --git a/tools/eslint/node_modules/lodash/_baseAssignIn.js b/tools/node_modules/eslint/node_modules/lodash/_baseAssignIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseAssignIn.js rename to tools/node_modules/eslint/node_modules/lodash/_baseAssignIn.js diff --git a/tools/eslint/node_modules/lodash/_baseAssignValue.js b/tools/node_modules/eslint/node_modules/lodash/_baseAssignValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseAssignValue.js rename to tools/node_modules/eslint/node_modules/lodash/_baseAssignValue.js diff --git a/tools/eslint/node_modules/lodash/_baseAt.js b/tools/node_modules/eslint/node_modules/lodash/_baseAt.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseAt.js rename to tools/node_modules/eslint/node_modules/lodash/_baseAt.js diff --git a/tools/eslint/node_modules/lodash/_baseClamp.js b/tools/node_modules/eslint/node_modules/lodash/_baseClamp.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseClamp.js rename to tools/node_modules/eslint/node_modules/lodash/_baseClamp.js diff --git a/tools/eslint/node_modules/lodash/_baseClone.js b/tools/node_modules/eslint/node_modules/lodash/_baseClone.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseClone.js rename to tools/node_modules/eslint/node_modules/lodash/_baseClone.js diff --git a/tools/eslint/node_modules/lodash/_baseConforms.js b/tools/node_modules/eslint/node_modules/lodash/_baseConforms.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseConforms.js rename to tools/node_modules/eslint/node_modules/lodash/_baseConforms.js diff --git a/tools/eslint/node_modules/lodash/_baseConformsTo.js b/tools/node_modules/eslint/node_modules/lodash/_baseConformsTo.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseConformsTo.js rename to tools/node_modules/eslint/node_modules/lodash/_baseConformsTo.js diff --git a/tools/eslint/node_modules/lodash/_baseCreate.js b/tools/node_modules/eslint/node_modules/lodash/_baseCreate.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseCreate.js rename to tools/node_modules/eslint/node_modules/lodash/_baseCreate.js diff --git a/tools/eslint/node_modules/lodash/_baseDelay.js b/tools/node_modules/eslint/node_modules/lodash/_baseDelay.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseDelay.js rename to tools/node_modules/eslint/node_modules/lodash/_baseDelay.js diff --git a/tools/eslint/node_modules/lodash/_baseDifference.js b/tools/node_modules/eslint/node_modules/lodash/_baseDifference.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseDifference.js rename to tools/node_modules/eslint/node_modules/lodash/_baseDifference.js diff --git a/tools/eslint/node_modules/lodash/_baseEach.js b/tools/node_modules/eslint/node_modules/lodash/_baseEach.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseEach.js rename to tools/node_modules/eslint/node_modules/lodash/_baseEach.js diff --git a/tools/eslint/node_modules/lodash/_baseEachRight.js b/tools/node_modules/eslint/node_modules/lodash/_baseEachRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseEachRight.js rename to tools/node_modules/eslint/node_modules/lodash/_baseEachRight.js diff --git a/tools/eslint/node_modules/lodash/_baseEvery.js b/tools/node_modules/eslint/node_modules/lodash/_baseEvery.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseEvery.js rename to tools/node_modules/eslint/node_modules/lodash/_baseEvery.js diff --git a/tools/eslint/node_modules/lodash/_baseExtremum.js b/tools/node_modules/eslint/node_modules/lodash/_baseExtremum.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseExtremum.js rename to tools/node_modules/eslint/node_modules/lodash/_baseExtremum.js diff --git a/tools/eslint/node_modules/lodash/_baseFill.js b/tools/node_modules/eslint/node_modules/lodash/_baseFill.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFill.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFill.js diff --git a/tools/eslint/node_modules/lodash/_baseFilter.js b/tools/node_modules/eslint/node_modules/lodash/_baseFilter.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFilter.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFilter.js diff --git a/tools/eslint/node_modules/lodash/_baseFindIndex.js b/tools/node_modules/eslint/node_modules/lodash/_baseFindIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFindIndex.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFindIndex.js diff --git a/tools/eslint/node_modules/lodash/_baseFindKey.js b/tools/node_modules/eslint/node_modules/lodash/_baseFindKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFindKey.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFindKey.js diff --git a/tools/eslint/node_modules/lodash/_baseFlatten.js b/tools/node_modules/eslint/node_modules/lodash/_baseFlatten.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFlatten.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFlatten.js diff --git a/tools/eslint/node_modules/lodash/_baseFor.js b/tools/node_modules/eslint/node_modules/lodash/_baseFor.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFor.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFor.js diff --git a/tools/eslint/node_modules/lodash/_baseForOwn.js b/tools/node_modules/eslint/node_modules/lodash/_baseForOwn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseForOwn.js rename to tools/node_modules/eslint/node_modules/lodash/_baseForOwn.js diff --git a/tools/eslint/node_modules/lodash/_baseForOwnRight.js b/tools/node_modules/eslint/node_modules/lodash/_baseForOwnRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseForOwnRight.js rename to tools/node_modules/eslint/node_modules/lodash/_baseForOwnRight.js diff --git a/tools/eslint/node_modules/lodash/_baseForRight.js b/tools/node_modules/eslint/node_modules/lodash/_baseForRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseForRight.js rename to tools/node_modules/eslint/node_modules/lodash/_baseForRight.js diff --git a/tools/eslint/node_modules/lodash/_baseFunctions.js b/tools/node_modules/eslint/node_modules/lodash/_baseFunctions.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseFunctions.js rename to tools/node_modules/eslint/node_modules/lodash/_baseFunctions.js diff --git a/tools/eslint/node_modules/lodash/_baseGet.js b/tools/node_modules/eslint/node_modules/lodash/_baseGet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseGet.js rename to tools/node_modules/eslint/node_modules/lodash/_baseGet.js diff --git a/tools/eslint/node_modules/lodash/_baseGetAllKeys.js b/tools/node_modules/eslint/node_modules/lodash/_baseGetAllKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseGetAllKeys.js rename to tools/node_modules/eslint/node_modules/lodash/_baseGetAllKeys.js diff --git a/tools/eslint/node_modules/lodash/_baseGetTag.js b/tools/node_modules/eslint/node_modules/lodash/_baseGetTag.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseGetTag.js rename to tools/node_modules/eslint/node_modules/lodash/_baseGetTag.js diff --git a/tools/eslint/node_modules/lodash/_baseGt.js b/tools/node_modules/eslint/node_modules/lodash/_baseGt.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseGt.js rename to tools/node_modules/eslint/node_modules/lodash/_baseGt.js diff --git a/tools/eslint/node_modules/lodash/_baseHas.js b/tools/node_modules/eslint/node_modules/lodash/_baseHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseHas.js rename to tools/node_modules/eslint/node_modules/lodash/_baseHas.js diff --git a/tools/eslint/node_modules/lodash/_baseHasIn.js b/tools/node_modules/eslint/node_modules/lodash/_baseHasIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseHasIn.js rename to tools/node_modules/eslint/node_modules/lodash/_baseHasIn.js diff --git a/tools/eslint/node_modules/lodash/_baseInRange.js b/tools/node_modules/eslint/node_modules/lodash/_baseInRange.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseInRange.js rename to tools/node_modules/eslint/node_modules/lodash/_baseInRange.js diff --git a/tools/eslint/node_modules/lodash/_baseIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/_baseIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIndexOf.js diff --git a/tools/eslint/node_modules/lodash/_baseIndexOfWith.js b/tools/node_modules/eslint/node_modules/lodash/_baseIndexOfWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIndexOfWith.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIndexOfWith.js diff --git a/tools/eslint/node_modules/lodash/_baseIntersection.js b/tools/node_modules/eslint/node_modules/lodash/_baseIntersection.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIntersection.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIntersection.js diff --git a/tools/eslint/node_modules/lodash/_baseInverter.js b/tools/node_modules/eslint/node_modules/lodash/_baseInverter.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseInverter.js rename to tools/node_modules/eslint/node_modules/lodash/_baseInverter.js diff --git a/tools/eslint/node_modules/lodash/_baseInvoke.js b/tools/node_modules/eslint/node_modules/lodash/_baseInvoke.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseInvoke.js rename to tools/node_modules/eslint/node_modules/lodash/_baseInvoke.js diff --git a/tools/eslint/node_modules/lodash/_baseIsArguments.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsArguments.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsArguments.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsArguments.js diff --git a/tools/eslint/node_modules/lodash/_baseIsArrayBuffer.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsArrayBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsArrayBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsArrayBuffer.js diff --git a/tools/eslint/node_modules/lodash/_baseIsDate.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsDate.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsDate.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsDate.js diff --git a/tools/eslint/node_modules/lodash/_baseIsEqual.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsEqual.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsEqual.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsEqual.js diff --git a/tools/eslint/node_modules/lodash/_baseIsEqualDeep.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsEqualDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsEqualDeep.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsEqualDeep.js diff --git a/tools/eslint/node_modules/lodash/_baseIsMap.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsMap.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsMap.js diff --git a/tools/eslint/node_modules/lodash/_baseIsMatch.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsMatch.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsMatch.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsMatch.js diff --git a/tools/eslint/node_modules/lodash/_baseIsNaN.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsNaN.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsNaN.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsNaN.js diff --git a/tools/eslint/node_modules/lodash/_baseIsNative.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsNative.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsNative.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsNative.js diff --git a/tools/eslint/node_modules/lodash/_baseIsRegExp.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsRegExp.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsRegExp.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsRegExp.js diff --git a/tools/eslint/node_modules/lodash/_baseIsSet.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsSet.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsSet.js diff --git a/tools/eslint/node_modules/lodash/_baseIsTypedArray.js b/tools/node_modules/eslint/node_modules/lodash/_baseIsTypedArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIsTypedArray.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIsTypedArray.js diff --git a/tools/eslint/node_modules/lodash/_baseIteratee.js b/tools/node_modules/eslint/node_modules/lodash/_baseIteratee.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseIteratee.js rename to tools/node_modules/eslint/node_modules/lodash/_baseIteratee.js diff --git a/tools/eslint/node_modules/lodash/_baseKeys.js b/tools/node_modules/eslint/node_modules/lodash/_baseKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseKeys.js rename to tools/node_modules/eslint/node_modules/lodash/_baseKeys.js diff --git a/tools/eslint/node_modules/lodash/_baseKeysIn.js b/tools/node_modules/eslint/node_modules/lodash/_baseKeysIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseKeysIn.js rename to tools/node_modules/eslint/node_modules/lodash/_baseKeysIn.js diff --git a/tools/eslint/node_modules/lodash/_baseLodash.js b/tools/node_modules/eslint/node_modules/lodash/_baseLodash.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseLodash.js rename to tools/node_modules/eslint/node_modules/lodash/_baseLodash.js diff --git a/tools/eslint/node_modules/lodash/_baseLt.js b/tools/node_modules/eslint/node_modules/lodash/_baseLt.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseLt.js rename to tools/node_modules/eslint/node_modules/lodash/_baseLt.js diff --git a/tools/eslint/node_modules/lodash/_baseMap.js b/tools/node_modules/eslint/node_modules/lodash/_baseMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseMap.js rename to tools/node_modules/eslint/node_modules/lodash/_baseMap.js diff --git a/tools/eslint/node_modules/lodash/_baseMatches.js b/tools/node_modules/eslint/node_modules/lodash/_baseMatches.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseMatches.js rename to tools/node_modules/eslint/node_modules/lodash/_baseMatches.js diff --git a/tools/eslint/node_modules/lodash/_baseMatchesProperty.js b/tools/node_modules/eslint/node_modules/lodash/_baseMatchesProperty.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseMatchesProperty.js rename to tools/node_modules/eslint/node_modules/lodash/_baseMatchesProperty.js diff --git a/tools/eslint/node_modules/lodash/_baseMean.js b/tools/node_modules/eslint/node_modules/lodash/_baseMean.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseMean.js rename to tools/node_modules/eslint/node_modules/lodash/_baseMean.js diff --git a/tools/eslint/node_modules/lodash/_baseMerge.js b/tools/node_modules/eslint/node_modules/lodash/_baseMerge.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseMerge.js rename to tools/node_modules/eslint/node_modules/lodash/_baseMerge.js diff --git a/tools/eslint/node_modules/lodash/_baseMergeDeep.js b/tools/node_modules/eslint/node_modules/lodash/_baseMergeDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseMergeDeep.js rename to tools/node_modules/eslint/node_modules/lodash/_baseMergeDeep.js diff --git a/tools/eslint/node_modules/lodash/_baseNth.js b/tools/node_modules/eslint/node_modules/lodash/_baseNth.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseNth.js rename to tools/node_modules/eslint/node_modules/lodash/_baseNth.js diff --git a/tools/eslint/node_modules/lodash/_baseOrderBy.js b/tools/node_modules/eslint/node_modules/lodash/_baseOrderBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseOrderBy.js rename to tools/node_modules/eslint/node_modules/lodash/_baseOrderBy.js diff --git a/tools/eslint/node_modules/lodash/_basePick.js b/tools/node_modules/eslint/node_modules/lodash/_basePick.js similarity index 100% rename from tools/eslint/node_modules/lodash/_basePick.js rename to tools/node_modules/eslint/node_modules/lodash/_basePick.js diff --git a/tools/eslint/node_modules/lodash/_basePickBy.js b/tools/node_modules/eslint/node_modules/lodash/_basePickBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/_basePickBy.js rename to tools/node_modules/eslint/node_modules/lodash/_basePickBy.js diff --git a/tools/eslint/node_modules/lodash/_baseProperty.js b/tools/node_modules/eslint/node_modules/lodash/_baseProperty.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseProperty.js rename to tools/node_modules/eslint/node_modules/lodash/_baseProperty.js diff --git a/tools/eslint/node_modules/lodash/_basePropertyDeep.js b/tools/node_modules/eslint/node_modules/lodash/_basePropertyDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/_basePropertyDeep.js rename to tools/node_modules/eslint/node_modules/lodash/_basePropertyDeep.js diff --git a/tools/eslint/node_modules/lodash/_basePropertyOf.js b/tools/node_modules/eslint/node_modules/lodash/_basePropertyOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/_basePropertyOf.js rename to tools/node_modules/eslint/node_modules/lodash/_basePropertyOf.js diff --git a/tools/eslint/node_modules/lodash/_basePullAll.js b/tools/node_modules/eslint/node_modules/lodash/_basePullAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/_basePullAll.js rename to tools/node_modules/eslint/node_modules/lodash/_basePullAll.js diff --git a/tools/eslint/node_modules/lodash/_basePullAt.js b/tools/node_modules/eslint/node_modules/lodash/_basePullAt.js similarity index 100% rename from tools/eslint/node_modules/lodash/_basePullAt.js rename to tools/node_modules/eslint/node_modules/lodash/_basePullAt.js diff --git a/tools/eslint/node_modules/lodash/_baseRandom.js b/tools/node_modules/eslint/node_modules/lodash/_baseRandom.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseRandom.js rename to tools/node_modules/eslint/node_modules/lodash/_baseRandom.js diff --git a/tools/eslint/node_modules/lodash/_baseRange.js b/tools/node_modules/eslint/node_modules/lodash/_baseRange.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseRange.js rename to tools/node_modules/eslint/node_modules/lodash/_baseRange.js diff --git a/tools/eslint/node_modules/lodash/_baseReduce.js b/tools/node_modules/eslint/node_modules/lodash/_baseReduce.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseReduce.js rename to tools/node_modules/eslint/node_modules/lodash/_baseReduce.js diff --git a/tools/eslint/node_modules/lodash/_baseRepeat.js b/tools/node_modules/eslint/node_modules/lodash/_baseRepeat.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseRepeat.js rename to tools/node_modules/eslint/node_modules/lodash/_baseRepeat.js diff --git a/tools/eslint/node_modules/lodash/_baseRest.js b/tools/node_modules/eslint/node_modules/lodash/_baseRest.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseRest.js rename to tools/node_modules/eslint/node_modules/lodash/_baseRest.js diff --git a/tools/eslint/node_modules/lodash/_baseSample.js b/tools/node_modules/eslint/node_modules/lodash/_baseSample.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSample.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSample.js diff --git a/tools/eslint/node_modules/lodash/_baseSampleSize.js b/tools/node_modules/eslint/node_modules/lodash/_baseSampleSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSampleSize.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSampleSize.js diff --git a/tools/eslint/node_modules/lodash/_baseSet.js b/tools/node_modules/eslint/node_modules/lodash/_baseSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSet.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSet.js diff --git a/tools/eslint/node_modules/lodash/_baseSetData.js b/tools/node_modules/eslint/node_modules/lodash/_baseSetData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSetData.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSetData.js diff --git a/tools/eslint/node_modules/lodash/_baseSetToString.js b/tools/node_modules/eslint/node_modules/lodash/_baseSetToString.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSetToString.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSetToString.js diff --git a/tools/eslint/node_modules/lodash/_baseShuffle.js b/tools/node_modules/eslint/node_modules/lodash/_baseShuffle.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseShuffle.js rename to tools/node_modules/eslint/node_modules/lodash/_baseShuffle.js diff --git a/tools/eslint/node_modules/lodash/_baseSlice.js b/tools/node_modules/eslint/node_modules/lodash/_baseSlice.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSlice.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSlice.js diff --git a/tools/eslint/node_modules/lodash/_baseSome.js b/tools/node_modules/eslint/node_modules/lodash/_baseSome.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSome.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSome.js diff --git a/tools/eslint/node_modules/lodash/_baseSortBy.js b/tools/node_modules/eslint/node_modules/lodash/_baseSortBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSortBy.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSortBy.js diff --git a/tools/eslint/node_modules/lodash/_baseSortedIndex.js b/tools/node_modules/eslint/node_modules/lodash/_baseSortedIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSortedIndex.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSortedIndex.js diff --git a/tools/eslint/node_modules/lodash/_baseSortedIndexBy.js b/tools/node_modules/eslint/node_modules/lodash/_baseSortedIndexBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSortedIndexBy.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSortedIndexBy.js diff --git a/tools/eslint/node_modules/lodash/_baseSortedUniq.js b/tools/node_modules/eslint/node_modules/lodash/_baseSortedUniq.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSortedUniq.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSortedUniq.js diff --git a/tools/eslint/node_modules/lodash/_baseSum.js b/tools/node_modules/eslint/node_modules/lodash/_baseSum.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseSum.js rename to tools/node_modules/eslint/node_modules/lodash/_baseSum.js diff --git a/tools/eslint/node_modules/lodash/_baseTimes.js b/tools/node_modules/eslint/node_modules/lodash/_baseTimes.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseTimes.js rename to tools/node_modules/eslint/node_modules/lodash/_baseTimes.js diff --git a/tools/eslint/node_modules/lodash/_baseToNumber.js b/tools/node_modules/eslint/node_modules/lodash/_baseToNumber.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseToNumber.js rename to tools/node_modules/eslint/node_modules/lodash/_baseToNumber.js diff --git a/tools/eslint/node_modules/lodash/_baseToPairs.js b/tools/node_modules/eslint/node_modules/lodash/_baseToPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseToPairs.js rename to tools/node_modules/eslint/node_modules/lodash/_baseToPairs.js diff --git a/tools/eslint/node_modules/lodash/_baseToString.js b/tools/node_modules/eslint/node_modules/lodash/_baseToString.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseToString.js rename to tools/node_modules/eslint/node_modules/lodash/_baseToString.js diff --git a/tools/eslint/node_modules/lodash/_baseUnary.js b/tools/node_modules/eslint/node_modules/lodash/_baseUnary.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseUnary.js rename to tools/node_modules/eslint/node_modules/lodash/_baseUnary.js diff --git a/tools/eslint/node_modules/lodash/_baseUniq.js b/tools/node_modules/eslint/node_modules/lodash/_baseUniq.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseUniq.js rename to tools/node_modules/eslint/node_modules/lodash/_baseUniq.js diff --git a/tools/eslint/node_modules/lodash/_baseUnset.js b/tools/node_modules/eslint/node_modules/lodash/_baseUnset.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseUnset.js rename to tools/node_modules/eslint/node_modules/lodash/_baseUnset.js diff --git a/tools/eslint/node_modules/lodash/_baseUpdate.js b/tools/node_modules/eslint/node_modules/lodash/_baseUpdate.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseUpdate.js rename to tools/node_modules/eslint/node_modules/lodash/_baseUpdate.js diff --git a/tools/eslint/node_modules/lodash/_baseValues.js b/tools/node_modules/eslint/node_modules/lodash/_baseValues.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseValues.js rename to tools/node_modules/eslint/node_modules/lodash/_baseValues.js diff --git a/tools/eslint/node_modules/lodash/_baseWhile.js b/tools/node_modules/eslint/node_modules/lodash/_baseWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseWhile.js rename to tools/node_modules/eslint/node_modules/lodash/_baseWhile.js diff --git a/tools/eslint/node_modules/lodash/_baseWrapperValue.js b/tools/node_modules/eslint/node_modules/lodash/_baseWrapperValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseWrapperValue.js rename to tools/node_modules/eslint/node_modules/lodash/_baseWrapperValue.js diff --git a/tools/eslint/node_modules/lodash/_baseXor.js b/tools/node_modules/eslint/node_modules/lodash/_baseXor.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseXor.js rename to tools/node_modules/eslint/node_modules/lodash/_baseXor.js diff --git a/tools/eslint/node_modules/lodash/_baseZipObject.js b/tools/node_modules/eslint/node_modules/lodash/_baseZipObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/_baseZipObject.js rename to tools/node_modules/eslint/node_modules/lodash/_baseZipObject.js diff --git a/tools/eslint/node_modules/lodash/_cacheHas.js b/tools/node_modules/eslint/node_modules/lodash/_cacheHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cacheHas.js rename to tools/node_modules/eslint/node_modules/lodash/_cacheHas.js diff --git a/tools/eslint/node_modules/lodash/_castArrayLikeObject.js b/tools/node_modules/eslint/node_modules/lodash/_castArrayLikeObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/_castArrayLikeObject.js rename to tools/node_modules/eslint/node_modules/lodash/_castArrayLikeObject.js diff --git a/tools/eslint/node_modules/lodash/_castFunction.js b/tools/node_modules/eslint/node_modules/lodash/_castFunction.js similarity index 100% rename from tools/eslint/node_modules/lodash/_castFunction.js rename to tools/node_modules/eslint/node_modules/lodash/_castFunction.js diff --git a/tools/eslint/node_modules/lodash/_castPath.js b/tools/node_modules/eslint/node_modules/lodash/_castPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/_castPath.js rename to tools/node_modules/eslint/node_modules/lodash/_castPath.js diff --git a/tools/eslint/node_modules/lodash/_castRest.js b/tools/node_modules/eslint/node_modules/lodash/_castRest.js similarity index 100% rename from tools/eslint/node_modules/lodash/_castRest.js rename to tools/node_modules/eslint/node_modules/lodash/_castRest.js diff --git a/tools/eslint/node_modules/lodash/_castSlice.js b/tools/node_modules/eslint/node_modules/lodash/_castSlice.js similarity index 100% rename from tools/eslint/node_modules/lodash/_castSlice.js rename to tools/node_modules/eslint/node_modules/lodash/_castSlice.js diff --git a/tools/eslint/node_modules/lodash/_charsEndIndex.js b/tools/node_modules/eslint/node_modules/lodash/_charsEndIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/_charsEndIndex.js rename to tools/node_modules/eslint/node_modules/lodash/_charsEndIndex.js diff --git a/tools/eslint/node_modules/lodash/_charsStartIndex.js b/tools/node_modules/eslint/node_modules/lodash/_charsStartIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/_charsStartIndex.js rename to tools/node_modules/eslint/node_modules/lodash/_charsStartIndex.js diff --git a/tools/eslint/node_modules/lodash/_cloneArrayBuffer.js b/tools/node_modules/eslint/node_modules/lodash/_cloneArrayBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneArrayBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneArrayBuffer.js diff --git a/tools/eslint/node_modules/lodash/_cloneBuffer.js b/tools/node_modules/eslint/node_modules/lodash/_cloneBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneBuffer.js diff --git a/tools/eslint/node_modules/lodash/_cloneDataView.js b/tools/node_modules/eslint/node_modules/lodash/_cloneDataView.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneDataView.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneDataView.js diff --git a/tools/eslint/node_modules/lodash/_cloneMap.js b/tools/node_modules/eslint/node_modules/lodash/_cloneMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneMap.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneMap.js diff --git a/tools/eslint/node_modules/lodash/_cloneRegExp.js b/tools/node_modules/eslint/node_modules/lodash/_cloneRegExp.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneRegExp.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneRegExp.js diff --git a/tools/eslint/node_modules/lodash/_cloneSet.js b/tools/node_modules/eslint/node_modules/lodash/_cloneSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneSet.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneSet.js diff --git a/tools/eslint/node_modules/lodash/_cloneSymbol.js b/tools/node_modules/eslint/node_modules/lodash/_cloneSymbol.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneSymbol.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneSymbol.js diff --git a/tools/eslint/node_modules/lodash/_cloneTypedArray.js b/tools/node_modules/eslint/node_modules/lodash/_cloneTypedArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_cloneTypedArray.js rename to tools/node_modules/eslint/node_modules/lodash/_cloneTypedArray.js diff --git a/tools/eslint/node_modules/lodash/_compareAscending.js b/tools/node_modules/eslint/node_modules/lodash/_compareAscending.js similarity index 100% rename from tools/eslint/node_modules/lodash/_compareAscending.js rename to tools/node_modules/eslint/node_modules/lodash/_compareAscending.js diff --git a/tools/eslint/node_modules/lodash/_compareMultiple.js b/tools/node_modules/eslint/node_modules/lodash/_compareMultiple.js similarity index 100% rename from tools/eslint/node_modules/lodash/_compareMultiple.js rename to tools/node_modules/eslint/node_modules/lodash/_compareMultiple.js diff --git a/tools/eslint/node_modules/lodash/_composeArgs.js b/tools/node_modules/eslint/node_modules/lodash/_composeArgs.js similarity index 100% rename from tools/eslint/node_modules/lodash/_composeArgs.js rename to tools/node_modules/eslint/node_modules/lodash/_composeArgs.js diff --git a/tools/eslint/node_modules/lodash/_composeArgsRight.js b/tools/node_modules/eslint/node_modules/lodash/_composeArgsRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/_composeArgsRight.js rename to tools/node_modules/eslint/node_modules/lodash/_composeArgsRight.js diff --git a/tools/eslint/node_modules/lodash/_copyArray.js b/tools/node_modules/eslint/node_modules/lodash/_copyArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_copyArray.js rename to tools/node_modules/eslint/node_modules/lodash/_copyArray.js diff --git a/tools/eslint/node_modules/lodash/_copyObject.js b/tools/node_modules/eslint/node_modules/lodash/_copyObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/_copyObject.js rename to tools/node_modules/eslint/node_modules/lodash/_copyObject.js diff --git a/tools/eslint/node_modules/lodash/_copySymbols.js b/tools/node_modules/eslint/node_modules/lodash/_copySymbols.js similarity index 100% rename from tools/eslint/node_modules/lodash/_copySymbols.js rename to tools/node_modules/eslint/node_modules/lodash/_copySymbols.js diff --git a/tools/eslint/node_modules/lodash/_copySymbolsIn.js b/tools/node_modules/eslint/node_modules/lodash/_copySymbolsIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_copySymbolsIn.js rename to tools/node_modules/eslint/node_modules/lodash/_copySymbolsIn.js diff --git a/tools/eslint/node_modules/lodash/_coreJsData.js b/tools/node_modules/eslint/node_modules/lodash/_coreJsData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_coreJsData.js rename to tools/node_modules/eslint/node_modules/lodash/_coreJsData.js diff --git a/tools/eslint/node_modules/lodash/_countHolders.js b/tools/node_modules/eslint/node_modules/lodash/_countHolders.js similarity index 100% rename from tools/eslint/node_modules/lodash/_countHolders.js rename to tools/node_modules/eslint/node_modules/lodash/_countHolders.js diff --git a/tools/eslint/node_modules/lodash/_createAggregator.js b/tools/node_modules/eslint/node_modules/lodash/_createAggregator.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createAggregator.js rename to tools/node_modules/eslint/node_modules/lodash/_createAggregator.js diff --git a/tools/eslint/node_modules/lodash/_createAssigner.js b/tools/node_modules/eslint/node_modules/lodash/_createAssigner.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createAssigner.js rename to tools/node_modules/eslint/node_modules/lodash/_createAssigner.js diff --git a/tools/eslint/node_modules/lodash/_createBaseEach.js b/tools/node_modules/eslint/node_modules/lodash/_createBaseEach.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createBaseEach.js rename to tools/node_modules/eslint/node_modules/lodash/_createBaseEach.js diff --git a/tools/eslint/node_modules/lodash/_createBaseFor.js b/tools/node_modules/eslint/node_modules/lodash/_createBaseFor.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createBaseFor.js rename to tools/node_modules/eslint/node_modules/lodash/_createBaseFor.js diff --git a/tools/eslint/node_modules/lodash/_createBind.js b/tools/node_modules/eslint/node_modules/lodash/_createBind.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createBind.js rename to tools/node_modules/eslint/node_modules/lodash/_createBind.js diff --git a/tools/eslint/node_modules/lodash/_createCaseFirst.js b/tools/node_modules/eslint/node_modules/lodash/_createCaseFirst.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createCaseFirst.js rename to tools/node_modules/eslint/node_modules/lodash/_createCaseFirst.js diff --git a/tools/eslint/node_modules/lodash/_createCompounder.js b/tools/node_modules/eslint/node_modules/lodash/_createCompounder.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createCompounder.js rename to tools/node_modules/eslint/node_modules/lodash/_createCompounder.js diff --git a/tools/eslint/node_modules/lodash/_createCtor.js b/tools/node_modules/eslint/node_modules/lodash/_createCtor.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createCtor.js rename to tools/node_modules/eslint/node_modules/lodash/_createCtor.js diff --git a/tools/eslint/node_modules/lodash/_createCurry.js b/tools/node_modules/eslint/node_modules/lodash/_createCurry.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createCurry.js rename to tools/node_modules/eslint/node_modules/lodash/_createCurry.js diff --git a/tools/eslint/node_modules/lodash/_createFind.js b/tools/node_modules/eslint/node_modules/lodash/_createFind.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createFind.js rename to tools/node_modules/eslint/node_modules/lodash/_createFind.js diff --git a/tools/eslint/node_modules/lodash/_createFlow.js b/tools/node_modules/eslint/node_modules/lodash/_createFlow.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createFlow.js rename to tools/node_modules/eslint/node_modules/lodash/_createFlow.js diff --git a/tools/eslint/node_modules/lodash/_createHybrid.js b/tools/node_modules/eslint/node_modules/lodash/_createHybrid.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createHybrid.js rename to tools/node_modules/eslint/node_modules/lodash/_createHybrid.js diff --git a/tools/eslint/node_modules/lodash/_createInverter.js b/tools/node_modules/eslint/node_modules/lodash/_createInverter.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createInverter.js rename to tools/node_modules/eslint/node_modules/lodash/_createInverter.js diff --git a/tools/eslint/node_modules/lodash/_createMathOperation.js b/tools/node_modules/eslint/node_modules/lodash/_createMathOperation.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createMathOperation.js rename to tools/node_modules/eslint/node_modules/lodash/_createMathOperation.js diff --git a/tools/eslint/node_modules/lodash/_createOver.js b/tools/node_modules/eslint/node_modules/lodash/_createOver.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createOver.js rename to tools/node_modules/eslint/node_modules/lodash/_createOver.js diff --git a/tools/eslint/node_modules/lodash/_createPadding.js b/tools/node_modules/eslint/node_modules/lodash/_createPadding.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createPadding.js rename to tools/node_modules/eslint/node_modules/lodash/_createPadding.js diff --git a/tools/eslint/node_modules/lodash/_createPartial.js b/tools/node_modules/eslint/node_modules/lodash/_createPartial.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createPartial.js rename to tools/node_modules/eslint/node_modules/lodash/_createPartial.js diff --git a/tools/eslint/node_modules/lodash/_createRange.js b/tools/node_modules/eslint/node_modules/lodash/_createRange.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createRange.js rename to tools/node_modules/eslint/node_modules/lodash/_createRange.js diff --git a/tools/eslint/node_modules/lodash/_createRecurry.js b/tools/node_modules/eslint/node_modules/lodash/_createRecurry.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createRecurry.js rename to tools/node_modules/eslint/node_modules/lodash/_createRecurry.js diff --git a/tools/eslint/node_modules/lodash/_createRelationalOperation.js b/tools/node_modules/eslint/node_modules/lodash/_createRelationalOperation.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createRelationalOperation.js rename to tools/node_modules/eslint/node_modules/lodash/_createRelationalOperation.js diff --git a/tools/eslint/node_modules/lodash/_createRound.js b/tools/node_modules/eslint/node_modules/lodash/_createRound.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createRound.js rename to tools/node_modules/eslint/node_modules/lodash/_createRound.js diff --git a/tools/eslint/node_modules/lodash/_createSet.js b/tools/node_modules/eslint/node_modules/lodash/_createSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createSet.js rename to tools/node_modules/eslint/node_modules/lodash/_createSet.js diff --git a/tools/eslint/node_modules/lodash/_createToPairs.js b/tools/node_modules/eslint/node_modules/lodash/_createToPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createToPairs.js rename to tools/node_modules/eslint/node_modules/lodash/_createToPairs.js diff --git a/tools/eslint/node_modules/lodash/_createWrap.js b/tools/node_modules/eslint/node_modules/lodash/_createWrap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_createWrap.js rename to tools/node_modules/eslint/node_modules/lodash/_createWrap.js diff --git a/tools/eslint/node_modules/lodash/_customDefaultsAssignIn.js b/tools/node_modules/eslint/node_modules/lodash/_customDefaultsAssignIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_customDefaultsAssignIn.js rename to tools/node_modules/eslint/node_modules/lodash/_customDefaultsAssignIn.js diff --git a/tools/eslint/node_modules/lodash/_customDefaultsMerge.js b/tools/node_modules/eslint/node_modules/lodash/_customDefaultsMerge.js similarity index 100% rename from tools/eslint/node_modules/lodash/_customDefaultsMerge.js rename to tools/node_modules/eslint/node_modules/lodash/_customDefaultsMerge.js diff --git a/tools/eslint/node_modules/lodash/_customOmitClone.js b/tools/node_modules/eslint/node_modules/lodash/_customOmitClone.js similarity index 100% rename from tools/eslint/node_modules/lodash/_customOmitClone.js rename to tools/node_modules/eslint/node_modules/lodash/_customOmitClone.js diff --git a/tools/eslint/node_modules/lodash/_deburrLetter.js b/tools/node_modules/eslint/node_modules/lodash/_deburrLetter.js similarity index 100% rename from tools/eslint/node_modules/lodash/_deburrLetter.js rename to tools/node_modules/eslint/node_modules/lodash/_deburrLetter.js diff --git a/tools/eslint/node_modules/lodash/_defineProperty.js b/tools/node_modules/eslint/node_modules/lodash/_defineProperty.js similarity index 100% rename from tools/eslint/node_modules/lodash/_defineProperty.js rename to tools/node_modules/eslint/node_modules/lodash/_defineProperty.js diff --git a/tools/eslint/node_modules/lodash/_equalArrays.js b/tools/node_modules/eslint/node_modules/lodash/_equalArrays.js similarity index 100% rename from tools/eslint/node_modules/lodash/_equalArrays.js rename to tools/node_modules/eslint/node_modules/lodash/_equalArrays.js diff --git a/tools/eslint/node_modules/lodash/_equalByTag.js b/tools/node_modules/eslint/node_modules/lodash/_equalByTag.js similarity index 100% rename from tools/eslint/node_modules/lodash/_equalByTag.js rename to tools/node_modules/eslint/node_modules/lodash/_equalByTag.js diff --git a/tools/eslint/node_modules/lodash/_equalObjects.js b/tools/node_modules/eslint/node_modules/lodash/_equalObjects.js similarity index 100% rename from tools/eslint/node_modules/lodash/_equalObjects.js rename to tools/node_modules/eslint/node_modules/lodash/_equalObjects.js diff --git a/tools/eslint/node_modules/lodash/_escapeHtmlChar.js b/tools/node_modules/eslint/node_modules/lodash/_escapeHtmlChar.js similarity index 100% rename from tools/eslint/node_modules/lodash/_escapeHtmlChar.js rename to tools/node_modules/eslint/node_modules/lodash/_escapeHtmlChar.js diff --git a/tools/eslint/node_modules/lodash/_escapeStringChar.js b/tools/node_modules/eslint/node_modules/lodash/_escapeStringChar.js similarity index 100% rename from tools/eslint/node_modules/lodash/_escapeStringChar.js rename to tools/node_modules/eslint/node_modules/lodash/_escapeStringChar.js diff --git a/tools/eslint/node_modules/lodash/_flatRest.js b/tools/node_modules/eslint/node_modules/lodash/_flatRest.js similarity index 100% rename from tools/eslint/node_modules/lodash/_flatRest.js rename to tools/node_modules/eslint/node_modules/lodash/_flatRest.js diff --git a/tools/eslint/node_modules/lodash/_freeGlobal.js b/tools/node_modules/eslint/node_modules/lodash/_freeGlobal.js similarity index 100% rename from tools/eslint/node_modules/lodash/_freeGlobal.js rename to tools/node_modules/eslint/node_modules/lodash/_freeGlobal.js diff --git a/tools/eslint/node_modules/lodash/_getAllKeys.js b/tools/node_modules/eslint/node_modules/lodash/_getAllKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getAllKeys.js rename to tools/node_modules/eslint/node_modules/lodash/_getAllKeys.js diff --git a/tools/eslint/node_modules/lodash/_getAllKeysIn.js b/tools/node_modules/eslint/node_modules/lodash/_getAllKeysIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getAllKeysIn.js rename to tools/node_modules/eslint/node_modules/lodash/_getAllKeysIn.js diff --git a/tools/eslint/node_modules/lodash/_getData.js b/tools/node_modules/eslint/node_modules/lodash/_getData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getData.js rename to tools/node_modules/eslint/node_modules/lodash/_getData.js diff --git a/tools/eslint/node_modules/lodash/_getFuncName.js b/tools/node_modules/eslint/node_modules/lodash/_getFuncName.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getFuncName.js rename to tools/node_modules/eslint/node_modules/lodash/_getFuncName.js diff --git a/tools/eslint/node_modules/lodash/_getHolder.js b/tools/node_modules/eslint/node_modules/lodash/_getHolder.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getHolder.js rename to tools/node_modules/eslint/node_modules/lodash/_getHolder.js diff --git a/tools/eslint/node_modules/lodash/_getMapData.js b/tools/node_modules/eslint/node_modules/lodash/_getMapData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getMapData.js rename to tools/node_modules/eslint/node_modules/lodash/_getMapData.js diff --git a/tools/eslint/node_modules/lodash/_getMatchData.js b/tools/node_modules/eslint/node_modules/lodash/_getMatchData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getMatchData.js rename to tools/node_modules/eslint/node_modules/lodash/_getMatchData.js diff --git a/tools/eslint/node_modules/lodash/_getNative.js b/tools/node_modules/eslint/node_modules/lodash/_getNative.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getNative.js rename to tools/node_modules/eslint/node_modules/lodash/_getNative.js diff --git a/tools/eslint/node_modules/lodash/_getPrototype.js b/tools/node_modules/eslint/node_modules/lodash/_getPrototype.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getPrototype.js rename to tools/node_modules/eslint/node_modules/lodash/_getPrototype.js diff --git a/tools/eslint/node_modules/lodash/_getRawTag.js b/tools/node_modules/eslint/node_modules/lodash/_getRawTag.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getRawTag.js rename to tools/node_modules/eslint/node_modules/lodash/_getRawTag.js diff --git a/tools/eslint/node_modules/lodash/_getSymbols.js b/tools/node_modules/eslint/node_modules/lodash/_getSymbols.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getSymbols.js rename to tools/node_modules/eslint/node_modules/lodash/_getSymbols.js diff --git a/tools/eslint/node_modules/lodash/_getSymbolsIn.js b/tools/node_modules/eslint/node_modules/lodash/_getSymbolsIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getSymbolsIn.js rename to tools/node_modules/eslint/node_modules/lodash/_getSymbolsIn.js diff --git a/tools/eslint/node_modules/lodash/_getTag.js b/tools/node_modules/eslint/node_modules/lodash/_getTag.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getTag.js rename to tools/node_modules/eslint/node_modules/lodash/_getTag.js diff --git a/tools/eslint/node_modules/lodash/_getValue.js b/tools/node_modules/eslint/node_modules/lodash/_getValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getValue.js rename to tools/node_modules/eslint/node_modules/lodash/_getValue.js diff --git a/tools/eslint/node_modules/lodash/_getView.js b/tools/node_modules/eslint/node_modules/lodash/_getView.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getView.js rename to tools/node_modules/eslint/node_modules/lodash/_getView.js diff --git a/tools/eslint/node_modules/lodash/_getWrapDetails.js b/tools/node_modules/eslint/node_modules/lodash/_getWrapDetails.js similarity index 100% rename from tools/eslint/node_modules/lodash/_getWrapDetails.js rename to tools/node_modules/eslint/node_modules/lodash/_getWrapDetails.js diff --git a/tools/eslint/node_modules/lodash/_hasPath.js b/tools/node_modules/eslint/node_modules/lodash/_hasPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hasPath.js rename to tools/node_modules/eslint/node_modules/lodash/_hasPath.js diff --git a/tools/eslint/node_modules/lodash/_hasUnicode.js b/tools/node_modules/eslint/node_modules/lodash/_hasUnicode.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hasUnicode.js rename to tools/node_modules/eslint/node_modules/lodash/_hasUnicode.js diff --git a/tools/eslint/node_modules/lodash/_hasUnicodeWord.js b/tools/node_modules/eslint/node_modules/lodash/_hasUnicodeWord.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hasUnicodeWord.js rename to tools/node_modules/eslint/node_modules/lodash/_hasUnicodeWord.js diff --git a/tools/eslint/node_modules/lodash/_hashClear.js b/tools/node_modules/eslint/node_modules/lodash/_hashClear.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hashClear.js rename to tools/node_modules/eslint/node_modules/lodash/_hashClear.js diff --git a/tools/eslint/node_modules/lodash/_hashDelete.js b/tools/node_modules/eslint/node_modules/lodash/_hashDelete.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hashDelete.js rename to tools/node_modules/eslint/node_modules/lodash/_hashDelete.js diff --git a/tools/eslint/node_modules/lodash/_hashGet.js b/tools/node_modules/eslint/node_modules/lodash/_hashGet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hashGet.js rename to tools/node_modules/eslint/node_modules/lodash/_hashGet.js diff --git a/tools/eslint/node_modules/lodash/_hashHas.js b/tools/node_modules/eslint/node_modules/lodash/_hashHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hashHas.js rename to tools/node_modules/eslint/node_modules/lodash/_hashHas.js diff --git a/tools/eslint/node_modules/lodash/_hashSet.js b/tools/node_modules/eslint/node_modules/lodash/_hashSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_hashSet.js rename to tools/node_modules/eslint/node_modules/lodash/_hashSet.js diff --git a/tools/eslint/node_modules/lodash/_initCloneArray.js b/tools/node_modules/eslint/node_modules/lodash/_initCloneArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_initCloneArray.js rename to tools/node_modules/eslint/node_modules/lodash/_initCloneArray.js diff --git a/tools/eslint/node_modules/lodash/_initCloneByTag.js b/tools/node_modules/eslint/node_modules/lodash/_initCloneByTag.js similarity index 100% rename from tools/eslint/node_modules/lodash/_initCloneByTag.js rename to tools/node_modules/eslint/node_modules/lodash/_initCloneByTag.js diff --git a/tools/eslint/node_modules/lodash/_initCloneObject.js b/tools/node_modules/eslint/node_modules/lodash/_initCloneObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/_initCloneObject.js rename to tools/node_modules/eslint/node_modules/lodash/_initCloneObject.js diff --git a/tools/eslint/node_modules/lodash/_insertWrapDetails.js b/tools/node_modules/eslint/node_modules/lodash/_insertWrapDetails.js similarity index 100% rename from tools/eslint/node_modules/lodash/_insertWrapDetails.js rename to tools/node_modules/eslint/node_modules/lodash/_insertWrapDetails.js diff --git a/tools/eslint/node_modules/lodash/_isFlattenable.js b/tools/node_modules/eslint/node_modules/lodash/_isFlattenable.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isFlattenable.js rename to tools/node_modules/eslint/node_modules/lodash/_isFlattenable.js diff --git a/tools/eslint/node_modules/lodash/_isIndex.js b/tools/node_modules/eslint/node_modules/lodash/_isIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isIndex.js rename to tools/node_modules/eslint/node_modules/lodash/_isIndex.js diff --git a/tools/eslint/node_modules/lodash/_isIterateeCall.js b/tools/node_modules/eslint/node_modules/lodash/_isIterateeCall.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isIterateeCall.js rename to tools/node_modules/eslint/node_modules/lodash/_isIterateeCall.js diff --git a/tools/eslint/node_modules/lodash/_isKey.js b/tools/node_modules/eslint/node_modules/lodash/_isKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isKey.js rename to tools/node_modules/eslint/node_modules/lodash/_isKey.js diff --git a/tools/eslint/node_modules/lodash/_isKeyable.js b/tools/node_modules/eslint/node_modules/lodash/_isKeyable.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isKeyable.js rename to tools/node_modules/eslint/node_modules/lodash/_isKeyable.js diff --git a/tools/eslint/node_modules/lodash/_isLaziable.js b/tools/node_modules/eslint/node_modules/lodash/_isLaziable.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isLaziable.js rename to tools/node_modules/eslint/node_modules/lodash/_isLaziable.js diff --git a/tools/eslint/node_modules/lodash/_isMaskable.js b/tools/node_modules/eslint/node_modules/lodash/_isMaskable.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isMaskable.js rename to tools/node_modules/eslint/node_modules/lodash/_isMaskable.js diff --git a/tools/eslint/node_modules/lodash/_isMasked.js b/tools/node_modules/eslint/node_modules/lodash/_isMasked.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isMasked.js rename to tools/node_modules/eslint/node_modules/lodash/_isMasked.js diff --git a/tools/eslint/node_modules/lodash/_isPrototype.js b/tools/node_modules/eslint/node_modules/lodash/_isPrototype.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isPrototype.js rename to tools/node_modules/eslint/node_modules/lodash/_isPrototype.js diff --git a/tools/eslint/node_modules/lodash/_isStrictComparable.js b/tools/node_modules/eslint/node_modules/lodash/_isStrictComparable.js similarity index 100% rename from tools/eslint/node_modules/lodash/_isStrictComparable.js rename to tools/node_modules/eslint/node_modules/lodash/_isStrictComparable.js diff --git a/tools/eslint/node_modules/lodash/_iteratorToArray.js b/tools/node_modules/eslint/node_modules/lodash/_iteratorToArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_iteratorToArray.js rename to tools/node_modules/eslint/node_modules/lodash/_iteratorToArray.js diff --git a/tools/eslint/node_modules/lodash/_lazyClone.js b/tools/node_modules/eslint/node_modules/lodash/_lazyClone.js similarity index 100% rename from tools/eslint/node_modules/lodash/_lazyClone.js rename to tools/node_modules/eslint/node_modules/lodash/_lazyClone.js diff --git a/tools/eslint/node_modules/lodash/_lazyReverse.js b/tools/node_modules/eslint/node_modules/lodash/_lazyReverse.js similarity index 100% rename from tools/eslint/node_modules/lodash/_lazyReverse.js rename to tools/node_modules/eslint/node_modules/lodash/_lazyReverse.js diff --git a/tools/eslint/node_modules/lodash/_lazyValue.js b/tools/node_modules/eslint/node_modules/lodash/_lazyValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/_lazyValue.js rename to tools/node_modules/eslint/node_modules/lodash/_lazyValue.js diff --git a/tools/eslint/node_modules/lodash/_listCacheClear.js b/tools/node_modules/eslint/node_modules/lodash/_listCacheClear.js similarity index 100% rename from tools/eslint/node_modules/lodash/_listCacheClear.js rename to tools/node_modules/eslint/node_modules/lodash/_listCacheClear.js diff --git a/tools/eslint/node_modules/lodash/_listCacheDelete.js b/tools/node_modules/eslint/node_modules/lodash/_listCacheDelete.js similarity index 100% rename from tools/eslint/node_modules/lodash/_listCacheDelete.js rename to tools/node_modules/eslint/node_modules/lodash/_listCacheDelete.js diff --git a/tools/eslint/node_modules/lodash/_listCacheGet.js b/tools/node_modules/eslint/node_modules/lodash/_listCacheGet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_listCacheGet.js rename to tools/node_modules/eslint/node_modules/lodash/_listCacheGet.js diff --git a/tools/eslint/node_modules/lodash/_listCacheHas.js b/tools/node_modules/eslint/node_modules/lodash/_listCacheHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_listCacheHas.js rename to tools/node_modules/eslint/node_modules/lodash/_listCacheHas.js diff --git a/tools/eslint/node_modules/lodash/_listCacheSet.js b/tools/node_modules/eslint/node_modules/lodash/_listCacheSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_listCacheSet.js rename to tools/node_modules/eslint/node_modules/lodash/_listCacheSet.js diff --git a/tools/eslint/node_modules/lodash/_mapCacheClear.js b/tools/node_modules/eslint/node_modules/lodash/_mapCacheClear.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mapCacheClear.js rename to tools/node_modules/eslint/node_modules/lodash/_mapCacheClear.js diff --git a/tools/eslint/node_modules/lodash/_mapCacheDelete.js b/tools/node_modules/eslint/node_modules/lodash/_mapCacheDelete.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mapCacheDelete.js rename to tools/node_modules/eslint/node_modules/lodash/_mapCacheDelete.js diff --git a/tools/eslint/node_modules/lodash/_mapCacheGet.js b/tools/node_modules/eslint/node_modules/lodash/_mapCacheGet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mapCacheGet.js rename to tools/node_modules/eslint/node_modules/lodash/_mapCacheGet.js diff --git a/tools/eslint/node_modules/lodash/_mapCacheHas.js b/tools/node_modules/eslint/node_modules/lodash/_mapCacheHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mapCacheHas.js rename to tools/node_modules/eslint/node_modules/lodash/_mapCacheHas.js diff --git a/tools/eslint/node_modules/lodash/_mapCacheSet.js b/tools/node_modules/eslint/node_modules/lodash/_mapCacheSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mapCacheSet.js rename to tools/node_modules/eslint/node_modules/lodash/_mapCacheSet.js diff --git a/tools/eslint/node_modules/lodash/_mapToArray.js b/tools/node_modules/eslint/node_modules/lodash/_mapToArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mapToArray.js rename to tools/node_modules/eslint/node_modules/lodash/_mapToArray.js diff --git a/tools/eslint/node_modules/lodash/_matchesStrictComparable.js b/tools/node_modules/eslint/node_modules/lodash/_matchesStrictComparable.js similarity index 100% rename from tools/eslint/node_modules/lodash/_matchesStrictComparable.js rename to tools/node_modules/eslint/node_modules/lodash/_matchesStrictComparable.js diff --git a/tools/eslint/node_modules/lodash/_memoizeCapped.js b/tools/node_modules/eslint/node_modules/lodash/_memoizeCapped.js similarity index 100% rename from tools/eslint/node_modules/lodash/_memoizeCapped.js rename to tools/node_modules/eslint/node_modules/lodash/_memoizeCapped.js diff --git a/tools/eslint/node_modules/lodash/_mergeData.js b/tools/node_modules/eslint/node_modules/lodash/_mergeData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_mergeData.js rename to tools/node_modules/eslint/node_modules/lodash/_mergeData.js diff --git a/tools/eslint/node_modules/lodash/_metaMap.js b/tools/node_modules/eslint/node_modules/lodash/_metaMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/_metaMap.js rename to tools/node_modules/eslint/node_modules/lodash/_metaMap.js diff --git a/tools/eslint/node_modules/lodash/_nativeCreate.js b/tools/node_modules/eslint/node_modules/lodash/_nativeCreate.js similarity index 100% rename from tools/eslint/node_modules/lodash/_nativeCreate.js rename to tools/node_modules/eslint/node_modules/lodash/_nativeCreate.js diff --git a/tools/eslint/node_modules/lodash/_nativeKeys.js b/tools/node_modules/eslint/node_modules/lodash/_nativeKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/_nativeKeys.js rename to tools/node_modules/eslint/node_modules/lodash/_nativeKeys.js diff --git a/tools/eslint/node_modules/lodash/_nativeKeysIn.js b/tools/node_modules/eslint/node_modules/lodash/_nativeKeysIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/_nativeKeysIn.js rename to tools/node_modules/eslint/node_modules/lodash/_nativeKeysIn.js diff --git a/tools/eslint/node_modules/lodash/_nodeUtil.js b/tools/node_modules/eslint/node_modules/lodash/_nodeUtil.js similarity index 100% rename from tools/eslint/node_modules/lodash/_nodeUtil.js rename to tools/node_modules/eslint/node_modules/lodash/_nodeUtil.js diff --git a/tools/eslint/node_modules/lodash/_objectToString.js b/tools/node_modules/eslint/node_modules/lodash/_objectToString.js similarity index 100% rename from tools/eslint/node_modules/lodash/_objectToString.js rename to tools/node_modules/eslint/node_modules/lodash/_objectToString.js diff --git a/tools/eslint/node_modules/lodash/_overArg.js b/tools/node_modules/eslint/node_modules/lodash/_overArg.js similarity index 100% rename from tools/eslint/node_modules/lodash/_overArg.js rename to tools/node_modules/eslint/node_modules/lodash/_overArg.js diff --git a/tools/eslint/node_modules/lodash/_overRest.js b/tools/node_modules/eslint/node_modules/lodash/_overRest.js similarity index 100% rename from tools/eslint/node_modules/lodash/_overRest.js rename to tools/node_modules/eslint/node_modules/lodash/_overRest.js diff --git a/tools/eslint/node_modules/lodash/_parent.js b/tools/node_modules/eslint/node_modules/lodash/_parent.js similarity index 100% rename from tools/eslint/node_modules/lodash/_parent.js rename to tools/node_modules/eslint/node_modules/lodash/_parent.js diff --git a/tools/eslint/node_modules/lodash/_reEscape.js b/tools/node_modules/eslint/node_modules/lodash/_reEscape.js similarity index 100% rename from tools/eslint/node_modules/lodash/_reEscape.js rename to tools/node_modules/eslint/node_modules/lodash/_reEscape.js diff --git a/tools/eslint/node_modules/lodash/_reEvaluate.js b/tools/node_modules/eslint/node_modules/lodash/_reEvaluate.js similarity index 100% rename from tools/eslint/node_modules/lodash/_reEvaluate.js rename to tools/node_modules/eslint/node_modules/lodash/_reEvaluate.js diff --git a/tools/eslint/node_modules/lodash/_reInterpolate.js b/tools/node_modules/eslint/node_modules/lodash/_reInterpolate.js similarity index 100% rename from tools/eslint/node_modules/lodash/_reInterpolate.js rename to tools/node_modules/eslint/node_modules/lodash/_reInterpolate.js diff --git a/tools/eslint/node_modules/lodash/_realNames.js b/tools/node_modules/eslint/node_modules/lodash/_realNames.js similarity index 100% rename from tools/eslint/node_modules/lodash/_realNames.js rename to tools/node_modules/eslint/node_modules/lodash/_realNames.js diff --git a/tools/eslint/node_modules/lodash/_reorder.js b/tools/node_modules/eslint/node_modules/lodash/_reorder.js similarity index 100% rename from tools/eslint/node_modules/lodash/_reorder.js rename to tools/node_modules/eslint/node_modules/lodash/_reorder.js diff --git a/tools/eslint/node_modules/lodash/_replaceHolders.js b/tools/node_modules/eslint/node_modules/lodash/_replaceHolders.js similarity index 100% rename from tools/eslint/node_modules/lodash/_replaceHolders.js rename to tools/node_modules/eslint/node_modules/lodash/_replaceHolders.js diff --git a/tools/eslint/node_modules/lodash/_root.js b/tools/node_modules/eslint/node_modules/lodash/_root.js similarity index 100% rename from tools/eslint/node_modules/lodash/_root.js rename to tools/node_modules/eslint/node_modules/lodash/_root.js diff --git a/tools/eslint/node_modules/lodash/_setCacheAdd.js b/tools/node_modules/eslint/node_modules/lodash/_setCacheAdd.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setCacheAdd.js rename to tools/node_modules/eslint/node_modules/lodash/_setCacheAdd.js diff --git a/tools/eslint/node_modules/lodash/_setCacheHas.js b/tools/node_modules/eslint/node_modules/lodash/_setCacheHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setCacheHas.js rename to tools/node_modules/eslint/node_modules/lodash/_setCacheHas.js diff --git a/tools/eslint/node_modules/lodash/_setData.js b/tools/node_modules/eslint/node_modules/lodash/_setData.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setData.js rename to tools/node_modules/eslint/node_modules/lodash/_setData.js diff --git a/tools/eslint/node_modules/lodash/_setToArray.js b/tools/node_modules/eslint/node_modules/lodash/_setToArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setToArray.js rename to tools/node_modules/eslint/node_modules/lodash/_setToArray.js diff --git a/tools/eslint/node_modules/lodash/_setToPairs.js b/tools/node_modules/eslint/node_modules/lodash/_setToPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setToPairs.js rename to tools/node_modules/eslint/node_modules/lodash/_setToPairs.js diff --git a/tools/eslint/node_modules/lodash/_setToString.js b/tools/node_modules/eslint/node_modules/lodash/_setToString.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setToString.js rename to tools/node_modules/eslint/node_modules/lodash/_setToString.js diff --git a/tools/eslint/node_modules/lodash/_setWrapToString.js b/tools/node_modules/eslint/node_modules/lodash/_setWrapToString.js similarity index 100% rename from tools/eslint/node_modules/lodash/_setWrapToString.js rename to tools/node_modules/eslint/node_modules/lodash/_setWrapToString.js diff --git a/tools/eslint/node_modules/lodash/_shortOut.js b/tools/node_modules/eslint/node_modules/lodash/_shortOut.js similarity index 100% rename from tools/eslint/node_modules/lodash/_shortOut.js rename to tools/node_modules/eslint/node_modules/lodash/_shortOut.js diff --git a/tools/eslint/node_modules/lodash/_shuffleSelf.js b/tools/node_modules/eslint/node_modules/lodash/_shuffleSelf.js similarity index 100% rename from tools/eslint/node_modules/lodash/_shuffleSelf.js rename to tools/node_modules/eslint/node_modules/lodash/_shuffleSelf.js diff --git a/tools/eslint/node_modules/lodash/_stackClear.js b/tools/node_modules/eslint/node_modules/lodash/_stackClear.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stackClear.js rename to tools/node_modules/eslint/node_modules/lodash/_stackClear.js diff --git a/tools/eslint/node_modules/lodash/_stackDelete.js b/tools/node_modules/eslint/node_modules/lodash/_stackDelete.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stackDelete.js rename to tools/node_modules/eslint/node_modules/lodash/_stackDelete.js diff --git a/tools/eslint/node_modules/lodash/_stackGet.js b/tools/node_modules/eslint/node_modules/lodash/_stackGet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stackGet.js rename to tools/node_modules/eslint/node_modules/lodash/_stackGet.js diff --git a/tools/eslint/node_modules/lodash/_stackHas.js b/tools/node_modules/eslint/node_modules/lodash/_stackHas.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stackHas.js rename to tools/node_modules/eslint/node_modules/lodash/_stackHas.js diff --git a/tools/eslint/node_modules/lodash/_stackSet.js b/tools/node_modules/eslint/node_modules/lodash/_stackSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stackSet.js rename to tools/node_modules/eslint/node_modules/lodash/_stackSet.js diff --git a/tools/eslint/node_modules/lodash/_strictIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/_strictIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/_strictIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/_strictIndexOf.js diff --git a/tools/eslint/node_modules/lodash/_strictLastIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/_strictLastIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/_strictLastIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/_strictLastIndexOf.js diff --git a/tools/eslint/node_modules/lodash/_stringSize.js b/tools/node_modules/eslint/node_modules/lodash/_stringSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stringSize.js rename to tools/node_modules/eslint/node_modules/lodash/_stringSize.js diff --git a/tools/eslint/node_modules/lodash/_stringToArray.js b/tools/node_modules/eslint/node_modules/lodash/_stringToArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stringToArray.js rename to tools/node_modules/eslint/node_modules/lodash/_stringToArray.js diff --git a/tools/eslint/node_modules/lodash/_stringToPath.js b/tools/node_modules/eslint/node_modules/lodash/_stringToPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/_stringToPath.js rename to tools/node_modules/eslint/node_modules/lodash/_stringToPath.js diff --git a/tools/eslint/node_modules/lodash/_toKey.js b/tools/node_modules/eslint/node_modules/lodash/_toKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/_toKey.js rename to tools/node_modules/eslint/node_modules/lodash/_toKey.js diff --git a/tools/eslint/node_modules/lodash/_toSource.js b/tools/node_modules/eslint/node_modules/lodash/_toSource.js similarity index 100% rename from tools/eslint/node_modules/lodash/_toSource.js rename to tools/node_modules/eslint/node_modules/lodash/_toSource.js diff --git a/tools/eslint/node_modules/lodash/_unescapeHtmlChar.js b/tools/node_modules/eslint/node_modules/lodash/_unescapeHtmlChar.js similarity index 100% rename from tools/eslint/node_modules/lodash/_unescapeHtmlChar.js rename to tools/node_modules/eslint/node_modules/lodash/_unescapeHtmlChar.js diff --git a/tools/eslint/node_modules/lodash/_unicodeSize.js b/tools/node_modules/eslint/node_modules/lodash/_unicodeSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/_unicodeSize.js rename to tools/node_modules/eslint/node_modules/lodash/_unicodeSize.js diff --git a/tools/eslint/node_modules/lodash/_unicodeToArray.js b/tools/node_modules/eslint/node_modules/lodash/_unicodeToArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/_unicodeToArray.js rename to tools/node_modules/eslint/node_modules/lodash/_unicodeToArray.js diff --git a/tools/eslint/node_modules/lodash/_unicodeWords.js b/tools/node_modules/eslint/node_modules/lodash/_unicodeWords.js similarity index 100% rename from tools/eslint/node_modules/lodash/_unicodeWords.js rename to tools/node_modules/eslint/node_modules/lodash/_unicodeWords.js diff --git a/tools/eslint/node_modules/lodash/_updateWrapDetails.js b/tools/node_modules/eslint/node_modules/lodash/_updateWrapDetails.js similarity index 100% rename from tools/eslint/node_modules/lodash/_updateWrapDetails.js rename to tools/node_modules/eslint/node_modules/lodash/_updateWrapDetails.js diff --git a/tools/eslint/node_modules/lodash/_wrapperClone.js b/tools/node_modules/eslint/node_modules/lodash/_wrapperClone.js similarity index 100% rename from tools/eslint/node_modules/lodash/_wrapperClone.js rename to tools/node_modules/eslint/node_modules/lodash/_wrapperClone.js diff --git a/tools/eslint/node_modules/lodash/add.js b/tools/node_modules/eslint/node_modules/lodash/add.js similarity index 100% rename from tools/eslint/node_modules/lodash/add.js rename to tools/node_modules/eslint/node_modules/lodash/add.js diff --git a/tools/eslint/node_modules/lodash/after.js b/tools/node_modules/eslint/node_modules/lodash/after.js similarity index 100% rename from tools/eslint/node_modules/lodash/after.js rename to tools/node_modules/eslint/node_modules/lodash/after.js diff --git a/tools/eslint/node_modules/lodash/array.js b/tools/node_modules/eslint/node_modules/lodash/array.js similarity index 100% rename from tools/eslint/node_modules/lodash/array.js rename to tools/node_modules/eslint/node_modules/lodash/array.js diff --git a/tools/eslint/node_modules/lodash/ary.js b/tools/node_modules/eslint/node_modules/lodash/ary.js similarity index 100% rename from tools/eslint/node_modules/lodash/ary.js rename to tools/node_modules/eslint/node_modules/lodash/ary.js diff --git a/tools/eslint/node_modules/lodash/assign.js b/tools/node_modules/eslint/node_modules/lodash/assign.js similarity index 100% rename from tools/eslint/node_modules/lodash/assign.js rename to tools/node_modules/eslint/node_modules/lodash/assign.js diff --git a/tools/eslint/node_modules/lodash/assignIn.js b/tools/node_modules/eslint/node_modules/lodash/assignIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/assignIn.js rename to tools/node_modules/eslint/node_modules/lodash/assignIn.js diff --git a/tools/eslint/node_modules/lodash/assignInWith.js b/tools/node_modules/eslint/node_modules/lodash/assignInWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/assignInWith.js rename to tools/node_modules/eslint/node_modules/lodash/assignInWith.js diff --git a/tools/eslint/node_modules/lodash/assignWith.js b/tools/node_modules/eslint/node_modules/lodash/assignWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/assignWith.js rename to tools/node_modules/eslint/node_modules/lodash/assignWith.js diff --git a/tools/eslint/node_modules/lodash/at.js b/tools/node_modules/eslint/node_modules/lodash/at.js similarity index 100% rename from tools/eslint/node_modules/lodash/at.js rename to tools/node_modules/eslint/node_modules/lodash/at.js diff --git a/tools/eslint/node_modules/lodash/attempt.js b/tools/node_modules/eslint/node_modules/lodash/attempt.js similarity index 100% rename from tools/eslint/node_modules/lodash/attempt.js rename to tools/node_modules/eslint/node_modules/lodash/attempt.js diff --git a/tools/eslint/node_modules/lodash/before.js b/tools/node_modules/eslint/node_modules/lodash/before.js similarity index 100% rename from tools/eslint/node_modules/lodash/before.js rename to tools/node_modules/eslint/node_modules/lodash/before.js diff --git a/tools/eslint/node_modules/lodash/bind.js b/tools/node_modules/eslint/node_modules/lodash/bind.js similarity index 100% rename from tools/eslint/node_modules/lodash/bind.js rename to tools/node_modules/eslint/node_modules/lodash/bind.js diff --git a/tools/eslint/node_modules/lodash/bindAll.js b/tools/node_modules/eslint/node_modules/lodash/bindAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/bindAll.js rename to tools/node_modules/eslint/node_modules/lodash/bindAll.js diff --git a/tools/eslint/node_modules/lodash/bindKey.js b/tools/node_modules/eslint/node_modules/lodash/bindKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/bindKey.js rename to tools/node_modules/eslint/node_modules/lodash/bindKey.js diff --git a/tools/eslint/node_modules/lodash/camelCase.js b/tools/node_modules/eslint/node_modules/lodash/camelCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/camelCase.js rename to tools/node_modules/eslint/node_modules/lodash/camelCase.js diff --git a/tools/eslint/node_modules/lodash/capitalize.js b/tools/node_modules/eslint/node_modules/lodash/capitalize.js similarity index 100% rename from tools/eslint/node_modules/lodash/capitalize.js rename to tools/node_modules/eslint/node_modules/lodash/capitalize.js diff --git a/tools/eslint/node_modules/lodash/castArray.js b/tools/node_modules/eslint/node_modules/lodash/castArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/castArray.js rename to tools/node_modules/eslint/node_modules/lodash/castArray.js diff --git a/tools/eslint/node_modules/lodash/ceil.js b/tools/node_modules/eslint/node_modules/lodash/ceil.js similarity index 100% rename from tools/eslint/node_modules/lodash/ceil.js rename to tools/node_modules/eslint/node_modules/lodash/ceil.js diff --git a/tools/eslint/node_modules/lodash/chain.js b/tools/node_modules/eslint/node_modules/lodash/chain.js similarity index 100% rename from tools/eslint/node_modules/lodash/chain.js rename to tools/node_modules/eslint/node_modules/lodash/chain.js diff --git a/tools/eslint/node_modules/lodash/chunk.js b/tools/node_modules/eslint/node_modules/lodash/chunk.js similarity index 100% rename from tools/eslint/node_modules/lodash/chunk.js rename to tools/node_modules/eslint/node_modules/lodash/chunk.js diff --git a/tools/eslint/node_modules/lodash/clamp.js b/tools/node_modules/eslint/node_modules/lodash/clamp.js similarity index 100% rename from tools/eslint/node_modules/lodash/clamp.js rename to tools/node_modules/eslint/node_modules/lodash/clamp.js diff --git a/tools/eslint/node_modules/lodash/clone.js b/tools/node_modules/eslint/node_modules/lodash/clone.js similarity index 100% rename from tools/eslint/node_modules/lodash/clone.js rename to tools/node_modules/eslint/node_modules/lodash/clone.js diff --git a/tools/eslint/node_modules/lodash/cloneDeep.js b/tools/node_modules/eslint/node_modules/lodash/cloneDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/cloneDeep.js rename to tools/node_modules/eslint/node_modules/lodash/cloneDeep.js diff --git a/tools/eslint/node_modules/lodash/cloneDeepWith.js b/tools/node_modules/eslint/node_modules/lodash/cloneDeepWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/cloneDeepWith.js rename to tools/node_modules/eslint/node_modules/lodash/cloneDeepWith.js diff --git a/tools/eslint/node_modules/lodash/cloneWith.js b/tools/node_modules/eslint/node_modules/lodash/cloneWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/cloneWith.js rename to tools/node_modules/eslint/node_modules/lodash/cloneWith.js diff --git a/tools/eslint/node_modules/lodash/collection.js b/tools/node_modules/eslint/node_modules/lodash/collection.js similarity index 100% rename from tools/eslint/node_modules/lodash/collection.js rename to tools/node_modules/eslint/node_modules/lodash/collection.js diff --git a/tools/eslint/node_modules/lodash/commit.js b/tools/node_modules/eslint/node_modules/lodash/commit.js similarity index 100% rename from tools/eslint/node_modules/lodash/commit.js rename to tools/node_modules/eslint/node_modules/lodash/commit.js diff --git a/tools/eslint/node_modules/lodash/compact.js b/tools/node_modules/eslint/node_modules/lodash/compact.js similarity index 100% rename from tools/eslint/node_modules/lodash/compact.js rename to tools/node_modules/eslint/node_modules/lodash/compact.js diff --git a/tools/eslint/node_modules/lodash/concat.js b/tools/node_modules/eslint/node_modules/lodash/concat.js similarity index 100% rename from tools/eslint/node_modules/lodash/concat.js rename to tools/node_modules/eslint/node_modules/lodash/concat.js diff --git a/tools/eslint/node_modules/lodash/cond.js b/tools/node_modules/eslint/node_modules/lodash/cond.js similarity index 100% rename from tools/eslint/node_modules/lodash/cond.js rename to tools/node_modules/eslint/node_modules/lodash/cond.js diff --git a/tools/eslint/node_modules/lodash/conforms.js b/tools/node_modules/eslint/node_modules/lodash/conforms.js similarity index 100% rename from tools/eslint/node_modules/lodash/conforms.js rename to tools/node_modules/eslint/node_modules/lodash/conforms.js diff --git a/tools/eslint/node_modules/lodash/conformsTo.js b/tools/node_modules/eslint/node_modules/lodash/conformsTo.js similarity index 100% rename from tools/eslint/node_modules/lodash/conformsTo.js rename to tools/node_modules/eslint/node_modules/lodash/conformsTo.js diff --git a/tools/eslint/node_modules/lodash/constant.js b/tools/node_modules/eslint/node_modules/lodash/constant.js similarity index 100% rename from tools/eslint/node_modules/lodash/constant.js rename to tools/node_modules/eslint/node_modules/lodash/constant.js diff --git a/tools/eslint/node_modules/lodash/core.js b/tools/node_modules/eslint/node_modules/lodash/core.js similarity index 100% rename from tools/eslint/node_modules/lodash/core.js rename to tools/node_modules/eslint/node_modules/lodash/core.js diff --git a/tools/eslint/node_modules/lodash/core.min.js b/tools/node_modules/eslint/node_modules/lodash/core.min.js similarity index 100% rename from tools/eslint/node_modules/lodash/core.min.js rename to tools/node_modules/eslint/node_modules/lodash/core.min.js diff --git a/tools/eslint/node_modules/lodash/countBy.js b/tools/node_modules/eslint/node_modules/lodash/countBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/countBy.js rename to tools/node_modules/eslint/node_modules/lodash/countBy.js diff --git a/tools/eslint/node_modules/lodash/create.js b/tools/node_modules/eslint/node_modules/lodash/create.js similarity index 100% rename from tools/eslint/node_modules/lodash/create.js rename to tools/node_modules/eslint/node_modules/lodash/create.js diff --git a/tools/eslint/node_modules/lodash/curry.js b/tools/node_modules/eslint/node_modules/lodash/curry.js similarity index 100% rename from tools/eslint/node_modules/lodash/curry.js rename to tools/node_modules/eslint/node_modules/lodash/curry.js diff --git a/tools/eslint/node_modules/lodash/curryRight.js b/tools/node_modules/eslint/node_modules/lodash/curryRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/curryRight.js rename to tools/node_modules/eslint/node_modules/lodash/curryRight.js diff --git a/tools/eslint/node_modules/lodash/date.js b/tools/node_modules/eslint/node_modules/lodash/date.js similarity index 100% rename from tools/eslint/node_modules/lodash/date.js rename to tools/node_modules/eslint/node_modules/lodash/date.js diff --git a/tools/eslint/node_modules/lodash/debounce.js b/tools/node_modules/eslint/node_modules/lodash/debounce.js similarity index 100% rename from tools/eslint/node_modules/lodash/debounce.js rename to tools/node_modules/eslint/node_modules/lodash/debounce.js diff --git a/tools/eslint/node_modules/lodash/deburr.js b/tools/node_modules/eslint/node_modules/lodash/deburr.js similarity index 100% rename from tools/eslint/node_modules/lodash/deburr.js rename to tools/node_modules/eslint/node_modules/lodash/deburr.js diff --git a/tools/eslint/node_modules/lodash/defaultTo.js b/tools/node_modules/eslint/node_modules/lodash/defaultTo.js similarity index 100% rename from tools/eslint/node_modules/lodash/defaultTo.js rename to tools/node_modules/eslint/node_modules/lodash/defaultTo.js diff --git a/tools/eslint/node_modules/lodash/defaults.js b/tools/node_modules/eslint/node_modules/lodash/defaults.js similarity index 100% rename from tools/eslint/node_modules/lodash/defaults.js rename to tools/node_modules/eslint/node_modules/lodash/defaults.js diff --git a/tools/eslint/node_modules/lodash/defaultsDeep.js b/tools/node_modules/eslint/node_modules/lodash/defaultsDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/defaultsDeep.js rename to tools/node_modules/eslint/node_modules/lodash/defaultsDeep.js diff --git a/tools/eslint/node_modules/lodash/defer.js b/tools/node_modules/eslint/node_modules/lodash/defer.js similarity index 100% rename from tools/eslint/node_modules/lodash/defer.js rename to tools/node_modules/eslint/node_modules/lodash/defer.js diff --git a/tools/eslint/node_modules/lodash/delay.js b/tools/node_modules/eslint/node_modules/lodash/delay.js similarity index 100% rename from tools/eslint/node_modules/lodash/delay.js rename to tools/node_modules/eslint/node_modules/lodash/delay.js diff --git a/tools/eslint/node_modules/lodash/difference.js b/tools/node_modules/eslint/node_modules/lodash/difference.js similarity index 100% rename from tools/eslint/node_modules/lodash/difference.js rename to tools/node_modules/eslint/node_modules/lodash/difference.js diff --git a/tools/eslint/node_modules/lodash/differenceBy.js b/tools/node_modules/eslint/node_modules/lodash/differenceBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/differenceBy.js rename to tools/node_modules/eslint/node_modules/lodash/differenceBy.js diff --git a/tools/eslint/node_modules/lodash/differenceWith.js b/tools/node_modules/eslint/node_modules/lodash/differenceWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/differenceWith.js rename to tools/node_modules/eslint/node_modules/lodash/differenceWith.js diff --git a/tools/eslint/node_modules/lodash/divide.js b/tools/node_modules/eslint/node_modules/lodash/divide.js similarity index 100% rename from tools/eslint/node_modules/lodash/divide.js rename to tools/node_modules/eslint/node_modules/lodash/divide.js diff --git a/tools/eslint/node_modules/lodash/drop.js b/tools/node_modules/eslint/node_modules/lodash/drop.js similarity index 100% rename from tools/eslint/node_modules/lodash/drop.js rename to tools/node_modules/eslint/node_modules/lodash/drop.js diff --git a/tools/eslint/node_modules/lodash/dropRight.js b/tools/node_modules/eslint/node_modules/lodash/dropRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/dropRight.js rename to tools/node_modules/eslint/node_modules/lodash/dropRight.js diff --git a/tools/eslint/node_modules/lodash/dropRightWhile.js b/tools/node_modules/eslint/node_modules/lodash/dropRightWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/dropRightWhile.js rename to tools/node_modules/eslint/node_modules/lodash/dropRightWhile.js diff --git a/tools/eslint/node_modules/lodash/dropWhile.js b/tools/node_modules/eslint/node_modules/lodash/dropWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/dropWhile.js rename to tools/node_modules/eslint/node_modules/lodash/dropWhile.js diff --git a/tools/eslint/node_modules/lodash/each.js b/tools/node_modules/eslint/node_modules/lodash/each.js similarity index 100% rename from tools/eslint/node_modules/lodash/each.js rename to tools/node_modules/eslint/node_modules/lodash/each.js diff --git a/tools/eslint/node_modules/lodash/eachRight.js b/tools/node_modules/eslint/node_modules/lodash/eachRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/eachRight.js rename to tools/node_modules/eslint/node_modules/lodash/eachRight.js diff --git a/tools/eslint/node_modules/lodash/endsWith.js b/tools/node_modules/eslint/node_modules/lodash/endsWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/endsWith.js rename to tools/node_modules/eslint/node_modules/lodash/endsWith.js diff --git a/tools/eslint/node_modules/lodash/entries.js b/tools/node_modules/eslint/node_modules/lodash/entries.js similarity index 100% rename from tools/eslint/node_modules/lodash/entries.js rename to tools/node_modules/eslint/node_modules/lodash/entries.js diff --git a/tools/eslint/node_modules/lodash/entriesIn.js b/tools/node_modules/eslint/node_modules/lodash/entriesIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/entriesIn.js rename to tools/node_modules/eslint/node_modules/lodash/entriesIn.js diff --git a/tools/eslint/node_modules/lodash/eq.js b/tools/node_modules/eslint/node_modules/lodash/eq.js similarity index 100% rename from tools/eslint/node_modules/lodash/eq.js rename to tools/node_modules/eslint/node_modules/lodash/eq.js diff --git a/tools/eslint/node_modules/lodash/escape.js b/tools/node_modules/eslint/node_modules/lodash/escape.js similarity index 100% rename from tools/eslint/node_modules/lodash/escape.js rename to tools/node_modules/eslint/node_modules/lodash/escape.js diff --git a/tools/eslint/node_modules/lodash/escapeRegExp.js b/tools/node_modules/eslint/node_modules/lodash/escapeRegExp.js similarity index 100% rename from tools/eslint/node_modules/lodash/escapeRegExp.js rename to tools/node_modules/eslint/node_modules/lodash/escapeRegExp.js diff --git a/tools/eslint/node_modules/lodash/every.js b/tools/node_modules/eslint/node_modules/lodash/every.js similarity index 100% rename from tools/eslint/node_modules/lodash/every.js rename to tools/node_modules/eslint/node_modules/lodash/every.js diff --git a/tools/eslint/node_modules/lodash/extend.js b/tools/node_modules/eslint/node_modules/lodash/extend.js similarity index 100% rename from tools/eslint/node_modules/lodash/extend.js rename to tools/node_modules/eslint/node_modules/lodash/extend.js diff --git a/tools/eslint/node_modules/lodash/extendWith.js b/tools/node_modules/eslint/node_modules/lodash/extendWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/extendWith.js rename to tools/node_modules/eslint/node_modules/lodash/extendWith.js diff --git a/tools/eslint/node_modules/lodash/fill.js b/tools/node_modules/eslint/node_modules/lodash/fill.js similarity index 100% rename from tools/eslint/node_modules/lodash/fill.js rename to tools/node_modules/eslint/node_modules/lodash/fill.js diff --git a/tools/eslint/node_modules/lodash/filter.js b/tools/node_modules/eslint/node_modules/lodash/filter.js similarity index 100% rename from tools/eslint/node_modules/lodash/filter.js rename to tools/node_modules/eslint/node_modules/lodash/filter.js diff --git a/tools/eslint/node_modules/lodash/find.js b/tools/node_modules/eslint/node_modules/lodash/find.js similarity index 100% rename from tools/eslint/node_modules/lodash/find.js rename to tools/node_modules/eslint/node_modules/lodash/find.js diff --git a/tools/eslint/node_modules/lodash/findIndex.js b/tools/node_modules/eslint/node_modules/lodash/findIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/findIndex.js rename to tools/node_modules/eslint/node_modules/lodash/findIndex.js diff --git a/tools/eslint/node_modules/lodash/findKey.js b/tools/node_modules/eslint/node_modules/lodash/findKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/findKey.js rename to tools/node_modules/eslint/node_modules/lodash/findKey.js diff --git a/tools/eslint/node_modules/lodash/findLast.js b/tools/node_modules/eslint/node_modules/lodash/findLast.js similarity index 100% rename from tools/eslint/node_modules/lodash/findLast.js rename to tools/node_modules/eslint/node_modules/lodash/findLast.js diff --git a/tools/eslint/node_modules/lodash/findLastIndex.js b/tools/node_modules/eslint/node_modules/lodash/findLastIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/findLastIndex.js rename to tools/node_modules/eslint/node_modules/lodash/findLastIndex.js diff --git a/tools/eslint/node_modules/lodash/findLastKey.js b/tools/node_modules/eslint/node_modules/lodash/findLastKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/findLastKey.js rename to tools/node_modules/eslint/node_modules/lodash/findLastKey.js diff --git a/tools/eslint/node_modules/lodash/first.js b/tools/node_modules/eslint/node_modules/lodash/first.js similarity index 100% rename from tools/eslint/node_modules/lodash/first.js rename to tools/node_modules/eslint/node_modules/lodash/first.js diff --git a/tools/eslint/node_modules/lodash/flatMap.js b/tools/node_modules/eslint/node_modules/lodash/flatMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/flatMap.js rename to tools/node_modules/eslint/node_modules/lodash/flatMap.js diff --git a/tools/eslint/node_modules/lodash/flatMapDeep.js b/tools/node_modules/eslint/node_modules/lodash/flatMapDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/flatMapDeep.js rename to tools/node_modules/eslint/node_modules/lodash/flatMapDeep.js diff --git a/tools/eslint/node_modules/lodash/flatMapDepth.js b/tools/node_modules/eslint/node_modules/lodash/flatMapDepth.js similarity index 100% rename from tools/eslint/node_modules/lodash/flatMapDepth.js rename to tools/node_modules/eslint/node_modules/lodash/flatMapDepth.js diff --git a/tools/eslint/node_modules/lodash/flatten.js b/tools/node_modules/eslint/node_modules/lodash/flatten.js similarity index 100% rename from tools/eslint/node_modules/lodash/flatten.js rename to tools/node_modules/eslint/node_modules/lodash/flatten.js diff --git a/tools/eslint/node_modules/lodash/flattenDeep.js b/tools/node_modules/eslint/node_modules/lodash/flattenDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/flattenDeep.js rename to tools/node_modules/eslint/node_modules/lodash/flattenDeep.js diff --git a/tools/eslint/node_modules/lodash/flattenDepth.js b/tools/node_modules/eslint/node_modules/lodash/flattenDepth.js similarity index 100% rename from tools/eslint/node_modules/lodash/flattenDepth.js rename to tools/node_modules/eslint/node_modules/lodash/flattenDepth.js diff --git a/tools/eslint/node_modules/lodash/flip.js b/tools/node_modules/eslint/node_modules/lodash/flip.js similarity index 100% rename from tools/eslint/node_modules/lodash/flip.js rename to tools/node_modules/eslint/node_modules/lodash/flip.js diff --git a/tools/eslint/node_modules/lodash/floor.js b/tools/node_modules/eslint/node_modules/lodash/floor.js similarity index 100% rename from tools/eslint/node_modules/lodash/floor.js rename to tools/node_modules/eslint/node_modules/lodash/floor.js diff --git a/tools/eslint/node_modules/lodash/flow.js b/tools/node_modules/eslint/node_modules/lodash/flow.js similarity index 100% rename from tools/eslint/node_modules/lodash/flow.js rename to tools/node_modules/eslint/node_modules/lodash/flow.js diff --git a/tools/eslint/node_modules/lodash/flowRight.js b/tools/node_modules/eslint/node_modules/lodash/flowRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/flowRight.js rename to tools/node_modules/eslint/node_modules/lodash/flowRight.js diff --git a/tools/eslint/node_modules/lodash/forEach.js b/tools/node_modules/eslint/node_modules/lodash/forEach.js similarity index 100% rename from tools/eslint/node_modules/lodash/forEach.js rename to tools/node_modules/eslint/node_modules/lodash/forEach.js diff --git a/tools/eslint/node_modules/lodash/forEachRight.js b/tools/node_modules/eslint/node_modules/lodash/forEachRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/forEachRight.js rename to tools/node_modules/eslint/node_modules/lodash/forEachRight.js diff --git a/tools/eslint/node_modules/lodash/forIn.js b/tools/node_modules/eslint/node_modules/lodash/forIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/forIn.js rename to tools/node_modules/eslint/node_modules/lodash/forIn.js diff --git a/tools/eslint/node_modules/lodash/forInRight.js b/tools/node_modules/eslint/node_modules/lodash/forInRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/forInRight.js rename to tools/node_modules/eslint/node_modules/lodash/forInRight.js diff --git a/tools/eslint/node_modules/lodash/forOwn.js b/tools/node_modules/eslint/node_modules/lodash/forOwn.js similarity index 100% rename from tools/eslint/node_modules/lodash/forOwn.js rename to tools/node_modules/eslint/node_modules/lodash/forOwn.js diff --git a/tools/eslint/node_modules/lodash/forOwnRight.js b/tools/node_modules/eslint/node_modules/lodash/forOwnRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/forOwnRight.js rename to tools/node_modules/eslint/node_modules/lodash/forOwnRight.js diff --git a/tools/eslint/node_modules/lodash/fp.js b/tools/node_modules/eslint/node_modules/lodash/fp.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp.js rename to tools/node_modules/eslint/node_modules/lodash/fp.js diff --git a/tools/eslint/node_modules/lodash/fp/F.js b/tools/node_modules/eslint/node_modules/lodash/fp/F.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/F.js rename to tools/node_modules/eslint/node_modules/lodash/fp/F.js diff --git a/tools/eslint/node_modules/lodash/fp/T.js b/tools/node_modules/eslint/node_modules/lodash/fp/T.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/T.js rename to tools/node_modules/eslint/node_modules/lodash/fp/T.js diff --git a/tools/eslint/node_modules/lodash/fp/__.js b/tools/node_modules/eslint/node_modules/lodash/fp/__.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/__.js rename to tools/node_modules/eslint/node_modules/lodash/fp/__.js diff --git a/tools/eslint/node_modules/lodash/fp/_baseConvert.js b/tools/node_modules/eslint/node_modules/lodash/fp/_baseConvert.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/_baseConvert.js rename to tools/node_modules/eslint/node_modules/lodash/fp/_baseConvert.js diff --git a/tools/eslint/node_modules/lodash/fp/_convertBrowser.js b/tools/node_modules/eslint/node_modules/lodash/fp/_convertBrowser.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/_convertBrowser.js rename to tools/node_modules/eslint/node_modules/lodash/fp/_convertBrowser.js diff --git a/tools/eslint/node_modules/lodash/fp/_falseOptions.js b/tools/node_modules/eslint/node_modules/lodash/fp/_falseOptions.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/_falseOptions.js rename to tools/node_modules/eslint/node_modules/lodash/fp/_falseOptions.js diff --git a/tools/eslint/node_modules/lodash/fp/_mapping.js b/tools/node_modules/eslint/node_modules/lodash/fp/_mapping.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/_mapping.js rename to tools/node_modules/eslint/node_modules/lodash/fp/_mapping.js diff --git a/tools/eslint/node_modules/lodash/fp/_util.js b/tools/node_modules/eslint/node_modules/lodash/fp/_util.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/_util.js rename to tools/node_modules/eslint/node_modules/lodash/fp/_util.js diff --git a/tools/eslint/node_modules/lodash/fp/add.js b/tools/node_modules/eslint/node_modules/lodash/fp/add.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/add.js rename to tools/node_modules/eslint/node_modules/lodash/fp/add.js diff --git a/tools/eslint/node_modules/lodash/fp/after.js b/tools/node_modules/eslint/node_modules/lodash/fp/after.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/after.js rename to tools/node_modules/eslint/node_modules/lodash/fp/after.js diff --git a/tools/eslint/node_modules/lodash/fp/all.js b/tools/node_modules/eslint/node_modules/lodash/fp/all.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/all.js rename to tools/node_modules/eslint/node_modules/lodash/fp/all.js diff --git a/tools/eslint/node_modules/lodash/fp/allPass.js b/tools/node_modules/eslint/node_modules/lodash/fp/allPass.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/allPass.js rename to tools/node_modules/eslint/node_modules/lodash/fp/allPass.js diff --git a/tools/eslint/node_modules/lodash/fp/always.js b/tools/node_modules/eslint/node_modules/lodash/fp/always.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/always.js rename to tools/node_modules/eslint/node_modules/lodash/fp/always.js diff --git a/tools/eslint/node_modules/lodash/fp/any.js b/tools/node_modules/eslint/node_modules/lodash/fp/any.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/any.js rename to tools/node_modules/eslint/node_modules/lodash/fp/any.js diff --git a/tools/eslint/node_modules/lodash/fp/anyPass.js b/tools/node_modules/eslint/node_modules/lodash/fp/anyPass.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/anyPass.js rename to tools/node_modules/eslint/node_modules/lodash/fp/anyPass.js diff --git a/tools/eslint/node_modules/lodash/fp/apply.js b/tools/node_modules/eslint/node_modules/lodash/fp/apply.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/apply.js rename to tools/node_modules/eslint/node_modules/lodash/fp/apply.js diff --git a/tools/eslint/node_modules/lodash/fp/array.js b/tools/node_modules/eslint/node_modules/lodash/fp/array.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/array.js rename to tools/node_modules/eslint/node_modules/lodash/fp/array.js diff --git a/tools/eslint/node_modules/lodash/fp/ary.js b/tools/node_modules/eslint/node_modules/lodash/fp/ary.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/ary.js rename to tools/node_modules/eslint/node_modules/lodash/fp/ary.js diff --git a/tools/eslint/node_modules/lodash/fp/assign.js b/tools/node_modules/eslint/node_modules/lodash/fp/assign.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assign.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assign.js diff --git a/tools/eslint/node_modules/lodash/fp/assignAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignAll.js diff --git a/tools/eslint/node_modules/lodash/fp/assignAllWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignAllWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignAllWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignAllWith.js diff --git a/tools/eslint/node_modules/lodash/fp/assignIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignIn.js diff --git a/tools/eslint/node_modules/lodash/fp/assignInAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignInAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignInAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignInAll.js diff --git a/tools/eslint/node_modules/lodash/fp/assignInAllWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignInAllWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignInAllWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignInAllWith.js diff --git a/tools/eslint/node_modules/lodash/fp/assignInWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignInWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignInWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignInWith.js diff --git a/tools/eslint/node_modules/lodash/fp/assignWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/assignWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assignWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assignWith.js diff --git a/tools/eslint/node_modules/lodash/fp/assoc.js b/tools/node_modules/eslint/node_modules/lodash/fp/assoc.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assoc.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assoc.js diff --git a/tools/eslint/node_modules/lodash/fp/assocPath.js b/tools/node_modules/eslint/node_modules/lodash/fp/assocPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/assocPath.js rename to tools/node_modules/eslint/node_modules/lodash/fp/assocPath.js diff --git a/tools/eslint/node_modules/lodash/fp/at.js b/tools/node_modules/eslint/node_modules/lodash/fp/at.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/at.js rename to tools/node_modules/eslint/node_modules/lodash/fp/at.js diff --git a/tools/eslint/node_modules/lodash/fp/attempt.js b/tools/node_modules/eslint/node_modules/lodash/fp/attempt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/attempt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/attempt.js diff --git a/tools/eslint/node_modules/lodash/fp/before.js b/tools/node_modules/eslint/node_modules/lodash/fp/before.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/before.js rename to tools/node_modules/eslint/node_modules/lodash/fp/before.js diff --git a/tools/eslint/node_modules/lodash/fp/bind.js b/tools/node_modules/eslint/node_modules/lodash/fp/bind.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/bind.js rename to tools/node_modules/eslint/node_modules/lodash/fp/bind.js diff --git a/tools/eslint/node_modules/lodash/fp/bindAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/bindAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/bindAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/bindAll.js diff --git a/tools/eslint/node_modules/lodash/fp/bindKey.js b/tools/node_modules/eslint/node_modules/lodash/fp/bindKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/bindKey.js rename to tools/node_modules/eslint/node_modules/lodash/fp/bindKey.js diff --git a/tools/eslint/node_modules/lodash/fp/camelCase.js b/tools/node_modules/eslint/node_modules/lodash/fp/camelCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/camelCase.js rename to tools/node_modules/eslint/node_modules/lodash/fp/camelCase.js diff --git a/tools/eslint/node_modules/lodash/fp/capitalize.js b/tools/node_modules/eslint/node_modules/lodash/fp/capitalize.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/capitalize.js rename to tools/node_modules/eslint/node_modules/lodash/fp/capitalize.js diff --git a/tools/eslint/node_modules/lodash/fp/castArray.js b/tools/node_modules/eslint/node_modules/lodash/fp/castArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/castArray.js rename to tools/node_modules/eslint/node_modules/lodash/fp/castArray.js diff --git a/tools/eslint/node_modules/lodash/fp/ceil.js b/tools/node_modules/eslint/node_modules/lodash/fp/ceil.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/ceil.js rename to tools/node_modules/eslint/node_modules/lodash/fp/ceil.js diff --git a/tools/eslint/node_modules/lodash/fp/chain.js b/tools/node_modules/eslint/node_modules/lodash/fp/chain.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/chain.js rename to tools/node_modules/eslint/node_modules/lodash/fp/chain.js diff --git a/tools/eslint/node_modules/lodash/fp/chunk.js b/tools/node_modules/eslint/node_modules/lodash/fp/chunk.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/chunk.js rename to tools/node_modules/eslint/node_modules/lodash/fp/chunk.js diff --git a/tools/eslint/node_modules/lodash/fp/clamp.js b/tools/node_modules/eslint/node_modules/lodash/fp/clamp.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/clamp.js rename to tools/node_modules/eslint/node_modules/lodash/fp/clamp.js diff --git a/tools/eslint/node_modules/lodash/fp/clone.js b/tools/node_modules/eslint/node_modules/lodash/fp/clone.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/clone.js rename to tools/node_modules/eslint/node_modules/lodash/fp/clone.js diff --git a/tools/eslint/node_modules/lodash/fp/cloneDeep.js b/tools/node_modules/eslint/node_modules/lodash/fp/cloneDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/cloneDeep.js rename to tools/node_modules/eslint/node_modules/lodash/fp/cloneDeep.js diff --git a/tools/eslint/node_modules/lodash/fp/cloneDeepWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/cloneDeepWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/cloneDeepWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/cloneDeepWith.js diff --git a/tools/eslint/node_modules/lodash/fp/cloneWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/cloneWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/cloneWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/cloneWith.js diff --git a/tools/eslint/node_modules/lodash/fp/collection.js b/tools/node_modules/eslint/node_modules/lodash/fp/collection.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/collection.js rename to tools/node_modules/eslint/node_modules/lodash/fp/collection.js diff --git a/tools/eslint/node_modules/lodash/fp/commit.js b/tools/node_modules/eslint/node_modules/lodash/fp/commit.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/commit.js rename to tools/node_modules/eslint/node_modules/lodash/fp/commit.js diff --git a/tools/eslint/node_modules/lodash/fp/compact.js b/tools/node_modules/eslint/node_modules/lodash/fp/compact.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/compact.js rename to tools/node_modules/eslint/node_modules/lodash/fp/compact.js diff --git a/tools/eslint/node_modules/lodash/fp/complement.js b/tools/node_modules/eslint/node_modules/lodash/fp/complement.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/complement.js rename to tools/node_modules/eslint/node_modules/lodash/fp/complement.js diff --git a/tools/eslint/node_modules/lodash/fp/compose.js b/tools/node_modules/eslint/node_modules/lodash/fp/compose.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/compose.js rename to tools/node_modules/eslint/node_modules/lodash/fp/compose.js diff --git a/tools/eslint/node_modules/lodash/fp/concat.js b/tools/node_modules/eslint/node_modules/lodash/fp/concat.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/concat.js rename to tools/node_modules/eslint/node_modules/lodash/fp/concat.js diff --git a/tools/eslint/node_modules/lodash/fp/cond.js b/tools/node_modules/eslint/node_modules/lodash/fp/cond.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/cond.js rename to tools/node_modules/eslint/node_modules/lodash/fp/cond.js diff --git a/tools/eslint/node_modules/lodash/fp/conforms.js b/tools/node_modules/eslint/node_modules/lodash/fp/conforms.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/conforms.js rename to tools/node_modules/eslint/node_modules/lodash/fp/conforms.js diff --git a/tools/eslint/node_modules/lodash/fp/conformsTo.js b/tools/node_modules/eslint/node_modules/lodash/fp/conformsTo.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/conformsTo.js rename to tools/node_modules/eslint/node_modules/lodash/fp/conformsTo.js diff --git a/tools/eslint/node_modules/lodash/fp/constant.js b/tools/node_modules/eslint/node_modules/lodash/fp/constant.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/constant.js rename to tools/node_modules/eslint/node_modules/lodash/fp/constant.js diff --git a/tools/eslint/node_modules/lodash/fp/contains.js b/tools/node_modules/eslint/node_modules/lodash/fp/contains.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/contains.js rename to tools/node_modules/eslint/node_modules/lodash/fp/contains.js diff --git a/tools/eslint/node_modules/lodash/fp/convert.js b/tools/node_modules/eslint/node_modules/lodash/fp/convert.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/convert.js rename to tools/node_modules/eslint/node_modules/lodash/fp/convert.js diff --git a/tools/eslint/node_modules/lodash/fp/countBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/countBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/countBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/countBy.js diff --git a/tools/eslint/node_modules/lodash/fp/create.js b/tools/node_modules/eslint/node_modules/lodash/fp/create.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/create.js rename to tools/node_modules/eslint/node_modules/lodash/fp/create.js diff --git a/tools/eslint/node_modules/lodash/fp/curry.js b/tools/node_modules/eslint/node_modules/lodash/fp/curry.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/curry.js rename to tools/node_modules/eslint/node_modules/lodash/fp/curry.js diff --git a/tools/eslint/node_modules/lodash/fp/curryN.js b/tools/node_modules/eslint/node_modules/lodash/fp/curryN.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/curryN.js rename to tools/node_modules/eslint/node_modules/lodash/fp/curryN.js diff --git a/tools/eslint/node_modules/lodash/fp/curryRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/curryRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/curryRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/curryRight.js diff --git a/tools/eslint/node_modules/lodash/fp/curryRightN.js b/tools/node_modules/eslint/node_modules/lodash/fp/curryRightN.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/curryRightN.js rename to tools/node_modules/eslint/node_modules/lodash/fp/curryRightN.js diff --git a/tools/eslint/node_modules/lodash/fp/date.js b/tools/node_modules/eslint/node_modules/lodash/fp/date.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/date.js rename to tools/node_modules/eslint/node_modules/lodash/fp/date.js diff --git a/tools/eslint/node_modules/lodash/fp/debounce.js b/tools/node_modules/eslint/node_modules/lodash/fp/debounce.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/debounce.js rename to tools/node_modules/eslint/node_modules/lodash/fp/debounce.js diff --git a/tools/eslint/node_modules/lodash/fp/deburr.js b/tools/node_modules/eslint/node_modules/lodash/fp/deburr.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/deburr.js rename to tools/node_modules/eslint/node_modules/lodash/fp/deburr.js diff --git a/tools/eslint/node_modules/lodash/fp/defaultTo.js b/tools/node_modules/eslint/node_modules/lodash/fp/defaultTo.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/defaultTo.js rename to tools/node_modules/eslint/node_modules/lodash/fp/defaultTo.js diff --git a/tools/eslint/node_modules/lodash/fp/defaults.js b/tools/node_modules/eslint/node_modules/lodash/fp/defaults.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/defaults.js rename to tools/node_modules/eslint/node_modules/lodash/fp/defaults.js diff --git a/tools/eslint/node_modules/lodash/fp/defaultsAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/defaultsAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/defaultsAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/defaultsAll.js diff --git a/tools/eslint/node_modules/lodash/fp/defaultsDeep.js b/tools/node_modules/eslint/node_modules/lodash/fp/defaultsDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/defaultsDeep.js rename to tools/node_modules/eslint/node_modules/lodash/fp/defaultsDeep.js diff --git a/tools/eslint/node_modules/lodash/fp/defaultsDeepAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/defaultsDeepAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/defaultsDeepAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/defaultsDeepAll.js diff --git a/tools/eslint/node_modules/lodash/fp/defer.js b/tools/node_modules/eslint/node_modules/lodash/fp/defer.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/defer.js rename to tools/node_modules/eslint/node_modules/lodash/fp/defer.js diff --git a/tools/eslint/node_modules/lodash/fp/delay.js b/tools/node_modules/eslint/node_modules/lodash/fp/delay.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/delay.js rename to tools/node_modules/eslint/node_modules/lodash/fp/delay.js diff --git a/tools/eslint/node_modules/lodash/fp/difference.js b/tools/node_modules/eslint/node_modules/lodash/fp/difference.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/difference.js rename to tools/node_modules/eslint/node_modules/lodash/fp/difference.js diff --git a/tools/eslint/node_modules/lodash/fp/differenceBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/differenceBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/differenceBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/differenceBy.js diff --git a/tools/eslint/node_modules/lodash/fp/differenceWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/differenceWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/differenceWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/differenceWith.js diff --git a/tools/eslint/node_modules/lodash/fp/dissoc.js b/tools/node_modules/eslint/node_modules/lodash/fp/dissoc.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dissoc.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dissoc.js diff --git a/tools/eslint/node_modules/lodash/fp/dissocPath.js b/tools/node_modules/eslint/node_modules/lodash/fp/dissocPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dissocPath.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dissocPath.js diff --git a/tools/eslint/node_modules/lodash/fp/divide.js b/tools/node_modules/eslint/node_modules/lodash/fp/divide.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/divide.js rename to tools/node_modules/eslint/node_modules/lodash/fp/divide.js diff --git a/tools/eslint/node_modules/lodash/fp/drop.js b/tools/node_modules/eslint/node_modules/lodash/fp/drop.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/drop.js rename to tools/node_modules/eslint/node_modules/lodash/fp/drop.js diff --git a/tools/eslint/node_modules/lodash/fp/dropLast.js b/tools/node_modules/eslint/node_modules/lodash/fp/dropLast.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dropLast.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dropLast.js diff --git a/tools/eslint/node_modules/lodash/fp/dropLastWhile.js b/tools/node_modules/eslint/node_modules/lodash/fp/dropLastWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dropLastWhile.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dropLastWhile.js diff --git a/tools/eslint/node_modules/lodash/fp/dropRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/dropRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dropRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dropRight.js diff --git a/tools/eslint/node_modules/lodash/fp/dropRightWhile.js b/tools/node_modules/eslint/node_modules/lodash/fp/dropRightWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dropRightWhile.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dropRightWhile.js diff --git a/tools/eslint/node_modules/lodash/fp/dropWhile.js b/tools/node_modules/eslint/node_modules/lodash/fp/dropWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/dropWhile.js rename to tools/node_modules/eslint/node_modules/lodash/fp/dropWhile.js diff --git a/tools/eslint/node_modules/lodash/fp/each.js b/tools/node_modules/eslint/node_modules/lodash/fp/each.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/each.js rename to tools/node_modules/eslint/node_modules/lodash/fp/each.js diff --git a/tools/eslint/node_modules/lodash/fp/eachRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/eachRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/eachRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/eachRight.js diff --git a/tools/eslint/node_modules/lodash/fp/endsWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/endsWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/endsWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/endsWith.js diff --git a/tools/eslint/node_modules/lodash/fp/entries.js b/tools/node_modules/eslint/node_modules/lodash/fp/entries.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/entries.js rename to tools/node_modules/eslint/node_modules/lodash/fp/entries.js diff --git a/tools/eslint/node_modules/lodash/fp/entriesIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/entriesIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/entriesIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/entriesIn.js diff --git a/tools/eslint/node_modules/lodash/fp/eq.js b/tools/node_modules/eslint/node_modules/lodash/fp/eq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/eq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/eq.js diff --git a/tools/eslint/node_modules/lodash/fp/equals.js b/tools/node_modules/eslint/node_modules/lodash/fp/equals.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/equals.js rename to tools/node_modules/eslint/node_modules/lodash/fp/equals.js diff --git a/tools/eslint/node_modules/lodash/fp/escape.js b/tools/node_modules/eslint/node_modules/lodash/fp/escape.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/escape.js rename to tools/node_modules/eslint/node_modules/lodash/fp/escape.js diff --git a/tools/eslint/node_modules/lodash/fp/escapeRegExp.js b/tools/node_modules/eslint/node_modules/lodash/fp/escapeRegExp.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/escapeRegExp.js rename to tools/node_modules/eslint/node_modules/lodash/fp/escapeRegExp.js diff --git a/tools/eslint/node_modules/lodash/fp/every.js b/tools/node_modules/eslint/node_modules/lodash/fp/every.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/every.js rename to tools/node_modules/eslint/node_modules/lodash/fp/every.js diff --git a/tools/eslint/node_modules/lodash/fp/extend.js b/tools/node_modules/eslint/node_modules/lodash/fp/extend.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/extend.js rename to tools/node_modules/eslint/node_modules/lodash/fp/extend.js diff --git a/tools/eslint/node_modules/lodash/fp/extendAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/extendAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/extendAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/extendAll.js diff --git a/tools/eslint/node_modules/lodash/fp/extendAllWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/extendAllWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/extendAllWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/extendAllWith.js diff --git a/tools/eslint/node_modules/lodash/fp/extendWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/extendWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/extendWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/extendWith.js diff --git a/tools/eslint/node_modules/lodash/fp/fill.js b/tools/node_modules/eslint/node_modules/lodash/fp/fill.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/fill.js rename to tools/node_modules/eslint/node_modules/lodash/fp/fill.js diff --git a/tools/eslint/node_modules/lodash/fp/filter.js b/tools/node_modules/eslint/node_modules/lodash/fp/filter.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/filter.js rename to tools/node_modules/eslint/node_modules/lodash/fp/filter.js diff --git a/tools/eslint/node_modules/lodash/fp/find.js b/tools/node_modules/eslint/node_modules/lodash/fp/find.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/find.js rename to tools/node_modules/eslint/node_modules/lodash/fp/find.js diff --git a/tools/eslint/node_modules/lodash/fp/findFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/findFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/findIndex.js b/tools/node_modules/eslint/node_modules/lodash/fp/findIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findIndex.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findIndex.js diff --git a/tools/eslint/node_modules/lodash/fp/findIndexFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/findIndexFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findIndexFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findIndexFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/findKey.js b/tools/node_modules/eslint/node_modules/lodash/fp/findKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findKey.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findKey.js diff --git a/tools/eslint/node_modules/lodash/fp/findLast.js b/tools/node_modules/eslint/node_modules/lodash/fp/findLast.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findLast.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findLast.js diff --git a/tools/eslint/node_modules/lodash/fp/findLastFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/findLastFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findLastFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findLastFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/findLastIndex.js b/tools/node_modules/eslint/node_modules/lodash/fp/findLastIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findLastIndex.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findLastIndex.js diff --git a/tools/eslint/node_modules/lodash/fp/findLastIndexFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/findLastIndexFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findLastIndexFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findLastIndexFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/findLastKey.js b/tools/node_modules/eslint/node_modules/lodash/fp/findLastKey.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/findLastKey.js rename to tools/node_modules/eslint/node_modules/lodash/fp/findLastKey.js diff --git a/tools/eslint/node_modules/lodash/fp/first.js b/tools/node_modules/eslint/node_modules/lodash/fp/first.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/first.js rename to tools/node_modules/eslint/node_modules/lodash/fp/first.js diff --git a/tools/eslint/node_modules/lodash/fp/flatMap.js b/tools/node_modules/eslint/node_modules/lodash/fp/flatMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flatMap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flatMap.js diff --git a/tools/eslint/node_modules/lodash/fp/flatMapDeep.js b/tools/node_modules/eslint/node_modules/lodash/fp/flatMapDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flatMapDeep.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flatMapDeep.js diff --git a/tools/eslint/node_modules/lodash/fp/flatMapDepth.js b/tools/node_modules/eslint/node_modules/lodash/fp/flatMapDepth.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flatMapDepth.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flatMapDepth.js diff --git a/tools/eslint/node_modules/lodash/fp/flatten.js b/tools/node_modules/eslint/node_modules/lodash/fp/flatten.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flatten.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flatten.js diff --git a/tools/eslint/node_modules/lodash/fp/flattenDeep.js b/tools/node_modules/eslint/node_modules/lodash/fp/flattenDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flattenDeep.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flattenDeep.js diff --git a/tools/eslint/node_modules/lodash/fp/flattenDepth.js b/tools/node_modules/eslint/node_modules/lodash/fp/flattenDepth.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flattenDepth.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flattenDepth.js diff --git a/tools/eslint/node_modules/lodash/fp/flip.js b/tools/node_modules/eslint/node_modules/lodash/fp/flip.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flip.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flip.js diff --git a/tools/eslint/node_modules/lodash/fp/floor.js b/tools/node_modules/eslint/node_modules/lodash/fp/floor.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/floor.js rename to tools/node_modules/eslint/node_modules/lodash/fp/floor.js diff --git a/tools/eslint/node_modules/lodash/fp/flow.js b/tools/node_modules/eslint/node_modules/lodash/fp/flow.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flow.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flow.js diff --git a/tools/eslint/node_modules/lodash/fp/flowRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/flowRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/flowRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/flowRight.js diff --git a/tools/eslint/node_modules/lodash/fp/forEach.js b/tools/node_modules/eslint/node_modules/lodash/fp/forEach.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/forEach.js rename to tools/node_modules/eslint/node_modules/lodash/fp/forEach.js diff --git a/tools/eslint/node_modules/lodash/fp/forEachRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/forEachRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/forEachRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/forEachRight.js diff --git a/tools/eslint/node_modules/lodash/fp/forIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/forIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/forIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/forIn.js diff --git a/tools/eslint/node_modules/lodash/fp/forInRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/forInRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/forInRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/forInRight.js diff --git a/tools/eslint/node_modules/lodash/fp/forOwn.js b/tools/node_modules/eslint/node_modules/lodash/fp/forOwn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/forOwn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/forOwn.js diff --git a/tools/eslint/node_modules/lodash/fp/forOwnRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/forOwnRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/forOwnRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/forOwnRight.js diff --git a/tools/eslint/node_modules/lodash/fp/fromPairs.js b/tools/node_modules/eslint/node_modules/lodash/fp/fromPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/fromPairs.js rename to tools/node_modules/eslint/node_modules/lodash/fp/fromPairs.js diff --git a/tools/eslint/node_modules/lodash/fp/function.js b/tools/node_modules/eslint/node_modules/lodash/fp/function.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/function.js rename to tools/node_modules/eslint/node_modules/lodash/fp/function.js diff --git a/tools/eslint/node_modules/lodash/fp/functions.js b/tools/node_modules/eslint/node_modules/lodash/fp/functions.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/functions.js rename to tools/node_modules/eslint/node_modules/lodash/fp/functions.js diff --git a/tools/eslint/node_modules/lodash/fp/functionsIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/functionsIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/functionsIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/functionsIn.js diff --git a/tools/eslint/node_modules/lodash/fp/get.js b/tools/node_modules/eslint/node_modules/lodash/fp/get.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/get.js rename to tools/node_modules/eslint/node_modules/lodash/fp/get.js diff --git a/tools/eslint/node_modules/lodash/fp/getOr.js b/tools/node_modules/eslint/node_modules/lodash/fp/getOr.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/getOr.js rename to tools/node_modules/eslint/node_modules/lodash/fp/getOr.js diff --git a/tools/eslint/node_modules/lodash/fp/groupBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/groupBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/groupBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/groupBy.js diff --git a/tools/eslint/node_modules/lodash/fp/gt.js b/tools/node_modules/eslint/node_modules/lodash/fp/gt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/gt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/gt.js diff --git a/tools/eslint/node_modules/lodash/fp/gte.js b/tools/node_modules/eslint/node_modules/lodash/fp/gte.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/gte.js rename to tools/node_modules/eslint/node_modules/lodash/fp/gte.js diff --git a/tools/eslint/node_modules/lodash/fp/has.js b/tools/node_modules/eslint/node_modules/lodash/fp/has.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/has.js rename to tools/node_modules/eslint/node_modules/lodash/fp/has.js diff --git a/tools/eslint/node_modules/lodash/fp/hasIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/hasIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/hasIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/hasIn.js diff --git a/tools/eslint/node_modules/lodash/fp/head.js b/tools/node_modules/eslint/node_modules/lodash/fp/head.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/head.js rename to tools/node_modules/eslint/node_modules/lodash/fp/head.js diff --git a/tools/eslint/node_modules/lodash/fp/identical.js b/tools/node_modules/eslint/node_modules/lodash/fp/identical.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/identical.js rename to tools/node_modules/eslint/node_modules/lodash/fp/identical.js diff --git a/tools/eslint/node_modules/lodash/fp/identity.js b/tools/node_modules/eslint/node_modules/lodash/fp/identity.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/identity.js rename to tools/node_modules/eslint/node_modules/lodash/fp/identity.js diff --git a/tools/eslint/node_modules/lodash/fp/inRange.js b/tools/node_modules/eslint/node_modules/lodash/fp/inRange.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/inRange.js rename to tools/node_modules/eslint/node_modules/lodash/fp/inRange.js diff --git a/tools/eslint/node_modules/lodash/fp/includes.js b/tools/node_modules/eslint/node_modules/lodash/fp/includes.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/includes.js rename to tools/node_modules/eslint/node_modules/lodash/fp/includes.js diff --git a/tools/eslint/node_modules/lodash/fp/includesFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/includesFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/includesFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/includesFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/indexBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/indexBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/indexBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/indexBy.js diff --git a/tools/eslint/node_modules/lodash/fp/indexOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/indexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/indexOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/indexOf.js diff --git a/tools/eslint/node_modules/lodash/fp/indexOfFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/indexOfFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/indexOfFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/indexOfFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/init.js b/tools/node_modules/eslint/node_modules/lodash/fp/init.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/init.js rename to tools/node_modules/eslint/node_modules/lodash/fp/init.js diff --git a/tools/eslint/node_modules/lodash/fp/initial.js b/tools/node_modules/eslint/node_modules/lodash/fp/initial.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/initial.js rename to tools/node_modules/eslint/node_modules/lodash/fp/initial.js diff --git a/tools/eslint/node_modules/lodash/fp/intersection.js b/tools/node_modules/eslint/node_modules/lodash/fp/intersection.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/intersection.js rename to tools/node_modules/eslint/node_modules/lodash/fp/intersection.js diff --git a/tools/eslint/node_modules/lodash/fp/intersectionBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/intersectionBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/intersectionBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/intersectionBy.js diff --git a/tools/eslint/node_modules/lodash/fp/intersectionWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/intersectionWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/intersectionWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/intersectionWith.js diff --git a/tools/eslint/node_modules/lodash/fp/invert.js b/tools/node_modules/eslint/node_modules/lodash/fp/invert.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invert.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invert.js diff --git a/tools/eslint/node_modules/lodash/fp/invertBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/invertBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invertBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invertBy.js diff --git a/tools/eslint/node_modules/lodash/fp/invertObj.js b/tools/node_modules/eslint/node_modules/lodash/fp/invertObj.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invertObj.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invertObj.js diff --git a/tools/eslint/node_modules/lodash/fp/invoke.js b/tools/node_modules/eslint/node_modules/lodash/fp/invoke.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invoke.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invoke.js diff --git a/tools/eslint/node_modules/lodash/fp/invokeArgs.js b/tools/node_modules/eslint/node_modules/lodash/fp/invokeArgs.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invokeArgs.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invokeArgs.js diff --git a/tools/eslint/node_modules/lodash/fp/invokeArgsMap.js b/tools/node_modules/eslint/node_modules/lodash/fp/invokeArgsMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invokeArgsMap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invokeArgsMap.js diff --git a/tools/eslint/node_modules/lodash/fp/invokeMap.js b/tools/node_modules/eslint/node_modules/lodash/fp/invokeMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/invokeMap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/invokeMap.js diff --git a/tools/eslint/node_modules/lodash/fp/isArguments.js b/tools/node_modules/eslint/node_modules/lodash/fp/isArguments.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isArguments.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isArguments.js diff --git a/tools/eslint/node_modules/lodash/fp/isArray.js b/tools/node_modules/eslint/node_modules/lodash/fp/isArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isArray.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isArray.js diff --git a/tools/eslint/node_modules/lodash/fp/isArrayBuffer.js b/tools/node_modules/eslint/node_modules/lodash/fp/isArrayBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isArrayBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isArrayBuffer.js diff --git a/tools/eslint/node_modules/lodash/fp/isArrayLike.js b/tools/node_modules/eslint/node_modules/lodash/fp/isArrayLike.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isArrayLike.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isArrayLike.js diff --git a/tools/eslint/node_modules/lodash/fp/isArrayLikeObject.js b/tools/node_modules/eslint/node_modules/lodash/fp/isArrayLikeObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isArrayLikeObject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isArrayLikeObject.js diff --git a/tools/eslint/node_modules/lodash/fp/isBoolean.js b/tools/node_modules/eslint/node_modules/lodash/fp/isBoolean.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isBoolean.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isBoolean.js diff --git a/tools/eslint/node_modules/lodash/fp/isBuffer.js b/tools/node_modules/eslint/node_modules/lodash/fp/isBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isBuffer.js diff --git a/tools/eslint/node_modules/lodash/fp/isDate.js b/tools/node_modules/eslint/node_modules/lodash/fp/isDate.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isDate.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isDate.js diff --git a/tools/eslint/node_modules/lodash/fp/isElement.js b/tools/node_modules/eslint/node_modules/lodash/fp/isElement.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isElement.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isElement.js diff --git a/tools/eslint/node_modules/lodash/fp/isEmpty.js b/tools/node_modules/eslint/node_modules/lodash/fp/isEmpty.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isEmpty.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isEmpty.js diff --git a/tools/eslint/node_modules/lodash/fp/isEqual.js b/tools/node_modules/eslint/node_modules/lodash/fp/isEqual.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isEqual.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isEqual.js diff --git a/tools/eslint/node_modules/lodash/fp/isEqualWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/isEqualWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isEqualWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isEqualWith.js diff --git a/tools/eslint/node_modules/lodash/fp/isError.js b/tools/node_modules/eslint/node_modules/lodash/fp/isError.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isError.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isError.js diff --git a/tools/eslint/node_modules/lodash/fp/isFinite.js b/tools/node_modules/eslint/node_modules/lodash/fp/isFinite.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isFinite.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isFinite.js diff --git a/tools/eslint/node_modules/lodash/fp/isFunction.js b/tools/node_modules/eslint/node_modules/lodash/fp/isFunction.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isFunction.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isFunction.js diff --git a/tools/eslint/node_modules/lodash/fp/isInteger.js b/tools/node_modules/eslint/node_modules/lodash/fp/isInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isInteger.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isInteger.js diff --git a/tools/eslint/node_modules/lodash/fp/isLength.js b/tools/node_modules/eslint/node_modules/lodash/fp/isLength.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isLength.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isLength.js diff --git a/tools/eslint/node_modules/lodash/fp/isMap.js b/tools/node_modules/eslint/node_modules/lodash/fp/isMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isMap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isMap.js diff --git a/tools/eslint/node_modules/lodash/fp/isMatch.js b/tools/node_modules/eslint/node_modules/lodash/fp/isMatch.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isMatch.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isMatch.js diff --git a/tools/eslint/node_modules/lodash/fp/isMatchWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/isMatchWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isMatchWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isMatchWith.js diff --git a/tools/eslint/node_modules/lodash/fp/isNaN.js b/tools/node_modules/eslint/node_modules/lodash/fp/isNaN.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isNaN.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isNaN.js diff --git a/tools/eslint/node_modules/lodash/fp/isNative.js b/tools/node_modules/eslint/node_modules/lodash/fp/isNative.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isNative.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isNative.js diff --git a/tools/eslint/node_modules/lodash/fp/isNil.js b/tools/node_modules/eslint/node_modules/lodash/fp/isNil.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isNil.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isNil.js diff --git a/tools/eslint/node_modules/lodash/fp/isNull.js b/tools/node_modules/eslint/node_modules/lodash/fp/isNull.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isNull.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isNull.js diff --git a/tools/eslint/node_modules/lodash/fp/isNumber.js b/tools/node_modules/eslint/node_modules/lodash/fp/isNumber.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isNumber.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isNumber.js diff --git a/tools/eslint/node_modules/lodash/fp/isObject.js b/tools/node_modules/eslint/node_modules/lodash/fp/isObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isObject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isObject.js diff --git a/tools/eslint/node_modules/lodash/fp/isObjectLike.js b/tools/node_modules/eslint/node_modules/lodash/fp/isObjectLike.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isObjectLike.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isObjectLike.js diff --git a/tools/eslint/node_modules/lodash/fp/isPlainObject.js b/tools/node_modules/eslint/node_modules/lodash/fp/isPlainObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isPlainObject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isPlainObject.js diff --git a/tools/eslint/node_modules/lodash/fp/isRegExp.js b/tools/node_modules/eslint/node_modules/lodash/fp/isRegExp.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isRegExp.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isRegExp.js diff --git a/tools/eslint/node_modules/lodash/fp/isSafeInteger.js b/tools/node_modules/eslint/node_modules/lodash/fp/isSafeInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isSafeInteger.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isSafeInteger.js diff --git a/tools/eslint/node_modules/lodash/fp/isSet.js b/tools/node_modules/eslint/node_modules/lodash/fp/isSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isSet.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isSet.js diff --git a/tools/eslint/node_modules/lodash/fp/isString.js b/tools/node_modules/eslint/node_modules/lodash/fp/isString.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isString.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isString.js diff --git a/tools/eslint/node_modules/lodash/fp/isSymbol.js b/tools/node_modules/eslint/node_modules/lodash/fp/isSymbol.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isSymbol.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isSymbol.js diff --git a/tools/eslint/node_modules/lodash/fp/isTypedArray.js b/tools/node_modules/eslint/node_modules/lodash/fp/isTypedArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isTypedArray.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isTypedArray.js diff --git a/tools/eslint/node_modules/lodash/fp/isUndefined.js b/tools/node_modules/eslint/node_modules/lodash/fp/isUndefined.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isUndefined.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isUndefined.js diff --git a/tools/eslint/node_modules/lodash/fp/isWeakMap.js b/tools/node_modules/eslint/node_modules/lodash/fp/isWeakMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isWeakMap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isWeakMap.js diff --git a/tools/eslint/node_modules/lodash/fp/isWeakSet.js b/tools/node_modules/eslint/node_modules/lodash/fp/isWeakSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/isWeakSet.js rename to tools/node_modules/eslint/node_modules/lodash/fp/isWeakSet.js diff --git a/tools/eslint/node_modules/lodash/fp/iteratee.js b/tools/node_modules/eslint/node_modules/lodash/fp/iteratee.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/iteratee.js rename to tools/node_modules/eslint/node_modules/lodash/fp/iteratee.js diff --git a/tools/eslint/node_modules/lodash/fp/join.js b/tools/node_modules/eslint/node_modules/lodash/fp/join.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/join.js rename to tools/node_modules/eslint/node_modules/lodash/fp/join.js diff --git a/tools/eslint/node_modules/lodash/fp/juxt.js b/tools/node_modules/eslint/node_modules/lodash/fp/juxt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/juxt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/juxt.js diff --git a/tools/eslint/node_modules/lodash/fp/kebabCase.js b/tools/node_modules/eslint/node_modules/lodash/fp/kebabCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/kebabCase.js rename to tools/node_modules/eslint/node_modules/lodash/fp/kebabCase.js diff --git a/tools/eslint/node_modules/lodash/fp/keyBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/keyBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/keyBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/keyBy.js diff --git a/tools/eslint/node_modules/lodash/fp/keys.js b/tools/node_modules/eslint/node_modules/lodash/fp/keys.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/keys.js rename to tools/node_modules/eslint/node_modules/lodash/fp/keys.js diff --git a/tools/eslint/node_modules/lodash/fp/keysIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/keysIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/keysIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/keysIn.js diff --git a/tools/eslint/node_modules/lodash/fp/lang.js b/tools/node_modules/eslint/node_modules/lodash/fp/lang.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lang.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lang.js diff --git a/tools/eslint/node_modules/lodash/fp/last.js b/tools/node_modules/eslint/node_modules/lodash/fp/last.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/last.js rename to tools/node_modules/eslint/node_modules/lodash/fp/last.js diff --git a/tools/eslint/node_modules/lodash/fp/lastIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/lastIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lastIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lastIndexOf.js diff --git a/tools/eslint/node_modules/lodash/fp/lastIndexOfFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/lastIndexOfFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lastIndexOfFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lastIndexOfFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/lowerCase.js b/tools/node_modules/eslint/node_modules/lodash/fp/lowerCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lowerCase.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lowerCase.js diff --git a/tools/eslint/node_modules/lodash/fp/lowerFirst.js b/tools/node_modules/eslint/node_modules/lodash/fp/lowerFirst.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lowerFirst.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lowerFirst.js diff --git a/tools/eslint/node_modules/lodash/fp/lt.js b/tools/node_modules/eslint/node_modules/lodash/fp/lt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lt.js diff --git a/tools/eslint/node_modules/lodash/fp/lte.js b/tools/node_modules/eslint/node_modules/lodash/fp/lte.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/lte.js rename to tools/node_modules/eslint/node_modules/lodash/fp/lte.js diff --git a/tools/eslint/node_modules/lodash/fp/map.js b/tools/node_modules/eslint/node_modules/lodash/fp/map.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/map.js rename to tools/node_modules/eslint/node_modules/lodash/fp/map.js diff --git a/tools/eslint/node_modules/lodash/fp/mapKeys.js b/tools/node_modules/eslint/node_modules/lodash/fp/mapKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mapKeys.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mapKeys.js diff --git a/tools/eslint/node_modules/lodash/fp/mapValues.js b/tools/node_modules/eslint/node_modules/lodash/fp/mapValues.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mapValues.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mapValues.js diff --git a/tools/eslint/node_modules/lodash/fp/matches.js b/tools/node_modules/eslint/node_modules/lodash/fp/matches.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/matches.js rename to tools/node_modules/eslint/node_modules/lodash/fp/matches.js diff --git a/tools/eslint/node_modules/lodash/fp/matchesProperty.js b/tools/node_modules/eslint/node_modules/lodash/fp/matchesProperty.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/matchesProperty.js rename to tools/node_modules/eslint/node_modules/lodash/fp/matchesProperty.js diff --git a/tools/eslint/node_modules/lodash/fp/math.js b/tools/node_modules/eslint/node_modules/lodash/fp/math.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/math.js rename to tools/node_modules/eslint/node_modules/lodash/fp/math.js diff --git a/tools/eslint/node_modules/lodash/fp/max.js b/tools/node_modules/eslint/node_modules/lodash/fp/max.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/max.js rename to tools/node_modules/eslint/node_modules/lodash/fp/max.js diff --git a/tools/eslint/node_modules/lodash/fp/maxBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/maxBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/maxBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/maxBy.js diff --git a/tools/eslint/node_modules/lodash/fp/mean.js b/tools/node_modules/eslint/node_modules/lodash/fp/mean.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mean.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mean.js diff --git a/tools/eslint/node_modules/lodash/fp/meanBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/meanBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/meanBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/meanBy.js diff --git a/tools/eslint/node_modules/lodash/fp/memoize.js b/tools/node_modules/eslint/node_modules/lodash/fp/memoize.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/memoize.js rename to tools/node_modules/eslint/node_modules/lodash/fp/memoize.js diff --git a/tools/eslint/node_modules/lodash/fp/merge.js b/tools/node_modules/eslint/node_modules/lodash/fp/merge.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/merge.js rename to tools/node_modules/eslint/node_modules/lodash/fp/merge.js diff --git a/tools/eslint/node_modules/lodash/fp/mergeAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/mergeAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mergeAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mergeAll.js diff --git a/tools/eslint/node_modules/lodash/fp/mergeAllWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/mergeAllWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mergeAllWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mergeAllWith.js diff --git a/tools/eslint/node_modules/lodash/fp/mergeWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/mergeWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mergeWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mergeWith.js diff --git a/tools/eslint/node_modules/lodash/fp/method.js b/tools/node_modules/eslint/node_modules/lodash/fp/method.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/method.js rename to tools/node_modules/eslint/node_modules/lodash/fp/method.js diff --git a/tools/eslint/node_modules/lodash/fp/methodOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/methodOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/methodOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/methodOf.js diff --git a/tools/eslint/node_modules/lodash/fp/min.js b/tools/node_modules/eslint/node_modules/lodash/fp/min.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/min.js rename to tools/node_modules/eslint/node_modules/lodash/fp/min.js diff --git a/tools/eslint/node_modules/lodash/fp/minBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/minBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/minBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/minBy.js diff --git a/tools/eslint/node_modules/lodash/fp/mixin.js b/tools/node_modules/eslint/node_modules/lodash/fp/mixin.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/mixin.js rename to tools/node_modules/eslint/node_modules/lodash/fp/mixin.js diff --git a/tools/eslint/node_modules/lodash/fp/multiply.js b/tools/node_modules/eslint/node_modules/lodash/fp/multiply.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/multiply.js rename to tools/node_modules/eslint/node_modules/lodash/fp/multiply.js diff --git a/tools/eslint/node_modules/lodash/fp/nAry.js b/tools/node_modules/eslint/node_modules/lodash/fp/nAry.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/nAry.js rename to tools/node_modules/eslint/node_modules/lodash/fp/nAry.js diff --git a/tools/eslint/node_modules/lodash/fp/negate.js b/tools/node_modules/eslint/node_modules/lodash/fp/negate.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/negate.js rename to tools/node_modules/eslint/node_modules/lodash/fp/negate.js diff --git a/tools/eslint/node_modules/lodash/fp/next.js b/tools/node_modules/eslint/node_modules/lodash/fp/next.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/next.js rename to tools/node_modules/eslint/node_modules/lodash/fp/next.js diff --git a/tools/eslint/node_modules/lodash/fp/noop.js b/tools/node_modules/eslint/node_modules/lodash/fp/noop.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/noop.js rename to tools/node_modules/eslint/node_modules/lodash/fp/noop.js diff --git a/tools/eslint/node_modules/lodash/fp/now.js b/tools/node_modules/eslint/node_modules/lodash/fp/now.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/now.js rename to tools/node_modules/eslint/node_modules/lodash/fp/now.js diff --git a/tools/eslint/node_modules/lodash/fp/nth.js b/tools/node_modules/eslint/node_modules/lodash/fp/nth.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/nth.js rename to tools/node_modules/eslint/node_modules/lodash/fp/nth.js diff --git a/tools/eslint/node_modules/lodash/fp/nthArg.js b/tools/node_modules/eslint/node_modules/lodash/fp/nthArg.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/nthArg.js rename to tools/node_modules/eslint/node_modules/lodash/fp/nthArg.js diff --git a/tools/eslint/node_modules/lodash/fp/number.js b/tools/node_modules/eslint/node_modules/lodash/fp/number.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/number.js rename to tools/node_modules/eslint/node_modules/lodash/fp/number.js diff --git a/tools/eslint/node_modules/lodash/fp/object.js b/tools/node_modules/eslint/node_modules/lodash/fp/object.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/object.js rename to tools/node_modules/eslint/node_modules/lodash/fp/object.js diff --git a/tools/eslint/node_modules/lodash/fp/omit.js b/tools/node_modules/eslint/node_modules/lodash/fp/omit.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/omit.js rename to tools/node_modules/eslint/node_modules/lodash/fp/omit.js diff --git a/tools/eslint/node_modules/lodash/fp/omitAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/omitAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/omitAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/omitAll.js diff --git a/tools/eslint/node_modules/lodash/fp/omitBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/omitBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/omitBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/omitBy.js diff --git a/tools/eslint/node_modules/lodash/fp/once.js b/tools/node_modules/eslint/node_modules/lodash/fp/once.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/once.js rename to tools/node_modules/eslint/node_modules/lodash/fp/once.js diff --git a/tools/eslint/node_modules/lodash/fp/orderBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/orderBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/orderBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/orderBy.js diff --git a/tools/eslint/node_modules/lodash/fp/over.js b/tools/node_modules/eslint/node_modules/lodash/fp/over.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/over.js rename to tools/node_modules/eslint/node_modules/lodash/fp/over.js diff --git a/tools/eslint/node_modules/lodash/fp/overArgs.js b/tools/node_modules/eslint/node_modules/lodash/fp/overArgs.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/overArgs.js rename to tools/node_modules/eslint/node_modules/lodash/fp/overArgs.js diff --git a/tools/eslint/node_modules/lodash/fp/overEvery.js b/tools/node_modules/eslint/node_modules/lodash/fp/overEvery.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/overEvery.js rename to tools/node_modules/eslint/node_modules/lodash/fp/overEvery.js diff --git a/tools/eslint/node_modules/lodash/fp/overSome.js b/tools/node_modules/eslint/node_modules/lodash/fp/overSome.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/overSome.js rename to tools/node_modules/eslint/node_modules/lodash/fp/overSome.js diff --git a/tools/eslint/node_modules/lodash/fp/pad.js b/tools/node_modules/eslint/node_modules/lodash/fp/pad.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pad.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pad.js diff --git a/tools/eslint/node_modules/lodash/fp/padChars.js b/tools/node_modules/eslint/node_modules/lodash/fp/padChars.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/padChars.js rename to tools/node_modules/eslint/node_modules/lodash/fp/padChars.js diff --git a/tools/eslint/node_modules/lodash/fp/padCharsEnd.js b/tools/node_modules/eslint/node_modules/lodash/fp/padCharsEnd.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/padCharsEnd.js rename to tools/node_modules/eslint/node_modules/lodash/fp/padCharsEnd.js diff --git a/tools/eslint/node_modules/lodash/fp/padCharsStart.js b/tools/node_modules/eslint/node_modules/lodash/fp/padCharsStart.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/padCharsStart.js rename to tools/node_modules/eslint/node_modules/lodash/fp/padCharsStart.js diff --git a/tools/eslint/node_modules/lodash/fp/padEnd.js b/tools/node_modules/eslint/node_modules/lodash/fp/padEnd.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/padEnd.js rename to tools/node_modules/eslint/node_modules/lodash/fp/padEnd.js diff --git a/tools/eslint/node_modules/lodash/fp/padStart.js b/tools/node_modules/eslint/node_modules/lodash/fp/padStart.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/padStart.js rename to tools/node_modules/eslint/node_modules/lodash/fp/padStart.js diff --git a/tools/eslint/node_modules/lodash/fp/parseInt.js b/tools/node_modules/eslint/node_modules/lodash/fp/parseInt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/parseInt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/parseInt.js diff --git a/tools/eslint/node_modules/lodash/fp/partial.js b/tools/node_modules/eslint/node_modules/lodash/fp/partial.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/partial.js rename to tools/node_modules/eslint/node_modules/lodash/fp/partial.js diff --git a/tools/eslint/node_modules/lodash/fp/partialRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/partialRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/partialRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/partialRight.js diff --git a/tools/eslint/node_modules/lodash/fp/partition.js b/tools/node_modules/eslint/node_modules/lodash/fp/partition.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/partition.js rename to tools/node_modules/eslint/node_modules/lodash/fp/partition.js diff --git a/tools/eslint/node_modules/lodash/fp/path.js b/tools/node_modules/eslint/node_modules/lodash/fp/path.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/path.js rename to tools/node_modules/eslint/node_modules/lodash/fp/path.js diff --git a/tools/eslint/node_modules/lodash/fp/pathEq.js b/tools/node_modules/eslint/node_modules/lodash/fp/pathEq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pathEq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pathEq.js diff --git a/tools/eslint/node_modules/lodash/fp/pathOr.js b/tools/node_modules/eslint/node_modules/lodash/fp/pathOr.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pathOr.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pathOr.js diff --git a/tools/eslint/node_modules/lodash/fp/paths.js b/tools/node_modules/eslint/node_modules/lodash/fp/paths.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/paths.js rename to tools/node_modules/eslint/node_modules/lodash/fp/paths.js diff --git a/tools/eslint/node_modules/lodash/fp/pick.js b/tools/node_modules/eslint/node_modules/lodash/fp/pick.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pick.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pick.js diff --git a/tools/eslint/node_modules/lodash/fp/pickAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/pickAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pickAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pickAll.js diff --git a/tools/eslint/node_modules/lodash/fp/pickBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/pickBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pickBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pickBy.js diff --git a/tools/eslint/node_modules/lodash/fp/pipe.js b/tools/node_modules/eslint/node_modules/lodash/fp/pipe.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pipe.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pipe.js diff --git a/tools/eslint/node_modules/lodash/fp/placeholder.js b/tools/node_modules/eslint/node_modules/lodash/fp/placeholder.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/placeholder.js rename to tools/node_modules/eslint/node_modules/lodash/fp/placeholder.js diff --git a/tools/eslint/node_modules/lodash/fp/plant.js b/tools/node_modules/eslint/node_modules/lodash/fp/plant.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/plant.js rename to tools/node_modules/eslint/node_modules/lodash/fp/plant.js diff --git a/tools/eslint/node_modules/lodash/fp/pluck.js b/tools/node_modules/eslint/node_modules/lodash/fp/pluck.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pluck.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pluck.js diff --git a/tools/eslint/node_modules/lodash/fp/prop.js b/tools/node_modules/eslint/node_modules/lodash/fp/prop.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/prop.js rename to tools/node_modules/eslint/node_modules/lodash/fp/prop.js diff --git a/tools/eslint/node_modules/lodash/fp/propEq.js b/tools/node_modules/eslint/node_modules/lodash/fp/propEq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/propEq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/propEq.js diff --git a/tools/eslint/node_modules/lodash/fp/propOr.js b/tools/node_modules/eslint/node_modules/lodash/fp/propOr.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/propOr.js rename to tools/node_modules/eslint/node_modules/lodash/fp/propOr.js diff --git a/tools/eslint/node_modules/lodash/fp/property.js b/tools/node_modules/eslint/node_modules/lodash/fp/property.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/property.js rename to tools/node_modules/eslint/node_modules/lodash/fp/property.js diff --git a/tools/eslint/node_modules/lodash/fp/propertyOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/propertyOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/propertyOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/propertyOf.js diff --git a/tools/eslint/node_modules/lodash/fp/props.js b/tools/node_modules/eslint/node_modules/lodash/fp/props.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/props.js rename to tools/node_modules/eslint/node_modules/lodash/fp/props.js diff --git a/tools/eslint/node_modules/lodash/fp/pull.js b/tools/node_modules/eslint/node_modules/lodash/fp/pull.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pull.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pull.js diff --git a/tools/eslint/node_modules/lodash/fp/pullAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/pullAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pullAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pullAll.js diff --git a/tools/eslint/node_modules/lodash/fp/pullAllBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/pullAllBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pullAllBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pullAllBy.js diff --git a/tools/eslint/node_modules/lodash/fp/pullAllWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/pullAllWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pullAllWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pullAllWith.js diff --git a/tools/eslint/node_modules/lodash/fp/pullAt.js b/tools/node_modules/eslint/node_modules/lodash/fp/pullAt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/pullAt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/pullAt.js diff --git a/tools/eslint/node_modules/lodash/fp/random.js b/tools/node_modules/eslint/node_modules/lodash/fp/random.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/random.js rename to tools/node_modules/eslint/node_modules/lodash/fp/random.js diff --git a/tools/eslint/node_modules/lodash/fp/range.js b/tools/node_modules/eslint/node_modules/lodash/fp/range.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/range.js rename to tools/node_modules/eslint/node_modules/lodash/fp/range.js diff --git a/tools/eslint/node_modules/lodash/fp/rangeRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/rangeRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/rangeRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/rangeRight.js diff --git a/tools/eslint/node_modules/lodash/fp/rangeStep.js b/tools/node_modules/eslint/node_modules/lodash/fp/rangeStep.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/rangeStep.js rename to tools/node_modules/eslint/node_modules/lodash/fp/rangeStep.js diff --git a/tools/eslint/node_modules/lodash/fp/rangeStepRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/rangeStepRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/rangeStepRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/rangeStepRight.js diff --git a/tools/eslint/node_modules/lodash/fp/rearg.js b/tools/node_modules/eslint/node_modules/lodash/fp/rearg.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/rearg.js rename to tools/node_modules/eslint/node_modules/lodash/fp/rearg.js diff --git a/tools/eslint/node_modules/lodash/fp/reduce.js b/tools/node_modules/eslint/node_modules/lodash/fp/reduce.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/reduce.js rename to tools/node_modules/eslint/node_modules/lodash/fp/reduce.js diff --git a/tools/eslint/node_modules/lodash/fp/reduceRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/reduceRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/reduceRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/reduceRight.js diff --git a/tools/eslint/node_modules/lodash/fp/reject.js b/tools/node_modules/eslint/node_modules/lodash/fp/reject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/reject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/reject.js diff --git a/tools/eslint/node_modules/lodash/fp/remove.js b/tools/node_modules/eslint/node_modules/lodash/fp/remove.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/remove.js rename to tools/node_modules/eslint/node_modules/lodash/fp/remove.js diff --git a/tools/eslint/node_modules/lodash/fp/repeat.js b/tools/node_modules/eslint/node_modules/lodash/fp/repeat.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/repeat.js rename to tools/node_modules/eslint/node_modules/lodash/fp/repeat.js diff --git a/tools/eslint/node_modules/lodash/fp/replace.js b/tools/node_modules/eslint/node_modules/lodash/fp/replace.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/replace.js rename to tools/node_modules/eslint/node_modules/lodash/fp/replace.js diff --git a/tools/eslint/node_modules/lodash/fp/rest.js b/tools/node_modules/eslint/node_modules/lodash/fp/rest.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/rest.js rename to tools/node_modules/eslint/node_modules/lodash/fp/rest.js diff --git a/tools/eslint/node_modules/lodash/fp/restFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/restFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/restFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/restFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/result.js b/tools/node_modules/eslint/node_modules/lodash/fp/result.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/result.js rename to tools/node_modules/eslint/node_modules/lodash/fp/result.js diff --git a/tools/eslint/node_modules/lodash/fp/reverse.js b/tools/node_modules/eslint/node_modules/lodash/fp/reverse.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/reverse.js rename to tools/node_modules/eslint/node_modules/lodash/fp/reverse.js diff --git a/tools/eslint/node_modules/lodash/fp/round.js b/tools/node_modules/eslint/node_modules/lodash/fp/round.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/round.js rename to tools/node_modules/eslint/node_modules/lodash/fp/round.js diff --git a/tools/eslint/node_modules/lodash/fp/sample.js b/tools/node_modules/eslint/node_modules/lodash/fp/sample.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sample.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sample.js diff --git a/tools/eslint/node_modules/lodash/fp/sampleSize.js b/tools/node_modules/eslint/node_modules/lodash/fp/sampleSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sampleSize.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sampleSize.js diff --git a/tools/eslint/node_modules/lodash/fp/seq.js b/tools/node_modules/eslint/node_modules/lodash/fp/seq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/seq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/seq.js diff --git a/tools/eslint/node_modules/lodash/fp/set.js b/tools/node_modules/eslint/node_modules/lodash/fp/set.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/set.js rename to tools/node_modules/eslint/node_modules/lodash/fp/set.js diff --git a/tools/eslint/node_modules/lodash/fp/setWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/setWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/setWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/setWith.js diff --git a/tools/eslint/node_modules/lodash/fp/shuffle.js b/tools/node_modules/eslint/node_modules/lodash/fp/shuffle.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/shuffle.js rename to tools/node_modules/eslint/node_modules/lodash/fp/shuffle.js diff --git a/tools/eslint/node_modules/lodash/fp/size.js b/tools/node_modules/eslint/node_modules/lodash/fp/size.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/size.js rename to tools/node_modules/eslint/node_modules/lodash/fp/size.js diff --git a/tools/eslint/node_modules/lodash/fp/slice.js b/tools/node_modules/eslint/node_modules/lodash/fp/slice.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/slice.js rename to tools/node_modules/eslint/node_modules/lodash/fp/slice.js diff --git a/tools/eslint/node_modules/lodash/fp/snakeCase.js b/tools/node_modules/eslint/node_modules/lodash/fp/snakeCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/snakeCase.js rename to tools/node_modules/eslint/node_modules/lodash/fp/snakeCase.js diff --git a/tools/eslint/node_modules/lodash/fp/some.js b/tools/node_modules/eslint/node_modules/lodash/fp/some.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/some.js rename to tools/node_modules/eslint/node_modules/lodash/fp/some.js diff --git a/tools/eslint/node_modules/lodash/fp/sortBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortBy.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedIndex.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedIndex.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedIndex.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedIndexBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedIndexBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedIndexBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedIndexBy.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedIndexOf.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedLastIndex.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedLastIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedLastIndex.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedLastIndex.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedLastIndexBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedLastIndexBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedLastIndexBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedLastIndexBy.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedLastIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedLastIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedLastIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedLastIndexOf.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedUniq.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedUniq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedUniq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedUniq.js diff --git a/tools/eslint/node_modules/lodash/fp/sortedUniqBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/sortedUniqBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sortedUniqBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sortedUniqBy.js diff --git a/tools/eslint/node_modules/lodash/fp/split.js b/tools/node_modules/eslint/node_modules/lodash/fp/split.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/split.js rename to tools/node_modules/eslint/node_modules/lodash/fp/split.js diff --git a/tools/eslint/node_modules/lodash/fp/spread.js b/tools/node_modules/eslint/node_modules/lodash/fp/spread.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/spread.js rename to tools/node_modules/eslint/node_modules/lodash/fp/spread.js diff --git a/tools/eslint/node_modules/lodash/fp/spreadFrom.js b/tools/node_modules/eslint/node_modules/lodash/fp/spreadFrom.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/spreadFrom.js rename to tools/node_modules/eslint/node_modules/lodash/fp/spreadFrom.js diff --git a/tools/eslint/node_modules/lodash/fp/startCase.js b/tools/node_modules/eslint/node_modules/lodash/fp/startCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/startCase.js rename to tools/node_modules/eslint/node_modules/lodash/fp/startCase.js diff --git a/tools/eslint/node_modules/lodash/fp/startsWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/startsWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/startsWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/startsWith.js diff --git a/tools/eslint/node_modules/lodash/fp/string.js b/tools/node_modules/eslint/node_modules/lodash/fp/string.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/string.js rename to tools/node_modules/eslint/node_modules/lodash/fp/string.js diff --git a/tools/eslint/node_modules/lodash/fp/stubArray.js b/tools/node_modules/eslint/node_modules/lodash/fp/stubArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/stubArray.js rename to tools/node_modules/eslint/node_modules/lodash/fp/stubArray.js diff --git a/tools/eslint/node_modules/lodash/fp/stubFalse.js b/tools/node_modules/eslint/node_modules/lodash/fp/stubFalse.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/stubFalse.js rename to tools/node_modules/eslint/node_modules/lodash/fp/stubFalse.js diff --git a/tools/eslint/node_modules/lodash/fp/stubObject.js b/tools/node_modules/eslint/node_modules/lodash/fp/stubObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/stubObject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/stubObject.js diff --git a/tools/eslint/node_modules/lodash/fp/stubString.js b/tools/node_modules/eslint/node_modules/lodash/fp/stubString.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/stubString.js rename to tools/node_modules/eslint/node_modules/lodash/fp/stubString.js diff --git a/tools/eslint/node_modules/lodash/fp/stubTrue.js b/tools/node_modules/eslint/node_modules/lodash/fp/stubTrue.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/stubTrue.js rename to tools/node_modules/eslint/node_modules/lodash/fp/stubTrue.js diff --git a/tools/eslint/node_modules/lodash/fp/subtract.js b/tools/node_modules/eslint/node_modules/lodash/fp/subtract.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/subtract.js rename to tools/node_modules/eslint/node_modules/lodash/fp/subtract.js diff --git a/tools/eslint/node_modules/lodash/fp/sum.js b/tools/node_modules/eslint/node_modules/lodash/fp/sum.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sum.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sum.js diff --git a/tools/eslint/node_modules/lodash/fp/sumBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/sumBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/sumBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/sumBy.js diff --git a/tools/eslint/node_modules/lodash/fp/symmetricDifference.js b/tools/node_modules/eslint/node_modules/lodash/fp/symmetricDifference.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/symmetricDifference.js rename to tools/node_modules/eslint/node_modules/lodash/fp/symmetricDifference.js diff --git a/tools/eslint/node_modules/lodash/fp/symmetricDifferenceBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/symmetricDifferenceBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/symmetricDifferenceBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/symmetricDifferenceBy.js diff --git a/tools/eslint/node_modules/lodash/fp/symmetricDifferenceWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/symmetricDifferenceWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/symmetricDifferenceWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/symmetricDifferenceWith.js diff --git a/tools/eslint/node_modules/lodash/fp/tail.js b/tools/node_modules/eslint/node_modules/lodash/fp/tail.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/tail.js rename to tools/node_modules/eslint/node_modules/lodash/fp/tail.js diff --git a/tools/eslint/node_modules/lodash/fp/take.js b/tools/node_modules/eslint/node_modules/lodash/fp/take.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/take.js rename to tools/node_modules/eslint/node_modules/lodash/fp/take.js diff --git a/tools/eslint/node_modules/lodash/fp/takeLast.js b/tools/node_modules/eslint/node_modules/lodash/fp/takeLast.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/takeLast.js rename to tools/node_modules/eslint/node_modules/lodash/fp/takeLast.js diff --git a/tools/eslint/node_modules/lodash/fp/takeLastWhile.js b/tools/node_modules/eslint/node_modules/lodash/fp/takeLastWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/takeLastWhile.js rename to tools/node_modules/eslint/node_modules/lodash/fp/takeLastWhile.js diff --git a/tools/eslint/node_modules/lodash/fp/takeRight.js b/tools/node_modules/eslint/node_modules/lodash/fp/takeRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/takeRight.js rename to tools/node_modules/eslint/node_modules/lodash/fp/takeRight.js diff --git a/tools/eslint/node_modules/lodash/fp/takeRightWhile.js b/tools/node_modules/eslint/node_modules/lodash/fp/takeRightWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/takeRightWhile.js rename to tools/node_modules/eslint/node_modules/lodash/fp/takeRightWhile.js diff --git a/tools/eslint/node_modules/lodash/fp/takeWhile.js b/tools/node_modules/eslint/node_modules/lodash/fp/takeWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/takeWhile.js rename to tools/node_modules/eslint/node_modules/lodash/fp/takeWhile.js diff --git a/tools/eslint/node_modules/lodash/fp/tap.js b/tools/node_modules/eslint/node_modules/lodash/fp/tap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/tap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/tap.js diff --git a/tools/eslint/node_modules/lodash/fp/template.js b/tools/node_modules/eslint/node_modules/lodash/fp/template.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/template.js rename to tools/node_modules/eslint/node_modules/lodash/fp/template.js diff --git a/tools/eslint/node_modules/lodash/fp/templateSettings.js b/tools/node_modules/eslint/node_modules/lodash/fp/templateSettings.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/templateSettings.js rename to tools/node_modules/eslint/node_modules/lodash/fp/templateSettings.js diff --git a/tools/eslint/node_modules/lodash/fp/throttle.js b/tools/node_modules/eslint/node_modules/lodash/fp/throttle.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/throttle.js rename to tools/node_modules/eslint/node_modules/lodash/fp/throttle.js diff --git a/tools/eslint/node_modules/lodash/fp/thru.js b/tools/node_modules/eslint/node_modules/lodash/fp/thru.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/thru.js rename to tools/node_modules/eslint/node_modules/lodash/fp/thru.js diff --git a/tools/eslint/node_modules/lodash/fp/times.js b/tools/node_modules/eslint/node_modules/lodash/fp/times.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/times.js rename to tools/node_modules/eslint/node_modules/lodash/fp/times.js diff --git a/tools/eslint/node_modules/lodash/fp/toArray.js b/tools/node_modules/eslint/node_modules/lodash/fp/toArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toArray.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toArray.js diff --git a/tools/eslint/node_modules/lodash/fp/toFinite.js b/tools/node_modules/eslint/node_modules/lodash/fp/toFinite.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toFinite.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toFinite.js diff --git a/tools/eslint/node_modules/lodash/fp/toInteger.js b/tools/node_modules/eslint/node_modules/lodash/fp/toInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toInteger.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toInteger.js diff --git a/tools/eslint/node_modules/lodash/fp/toIterator.js b/tools/node_modules/eslint/node_modules/lodash/fp/toIterator.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toIterator.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toIterator.js diff --git a/tools/eslint/node_modules/lodash/fp/toJSON.js b/tools/node_modules/eslint/node_modules/lodash/fp/toJSON.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toJSON.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toJSON.js diff --git a/tools/eslint/node_modules/lodash/fp/toLength.js b/tools/node_modules/eslint/node_modules/lodash/fp/toLength.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toLength.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toLength.js diff --git a/tools/eslint/node_modules/lodash/fp/toLower.js b/tools/node_modules/eslint/node_modules/lodash/fp/toLower.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toLower.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toLower.js diff --git a/tools/eslint/node_modules/lodash/fp/toNumber.js b/tools/node_modules/eslint/node_modules/lodash/fp/toNumber.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toNumber.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toNumber.js diff --git a/tools/eslint/node_modules/lodash/fp/toPairs.js b/tools/node_modules/eslint/node_modules/lodash/fp/toPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toPairs.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toPairs.js diff --git a/tools/eslint/node_modules/lodash/fp/toPairsIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/toPairsIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toPairsIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toPairsIn.js diff --git a/tools/eslint/node_modules/lodash/fp/toPath.js b/tools/node_modules/eslint/node_modules/lodash/fp/toPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toPath.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toPath.js diff --git a/tools/eslint/node_modules/lodash/fp/toPlainObject.js b/tools/node_modules/eslint/node_modules/lodash/fp/toPlainObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toPlainObject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toPlainObject.js diff --git a/tools/eslint/node_modules/lodash/fp/toSafeInteger.js b/tools/node_modules/eslint/node_modules/lodash/fp/toSafeInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toSafeInteger.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toSafeInteger.js diff --git a/tools/eslint/node_modules/lodash/fp/toString.js b/tools/node_modules/eslint/node_modules/lodash/fp/toString.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toString.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toString.js diff --git a/tools/eslint/node_modules/lodash/fp/toUpper.js b/tools/node_modules/eslint/node_modules/lodash/fp/toUpper.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/toUpper.js rename to tools/node_modules/eslint/node_modules/lodash/fp/toUpper.js diff --git a/tools/eslint/node_modules/lodash/fp/transform.js b/tools/node_modules/eslint/node_modules/lodash/fp/transform.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/transform.js rename to tools/node_modules/eslint/node_modules/lodash/fp/transform.js diff --git a/tools/eslint/node_modules/lodash/fp/trim.js b/tools/node_modules/eslint/node_modules/lodash/fp/trim.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/trim.js rename to tools/node_modules/eslint/node_modules/lodash/fp/trim.js diff --git a/tools/eslint/node_modules/lodash/fp/trimChars.js b/tools/node_modules/eslint/node_modules/lodash/fp/trimChars.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/trimChars.js rename to tools/node_modules/eslint/node_modules/lodash/fp/trimChars.js diff --git a/tools/eslint/node_modules/lodash/fp/trimCharsEnd.js b/tools/node_modules/eslint/node_modules/lodash/fp/trimCharsEnd.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/trimCharsEnd.js rename to tools/node_modules/eslint/node_modules/lodash/fp/trimCharsEnd.js diff --git a/tools/eslint/node_modules/lodash/fp/trimCharsStart.js b/tools/node_modules/eslint/node_modules/lodash/fp/trimCharsStart.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/trimCharsStart.js rename to tools/node_modules/eslint/node_modules/lodash/fp/trimCharsStart.js diff --git a/tools/eslint/node_modules/lodash/fp/trimEnd.js b/tools/node_modules/eslint/node_modules/lodash/fp/trimEnd.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/trimEnd.js rename to tools/node_modules/eslint/node_modules/lodash/fp/trimEnd.js diff --git a/tools/eslint/node_modules/lodash/fp/trimStart.js b/tools/node_modules/eslint/node_modules/lodash/fp/trimStart.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/trimStart.js rename to tools/node_modules/eslint/node_modules/lodash/fp/trimStart.js diff --git a/tools/eslint/node_modules/lodash/fp/truncate.js b/tools/node_modules/eslint/node_modules/lodash/fp/truncate.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/truncate.js rename to tools/node_modules/eslint/node_modules/lodash/fp/truncate.js diff --git a/tools/eslint/node_modules/lodash/fp/unapply.js b/tools/node_modules/eslint/node_modules/lodash/fp/unapply.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unapply.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unapply.js diff --git a/tools/eslint/node_modules/lodash/fp/unary.js b/tools/node_modules/eslint/node_modules/lodash/fp/unary.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unary.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unary.js diff --git a/tools/eslint/node_modules/lodash/fp/unescape.js b/tools/node_modules/eslint/node_modules/lodash/fp/unescape.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unescape.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unescape.js diff --git a/tools/eslint/node_modules/lodash/fp/union.js b/tools/node_modules/eslint/node_modules/lodash/fp/union.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/union.js rename to tools/node_modules/eslint/node_modules/lodash/fp/union.js diff --git a/tools/eslint/node_modules/lodash/fp/unionBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/unionBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unionBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unionBy.js diff --git a/tools/eslint/node_modules/lodash/fp/unionWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/unionWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unionWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unionWith.js diff --git a/tools/eslint/node_modules/lodash/fp/uniq.js b/tools/node_modules/eslint/node_modules/lodash/fp/uniq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/uniq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/uniq.js diff --git a/tools/eslint/node_modules/lodash/fp/uniqBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/uniqBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/uniqBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/uniqBy.js diff --git a/tools/eslint/node_modules/lodash/fp/uniqWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/uniqWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/uniqWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/uniqWith.js diff --git a/tools/eslint/node_modules/lodash/fp/uniqueId.js b/tools/node_modules/eslint/node_modules/lodash/fp/uniqueId.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/uniqueId.js rename to tools/node_modules/eslint/node_modules/lodash/fp/uniqueId.js diff --git a/tools/eslint/node_modules/lodash/fp/unnest.js b/tools/node_modules/eslint/node_modules/lodash/fp/unnest.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unnest.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unnest.js diff --git a/tools/eslint/node_modules/lodash/fp/unset.js b/tools/node_modules/eslint/node_modules/lodash/fp/unset.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unset.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unset.js diff --git a/tools/eslint/node_modules/lodash/fp/unzip.js b/tools/node_modules/eslint/node_modules/lodash/fp/unzip.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unzip.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unzip.js diff --git a/tools/eslint/node_modules/lodash/fp/unzipWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/unzipWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/unzipWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/unzipWith.js diff --git a/tools/eslint/node_modules/lodash/fp/update.js b/tools/node_modules/eslint/node_modules/lodash/fp/update.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/update.js rename to tools/node_modules/eslint/node_modules/lodash/fp/update.js diff --git a/tools/eslint/node_modules/lodash/fp/updateWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/updateWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/updateWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/updateWith.js diff --git a/tools/eslint/node_modules/lodash/fp/upperCase.js b/tools/node_modules/eslint/node_modules/lodash/fp/upperCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/upperCase.js rename to tools/node_modules/eslint/node_modules/lodash/fp/upperCase.js diff --git a/tools/eslint/node_modules/lodash/fp/upperFirst.js b/tools/node_modules/eslint/node_modules/lodash/fp/upperFirst.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/upperFirst.js rename to tools/node_modules/eslint/node_modules/lodash/fp/upperFirst.js diff --git a/tools/eslint/node_modules/lodash/fp/useWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/useWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/useWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/useWith.js diff --git a/tools/eslint/node_modules/lodash/fp/util.js b/tools/node_modules/eslint/node_modules/lodash/fp/util.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/util.js rename to tools/node_modules/eslint/node_modules/lodash/fp/util.js diff --git a/tools/eslint/node_modules/lodash/fp/value.js b/tools/node_modules/eslint/node_modules/lodash/fp/value.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/value.js rename to tools/node_modules/eslint/node_modules/lodash/fp/value.js diff --git a/tools/eslint/node_modules/lodash/fp/valueOf.js b/tools/node_modules/eslint/node_modules/lodash/fp/valueOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/valueOf.js rename to tools/node_modules/eslint/node_modules/lodash/fp/valueOf.js diff --git a/tools/eslint/node_modules/lodash/fp/values.js b/tools/node_modules/eslint/node_modules/lodash/fp/values.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/values.js rename to tools/node_modules/eslint/node_modules/lodash/fp/values.js diff --git a/tools/eslint/node_modules/lodash/fp/valuesIn.js b/tools/node_modules/eslint/node_modules/lodash/fp/valuesIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/valuesIn.js rename to tools/node_modules/eslint/node_modules/lodash/fp/valuesIn.js diff --git a/tools/eslint/node_modules/lodash/fp/where.js b/tools/node_modules/eslint/node_modules/lodash/fp/where.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/where.js rename to tools/node_modules/eslint/node_modules/lodash/fp/where.js diff --git a/tools/eslint/node_modules/lodash/fp/whereEq.js b/tools/node_modules/eslint/node_modules/lodash/fp/whereEq.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/whereEq.js rename to tools/node_modules/eslint/node_modules/lodash/fp/whereEq.js diff --git a/tools/eslint/node_modules/lodash/fp/without.js b/tools/node_modules/eslint/node_modules/lodash/fp/without.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/without.js rename to tools/node_modules/eslint/node_modules/lodash/fp/without.js diff --git a/tools/eslint/node_modules/lodash/fp/words.js b/tools/node_modules/eslint/node_modules/lodash/fp/words.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/words.js rename to tools/node_modules/eslint/node_modules/lodash/fp/words.js diff --git a/tools/eslint/node_modules/lodash/fp/wrap.js b/tools/node_modules/eslint/node_modules/lodash/fp/wrap.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/wrap.js rename to tools/node_modules/eslint/node_modules/lodash/fp/wrap.js diff --git a/tools/eslint/node_modules/lodash/fp/wrapperAt.js b/tools/node_modules/eslint/node_modules/lodash/fp/wrapperAt.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/wrapperAt.js rename to tools/node_modules/eslint/node_modules/lodash/fp/wrapperAt.js diff --git a/tools/eslint/node_modules/lodash/fp/wrapperChain.js b/tools/node_modules/eslint/node_modules/lodash/fp/wrapperChain.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/wrapperChain.js rename to tools/node_modules/eslint/node_modules/lodash/fp/wrapperChain.js diff --git a/tools/eslint/node_modules/lodash/fp/wrapperLodash.js b/tools/node_modules/eslint/node_modules/lodash/fp/wrapperLodash.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/wrapperLodash.js rename to tools/node_modules/eslint/node_modules/lodash/fp/wrapperLodash.js diff --git a/tools/eslint/node_modules/lodash/fp/wrapperReverse.js b/tools/node_modules/eslint/node_modules/lodash/fp/wrapperReverse.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/wrapperReverse.js rename to tools/node_modules/eslint/node_modules/lodash/fp/wrapperReverse.js diff --git a/tools/eslint/node_modules/lodash/fp/wrapperValue.js b/tools/node_modules/eslint/node_modules/lodash/fp/wrapperValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/wrapperValue.js rename to tools/node_modules/eslint/node_modules/lodash/fp/wrapperValue.js diff --git a/tools/eslint/node_modules/lodash/fp/xor.js b/tools/node_modules/eslint/node_modules/lodash/fp/xor.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/xor.js rename to tools/node_modules/eslint/node_modules/lodash/fp/xor.js diff --git a/tools/eslint/node_modules/lodash/fp/xorBy.js b/tools/node_modules/eslint/node_modules/lodash/fp/xorBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/xorBy.js rename to tools/node_modules/eslint/node_modules/lodash/fp/xorBy.js diff --git a/tools/eslint/node_modules/lodash/fp/xorWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/xorWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/xorWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/xorWith.js diff --git a/tools/eslint/node_modules/lodash/fp/zip.js b/tools/node_modules/eslint/node_modules/lodash/fp/zip.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/zip.js rename to tools/node_modules/eslint/node_modules/lodash/fp/zip.js diff --git a/tools/eslint/node_modules/lodash/fp/zipAll.js b/tools/node_modules/eslint/node_modules/lodash/fp/zipAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/zipAll.js rename to tools/node_modules/eslint/node_modules/lodash/fp/zipAll.js diff --git a/tools/eslint/node_modules/lodash/fp/zipObj.js b/tools/node_modules/eslint/node_modules/lodash/fp/zipObj.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/zipObj.js rename to tools/node_modules/eslint/node_modules/lodash/fp/zipObj.js diff --git a/tools/eslint/node_modules/lodash/fp/zipObject.js b/tools/node_modules/eslint/node_modules/lodash/fp/zipObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/zipObject.js rename to tools/node_modules/eslint/node_modules/lodash/fp/zipObject.js diff --git a/tools/eslint/node_modules/lodash/fp/zipObjectDeep.js b/tools/node_modules/eslint/node_modules/lodash/fp/zipObjectDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/zipObjectDeep.js rename to tools/node_modules/eslint/node_modules/lodash/fp/zipObjectDeep.js diff --git a/tools/eslint/node_modules/lodash/fp/zipWith.js b/tools/node_modules/eslint/node_modules/lodash/fp/zipWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/fp/zipWith.js rename to tools/node_modules/eslint/node_modules/lodash/fp/zipWith.js diff --git a/tools/eslint/node_modules/lodash/fromPairs.js b/tools/node_modules/eslint/node_modules/lodash/fromPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/fromPairs.js rename to tools/node_modules/eslint/node_modules/lodash/fromPairs.js diff --git a/tools/eslint/node_modules/lodash/function.js b/tools/node_modules/eslint/node_modules/lodash/function.js similarity index 100% rename from tools/eslint/node_modules/lodash/function.js rename to tools/node_modules/eslint/node_modules/lodash/function.js diff --git a/tools/eslint/node_modules/lodash/functions.js b/tools/node_modules/eslint/node_modules/lodash/functions.js similarity index 100% rename from tools/eslint/node_modules/lodash/functions.js rename to tools/node_modules/eslint/node_modules/lodash/functions.js diff --git a/tools/eslint/node_modules/lodash/functionsIn.js b/tools/node_modules/eslint/node_modules/lodash/functionsIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/functionsIn.js rename to tools/node_modules/eslint/node_modules/lodash/functionsIn.js diff --git a/tools/eslint/node_modules/lodash/get.js b/tools/node_modules/eslint/node_modules/lodash/get.js similarity index 100% rename from tools/eslint/node_modules/lodash/get.js rename to tools/node_modules/eslint/node_modules/lodash/get.js diff --git a/tools/eslint/node_modules/lodash/groupBy.js b/tools/node_modules/eslint/node_modules/lodash/groupBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/groupBy.js rename to tools/node_modules/eslint/node_modules/lodash/groupBy.js diff --git a/tools/eslint/node_modules/lodash/gt.js b/tools/node_modules/eslint/node_modules/lodash/gt.js similarity index 100% rename from tools/eslint/node_modules/lodash/gt.js rename to tools/node_modules/eslint/node_modules/lodash/gt.js diff --git a/tools/eslint/node_modules/lodash/gte.js b/tools/node_modules/eslint/node_modules/lodash/gte.js similarity index 100% rename from tools/eslint/node_modules/lodash/gte.js rename to tools/node_modules/eslint/node_modules/lodash/gte.js diff --git a/tools/eslint/node_modules/lodash/has.js b/tools/node_modules/eslint/node_modules/lodash/has.js similarity index 100% rename from tools/eslint/node_modules/lodash/has.js rename to tools/node_modules/eslint/node_modules/lodash/has.js diff --git a/tools/eslint/node_modules/lodash/hasIn.js b/tools/node_modules/eslint/node_modules/lodash/hasIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/hasIn.js rename to tools/node_modules/eslint/node_modules/lodash/hasIn.js diff --git a/tools/eslint/node_modules/lodash/head.js b/tools/node_modules/eslint/node_modules/lodash/head.js similarity index 100% rename from tools/eslint/node_modules/lodash/head.js rename to tools/node_modules/eslint/node_modules/lodash/head.js diff --git a/tools/eslint/node_modules/lodash/identity.js b/tools/node_modules/eslint/node_modules/lodash/identity.js similarity index 100% rename from tools/eslint/node_modules/lodash/identity.js rename to tools/node_modules/eslint/node_modules/lodash/identity.js diff --git a/tools/eslint/node_modules/lodash/inRange.js b/tools/node_modules/eslint/node_modules/lodash/inRange.js similarity index 100% rename from tools/eslint/node_modules/lodash/inRange.js rename to tools/node_modules/eslint/node_modules/lodash/inRange.js diff --git a/tools/eslint/node_modules/lodash/includes.js b/tools/node_modules/eslint/node_modules/lodash/includes.js similarity index 100% rename from tools/eslint/node_modules/lodash/includes.js rename to tools/node_modules/eslint/node_modules/lodash/includes.js diff --git a/tools/eslint/node_modules/lodash/index.js b/tools/node_modules/eslint/node_modules/lodash/index.js similarity index 100% rename from tools/eslint/node_modules/lodash/index.js rename to tools/node_modules/eslint/node_modules/lodash/index.js diff --git a/tools/eslint/node_modules/lodash/indexOf.js b/tools/node_modules/eslint/node_modules/lodash/indexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/indexOf.js rename to tools/node_modules/eslint/node_modules/lodash/indexOf.js diff --git a/tools/eslint/node_modules/lodash/initial.js b/tools/node_modules/eslint/node_modules/lodash/initial.js similarity index 100% rename from tools/eslint/node_modules/lodash/initial.js rename to tools/node_modules/eslint/node_modules/lodash/initial.js diff --git a/tools/eslint/node_modules/lodash/intersection.js b/tools/node_modules/eslint/node_modules/lodash/intersection.js similarity index 100% rename from tools/eslint/node_modules/lodash/intersection.js rename to tools/node_modules/eslint/node_modules/lodash/intersection.js diff --git a/tools/eslint/node_modules/lodash/intersectionBy.js b/tools/node_modules/eslint/node_modules/lodash/intersectionBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/intersectionBy.js rename to tools/node_modules/eslint/node_modules/lodash/intersectionBy.js diff --git a/tools/eslint/node_modules/lodash/intersectionWith.js b/tools/node_modules/eslint/node_modules/lodash/intersectionWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/intersectionWith.js rename to tools/node_modules/eslint/node_modules/lodash/intersectionWith.js diff --git a/tools/eslint/node_modules/lodash/invert.js b/tools/node_modules/eslint/node_modules/lodash/invert.js similarity index 100% rename from tools/eslint/node_modules/lodash/invert.js rename to tools/node_modules/eslint/node_modules/lodash/invert.js diff --git a/tools/eslint/node_modules/lodash/invertBy.js b/tools/node_modules/eslint/node_modules/lodash/invertBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/invertBy.js rename to tools/node_modules/eslint/node_modules/lodash/invertBy.js diff --git a/tools/eslint/node_modules/lodash/invoke.js b/tools/node_modules/eslint/node_modules/lodash/invoke.js similarity index 100% rename from tools/eslint/node_modules/lodash/invoke.js rename to tools/node_modules/eslint/node_modules/lodash/invoke.js diff --git a/tools/eslint/node_modules/lodash/invokeMap.js b/tools/node_modules/eslint/node_modules/lodash/invokeMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/invokeMap.js rename to tools/node_modules/eslint/node_modules/lodash/invokeMap.js diff --git a/tools/eslint/node_modules/lodash/isArguments.js b/tools/node_modules/eslint/node_modules/lodash/isArguments.js similarity index 100% rename from tools/eslint/node_modules/lodash/isArguments.js rename to tools/node_modules/eslint/node_modules/lodash/isArguments.js diff --git a/tools/eslint/node_modules/lodash/isArray.js b/tools/node_modules/eslint/node_modules/lodash/isArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/isArray.js rename to tools/node_modules/eslint/node_modules/lodash/isArray.js diff --git a/tools/eslint/node_modules/lodash/isArrayBuffer.js b/tools/node_modules/eslint/node_modules/lodash/isArrayBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/isArrayBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/isArrayBuffer.js diff --git a/tools/eslint/node_modules/lodash/isArrayLike.js b/tools/node_modules/eslint/node_modules/lodash/isArrayLike.js similarity index 100% rename from tools/eslint/node_modules/lodash/isArrayLike.js rename to tools/node_modules/eslint/node_modules/lodash/isArrayLike.js diff --git a/tools/eslint/node_modules/lodash/isArrayLikeObject.js b/tools/node_modules/eslint/node_modules/lodash/isArrayLikeObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/isArrayLikeObject.js rename to tools/node_modules/eslint/node_modules/lodash/isArrayLikeObject.js diff --git a/tools/eslint/node_modules/lodash/isBoolean.js b/tools/node_modules/eslint/node_modules/lodash/isBoolean.js similarity index 100% rename from tools/eslint/node_modules/lodash/isBoolean.js rename to tools/node_modules/eslint/node_modules/lodash/isBoolean.js diff --git a/tools/eslint/node_modules/lodash/isBuffer.js b/tools/node_modules/eslint/node_modules/lodash/isBuffer.js similarity index 100% rename from tools/eslint/node_modules/lodash/isBuffer.js rename to tools/node_modules/eslint/node_modules/lodash/isBuffer.js diff --git a/tools/eslint/node_modules/lodash/isDate.js b/tools/node_modules/eslint/node_modules/lodash/isDate.js similarity index 100% rename from tools/eslint/node_modules/lodash/isDate.js rename to tools/node_modules/eslint/node_modules/lodash/isDate.js diff --git a/tools/eslint/node_modules/lodash/isElement.js b/tools/node_modules/eslint/node_modules/lodash/isElement.js similarity index 100% rename from tools/eslint/node_modules/lodash/isElement.js rename to tools/node_modules/eslint/node_modules/lodash/isElement.js diff --git a/tools/eslint/node_modules/lodash/isEmpty.js b/tools/node_modules/eslint/node_modules/lodash/isEmpty.js similarity index 100% rename from tools/eslint/node_modules/lodash/isEmpty.js rename to tools/node_modules/eslint/node_modules/lodash/isEmpty.js diff --git a/tools/eslint/node_modules/lodash/isEqual.js b/tools/node_modules/eslint/node_modules/lodash/isEqual.js similarity index 100% rename from tools/eslint/node_modules/lodash/isEqual.js rename to tools/node_modules/eslint/node_modules/lodash/isEqual.js diff --git a/tools/eslint/node_modules/lodash/isEqualWith.js b/tools/node_modules/eslint/node_modules/lodash/isEqualWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/isEqualWith.js rename to tools/node_modules/eslint/node_modules/lodash/isEqualWith.js diff --git a/tools/eslint/node_modules/lodash/isError.js b/tools/node_modules/eslint/node_modules/lodash/isError.js similarity index 100% rename from tools/eslint/node_modules/lodash/isError.js rename to tools/node_modules/eslint/node_modules/lodash/isError.js diff --git a/tools/eslint/node_modules/lodash/isFinite.js b/tools/node_modules/eslint/node_modules/lodash/isFinite.js similarity index 100% rename from tools/eslint/node_modules/lodash/isFinite.js rename to tools/node_modules/eslint/node_modules/lodash/isFinite.js diff --git a/tools/eslint/node_modules/lodash/isFunction.js b/tools/node_modules/eslint/node_modules/lodash/isFunction.js similarity index 100% rename from tools/eslint/node_modules/lodash/isFunction.js rename to tools/node_modules/eslint/node_modules/lodash/isFunction.js diff --git a/tools/eslint/node_modules/lodash/isInteger.js b/tools/node_modules/eslint/node_modules/lodash/isInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/isInteger.js rename to tools/node_modules/eslint/node_modules/lodash/isInteger.js diff --git a/tools/eslint/node_modules/lodash/isLength.js b/tools/node_modules/eslint/node_modules/lodash/isLength.js similarity index 100% rename from tools/eslint/node_modules/lodash/isLength.js rename to tools/node_modules/eslint/node_modules/lodash/isLength.js diff --git a/tools/eslint/node_modules/lodash/isMap.js b/tools/node_modules/eslint/node_modules/lodash/isMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/isMap.js rename to tools/node_modules/eslint/node_modules/lodash/isMap.js diff --git a/tools/eslint/node_modules/lodash/isMatch.js b/tools/node_modules/eslint/node_modules/lodash/isMatch.js similarity index 100% rename from tools/eslint/node_modules/lodash/isMatch.js rename to tools/node_modules/eslint/node_modules/lodash/isMatch.js diff --git a/tools/eslint/node_modules/lodash/isMatchWith.js b/tools/node_modules/eslint/node_modules/lodash/isMatchWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/isMatchWith.js rename to tools/node_modules/eslint/node_modules/lodash/isMatchWith.js diff --git a/tools/eslint/node_modules/lodash/isNaN.js b/tools/node_modules/eslint/node_modules/lodash/isNaN.js similarity index 100% rename from tools/eslint/node_modules/lodash/isNaN.js rename to tools/node_modules/eslint/node_modules/lodash/isNaN.js diff --git a/tools/eslint/node_modules/lodash/isNative.js b/tools/node_modules/eslint/node_modules/lodash/isNative.js similarity index 100% rename from tools/eslint/node_modules/lodash/isNative.js rename to tools/node_modules/eslint/node_modules/lodash/isNative.js diff --git a/tools/eslint/node_modules/lodash/isNil.js b/tools/node_modules/eslint/node_modules/lodash/isNil.js similarity index 100% rename from tools/eslint/node_modules/lodash/isNil.js rename to tools/node_modules/eslint/node_modules/lodash/isNil.js diff --git a/tools/eslint/node_modules/lodash/isNull.js b/tools/node_modules/eslint/node_modules/lodash/isNull.js similarity index 100% rename from tools/eslint/node_modules/lodash/isNull.js rename to tools/node_modules/eslint/node_modules/lodash/isNull.js diff --git a/tools/eslint/node_modules/lodash/isNumber.js b/tools/node_modules/eslint/node_modules/lodash/isNumber.js similarity index 100% rename from tools/eslint/node_modules/lodash/isNumber.js rename to tools/node_modules/eslint/node_modules/lodash/isNumber.js diff --git a/tools/eslint/node_modules/lodash/isObject.js b/tools/node_modules/eslint/node_modules/lodash/isObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/isObject.js rename to tools/node_modules/eslint/node_modules/lodash/isObject.js diff --git a/tools/eslint/node_modules/lodash/isObjectLike.js b/tools/node_modules/eslint/node_modules/lodash/isObjectLike.js similarity index 100% rename from tools/eslint/node_modules/lodash/isObjectLike.js rename to tools/node_modules/eslint/node_modules/lodash/isObjectLike.js diff --git a/tools/eslint/node_modules/lodash/isPlainObject.js b/tools/node_modules/eslint/node_modules/lodash/isPlainObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/isPlainObject.js rename to tools/node_modules/eslint/node_modules/lodash/isPlainObject.js diff --git a/tools/eslint/node_modules/lodash/isRegExp.js b/tools/node_modules/eslint/node_modules/lodash/isRegExp.js similarity index 100% rename from tools/eslint/node_modules/lodash/isRegExp.js rename to tools/node_modules/eslint/node_modules/lodash/isRegExp.js diff --git a/tools/eslint/node_modules/lodash/isSafeInteger.js b/tools/node_modules/eslint/node_modules/lodash/isSafeInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/isSafeInteger.js rename to tools/node_modules/eslint/node_modules/lodash/isSafeInteger.js diff --git a/tools/eslint/node_modules/lodash/isSet.js b/tools/node_modules/eslint/node_modules/lodash/isSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/isSet.js rename to tools/node_modules/eslint/node_modules/lodash/isSet.js diff --git a/tools/eslint/node_modules/lodash/isString.js b/tools/node_modules/eslint/node_modules/lodash/isString.js similarity index 100% rename from tools/eslint/node_modules/lodash/isString.js rename to tools/node_modules/eslint/node_modules/lodash/isString.js diff --git a/tools/eslint/node_modules/lodash/isSymbol.js b/tools/node_modules/eslint/node_modules/lodash/isSymbol.js similarity index 100% rename from tools/eslint/node_modules/lodash/isSymbol.js rename to tools/node_modules/eslint/node_modules/lodash/isSymbol.js diff --git a/tools/eslint/node_modules/lodash/isTypedArray.js b/tools/node_modules/eslint/node_modules/lodash/isTypedArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/isTypedArray.js rename to tools/node_modules/eslint/node_modules/lodash/isTypedArray.js diff --git a/tools/eslint/node_modules/lodash/isUndefined.js b/tools/node_modules/eslint/node_modules/lodash/isUndefined.js similarity index 100% rename from tools/eslint/node_modules/lodash/isUndefined.js rename to tools/node_modules/eslint/node_modules/lodash/isUndefined.js diff --git a/tools/eslint/node_modules/lodash/isWeakMap.js b/tools/node_modules/eslint/node_modules/lodash/isWeakMap.js similarity index 100% rename from tools/eslint/node_modules/lodash/isWeakMap.js rename to tools/node_modules/eslint/node_modules/lodash/isWeakMap.js diff --git a/tools/eslint/node_modules/lodash/isWeakSet.js b/tools/node_modules/eslint/node_modules/lodash/isWeakSet.js similarity index 100% rename from tools/eslint/node_modules/lodash/isWeakSet.js rename to tools/node_modules/eslint/node_modules/lodash/isWeakSet.js diff --git a/tools/eslint/node_modules/lodash/iteratee.js b/tools/node_modules/eslint/node_modules/lodash/iteratee.js similarity index 100% rename from tools/eslint/node_modules/lodash/iteratee.js rename to tools/node_modules/eslint/node_modules/lodash/iteratee.js diff --git a/tools/eslint/node_modules/lodash/join.js b/tools/node_modules/eslint/node_modules/lodash/join.js similarity index 100% rename from tools/eslint/node_modules/lodash/join.js rename to tools/node_modules/eslint/node_modules/lodash/join.js diff --git a/tools/eslint/node_modules/lodash/kebabCase.js b/tools/node_modules/eslint/node_modules/lodash/kebabCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/kebabCase.js rename to tools/node_modules/eslint/node_modules/lodash/kebabCase.js diff --git a/tools/eslint/node_modules/lodash/keyBy.js b/tools/node_modules/eslint/node_modules/lodash/keyBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/keyBy.js rename to tools/node_modules/eslint/node_modules/lodash/keyBy.js diff --git a/tools/eslint/node_modules/lodash/keys.js b/tools/node_modules/eslint/node_modules/lodash/keys.js similarity index 100% rename from tools/eslint/node_modules/lodash/keys.js rename to tools/node_modules/eslint/node_modules/lodash/keys.js diff --git a/tools/eslint/node_modules/lodash/keysIn.js b/tools/node_modules/eslint/node_modules/lodash/keysIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/keysIn.js rename to tools/node_modules/eslint/node_modules/lodash/keysIn.js diff --git a/tools/eslint/node_modules/lodash/lang.js b/tools/node_modules/eslint/node_modules/lodash/lang.js similarity index 100% rename from tools/eslint/node_modules/lodash/lang.js rename to tools/node_modules/eslint/node_modules/lodash/lang.js diff --git a/tools/eslint/node_modules/lodash/last.js b/tools/node_modules/eslint/node_modules/lodash/last.js similarity index 100% rename from tools/eslint/node_modules/lodash/last.js rename to tools/node_modules/eslint/node_modules/lodash/last.js diff --git a/tools/eslint/node_modules/lodash/lastIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/lastIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/lastIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/lastIndexOf.js diff --git a/tools/eslint/node_modules/lodash/lodash.js b/tools/node_modules/eslint/node_modules/lodash/lodash.js similarity index 100% rename from tools/eslint/node_modules/lodash/lodash.js rename to tools/node_modules/eslint/node_modules/lodash/lodash.js diff --git a/tools/eslint/node_modules/lodash/lodash.min.js b/tools/node_modules/eslint/node_modules/lodash/lodash.min.js similarity index 100% rename from tools/eslint/node_modules/lodash/lodash.min.js rename to tools/node_modules/eslint/node_modules/lodash/lodash.min.js diff --git a/tools/eslint/node_modules/lodash/lowerCase.js b/tools/node_modules/eslint/node_modules/lodash/lowerCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/lowerCase.js rename to tools/node_modules/eslint/node_modules/lodash/lowerCase.js diff --git a/tools/eslint/node_modules/lodash/lowerFirst.js b/tools/node_modules/eslint/node_modules/lodash/lowerFirst.js similarity index 100% rename from tools/eslint/node_modules/lodash/lowerFirst.js rename to tools/node_modules/eslint/node_modules/lodash/lowerFirst.js diff --git a/tools/eslint/node_modules/lodash/lt.js b/tools/node_modules/eslint/node_modules/lodash/lt.js similarity index 100% rename from tools/eslint/node_modules/lodash/lt.js rename to tools/node_modules/eslint/node_modules/lodash/lt.js diff --git a/tools/eslint/node_modules/lodash/lte.js b/tools/node_modules/eslint/node_modules/lodash/lte.js similarity index 100% rename from tools/eslint/node_modules/lodash/lte.js rename to tools/node_modules/eslint/node_modules/lodash/lte.js diff --git a/tools/eslint/node_modules/lodash/map.js b/tools/node_modules/eslint/node_modules/lodash/map.js similarity index 100% rename from tools/eslint/node_modules/lodash/map.js rename to tools/node_modules/eslint/node_modules/lodash/map.js diff --git a/tools/eslint/node_modules/lodash/mapKeys.js b/tools/node_modules/eslint/node_modules/lodash/mapKeys.js similarity index 100% rename from tools/eslint/node_modules/lodash/mapKeys.js rename to tools/node_modules/eslint/node_modules/lodash/mapKeys.js diff --git a/tools/eslint/node_modules/lodash/mapValues.js b/tools/node_modules/eslint/node_modules/lodash/mapValues.js similarity index 100% rename from tools/eslint/node_modules/lodash/mapValues.js rename to tools/node_modules/eslint/node_modules/lodash/mapValues.js diff --git a/tools/eslint/node_modules/lodash/matches.js b/tools/node_modules/eslint/node_modules/lodash/matches.js similarity index 100% rename from tools/eslint/node_modules/lodash/matches.js rename to tools/node_modules/eslint/node_modules/lodash/matches.js diff --git a/tools/eslint/node_modules/lodash/matchesProperty.js b/tools/node_modules/eslint/node_modules/lodash/matchesProperty.js similarity index 100% rename from tools/eslint/node_modules/lodash/matchesProperty.js rename to tools/node_modules/eslint/node_modules/lodash/matchesProperty.js diff --git a/tools/eslint/node_modules/lodash/math.js b/tools/node_modules/eslint/node_modules/lodash/math.js similarity index 100% rename from tools/eslint/node_modules/lodash/math.js rename to tools/node_modules/eslint/node_modules/lodash/math.js diff --git a/tools/eslint/node_modules/lodash/max.js b/tools/node_modules/eslint/node_modules/lodash/max.js similarity index 100% rename from tools/eslint/node_modules/lodash/max.js rename to tools/node_modules/eslint/node_modules/lodash/max.js diff --git a/tools/eslint/node_modules/lodash/maxBy.js b/tools/node_modules/eslint/node_modules/lodash/maxBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/maxBy.js rename to tools/node_modules/eslint/node_modules/lodash/maxBy.js diff --git a/tools/eslint/node_modules/lodash/mean.js b/tools/node_modules/eslint/node_modules/lodash/mean.js similarity index 100% rename from tools/eslint/node_modules/lodash/mean.js rename to tools/node_modules/eslint/node_modules/lodash/mean.js diff --git a/tools/eslint/node_modules/lodash/meanBy.js b/tools/node_modules/eslint/node_modules/lodash/meanBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/meanBy.js rename to tools/node_modules/eslint/node_modules/lodash/meanBy.js diff --git a/tools/eslint/node_modules/lodash/memoize.js b/tools/node_modules/eslint/node_modules/lodash/memoize.js similarity index 100% rename from tools/eslint/node_modules/lodash/memoize.js rename to tools/node_modules/eslint/node_modules/lodash/memoize.js diff --git a/tools/eslint/node_modules/lodash/merge.js b/tools/node_modules/eslint/node_modules/lodash/merge.js similarity index 100% rename from tools/eslint/node_modules/lodash/merge.js rename to tools/node_modules/eslint/node_modules/lodash/merge.js diff --git a/tools/eslint/node_modules/lodash/mergeWith.js b/tools/node_modules/eslint/node_modules/lodash/mergeWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/mergeWith.js rename to tools/node_modules/eslint/node_modules/lodash/mergeWith.js diff --git a/tools/eslint/node_modules/lodash/method.js b/tools/node_modules/eslint/node_modules/lodash/method.js similarity index 100% rename from tools/eslint/node_modules/lodash/method.js rename to tools/node_modules/eslint/node_modules/lodash/method.js diff --git a/tools/eslint/node_modules/lodash/methodOf.js b/tools/node_modules/eslint/node_modules/lodash/methodOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/methodOf.js rename to tools/node_modules/eslint/node_modules/lodash/methodOf.js diff --git a/tools/eslint/node_modules/lodash/min.js b/tools/node_modules/eslint/node_modules/lodash/min.js similarity index 100% rename from tools/eslint/node_modules/lodash/min.js rename to tools/node_modules/eslint/node_modules/lodash/min.js diff --git a/tools/eslint/node_modules/lodash/minBy.js b/tools/node_modules/eslint/node_modules/lodash/minBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/minBy.js rename to tools/node_modules/eslint/node_modules/lodash/minBy.js diff --git a/tools/eslint/node_modules/lodash/mixin.js b/tools/node_modules/eslint/node_modules/lodash/mixin.js similarity index 100% rename from tools/eslint/node_modules/lodash/mixin.js rename to tools/node_modules/eslint/node_modules/lodash/mixin.js diff --git a/tools/eslint/node_modules/lodash/multiply.js b/tools/node_modules/eslint/node_modules/lodash/multiply.js similarity index 100% rename from tools/eslint/node_modules/lodash/multiply.js rename to tools/node_modules/eslint/node_modules/lodash/multiply.js diff --git a/tools/eslint/node_modules/lodash/negate.js b/tools/node_modules/eslint/node_modules/lodash/negate.js similarity index 100% rename from tools/eslint/node_modules/lodash/negate.js rename to tools/node_modules/eslint/node_modules/lodash/negate.js diff --git a/tools/eslint/node_modules/lodash/next.js b/tools/node_modules/eslint/node_modules/lodash/next.js similarity index 100% rename from tools/eslint/node_modules/lodash/next.js rename to tools/node_modules/eslint/node_modules/lodash/next.js diff --git a/tools/eslint/node_modules/lodash/noop.js b/tools/node_modules/eslint/node_modules/lodash/noop.js similarity index 100% rename from tools/eslint/node_modules/lodash/noop.js rename to tools/node_modules/eslint/node_modules/lodash/noop.js diff --git a/tools/eslint/node_modules/lodash/now.js b/tools/node_modules/eslint/node_modules/lodash/now.js similarity index 100% rename from tools/eslint/node_modules/lodash/now.js rename to tools/node_modules/eslint/node_modules/lodash/now.js diff --git a/tools/eslint/node_modules/lodash/nth.js b/tools/node_modules/eslint/node_modules/lodash/nth.js similarity index 100% rename from tools/eslint/node_modules/lodash/nth.js rename to tools/node_modules/eslint/node_modules/lodash/nth.js diff --git a/tools/eslint/node_modules/lodash/nthArg.js b/tools/node_modules/eslint/node_modules/lodash/nthArg.js similarity index 100% rename from tools/eslint/node_modules/lodash/nthArg.js rename to tools/node_modules/eslint/node_modules/lodash/nthArg.js diff --git a/tools/eslint/node_modules/lodash/number.js b/tools/node_modules/eslint/node_modules/lodash/number.js similarity index 100% rename from tools/eslint/node_modules/lodash/number.js rename to tools/node_modules/eslint/node_modules/lodash/number.js diff --git a/tools/eslint/node_modules/lodash/object.js b/tools/node_modules/eslint/node_modules/lodash/object.js similarity index 100% rename from tools/eslint/node_modules/lodash/object.js rename to tools/node_modules/eslint/node_modules/lodash/object.js diff --git a/tools/eslint/node_modules/lodash/omit.js b/tools/node_modules/eslint/node_modules/lodash/omit.js similarity index 100% rename from tools/eslint/node_modules/lodash/omit.js rename to tools/node_modules/eslint/node_modules/lodash/omit.js diff --git a/tools/eslint/node_modules/lodash/omitBy.js b/tools/node_modules/eslint/node_modules/lodash/omitBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/omitBy.js rename to tools/node_modules/eslint/node_modules/lodash/omitBy.js diff --git a/tools/eslint/node_modules/lodash/once.js b/tools/node_modules/eslint/node_modules/lodash/once.js similarity index 100% rename from tools/eslint/node_modules/lodash/once.js rename to tools/node_modules/eslint/node_modules/lodash/once.js diff --git a/tools/eslint/node_modules/lodash/orderBy.js b/tools/node_modules/eslint/node_modules/lodash/orderBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/orderBy.js rename to tools/node_modules/eslint/node_modules/lodash/orderBy.js diff --git a/tools/eslint/node_modules/lodash/over.js b/tools/node_modules/eslint/node_modules/lodash/over.js similarity index 100% rename from tools/eslint/node_modules/lodash/over.js rename to tools/node_modules/eslint/node_modules/lodash/over.js diff --git a/tools/eslint/node_modules/lodash/overArgs.js b/tools/node_modules/eslint/node_modules/lodash/overArgs.js similarity index 100% rename from tools/eslint/node_modules/lodash/overArgs.js rename to tools/node_modules/eslint/node_modules/lodash/overArgs.js diff --git a/tools/eslint/node_modules/lodash/overEvery.js b/tools/node_modules/eslint/node_modules/lodash/overEvery.js similarity index 100% rename from tools/eslint/node_modules/lodash/overEvery.js rename to tools/node_modules/eslint/node_modules/lodash/overEvery.js diff --git a/tools/eslint/node_modules/lodash/overSome.js b/tools/node_modules/eslint/node_modules/lodash/overSome.js similarity index 100% rename from tools/eslint/node_modules/lodash/overSome.js rename to tools/node_modules/eslint/node_modules/lodash/overSome.js diff --git a/tools/eslint/node_modules/lodash/package.json b/tools/node_modules/eslint/node_modules/lodash/package.json similarity index 100% rename from tools/eslint/node_modules/lodash/package.json rename to tools/node_modules/eslint/node_modules/lodash/package.json diff --git a/tools/eslint/node_modules/lodash/pad.js b/tools/node_modules/eslint/node_modules/lodash/pad.js similarity index 100% rename from tools/eslint/node_modules/lodash/pad.js rename to tools/node_modules/eslint/node_modules/lodash/pad.js diff --git a/tools/eslint/node_modules/lodash/padEnd.js b/tools/node_modules/eslint/node_modules/lodash/padEnd.js similarity index 100% rename from tools/eslint/node_modules/lodash/padEnd.js rename to tools/node_modules/eslint/node_modules/lodash/padEnd.js diff --git a/tools/eslint/node_modules/lodash/padStart.js b/tools/node_modules/eslint/node_modules/lodash/padStart.js similarity index 100% rename from tools/eslint/node_modules/lodash/padStart.js rename to tools/node_modules/eslint/node_modules/lodash/padStart.js diff --git a/tools/eslint/node_modules/lodash/parseInt.js b/tools/node_modules/eslint/node_modules/lodash/parseInt.js similarity index 100% rename from tools/eslint/node_modules/lodash/parseInt.js rename to tools/node_modules/eslint/node_modules/lodash/parseInt.js diff --git a/tools/eslint/node_modules/lodash/partial.js b/tools/node_modules/eslint/node_modules/lodash/partial.js similarity index 100% rename from tools/eslint/node_modules/lodash/partial.js rename to tools/node_modules/eslint/node_modules/lodash/partial.js diff --git a/tools/eslint/node_modules/lodash/partialRight.js b/tools/node_modules/eslint/node_modules/lodash/partialRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/partialRight.js rename to tools/node_modules/eslint/node_modules/lodash/partialRight.js diff --git a/tools/eslint/node_modules/lodash/partition.js b/tools/node_modules/eslint/node_modules/lodash/partition.js similarity index 100% rename from tools/eslint/node_modules/lodash/partition.js rename to tools/node_modules/eslint/node_modules/lodash/partition.js diff --git a/tools/eslint/node_modules/lodash/pick.js b/tools/node_modules/eslint/node_modules/lodash/pick.js similarity index 100% rename from tools/eslint/node_modules/lodash/pick.js rename to tools/node_modules/eslint/node_modules/lodash/pick.js diff --git a/tools/eslint/node_modules/lodash/pickBy.js b/tools/node_modules/eslint/node_modules/lodash/pickBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/pickBy.js rename to tools/node_modules/eslint/node_modules/lodash/pickBy.js diff --git a/tools/eslint/node_modules/lodash/plant.js b/tools/node_modules/eslint/node_modules/lodash/plant.js similarity index 100% rename from tools/eslint/node_modules/lodash/plant.js rename to tools/node_modules/eslint/node_modules/lodash/plant.js diff --git a/tools/eslint/node_modules/lodash/property.js b/tools/node_modules/eslint/node_modules/lodash/property.js similarity index 100% rename from tools/eslint/node_modules/lodash/property.js rename to tools/node_modules/eslint/node_modules/lodash/property.js diff --git a/tools/eslint/node_modules/lodash/propertyOf.js b/tools/node_modules/eslint/node_modules/lodash/propertyOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/propertyOf.js rename to tools/node_modules/eslint/node_modules/lodash/propertyOf.js diff --git a/tools/eslint/node_modules/lodash/pull.js b/tools/node_modules/eslint/node_modules/lodash/pull.js similarity index 100% rename from tools/eslint/node_modules/lodash/pull.js rename to tools/node_modules/eslint/node_modules/lodash/pull.js diff --git a/tools/eslint/node_modules/lodash/pullAll.js b/tools/node_modules/eslint/node_modules/lodash/pullAll.js similarity index 100% rename from tools/eslint/node_modules/lodash/pullAll.js rename to tools/node_modules/eslint/node_modules/lodash/pullAll.js diff --git a/tools/eslint/node_modules/lodash/pullAllBy.js b/tools/node_modules/eslint/node_modules/lodash/pullAllBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/pullAllBy.js rename to tools/node_modules/eslint/node_modules/lodash/pullAllBy.js diff --git a/tools/eslint/node_modules/lodash/pullAllWith.js b/tools/node_modules/eslint/node_modules/lodash/pullAllWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/pullAllWith.js rename to tools/node_modules/eslint/node_modules/lodash/pullAllWith.js diff --git a/tools/eslint/node_modules/lodash/pullAt.js b/tools/node_modules/eslint/node_modules/lodash/pullAt.js similarity index 100% rename from tools/eslint/node_modules/lodash/pullAt.js rename to tools/node_modules/eslint/node_modules/lodash/pullAt.js diff --git a/tools/eslint/node_modules/lodash/random.js b/tools/node_modules/eslint/node_modules/lodash/random.js similarity index 100% rename from tools/eslint/node_modules/lodash/random.js rename to tools/node_modules/eslint/node_modules/lodash/random.js diff --git a/tools/eslint/node_modules/lodash/range.js b/tools/node_modules/eslint/node_modules/lodash/range.js similarity index 100% rename from tools/eslint/node_modules/lodash/range.js rename to tools/node_modules/eslint/node_modules/lodash/range.js diff --git a/tools/eslint/node_modules/lodash/rangeRight.js b/tools/node_modules/eslint/node_modules/lodash/rangeRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/rangeRight.js rename to tools/node_modules/eslint/node_modules/lodash/rangeRight.js diff --git a/tools/eslint/node_modules/lodash/rearg.js b/tools/node_modules/eslint/node_modules/lodash/rearg.js similarity index 100% rename from tools/eslint/node_modules/lodash/rearg.js rename to tools/node_modules/eslint/node_modules/lodash/rearg.js diff --git a/tools/eslint/node_modules/lodash/reduce.js b/tools/node_modules/eslint/node_modules/lodash/reduce.js similarity index 100% rename from tools/eslint/node_modules/lodash/reduce.js rename to tools/node_modules/eslint/node_modules/lodash/reduce.js diff --git a/tools/eslint/node_modules/lodash/reduceRight.js b/tools/node_modules/eslint/node_modules/lodash/reduceRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/reduceRight.js rename to tools/node_modules/eslint/node_modules/lodash/reduceRight.js diff --git a/tools/eslint/node_modules/lodash/reject.js b/tools/node_modules/eslint/node_modules/lodash/reject.js similarity index 100% rename from tools/eslint/node_modules/lodash/reject.js rename to tools/node_modules/eslint/node_modules/lodash/reject.js diff --git a/tools/eslint/node_modules/lodash/remove.js b/tools/node_modules/eslint/node_modules/lodash/remove.js similarity index 100% rename from tools/eslint/node_modules/lodash/remove.js rename to tools/node_modules/eslint/node_modules/lodash/remove.js diff --git a/tools/eslint/node_modules/lodash/repeat.js b/tools/node_modules/eslint/node_modules/lodash/repeat.js similarity index 100% rename from tools/eslint/node_modules/lodash/repeat.js rename to tools/node_modules/eslint/node_modules/lodash/repeat.js diff --git a/tools/eslint/node_modules/lodash/replace.js b/tools/node_modules/eslint/node_modules/lodash/replace.js similarity index 100% rename from tools/eslint/node_modules/lodash/replace.js rename to tools/node_modules/eslint/node_modules/lodash/replace.js diff --git a/tools/eslint/node_modules/lodash/rest.js b/tools/node_modules/eslint/node_modules/lodash/rest.js similarity index 100% rename from tools/eslint/node_modules/lodash/rest.js rename to tools/node_modules/eslint/node_modules/lodash/rest.js diff --git a/tools/eslint/node_modules/lodash/result.js b/tools/node_modules/eslint/node_modules/lodash/result.js similarity index 100% rename from tools/eslint/node_modules/lodash/result.js rename to tools/node_modules/eslint/node_modules/lodash/result.js diff --git a/tools/eslint/node_modules/lodash/reverse.js b/tools/node_modules/eslint/node_modules/lodash/reverse.js similarity index 100% rename from tools/eslint/node_modules/lodash/reverse.js rename to tools/node_modules/eslint/node_modules/lodash/reverse.js diff --git a/tools/eslint/node_modules/lodash/round.js b/tools/node_modules/eslint/node_modules/lodash/round.js similarity index 100% rename from tools/eslint/node_modules/lodash/round.js rename to tools/node_modules/eslint/node_modules/lodash/round.js diff --git a/tools/eslint/node_modules/lodash/sample.js b/tools/node_modules/eslint/node_modules/lodash/sample.js similarity index 100% rename from tools/eslint/node_modules/lodash/sample.js rename to tools/node_modules/eslint/node_modules/lodash/sample.js diff --git a/tools/eslint/node_modules/lodash/sampleSize.js b/tools/node_modules/eslint/node_modules/lodash/sampleSize.js similarity index 100% rename from tools/eslint/node_modules/lodash/sampleSize.js rename to tools/node_modules/eslint/node_modules/lodash/sampleSize.js diff --git a/tools/eslint/node_modules/lodash/seq.js b/tools/node_modules/eslint/node_modules/lodash/seq.js similarity index 100% rename from tools/eslint/node_modules/lodash/seq.js rename to tools/node_modules/eslint/node_modules/lodash/seq.js diff --git a/tools/eslint/node_modules/lodash/set.js b/tools/node_modules/eslint/node_modules/lodash/set.js similarity index 100% rename from tools/eslint/node_modules/lodash/set.js rename to tools/node_modules/eslint/node_modules/lodash/set.js diff --git a/tools/eslint/node_modules/lodash/setWith.js b/tools/node_modules/eslint/node_modules/lodash/setWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/setWith.js rename to tools/node_modules/eslint/node_modules/lodash/setWith.js diff --git a/tools/eslint/node_modules/lodash/shuffle.js b/tools/node_modules/eslint/node_modules/lodash/shuffle.js similarity index 100% rename from tools/eslint/node_modules/lodash/shuffle.js rename to tools/node_modules/eslint/node_modules/lodash/shuffle.js diff --git a/tools/eslint/node_modules/lodash/size.js b/tools/node_modules/eslint/node_modules/lodash/size.js similarity index 100% rename from tools/eslint/node_modules/lodash/size.js rename to tools/node_modules/eslint/node_modules/lodash/size.js diff --git a/tools/eslint/node_modules/lodash/slice.js b/tools/node_modules/eslint/node_modules/lodash/slice.js similarity index 100% rename from tools/eslint/node_modules/lodash/slice.js rename to tools/node_modules/eslint/node_modules/lodash/slice.js diff --git a/tools/eslint/node_modules/lodash/snakeCase.js b/tools/node_modules/eslint/node_modules/lodash/snakeCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/snakeCase.js rename to tools/node_modules/eslint/node_modules/lodash/snakeCase.js diff --git a/tools/eslint/node_modules/lodash/some.js b/tools/node_modules/eslint/node_modules/lodash/some.js similarity index 100% rename from tools/eslint/node_modules/lodash/some.js rename to tools/node_modules/eslint/node_modules/lodash/some.js diff --git a/tools/eslint/node_modules/lodash/sortBy.js b/tools/node_modules/eslint/node_modules/lodash/sortBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortBy.js rename to tools/node_modules/eslint/node_modules/lodash/sortBy.js diff --git a/tools/eslint/node_modules/lodash/sortedIndex.js b/tools/node_modules/eslint/node_modules/lodash/sortedIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedIndex.js rename to tools/node_modules/eslint/node_modules/lodash/sortedIndex.js diff --git a/tools/eslint/node_modules/lodash/sortedIndexBy.js b/tools/node_modules/eslint/node_modules/lodash/sortedIndexBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedIndexBy.js rename to tools/node_modules/eslint/node_modules/lodash/sortedIndexBy.js diff --git a/tools/eslint/node_modules/lodash/sortedIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/sortedIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/sortedIndexOf.js diff --git a/tools/eslint/node_modules/lodash/sortedLastIndex.js b/tools/node_modules/eslint/node_modules/lodash/sortedLastIndex.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedLastIndex.js rename to tools/node_modules/eslint/node_modules/lodash/sortedLastIndex.js diff --git a/tools/eslint/node_modules/lodash/sortedLastIndexBy.js b/tools/node_modules/eslint/node_modules/lodash/sortedLastIndexBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedLastIndexBy.js rename to tools/node_modules/eslint/node_modules/lodash/sortedLastIndexBy.js diff --git a/tools/eslint/node_modules/lodash/sortedLastIndexOf.js b/tools/node_modules/eslint/node_modules/lodash/sortedLastIndexOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedLastIndexOf.js rename to tools/node_modules/eslint/node_modules/lodash/sortedLastIndexOf.js diff --git a/tools/eslint/node_modules/lodash/sortedUniq.js b/tools/node_modules/eslint/node_modules/lodash/sortedUniq.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedUniq.js rename to tools/node_modules/eslint/node_modules/lodash/sortedUniq.js diff --git a/tools/eslint/node_modules/lodash/sortedUniqBy.js b/tools/node_modules/eslint/node_modules/lodash/sortedUniqBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/sortedUniqBy.js rename to tools/node_modules/eslint/node_modules/lodash/sortedUniqBy.js diff --git a/tools/eslint/node_modules/lodash/split.js b/tools/node_modules/eslint/node_modules/lodash/split.js similarity index 100% rename from tools/eslint/node_modules/lodash/split.js rename to tools/node_modules/eslint/node_modules/lodash/split.js diff --git a/tools/eslint/node_modules/lodash/spread.js b/tools/node_modules/eslint/node_modules/lodash/spread.js similarity index 100% rename from tools/eslint/node_modules/lodash/spread.js rename to tools/node_modules/eslint/node_modules/lodash/spread.js diff --git a/tools/eslint/node_modules/lodash/startCase.js b/tools/node_modules/eslint/node_modules/lodash/startCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/startCase.js rename to tools/node_modules/eslint/node_modules/lodash/startCase.js diff --git a/tools/eslint/node_modules/lodash/startsWith.js b/tools/node_modules/eslint/node_modules/lodash/startsWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/startsWith.js rename to tools/node_modules/eslint/node_modules/lodash/startsWith.js diff --git a/tools/eslint/node_modules/lodash/string.js b/tools/node_modules/eslint/node_modules/lodash/string.js similarity index 100% rename from tools/eslint/node_modules/lodash/string.js rename to tools/node_modules/eslint/node_modules/lodash/string.js diff --git a/tools/eslint/node_modules/lodash/stubArray.js b/tools/node_modules/eslint/node_modules/lodash/stubArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/stubArray.js rename to tools/node_modules/eslint/node_modules/lodash/stubArray.js diff --git a/tools/eslint/node_modules/lodash/stubFalse.js b/tools/node_modules/eslint/node_modules/lodash/stubFalse.js similarity index 100% rename from tools/eslint/node_modules/lodash/stubFalse.js rename to tools/node_modules/eslint/node_modules/lodash/stubFalse.js diff --git a/tools/eslint/node_modules/lodash/stubObject.js b/tools/node_modules/eslint/node_modules/lodash/stubObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/stubObject.js rename to tools/node_modules/eslint/node_modules/lodash/stubObject.js diff --git a/tools/eslint/node_modules/lodash/stubString.js b/tools/node_modules/eslint/node_modules/lodash/stubString.js similarity index 100% rename from tools/eslint/node_modules/lodash/stubString.js rename to tools/node_modules/eslint/node_modules/lodash/stubString.js diff --git a/tools/eslint/node_modules/lodash/stubTrue.js b/tools/node_modules/eslint/node_modules/lodash/stubTrue.js similarity index 100% rename from tools/eslint/node_modules/lodash/stubTrue.js rename to tools/node_modules/eslint/node_modules/lodash/stubTrue.js diff --git a/tools/eslint/node_modules/lodash/subtract.js b/tools/node_modules/eslint/node_modules/lodash/subtract.js similarity index 100% rename from tools/eslint/node_modules/lodash/subtract.js rename to tools/node_modules/eslint/node_modules/lodash/subtract.js diff --git a/tools/eslint/node_modules/lodash/sum.js b/tools/node_modules/eslint/node_modules/lodash/sum.js similarity index 100% rename from tools/eslint/node_modules/lodash/sum.js rename to tools/node_modules/eslint/node_modules/lodash/sum.js diff --git a/tools/eslint/node_modules/lodash/sumBy.js b/tools/node_modules/eslint/node_modules/lodash/sumBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/sumBy.js rename to tools/node_modules/eslint/node_modules/lodash/sumBy.js diff --git a/tools/eslint/node_modules/lodash/tail.js b/tools/node_modules/eslint/node_modules/lodash/tail.js similarity index 100% rename from tools/eslint/node_modules/lodash/tail.js rename to tools/node_modules/eslint/node_modules/lodash/tail.js diff --git a/tools/eslint/node_modules/lodash/take.js b/tools/node_modules/eslint/node_modules/lodash/take.js similarity index 100% rename from tools/eslint/node_modules/lodash/take.js rename to tools/node_modules/eslint/node_modules/lodash/take.js diff --git a/tools/eslint/node_modules/lodash/takeRight.js b/tools/node_modules/eslint/node_modules/lodash/takeRight.js similarity index 100% rename from tools/eslint/node_modules/lodash/takeRight.js rename to tools/node_modules/eslint/node_modules/lodash/takeRight.js diff --git a/tools/eslint/node_modules/lodash/takeRightWhile.js b/tools/node_modules/eslint/node_modules/lodash/takeRightWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/takeRightWhile.js rename to tools/node_modules/eslint/node_modules/lodash/takeRightWhile.js diff --git a/tools/eslint/node_modules/lodash/takeWhile.js b/tools/node_modules/eslint/node_modules/lodash/takeWhile.js similarity index 100% rename from tools/eslint/node_modules/lodash/takeWhile.js rename to tools/node_modules/eslint/node_modules/lodash/takeWhile.js diff --git a/tools/eslint/node_modules/lodash/tap.js b/tools/node_modules/eslint/node_modules/lodash/tap.js similarity index 100% rename from tools/eslint/node_modules/lodash/tap.js rename to tools/node_modules/eslint/node_modules/lodash/tap.js diff --git a/tools/eslint/node_modules/lodash/template.js b/tools/node_modules/eslint/node_modules/lodash/template.js similarity index 100% rename from tools/eslint/node_modules/lodash/template.js rename to tools/node_modules/eslint/node_modules/lodash/template.js diff --git a/tools/eslint/node_modules/lodash/templateSettings.js b/tools/node_modules/eslint/node_modules/lodash/templateSettings.js similarity index 100% rename from tools/eslint/node_modules/lodash/templateSettings.js rename to tools/node_modules/eslint/node_modules/lodash/templateSettings.js diff --git a/tools/eslint/node_modules/lodash/throttle.js b/tools/node_modules/eslint/node_modules/lodash/throttle.js similarity index 100% rename from tools/eslint/node_modules/lodash/throttle.js rename to tools/node_modules/eslint/node_modules/lodash/throttle.js diff --git a/tools/eslint/node_modules/lodash/thru.js b/tools/node_modules/eslint/node_modules/lodash/thru.js similarity index 100% rename from tools/eslint/node_modules/lodash/thru.js rename to tools/node_modules/eslint/node_modules/lodash/thru.js diff --git a/tools/eslint/node_modules/lodash/times.js b/tools/node_modules/eslint/node_modules/lodash/times.js similarity index 100% rename from tools/eslint/node_modules/lodash/times.js rename to tools/node_modules/eslint/node_modules/lodash/times.js diff --git a/tools/eslint/node_modules/lodash/toArray.js b/tools/node_modules/eslint/node_modules/lodash/toArray.js similarity index 100% rename from tools/eslint/node_modules/lodash/toArray.js rename to tools/node_modules/eslint/node_modules/lodash/toArray.js diff --git a/tools/eslint/node_modules/lodash/toFinite.js b/tools/node_modules/eslint/node_modules/lodash/toFinite.js similarity index 100% rename from tools/eslint/node_modules/lodash/toFinite.js rename to tools/node_modules/eslint/node_modules/lodash/toFinite.js diff --git a/tools/eslint/node_modules/lodash/toInteger.js b/tools/node_modules/eslint/node_modules/lodash/toInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/toInteger.js rename to tools/node_modules/eslint/node_modules/lodash/toInteger.js diff --git a/tools/eslint/node_modules/lodash/toIterator.js b/tools/node_modules/eslint/node_modules/lodash/toIterator.js similarity index 100% rename from tools/eslint/node_modules/lodash/toIterator.js rename to tools/node_modules/eslint/node_modules/lodash/toIterator.js diff --git a/tools/eslint/node_modules/lodash/toJSON.js b/tools/node_modules/eslint/node_modules/lodash/toJSON.js similarity index 100% rename from tools/eslint/node_modules/lodash/toJSON.js rename to tools/node_modules/eslint/node_modules/lodash/toJSON.js diff --git a/tools/eslint/node_modules/lodash/toLength.js b/tools/node_modules/eslint/node_modules/lodash/toLength.js similarity index 100% rename from tools/eslint/node_modules/lodash/toLength.js rename to tools/node_modules/eslint/node_modules/lodash/toLength.js diff --git a/tools/eslint/node_modules/lodash/toLower.js b/tools/node_modules/eslint/node_modules/lodash/toLower.js similarity index 100% rename from tools/eslint/node_modules/lodash/toLower.js rename to tools/node_modules/eslint/node_modules/lodash/toLower.js diff --git a/tools/eslint/node_modules/lodash/toNumber.js b/tools/node_modules/eslint/node_modules/lodash/toNumber.js similarity index 100% rename from tools/eslint/node_modules/lodash/toNumber.js rename to tools/node_modules/eslint/node_modules/lodash/toNumber.js diff --git a/tools/eslint/node_modules/lodash/toPairs.js b/tools/node_modules/eslint/node_modules/lodash/toPairs.js similarity index 100% rename from tools/eslint/node_modules/lodash/toPairs.js rename to tools/node_modules/eslint/node_modules/lodash/toPairs.js diff --git a/tools/eslint/node_modules/lodash/toPairsIn.js b/tools/node_modules/eslint/node_modules/lodash/toPairsIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/toPairsIn.js rename to tools/node_modules/eslint/node_modules/lodash/toPairsIn.js diff --git a/tools/eslint/node_modules/lodash/toPath.js b/tools/node_modules/eslint/node_modules/lodash/toPath.js similarity index 100% rename from tools/eslint/node_modules/lodash/toPath.js rename to tools/node_modules/eslint/node_modules/lodash/toPath.js diff --git a/tools/eslint/node_modules/lodash/toPlainObject.js b/tools/node_modules/eslint/node_modules/lodash/toPlainObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/toPlainObject.js rename to tools/node_modules/eslint/node_modules/lodash/toPlainObject.js diff --git a/tools/eslint/node_modules/lodash/toSafeInteger.js b/tools/node_modules/eslint/node_modules/lodash/toSafeInteger.js similarity index 100% rename from tools/eslint/node_modules/lodash/toSafeInteger.js rename to tools/node_modules/eslint/node_modules/lodash/toSafeInteger.js diff --git a/tools/eslint/node_modules/lodash/toString.js b/tools/node_modules/eslint/node_modules/lodash/toString.js similarity index 100% rename from tools/eslint/node_modules/lodash/toString.js rename to tools/node_modules/eslint/node_modules/lodash/toString.js diff --git a/tools/eslint/node_modules/lodash/toUpper.js b/tools/node_modules/eslint/node_modules/lodash/toUpper.js similarity index 100% rename from tools/eslint/node_modules/lodash/toUpper.js rename to tools/node_modules/eslint/node_modules/lodash/toUpper.js diff --git a/tools/eslint/node_modules/lodash/transform.js b/tools/node_modules/eslint/node_modules/lodash/transform.js similarity index 100% rename from tools/eslint/node_modules/lodash/transform.js rename to tools/node_modules/eslint/node_modules/lodash/transform.js diff --git a/tools/eslint/node_modules/lodash/trim.js b/tools/node_modules/eslint/node_modules/lodash/trim.js similarity index 100% rename from tools/eslint/node_modules/lodash/trim.js rename to tools/node_modules/eslint/node_modules/lodash/trim.js diff --git a/tools/eslint/node_modules/lodash/trimEnd.js b/tools/node_modules/eslint/node_modules/lodash/trimEnd.js similarity index 100% rename from tools/eslint/node_modules/lodash/trimEnd.js rename to tools/node_modules/eslint/node_modules/lodash/trimEnd.js diff --git a/tools/eslint/node_modules/lodash/trimStart.js b/tools/node_modules/eslint/node_modules/lodash/trimStart.js similarity index 100% rename from tools/eslint/node_modules/lodash/trimStart.js rename to tools/node_modules/eslint/node_modules/lodash/trimStart.js diff --git a/tools/eslint/node_modules/lodash/truncate.js b/tools/node_modules/eslint/node_modules/lodash/truncate.js similarity index 100% rename from tools/eslint/node_modules/lodash/truncate.js rename to tools/node_modules/eslint/node_modules/lodash/truncate.js diff --git a/tools/eslint/node_modules/lodash/unary.js b/tools/node_modules/eslint/node_modules/lodash/unary.js similarity index 100% rename from tools/eslint/node_modules/lodash/unary.js rename to tools/node_modules/eslint/node_modules/lodash/unary.js diff --git a/tools/eslint/node_modules/lodash/unescape.js b/tools/node_modules/eslint/node_modules/lodash/unescape.js similarity index 100% rename from tools/eslint/node_modules/lodash/unescape.js rename to tools/node_modules/eslint/node_modules/lodash/unescape.js diff --git a/tools/eslint/node_modules/lodash/union.js b/tools/node_modules/eslint/node_modules/lodash/union.js similarity index 100% rename from tools/eslint/node_modules/lodash/union.js rename to tools/node_modules/eslint/node_modules/lodash/union.js diff --git a/tools/eslint/node_modules/lodash/unionBy.js b/tools/node_modules/eslint/node_modules/lodash/unionBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/unionBy.js rename to tools/node_modules/eslint/node_modules/lodash/unionBy.js diff --git a/tools/eslint/node_modules/lodash/unionWith.js b/tools/node_modules/eslint/node_modules/lodash/unionWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/unionWith.js rename to tools/node_modules/eslint/node_modules/lodash/unionWith.js diff --git a/tools/eslint/node_modules/lodash/uniq.js b/tools/node_modules/eslint/node_modules/lodash/uniq.js similarity index 100% rename from tools/eslint/node_modules/lodash/uniq.js rename to tools/node_modules/eslint/node_modules/lodash/uniq.js diff --git a/tools/eslint/node_modules/lodash/uniqBy.js b/tools/node_modules/eslint/node_modules/lodash/uniqBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/uniqBy.js rename to tools/node_modules/eslint/node_modules/lodash/uniqBy.js diff --git a/tools/eslint/node_modules/lodash/uniqWith.js b/tools/node_modules/eslint/node_modules/lodash/uniqWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/uniqWith.js rename to tools/node_modules/eslint/node_modules/lodash/uniqWith.js diff --git a/tools/eslint/node_modules/lodash/uniqueId.js b/tools/node_modules/eslint/node_modules/lodash/uniqueId.js similarity index 100% rename from tools/eslint/node_modules/lodash/uniqueId.js rename to tools/node_modules/eslint/node_modules/lodash/uniqueId.js diff --git a/tools/eslint/node_modules/lodash/unset.js b/tools/node_modules/eslint/node_modules/lodash/unset.js similarity index 100% rename from tools/eslint/node_modules/lodash/unset.js rename to tools/node_modules/eslint/node_modules/lodash/unset.js diff --git a/tools/eslint/node_modules/lodash/unzip.js b/tools/node_modules/eslint/node_modules/lodash/unzip.js similarity index 100% rename from tools/eslint/node_modules/lodash/unzip.js rename to tools/node_modules/eslint/node_modules/lodash/unzip.js diff --git a/tools/eslint/node_modules/lodash/unzipWith.js b/tools/node_modules/eslint/node_modules/lodash/unzipWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/unzipWith.js rename to tools/node_modules/eslint/node_modules/lodash/unzipWith.js diff --git a/tools/eslint/node_modules/lodash/update.js b/tools/node_modules/eslint/node_modules/lodash/update.js similarity index 100% rename from tools/eslint/node_modules/lodash/update.js rename to tools/node_modules/eslint/node_modules/lodash/update.js diff --git a/tools/eslint/node_modules/lodash/updateWith.js b/tools/node_modules/eslint/node_modules/lodash/updateWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/updateWith.js rename to tools/node_modules/eslint/node_modules/lodash/updateWith.js diff --git a/tools/eslint/node_modules/lodash/upperCase.js b/tools/node_modules/eslint/node_modules/lodash/upperCase.js similarity index 100% rename from tools/eslint/node_modules/lodash/upperCase.js rename to tools/node_modules/eslint/node_modules/lodash/upperCase.js diff --git a/tools/eslint/node_modules/lodash/upperFirst.js b/tools/node_modules/eslint/node_modules/lodash/upperFirst.js similarity index 100% rename from tools/eslint/node_modules/lodash/upperFirst.js rename to tools/node_modules/eslint/node_modules/lodash/upperFirst.js diff --git a/tools/eslint/node_modules/lodash/util.js b/tools/node_modules/eslint/node_modules/lodash/util.js similarity index 100% rename from tools/eslint/node_modules/lodash/util.js rename to tools/node_modules/eslint/node_modules/lodash/util.js diff --git a/tools/eslint/node_modules/lodash/value.js b/tools/node_modules/eslint/node_modules/lodash/value.js similarity index 100% rename from tools/eslint/node_modules/lodash/value.js rename to tools/node_modules/eslint/node_modules/lodash/value.js diff --git a/tools/eslint/node_modules/lodash/valueOf.js b/tools/node_modules/eslint/node_modules/lodash/valueOf.js similarity index 100% rename from tools/eslint/node_modules/lodash/valueOf.js rename to tools/node_modules/eslint/node_modules/lodash/valueOf.js diff --git a/tools/eslint/node_modules/lodash/values.js b/tools/node_modules/eslint/node_modules/lodash/values.js similarity index 100% rename from tools/eslint/node_modules/lodash/values.js rename to tools/node_modules/eslint/node_modules/lodash/values.js diff --git a/tools/eslint/node_modules/lodash/valuesIn.js b/tools/node_modules/eslint/node_modules/lodash/valuesIn.js similarity index 100% rename from tools/eslint/node_modules/lodash/valuesIn.js rename to tools/node_modules/eslint/node_modules/lodash/valuesIn.js diff --git a/tools/eslint/node_modules/lodash/without.js b/tools/node_modules/eslint/node_modules/lodash/without.js similarity index 100% rename from tools/eslint/node_modules/lodash/without.js rename to tools/node_modules/eslint/node_modules/lodash/without.js diff --git a/tools/eslint/node_modules/lodash/words.js b/tools/node_modules/eslint/node_modules/lodash/words.js similarity index 100% rename from tools/eslint/node_modules/lodash/words.js rename to tools/node_modules/eslint/node_modules/lodash/words.js diff --git a/tools/eslint/node_modules/lodash/wrap.js b/tools/node_modules/eslint/node_modules/lodash/wrap.js similarity index 100% rename from tools/eslint/node_modules/lodash/wrap.js rename to tools/node_modules/eslint/node_modules/lodash/wrap.js diff --git a/tools/eslint/node_modules/lodash/wrapperAt.js b/tools/node_modules/eslint/node_modules/lodash/wrapperAt.js similarity index 100% rename from tools/eslint/node_modules/lodash/wrapperAt.js rename to tools/node_modules/eslint/node_modules/lodash/wrapperAt.js diff --git a/tools/eslint/node_modules/lodash/wrapperChain.js b/tools/node_modules/eslint/node_modules/lodash/wrapperChain.js similarity index 100% rename from tools/eslint/node_modules/lodash/wrapperChain.js rename to tools/node_modules/eslint/node_modules/lodash/wrapperChain.js diff --git a/tools/eslint/node_modules/lodash/wrapperLodash.js b/tools/node_modules/eslint/node_modules/lodash/wrapperLodash.js similarity index 100% rename from tools/eslint/node_modules/lodash/wrapperLodash.js rename to tools/node_modules/eslint/node_modules/lodash/wrapperLodash.js diff --git a/tools/eslint/node_modules/lodash/wrapperReverse.js b/tools/node_modules/eslint/node_modules/lodash/wrapperReverse.js similarity index 100% rename from tools/eslint/node_modules/lodash/wrapperReverse.js rename to tools/node_modules/eslint/node_modules/lodash/wrapperReverse.js diff --git a/tools/eslint/node_modules/lodash/wrapperValue.js b/tools/node_modules/eslint/node_modules/lodash/wrapperValue.js similarity index 100% rename from tools/eslint/node_modules/lodash/wrapperValue.js rename to tools/node_modules/eslint/node_modules/lodash/wrapperValue.js diff --git a/tools/eslint/node_modules/lodash/xor.js b/tools/node_modules/eslint/node_modules/lodash/xor.js similarity index 100% rename from tools/eslint/node_modules/lodash/xor.js rename to tools/node_modules/eslint/node_modules/lodash/xor.js diff --git a/tools/eslint/node_modules/lodash/xorBy.js b/tools/node_modules/eslint/node_modules/lodash/xorBy.js similarity index 100% rename from tools/eslint/node_modules/lodash/xorBy.js rename to tools/node_modules/eslint/node_modules/lodash/xorBy.js diff --git a/tools/eslint/node_modules/lodash/xorWith.js b/tools/node_modules/eslint/node_modules/lodash/xorWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/xorWith.js rename to tools/node_modules/eslint/node_modules/lodash/xorWith.js diff --git a/tools/eslint/node_modules/lodash/zip.js b/tools/node_modules/eslint/node_modules/lodash/zip.js similarity index 100% rename from tools/eslint/node_modules/lodash/zip.js rename to tools/node_modules/eslint/node_modules/lodash/zip.js diff --git a/tools/eslint/node_modules/lodash/zipObject.js b/tools/node_modules/eslint/node_modules/lodash/zipObject.js similarity index 100% rename from tools/eslint/node_modules/lodash/zipObject.js rename to tools/node_modules/eslint/node_modules/lodash/zipObject.js diff --git a/tools/eslint/node_modules/lodash/zipObjectDeep.js b/tools/node_modules/eslint/node_modules/lodash/zipObjectDeep.js similarity index 100% rename from tools/eslint/node_modules/lodash/zipObjectDeep.js rename to tools/node_modules/eslint/node_modules/lodash/zipObjectDeep.js diff --git a/tools/eslint/node_modules/lodash/zipWith.js b/tools/node_modules/eslint/node_modules/lodash/zipWith.js similarity index 100% rename from tools/eslint/node_modules/lodash/zipWith.js rename to tools/node_modules/eslint/node_modules/lodash/zipWith.js diff --git a/tools/eslint/node_modules/lru-cache/LICENSE b/tools/node_modules/eslint/node_modules/lru-cache/LICENSE similarity index 100% rename from tools/eslint/node_modules/lru-cache/LICENSE rename to tools/node_modules/eslint/node_modules/lru-cache/LICENSE diff --git a/tools/eslint/node_modules/lru-cache/README.md b/tools/node_modules/eslint/node_modules/lru-cache/README.md similarity index 100% rename from tools/eslint/node_modules/lru-cache/README.md rename to tools/node_modules/eslint/node_modules/lru-cache/README.md diff --git a/tools/eslint/node_modules/lru-cache/index.js b/tools/node_modules/eslint/node_modules/lru-cache/index.js similarity index 100% rename from tools/eslint/node_modules/lru-cache/index.js rename to tools/node_modules/eslint/node_modules/lru-cache/index.js diff --git a/tools/eslint/node_modules/lru-cache/package.json b/tools/node_modules/eslint/node_modules/lru-cache/package.json similarity index 100% rename from tools/eslint/node_modules/lru-cache/package.json rename to tools/node_modules/eslint/node_modules/lru-cache/package.json diff --git a/tools/eslint/node_modules/markdown-escapes/LICENSE b/tools/node_modules/eslint/node_modules/markdown-escapes/LICENSE similarity index 100% rename from tools/eslint/node_modules/markdown-escapes/LICENSE rename to tools/node_modules/eslint/node_modules/markdown-escapes/LICENSE diff --git a/tools/eslint/node_modules/markdown-escapes/index.js b/tools/node_modules/eslint/node_modules/markdown-escapes/index.js similarity index 100% rename from tools/eslint/node_modules/markdown-escapes/index.js rename to tools/node_modules/eslint/node_modules/markdown-escapes/index.js diff --git a/tools/eslint/node_modules/markdown-escapes/package.json b/tools/node_modules/eslint/node_modules/markdown-escapes/package.json similarity index 100% rename from tools/eslint/node_modules/markdown-escapes/package.json rename to tools/node_modules/eslint/node_modules/markdown-escapes/package.json diff --git a/tools/eslint/node_modules/markdown-escapes/readme.md b/tools/node_modules/eslint/node_modules/markdown-escapes/readme.md similarity index 100% rename from tools/eslint/node_modules/markdown-escapes/readme.md rename to tools/node_modules/eslint/node_modules/markdown-escapes/readme.md diff --git a/tools/eslint/node_modules/mimic-fn/index.js b/tools/node_modules/eslint/node_modules/mimic-fn/index.js similarity index 100% rename from tools/eslint/node_modules/mimic-fn/index.js rename to tools/node_modules/eslint/node_modules/mimic-fn/index.js diff --git a/tools/eslint/node_modules/mimic-fn/license b/tools/node_modules/eslint/node_modules/mimic-fn/license similarity index 100% rename from tools/eslint/node_modules/mimic-fn/license rename to tools/node_modules/eslint/node_modules/mimic-fn/license diff --git a/tools/eslint/node_modules/mimic-fn/package.json b/tools/node_modules/eslint/node_modules/mimic-fn/package.json similarity index 100% rename from tools/eslint/node_modules/mimic-fn/package.json rename to tools/node_modules/eslint/node_modules/mimic-fn/package.json diff --git a/tools/eslint/node_modules/mimic-fn/readme.md b/tools/node_modules/eslint/node_modules/mimic-fn/readme.md similarity index 100% rename from tools/eslint/node_modules/mimic-fn/readme.md rename to tools/node_modules/eslint/node_modules/mimic-fn/readme.md diff --git a/tools/eslint/node_modules/minimatch/LICENSE b/tools/node_modules/eslint/node_modules/minimatch/LICENSE similarity index 100% rename from tools/eslint/node_modules/minimatch/LICENSE rename to tools/node_modules/eslint/node_modules/minimatch/LICENSE diff --git a/tools/eslint/node_modules/minimatch/README.md b/tools/node_modules/eslint/node_modules/minimatch/README.md similarity index 100% rename from tools/eslint/node_modules/minimatch/README.md rename to tools/node_modules/eslint/node_modules/minimatch/README.md diff --git a/tools/eslint/node_modules/minimatch/minimatch.js b/tools/node_modules/eslint/node_modules/minimatch/minimatch.js similarity index 100% rename from tools/eslint/node_modules/minimatch/minimatch.js rename to tools/node_modules/eslint/node_modules/minimatch/minimatch.js diff --git a/tools/eslint/node_modules/minimatch/package.json b/tools/node_modules/eslint/node_modules/minimatch/package.json similarity index 100% rename from tools/eslint/node_modules/minimatch/package.json rename to tools/node_modules/eslint/node_modules/minimatch/package.json diff --git a/tools/eslint/node_modules/minimist/LICENSE b/tools/node_modules/eslint/node_modules/minimist/LICENSE similarity index 100% rename from tools/eslint/node_modules/minimist/LICENSE rename to tools/node_modules/eslint/node_modules/minimist/LICENSE diff --git a/tools/eslint/node_modules/minimist/index.js b/tools/node_modules/eslint/node_modules/minimist/index.js similarity index 100% rename from tools/eslint/node_modules/minimist/index.js rename to tools/node_modules/eslint/node_modules/minimist/index.js diff --git a/tools/eslint/node_modules/minimist/package.json b/tools/node_modules/eslint/node_modules/minimist/package.json similarity index 100% rename from tools/eslint/node_modules/minimist/package.json rename to tools/node_modules/eslint/node_modules/minimist/package.json diff --git a/tools/eslint/node_modules/minimist/readme.markdown b/tools/node_modules/eslint/node_modules/minimist/readme.markdown similarity index 100% rename from tools/eslint/node_modules/minimist/readme.markdown rename to tools/node_modules/eslint/node_modules/minimist/readme.markdown diff --git a/tools/eslint/node_modules/mkdirp/LICENSE b/tools/node_modules/eslint/node_modules/mkdirp/LICENSE similarity index 100% rename from tools/eslint/node_modules/mkdirp/LICENSE rename to tools/node_modules/eslint/node_modules/mkdirp/LICENSE diff --git a/tools/eslint/node_modules/mkdirp/bin/cmd.js b/tools/node_modules/eslint/node_modules/mkdirp/bin/cmd.js similarity index 100% rename from tools/eslint/node_modules/mkdirp/bin/cmd.js rename to tools/node_modules/eslint/node_modules/mkdirp/bin/cmd.js diff --git a/tools/eslint/node_modules/mkdirp/bin/usage.txt b/tools/node_modules/eslint/node_modules/mkdirp/bin/usage.txt similarity index 100% rename from tools/eslint/node_modules/mkdirp/bin/usage.txt rename to tools/node_modules/eslint/node_modules/mkdirp/bin/usage.txt diff --git a/tools/eslint/node_modules/mkdirp/index.js b/tools/node_modules/eslint/node_modules/mkdirp/index.js similarity index 100% rename from tools/eslint/node_modules/mkdirp/index.js rename to tools/node_modules/eslint/node_modules/mkdirp/index.js diff --git a/tools/eslint/node_modules/mkdirp/package.json b/tools/node_modules/eslint/node_modules/mkdirp/package.json similarity index 100% rename from tools/eslint/node_modules/mkdirp/package.json rename to tools/node_modules/eslint/node_modules/mkdirp/package.json diff --git a/tools/eslint/node_modules/mkdirp/readme.markdown b/tools/node_modules/eslint/node_modules/mkdirp/readme.markdown similarity index 100% rename from tools/eslint/node_modules/mkdirp/readme.markdown rename to tools/node_modules/eslint/node_modules/mkdirp/readme.markdown diff --git a/tools/eslint/node_modules/ms/LICENSE.md b/tools/node_modules/eslint/node_modules/ms/LICENSE.md similarity index 100% rename from tools/eslint/node_modules/ms/LICENSE.md rename to tools/node_modules/eslint/node_modules/ms/LICENSE.md diff --git a/tools/eslint/node_modules/ms/README.md b/tools/node_modules/eslint/node_modules/ms/README.md similarity index 100% rename from tools/eslint/node_modules/ms/README.md rename to tools/node_modules/eslint/node_modules/ms/README.md diff --git a/tools/eslint/node_modules/ms/index.js b/tools/node_modules/eslint/node_modules/ms/index.js similarity index 100% rename from tools/eslint/node_modules/ms/index.js rename to tools/node_modules/eslint/node_modules/ms/index.js diff --git a/tools/eslint/node_modules/ms/package.json b/tools/node_modules/eslint/node_modules/ms/package.json similarity index 100% rename from tools/eslint/node_modules/ms/package.json rename to tools/node_modules/eslint/node_modules/ms/package.json diff --git a/tools/eslint/node_modules/mute-stream/.nyc_output/33508.json b/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33508.json similarity index 100% rename from tools/eslint/node_modules/mute-stream/.nyc_output/33508.json rename to tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33508.json diff --git a/tools/eslint/node_modules/mute-stream/.nyc_output/33510.json b/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33510.json similarity index 100% rename from tools/eslint/node_modules/mute-stream/.nyc_output/33510.json rename to tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33510.json diff --git a/tools/eslint/node_modules/mute-stream/LICENSE b/tools/node_modules/eslint/node_modules/mute-stream/LICENSE similarity index 100% rename from tools/eslint/node_modules/mute-stream/LICENSE rename to tools/node_modules/eslint/node_modules/mute-stream/LICENSE diff --git a/tools/eslint/node_modules/mute-stream/README.md b/tools/node_modules/eslint/node_modules/mute-stream/README.md similarity index 100% rename from tools/eslint/node_modules/mute-stream/README.md rename to tools/node_modules/eslint/node_modules/mute-stream/README.md diff --git a/tools/eslint/node_modules/mute-stream/mute.js b/tools/node_modules/eslint/node_modules/mute-stream/mute.js similarity index 100% rename from tools/eslint/node_modules/mute-stream/mute.js rename to tools/node_modules/eslint/node_modules/mute-stream/mute.js diff --git a/tools/eslint/node_modules/mute-stream/package.json b/tools/node_modules/eslint/node_modules/mute-stream/package.json similarity index 100% rename from tools/eslint/node_modules/mute-stream/package.json rename to tools/node_modules/eslint/node_modules/mute-stream/package.json diff --git a/tools/eslint/node_modules/natural-compare/README.md b/tools/node_modules/eslint/node_modules/natural-compare/README.md similarity index 100% rename from tools/eslint/node_modules/natural-compare/README.md rename to tools/node_modules/eslint/node_modules/natural-compare/README.md diff --git a/tools/eslint/node_modules/natural-compare/index.js b/tools/node_modules/eslint/node_modules/natural-compare/index.js similarity index 100% rename from tools/eslint/node_modules/natural-compare/index.js rename to tools/node_modules/eslint/node_modules/natural-compare/index.js diff --git a/tools/eslint/node_modules/natural-compare/package.json b/tools/node_modules/eslint/node_modules/natural-compare/package.json similarity index 100% rename from tools/eslint/node_modules/natural-compare/package.json rename to tools/node_modules/eslint/node_modules/natural-compare/package.json diff --git a/tools/eslint/node_modules/object-assign/index.js b/tools/node_modules/eslint/node_modules/object-assign/index.js similarity index 100% rename from tools/eslint/node_modules/object-assign/index.js rename to tools/node_modules/eslint/node_modules/object-assign/index.js diff --git a/tools/eslint/node_modules/object-assign/license b/tools/node_modules/eslint/node_modules/object-assign/license similarity index 100% rename from tools/eslint/node_modules/object-assign/license rename to tools/node_modules/eslint/node_modules/object-assign/license diff --git a/tools/eslint/node_modules/object-assign/package.json b/tools/node_modules/eslint/node_modules/object-assign/package.json similarity index 100% rename from tools/eslint/node_modules/object-assign/package.json rename to tools/node_modules/eslint/node_modules/object-assign/package.json diff --git a/tools/eslint/node_modules/object-assign/readme.md b/tools/node_modules/eslint/node_modules/object-assign/readme.md similarity index 100% rename from tools/eslint/node_modules/object-assign/readme.md rename to tools/node_modules/eslint/node_modules/object-assign/readme.md diff --git a/tools/eslint/node_modules/once/LICENSE b/tools/node_modules/eslint/node_modules/once/LICENSE similarity index 100% rename from tools/eslint/node_modules/once/LICENSE rename to tools/node_modules/eslint/node_modules/once/LICENSE diff --git a/tools/eslint/node_modules/once/README.md b/tools/node_modules/eslint/node_modules/once/README.md similarity index 100% rename from tools/eslint/node_modules/once/README.md rename to tools/node_modules/eslint/node_modules/once/README.md diff --git a/tools/eslint/node_modules/once/once.js b/tools/node_modules/eslint/node_modules/once/once.js similarity index 100% rename from tools/eslint/node_modules/once/once.js rename to tools/node_modules/eslint/node_modules/once/once.js diff --git a/tools/eslint/node_modules/once/package.json b/tools/node_modules/eslint/node_modules/once/package.json similarity index 100% rename from tools/eslint/node_modules/once/package.json rename to tools/node_modules/eslint/node_modules/once/package.json diff --git a/tools/eslint/node_modules/onetime/index.js b/tools/node_modules/eslint/node_modules/onetime/index.js similarity index 100% rename from tools/eslint/node_modules/onetime/index.js rename to tools/node_modules/eslint/node_modules/onetime/index.js diff --git a/tools/eslint/node_modules/onetime/license b/tools/node_modules/eslint/node_modules/onetime/license similarity index 100% rename from tools/eslint/node_modules/onetime/license rename to tools/node_modules/eslint/node_modules/onetime/license diff --git a/tools/eslint/node_modules/onetime/package.json b/tools/node_modules/eslint/node_modules/onetime/package.json similarity index 100% rename from tools/eslint/node_modules/onetime/package.json rename to tools/node_modules/eslint/node_modules/onetime/package.json diff --git a/tools/eslint/node_modules/onetime/readme.md b/tools/node_modules/eslint/node_modules/onetime/readme.md similarity index 100% rename from tools/eslint/node_modules/onetime/readme.md rename to tools/node_modules/eslint/node_modules/onetime/readme.md diff --git a/tools/eslint/node_modules/optionator/LICENSE b/tools/node_modules/eslint/node_modules/optionator/LICENSE similarity index 100% rename from tools/eslint/node_modules/optionator/LICENSE rename to tools/node_modules/eslint/node_modules/optionator/LICENSE diff --git a/tools/eslint/node_modules/optionator/README.md b/tools/node_modules/eslint/node_modules/optionator/README.md similarity index 100% rename from tools/eslint/node_modules/optionator/README.md rename to tools/node_modules/eslint/node_modules/optionator/README.md diff --git a/tools/eslint/node_modules/optionator/lib/help.js b/tools/node_modules/eslint/node_modules/optionator/lib/help.js similarity index 100% rename from tools/eslint/node_modules/optionator/lib/help.js rename to tools/node_modules/eslint/node_modules/optionator/lib/help.js diff --git a/tools/eslint/node_modules/optionator/lib/index.js b/tools/node_modules/eslint/node_modules/optionator/lib/index.js similarity index 100% rename from tools/eslint/node_modules/optionator/lib/index.js rename to tools/node_modules/eslint/node_modules/optionator/lib/index.js diff --git a/tools/eslint/node_modules/optionator/lib/util.js b/tools/node_modules/eslint/node_modules/optionator/lib/util.js similarity index 100% rename from tools/eslint/node_modules/optionator/lib/util.js rename to tools/node_modules/eslint/node_modules/optionator/lib/util.js diff --git a/tools/eslint/node_modules/optionator/package.json b/tools/node_modules/eslint/node_modules/optionator/package.json similarity index 100% rename from tools/eslint/node_modules/optionator/package.json rename to tools/node_modules/eslint/node_modules/optionator/package.json diff --git a/tools/eslint/node_modules/os-tmpdir/index.js b/tools/node_modules/eslint/node_modules/os-tmpdir/index.js similarity index 100% rename from tools/eslint/node_modules/os-tmpdir/index.js rename to tools/node_modules/eslint/node_modules/os-tmpdir/index.js diff --git a/tools/eslint/node_modules/os-tmpdir/license b/tools/node_modules/eslint/node_modules/os-tmpdir/license similarity index 100% rename from tools/eslint/node_modules/os-tmpdir/license rename to tools/node_modules/eslint/node_modules/os-tmpdir/license diff --git a/tools/eslint/node_modules/os-tmpdir/package.json b/tools/node_modules/eslint/node_modules/os-tmpdir/package.json similarity index 100% rename from tools/eslint/node_modules/os-tmpdir/package.json rename to tools/node_modules/eslint/node_modules/os-tmpdir/package.json diff --git a/tools/eslint/node_modules/os-tmpdir/readme.md b/tools/node_modules/eslint/node_modules/os-tmpdir/readme.md similarity index 100% rename from tools/eslint/node_modules/os-tmpdir/readme.md rename to tools/node_modules/eslint/node_modules/os-tmpdir/readme.md diff --git a/tools/eslint/node_modules/parse-entities/LICENSE b/tools/node_modules/eslint/node_modules/parse-entities/LICENSE similarity index 100% rename from tools/eslint/node_modules/parse-entities/LICENSE rename to tools/node_modules/eslint/node_modules/parse-entities/LICENSE diff --git a/tools/eslint/node_modules/parse-entities/index.js b/tools/node_modules/eslint/node_modules/parse-entities/index.js similarity index 100% rename from tools/eslint/node_modules/parse-entities/index.js rename to tools/node_modules/eslint/node_modules/parse-entities/index.js diff --git a/tools/eslint/node_modules/parse-entities/package.json b/tools/node_modules/eslint/node_modules/parse-entities/package.json similarity index 100% rename from tools/eslint/node_modules/parse-entities/package.json rename to tools/node_modules/eslint/node_modules/parse-entities/package.json diff --git a/tools/eslint/node_modules/parse-entities/readme.md b/tools/node_modules/eslint/node_modules/parse-entities/readme.md similarity index 100% rename from tools/eslint/node_modules/parse-entities/readme.md rename to tools/node_modules/eslint/node_modules/parse-entities/readme.md diff --git a/tools/eslint/node_modules/path-is-absolute/index.js b/tools/node_modules/eslint/node_modules/path-is-absolute/index.js similarity index 100% rename from tools/eslint/node_modules/path-is-absolute/index.js rename to tools/node_modules/eslint/node_modules/path-is-absolute/index.js diff --git a/tools/eslint/node_modules/path-is-absolute/license b/tools/node_modules/eslint/node_modules/path-is-absolute/license similarity index 100% rename from tools/eslint/node_modules/path-is-absolute/license rename to tools/node_modules/eslint/node_modules/path-is-absolute/license diff --git a/tools/eslint/node_modules/path-is-absolute/package.json b/tools/node_modules/eslint/node_modules/path-is-absolute/package.json similarity index 100% rename from tools/eslint/node_modules/path-is-absolute/package.json rename to tools/node_modules/eslint/node_modules/path-is-absolute/package.json diff --git a/tools/eslint/node_modules/path-is-absolute/readme.md b/tools/node_modules/eslint/node_modules/path-is-absolute/readme.md similarity index 100% rename from tools/eslint/node_modules/path-is-absolute/readme.md rename to tools/node_modules/eslint/node_modules/path-is-absolute/readme.md diff --git a/tools/eslint/node_modules/path-is-inside/LICENSE.txt b/tools/node_modules/eslint/node_modules/path-is-inside/LICENSE.txt similarity index 100% rename from tools/eslint/node_modules/path-is-inside/LICENSE.txt rename to tools/node_modules/eslint/node_modules/path-is-inside/LICENSE.txt diff --git a/tools/eslint/node_modules/path-is-inside/lib/path-is-inside.js b/tools/node_modules/eslint/node_modules/path-is-inside/lib/path-is-inside.js similarity index 100% rename from tools/eslint/node_modules/path-is-inside/lib/path-is-inside.js rename to tools/node_modules/eslint/node_modules/path-is-inside/lib/path-is-inside.js diff --git a/tools/eslint/node_modules/path-is-inside/package.json b/tools/node_modules/eslint/node_modules/path-is-inside/package.json similarity index 100% rename from tools/eslint/node_modules/path-is-inside/package.json rename to tools/node_modules/eslint/node_modules/path-is-inside/package.json diff --git a/tools/eslint/node_modules/pify/index.js b/tools/node_modules/eslint/node_modules/pify/index.js similarity index 100% rename from tools/eslint/node_modules/pify/index.js rename to tools/node_modules/eslint/node_modules/pify/index.js diff --git a/tools/eslint/node_modules/pify/license b/tools/node_modules/eslint/node_modules/pify/license similarity index 100% rename from tools/eslint/node_modules/pify/license rename to tools/node_modules/eslint/node_modules/pify/license diff --git a/tools/eslint/node_modules/pify/package.json b/tools/node_modules/eslint/node_modules/pify/package.json similarity index 100% rename from tools/eslint/node_modules/pify/package.json rename to tools/node_modules/eslint/node_modules/pify/package.json diff --git a/tools/eslint/node_modules/pify/readme.md b/tools/node_modules/eslint/node_modules/pify/readme.md similarity index 100% rename from tools/eslint/node_modules/pify/readme.md rename to tools/node_modules/eslint/node_modules/pify/readme.md diff --git a/tools/eslint/node_modules/pinkie-promise/index.js b/tools/node_modules/eslint/node_modules/pinkie-promise/index.js similarity index 100% rename from tools/eslint/node_modules/pinkie-promise/index.js rename to tools/node_modules/eslint/node_modules/pinkie-promise/index.js diff --git a/tools/eslint/node_modules/pinkie-promise/license b/tools/node_modules/eslint/node_modules/pinkie-promise/license similarity index 100% rename from tools/eslint/node_modules/pinkie-promise/license rename to tools/node_modules/eslint/node_modules/pinkie-promise/license diff --git a/tools/eslint/node_modules/pinkie-promise/package.json b/tools/node_modules/eslint/node_modules/pinkie-promise/package.json similarity index 100% rename from tools/eslint/node_modules/pinkie-promise/package.json rename to tools/node_modules/eslint/node_modules/pinkie-promise/package.json diff --git a/tools/eslint/node_modules/pinkie-promise/readme.md b/tools/node_modules/eslint/node_modules/pinkie-promise/readme.md similarity index 100% rename from tools/eslint/node_modules/pinkie-promise/readme.md rename to tools/node_modules/eslint/node_modules/pinkie-promise/readme.md diff --git a/tools/eslint/node_modules/pinkie/index.js b/tools/node_modules/eslint/node_modules/pinkie/index.js similarity index 100% rename from tools/eslint/node_modules/pinkie/index.js rename to tools/node_modules/eslint/node_modules/pinkie/index.js diff --git a/tools/eslint/node_modules/pinkie/license b/tools/node_modules/eslint/node_modules/pinkie/license similarity index 100% rename from tools/eslint/node_modules/pinkie/license rename to tools/node_modules/eslint/node_modules/pinkie/license diff --git a/tools/eslint/node_modules/pinkie/package.json b/tools/node_modules/eslint/node_modules/pinkie/package.json similarity index 100% rename from tools/eslint/node_modules/pinkie/package.json rename to tools/node_modules/eslint/node_modules/pinkie/package.json diff --git a/tools/eslint/node_modules/pinkie/readme.md b/tools/node_modules/eslint/node_modules/pinkie/readme.md similarity index 100% rename from tools/eslint/node_modules/pinkie/readme.md rename to tools/node_modules/eslint/node_modules/pinkie/readme.md diff --git a/tools/eslint/node_modules/pluralize/LICENSE b/tools/node_modules/eslint/node_modules/pluralize/LICENSE similarity index 100% rename from tools/eslint/node_modules/pluralize/LICENSE rename to tools/node_modules/eslint/node_modules/pluralize/LICENSE diff --git a/tools/eslint/node_modules/pluralize/Readme.md b/tools/node_modules/eslint/node_modules/pluralize/Readme.md similarity index 100% rename from tools/eslint/node_modules/pluralize/Readme.md rename to tools/node_modules/eslint/node_modules/pluralize/Readme.md diff --git a/tools/eslint/node_modules/pluralize/package.json b/tools/node_modules/eslint/node_modules/pluralize/package.json similarity index 100% rename from tools/eslint/node_modules/pluralize/package.json rename to tools/node_modules/eslint/node_modules/pluralize/package.json diff --git a/tools/eslint/node_modules/pluralize/pluralize.js b/tools/node_modules/eslint/node_modules/pluralize/pluralize.js similarity index 100% rename from tools/eslint/node_modules/pluralize/pluralize.js rename to tools/node_modules/eslint/node_modules/pluralize/pluralize.js diff --git a/tools/eslint/node_modules/prelude-ls/LICENSE b/tools/node_modules/eslint/node_modules/prelude-ls/LICENSE similarity index 100% rename from tools/eslint/node_modules/prelude-ls/LICENSE rename to tools/node_modules/eslint/node_modules/prelude-ls/LICENSE diff --git a/tools/eslint/node_modules/prelude-ls/README.md b/tools/node_modules/eslint/node_modules/prelude-ls/README.md similarity index 100% rename from tools/eslint/node_modules/prelude-ls/README.md rename to tools/node_modules/eslint/node_modules/prelude-ls/README.md diff --git a/tools/eslint/node_modules/prelude-ls/lib/Func.js b/tools/node_modules/eslint/node_modules/prelude-ls/lib/Func.js similarity index 100% rename from tools/eslint/node_modules/prelude-ls/lib/Func.js rename to tools/node_modules/eslint/node_modules/prelude-ls/lib/Func.js diff --git a/tools/eslint/node_modules/prelude-ls/lib/List.js b/tools/node_modules/eslint/node_modules/prelude-ls/lib/List.js similarity index 100% rename from tools/eslint/node_modules/prelude-ls/lib/List.js rename to tools/node_modules/eslint/node_modules/prelude-ls/lib/List.js diff --git a/tools/eslint/node_modules/prelude-ls/lib/Num.js b/tools/node_modules/eslint/node_modules/prelude-ls/lib/Num.js similarity index 100% rename from tools/eslint/node_modules/prelude-ls/lib/Num.js rename to tools/node_modules/eslint/node_modules/prelude-ls/lib/Num.js diff --git a/tools/eslint/node_modules/prelude-ls/lib/Obj.js b/tools/node_modules/eslint/node_modules/prelude-ls/lib/Obj.js similarity index 100% rename from tools/eslint/node_modules/prelude-ls/lib/Obj.js rename to tools/node_modules/eslint/node_modules/prelude-ls/lib/Obj.js diff --git a/tools/eslint/node_modules/prelude-ls/lib/Str.js b/tools/node_modules/eslint/node_modules/prelude-ls/lib/Str.js similarity index 100% rename from tools/eslint/node_modules/prelude-ls/lib/Str.js rename to tools/node_modules/eslint/node_modules/prelude-ls/lib/Str.js diff --git a/tools/eslint/node_modules/prelude-ls/lib/index.js b/tools/node_modules/eslint/node_modules/prelude-ls/lib/index.js similarity index 100% rename from tools/eslint/node_modules/prelude-ls/lib/index.js rename to tools/node_modules/eslint/node_modules/prelude-ls/lib/index.js diff --git a/tools/eslint/node_modules/prelude-ls/package.json b/tools/node_modules/eslint/node_modules/prelude-ls/package.json similarity index 100% rename from tools/eslint/node_modules/prelude-ls/package.json rename to tools/node_modules/eslint/node_modules/prelude-ls/package.json diff --git a/tools/eslint/node_modules/process-nextick-args/index.js b/tools/node_modules/eslint/node_modules/process-nextick-args/index.js similarity index 100% rename from tools/eslint/node_modules/process-nextick-args/index.js rename to tools/node_modules/eslint/node_modules/process-nextick-args/index.js diff --git a/tools/eslint/node_modules/process-nextick-args/license.md b/tools/node_modules/eslint/node_modules/process-nextick-args/license.md similarity index 100% rename from tools/eslint/node_modules/process-nextick-args/license.md rename to tools/node_modules/eslint/node_modules/process-nextick-args/license.md diff --git a/tools/eslint/node_modules/process-nextick-args/package.json b/tools/node_modules/eslint/node_modules/process-nextick-args/package.json similarity index 100% rename from tools/eslint/node_modules/process-nextick-args/package.json rename to tools/node_modules/eslint/node_modules/process-nextick-args/package.json diff --git a/tools/eslint/node_modules/process-nextick-args/readme.md b/tools/node_modules/eslint/node_modules/process-nextick-args/readme.md similarity index 100% rename from tools/eslint/node_modules/process-nextick-args/readme.md rename to tools/node_modules/eslint/node_modules/process-nextick-args/readme.md diff --git a/tools/eslint/node_modules/progress/LICENSE b/tools/node_modules/eslint/node_modules/progress/LICENSE similarity index 100% rename from tools/eslint/node_modules/progress/LICENSE rename to tools/node_modules/eslint/node_modules/progress/LICENSE diff --git a/tools/eslint/node_modules/progress/Makefile b/tools/node_modules/eslint/node_modules/progress/Makefile similarity index 100% rename from tools/eslint/node_modules/progress/Makefile rename to tools/node_modules/eslint/node_modules/progress/Makefile diff --git a/tools/eslint/node_modules/progress/Readme.md b/tools/node_modules/eslint/node_modules/progress/Readme.md similarity index 100% rename from tools/eslint/node_modules/progress/Readme.md rename to tools/node_modules/eslint/node_modules/progress/Readme.md diff --git a/tools/eslint/node_modules/progress/index.js b/tools/node_modules/eslint/node_modules/progress/index.js similarity index 100% rename from tools/eslint/node_modules/progress/index.js rename to tools/node_modules/eslint/node_modules/progress/index.js diff --git a/tools/eslint/node_modules/progress/lib/node-progress.js b/tools/node_modules/eslint/node_modules/progress/lib/node-progress.js similarity index 100% rename from tools/eslint/node_modules/progress/lib/node-progress.js rename to tools/node_modules/eslint/node_modules/progress/lib/node-progress.js diff --git a/tools/eslint/node_modules/progress/package.json b/tools/node_modules/eslint/node_modules/progress/package.json similarity index 100% rename from tools/eslint/node_modules/progress/package.json rename to tools/node_modules/eslint/node_modules/progress/package.json diff --git a/tools/eslint/node_modules/pseudomap/LICENSE b/tools/node_modules/eslint/node_modules/pseudomap/LICENSE similarity index 100% rename from tools/eslint/node_modules/pseudomap/LICENSE rename to tools/node_modules/eslint/node_modules/pseudomap/LICENSE diff --git a/tools/eslint/node_modules/pseudomap/README.md b/tools/node_modules/eslint/node_modules/pseudomap/README.md similarity index 100% rename from tools/eslint/node_modules/pseudomap/README.md rename to tools/node_modules/eslint/node_modules/pseudomap/README.md diff --git a/tools/eslint/node_modules/pseudomap/map.js b/tools/node_modules/eslint/node_modules/pseudomap/map.js similarity index 100% rename from tools/eslint/node_modules/pseudomap/map.js rename to tools/node_modules/eslint/node_modules/pseudomap/map.js diff --git a/tools/eslint/node_modules/pseudomap/package.json b/tools/node_modules/eslint/node_modules/pseudomap/package.json similarity index 100% rename from tools/eslint/node_modules/pseudomap/package.json rename to tools/node_modules/eslint/node_modules/pseudomap/package.json diff --git a/tools/eslint/node_modules/pseudomap/pseudomap.js b/tools/node_modules/eslint/node_modules/pseudomap/pseudomap.js similarity index 100% rename from tools/eslint/node_modules/pseudomap/pseudomap.js rename to tools/node_modules/eslint/node_modules/pseudomap/pseudomap.js diff --git a/tools/eslint/node_modules/readable-stream/GOVERNANCE.md b/tools/node_modules/eslint/node_modules/readable-stream/GOVERNANCE.md similarity index 100% rename from tools/eslint/node_modules/readable-stream/GOVERNANCE.md rename to tools/node_modules/eslint/node_modules/readable-stream/GOVERNANCE.md diff --git a/tools/eslint/node_modules/readable-stream/LICENSE b/tools/node_modules/eslint/node_modules/readable-stream/LICENSE similarity index 100% rename from tools/eslint/node_modules/readable-stream/LICENSE rename to tools/node_modules/eslint/node_modules/readable-stream/LICENSE diff --git a/tools/eslint/node_modules/readable-stream/README.md b/tools/node_modules/eslint/node_modules/readable-stream/README.md similarity index 100% rename from tools/eslint/node_modules/readable-stream/README.md rename to tools/node_modules/eslint/node_modules/readable-stream/README.md diff --git a/tools/eslint/node_modules/readable-stream/duplex-browser.js b/tools/node_modules/eslint/node_modules/readable-stream/duplex-browser.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/duplex-browser.js rename to tools/node_modules/eslint/node_modules/readable-stream/duplex-browser.js diff --git a/tools/eslint/node_modules/readable-stream/duplex.js b/tools/node_modules/eslint/node_modules/readable-stream/duplex.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/duplex.js rename to tools/node_modules/eslint/node_modules/readable-stream/duplex.js diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_duplex.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_duplex.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/_stream_duplex.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_duplex.js diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_passthrough.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_passthrough.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/_stream_passthrough.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_passthrough.js diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_readable.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_readable.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/_stream_readable.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_readable.js diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_transform.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_transform.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/_stream_transform.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_transform.js diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_writable.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_writable.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/_stream_writable.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/_stream_writable.js diff --git a/tools/eslint/node_modules/readable-stream/lib/internal/streams/BufferList.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/BufferList.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/internal/streams/BufferList.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/BufferList.js diff --git a/tools/eslint/node_modules/readable-stream/lib/internal/streams/destroy.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/destroy.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/internal/streams/destroy.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/destroy.js diff --git a/tools/eslint/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/stream-browser.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/internal/streams/stream-browser.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/stream-browser.js diff --git a/tools/eslint/node_modules/readable-stream/lib/internal/streams/stream.js b/tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/stream.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/lib/internal/streams/stream.js rename to tools/node_modules/eslint/node_modules/readable-stream/lib/internal/streams/stream.js diff --git a/tools/eslint/node_modules/readable-stream/package.json b/tools/node_modules/eslint/node_modules/readable-stream/package.json similarity index 100% rename from tools/eslint/node_modules/readable-stream/package.json rename to tools/node_modules/eslint/node_modules/readable-stream/package.json diff --git a/tools/eslint/node_modules/readable-stream/passthrough.js b/tools/node_modules/eslint/node_modules/readable-stream/passthrough.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/passthrough.js rename to tools/node_modules/eslint/node_modules/readable-stream/passthrough.js diff --git a/tools/eslint/node_modules/readable-stream/readable-browser.js b/tools/node_modules/eslint/node_modules/readable-stream/readable-browser.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/readable-browser.js rename to tools/node_modules/eslint/node_modules/readable-stream/readable-browser.js diff --git a/tools/eslint/node_modules/readable-stream/readable.js b/tools/node_modules/eslint/node_modules/readable-stream/readable.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/readable.js rename to tools/node_modules/eslint/node_modules/readable-stream/readable.js diff --git a/tools/eslint/node_modules/readable-stream/transform.js b/tools/node_modules/eslint/node_modules/readable-stream/transform.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/transform.js rename to tools/node_modules/eslint/node_modules/readable-stream/transform.js diff --git a/tools/eslint/node_modules/readable-stream/writable-browser.js b/tools/node_modules/eslint/node_modules/readable-stream/writable-browser.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/writable-browser.js rename to tools/node_modules/eslint/node_modules/readable-stream/writable-browser.js diff --git a/tools/eslint/node_modules/readable-stream/writable.js b/tools/node_modules/eslint/node_modules/readable-stream/writable.js similarity index 100% rename from tools/eslint/node_modules/readable-stream/writable.js rename to tools/node_modules/eslint/node_modules/readable-stream/writable.js diff --git a/tools/eslint/node_modules/remark-parse/index.js b/tools/node_modules/eslint/node_modules/remark-parse/index.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/index.js rename to tools/node_modules/eslint/node_modules/remark-parse/index.js diff --git a/tools/eslint/node_modules/remark-parse/lib/block-elements.json b/tools/node_modules/eslint/node_modules/remark-parse/lib/block-elements.json similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/block-elements.json rename to tools/node_modules/eslint/node_modules/remark-parse/lib/block-elements.json diff --git a/tools/eslint/node_modules/remark-parse/lib/decode.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/decode.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/decode.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/decode.js diff --git a/tools/eslint/node_modules/remark-parse/lib/defaults.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/defaults.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/defaults.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/defaults.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/break.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/break.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/break.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/break.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/code-inline.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/code-inline.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/code-inline.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/code-inline.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/delete.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/delete.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/delete.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/delete.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/emphasis.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/emphasis.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/emphasis.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/emphasis.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/escape.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/escape.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/escape.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/escape.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/link.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/link.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/link.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/link.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/strong.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/strong.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/strong.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/strong.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/tag.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/tag.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/tag.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/tag.js diff --git a/tools/eslint/node_modules/remark-parse/lib/locate/url.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/locate/url.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/locate/url.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/locate/url.js diff --git a/tools/eslint/node_modules/remark-parse/lib/parse.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/parse.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/parse.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/parse.js diff --git a/tools/eslint/node_modules/remark-parse/lib/parser.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/parser.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/parser.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/parser.js diff --git a/tools/eslint/node_modules/remark-parse/lib/set-options.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/set-options.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/set-options.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/set-options.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/auto-link.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/auto-link.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/auto-link.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/auto-link.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/blockquote.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/blockquote.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/blockquote.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/blockquote.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/break.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/break.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/break.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/break.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/code-fenced.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/code-fenced.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/code-fenced.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/code-fenced.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/code-indented.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/code-indented.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/code-indented.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/code-indented.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/code-inline.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/code-inline.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/code-inline.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/code-inline.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/definition.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/definition.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/definition.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/definition.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/delete.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/delete.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/delete.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/delete.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/emphasis.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/emphasis.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/emphasis.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/emphasis.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/escape.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/escape.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/escape.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/escape.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/footnote-definition.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/footnote-definition.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/footnote-definition.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/footnote-definition.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/heading-atx.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/heading-atx.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/heading-atx.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/heading-atx.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/heading-setext.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/heading-setext.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/heading-setext.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/heading-setext.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/html-block.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-block.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/html-block.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-block.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/link.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/link.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/link.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/link.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/list.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/list.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/list.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/list.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/newline.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/newline.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/newline.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/newline.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/paragraph.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/paragraph.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/paragraph.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/paragraph.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/reference.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/reference.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/reference.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/reference.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/strong.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/strong.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/strong.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/strong.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/table.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/table.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/table.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/table.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/text.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/text.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/text.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/text.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/thematic-break.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/thematic-break.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/thematic-break.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/thematic-break.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/url.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/url.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/url.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/url.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenize/yaml.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/yaml.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenize/yaml.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/yaml.js diff --git a/tools/eslint/node_modules/remark-parse/lib/tokenizer.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenizer.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/tokenizer.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/tokenizer.js diff --git a/tools/eslint/node_modules/remark-parse/lib/unescape.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/unescape.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/unescape.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/unescape.js diff --git a/tools/eslint/node_modules/remark-parse/lib/util/get-indentation.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/util/get-indentation.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/util/get-indentation.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/util/get-indentation.js diff --git a/tools/eslint/node_modules/remark-parse/lib/util/html.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/util/html.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/util/html.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/util/html.js diff --git a/tools/eslint/node_modules/remark-parse/lib/util/interrupt.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/util/interrupt.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/util/interrupt.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/util/interrupt.js diff --git a/tools/eslint/node_modules/remark-parse/lib/util/normalize.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/util/normalize.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/util/normalize.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/util/normalize.js diff --git a/tools/eslint/node_modules/remark-parse/lib/util/remove-indentation.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/util/remove-indentation.js similarity index 100% rename from tools/eslint/node_modules/remark-parse/lib/util/remove-indentation.js rename to tools/node_modules/eslint/node_modules/remark-parse/lib/util/remove-indentation.js diff --git a/tools/eslint/node_modules/remark-parse/package.json b/tools/node_modules/eslint/node_modules/remark-parse/package.json similarity index 100% rename from tools/eslint/node_modules/remark-parse/package.json rename to tools/node_modules/eslint/node_modules/remark-parse/package.json diff --git a/tools/eslint/node_modules/remark-parse/readme.md b/tools/node_modules/eslint/node_modules/remark-parse/readme.md similarity index 100% rename from tools/eslint/node_modules/remark-parse/readme.md rename to tools/node_modules/eslint/node_modules/remark-parse/readme.md diff --git a/tools/eslint/node_modules/repeat-string/LICENSE b/tools/node_modules/eslint/node_modules/repeat-string/LICENSE similarity index 100% rename from tools/eslint/node_modules/repeat-string/LICENSE rename to tools/node_modules/eslint/node_modules/repeat-string/LICENSE diff --git a/tools/eslint/node_modules/repeat-string/README.md b/tools/node_modules/eslint/node_modules/repeat-string/README.md similarity index 100% rename from tools/eslint/node_modules/repeat-string/README.md rename to tools/node_modules/eslint/node_modules/repeat-string/README.md diff --git a/tools/eslint/node_modules/repeat-string/index.js b/tools/node_modules/eslint/node_modules/repeat-string/index.js similarity index 100% rename from tools/eslint/node_modules/repeat-string/index.js rename to tools/node_modules/eslint/node_modules/repeat-string/index.js diff --git a/tools/eslint/node_modules/repeat-string/package.json b/tools/node_modules/eslint/node_modules/repeat-string/package.json similarity index 100% rename from tools/eslint/node_modules/repeat-string/package.json rename to tools/node_modules/eslint/node_modules/repeat-string/package.json diff --git a/tools/eslint/node_modules/replace-ext/LICENSE b/tools/node_modules/eslint/node_modules/replace-ext/LICENSE similarity index 100% rename from tools/eslint/node_modules/replace-ext/LICENSE rename to tools/node_modules/eslint/node_modules/replace-ext/LICENSE diff --git a/tools/eslint/node_modules/replace-ext/README.md b/tools/node_modules/eslint/node_modules/replace-ext/README.md similarity index 100% rename from tools/eslint/node_modules/replace-ext/README.md rename to tools/node_modules/eslint/node_modules/replace-ext/README.md diff --git a/tools/eslint/node_modules/replace-ext/index.js b/tools/node_modules/eslint/node_modules/replace-ext/index.js similarity index 100% rename from tools/eslint/node_modules/replace-ext/index.js rename to tools/node_modules/eslint/node_modules/replace-ext/index.js diff --git a/tools/eslint/node_modules/replace-ext/package.json b/tools/node_modules/eslint/node_modules/replace-ext/package.json similarity index 100% rename from tools/eslint/node_modules/replace-ext/package.json rename to tools/node_modules/eslint/node_modules/replace-ext/package.json diff --git a/tools/eslint/node_modules/require-uncached/index.js b/tools/node_modules/eslint/node_modules/require-uncached/index.js similarity index 100% rename from tools/eslint/node_modules/require-uncached/index.js rename to tools/node_modules/eslint/node_modules/require-uncached/index.js diff --git a/tools/eslint/node_modules/require-uncached/license b/tools/node_modules/eslint/node_modules/require-uncached/license similarity index 100% rename from tools/eslint/node_modules/require-uncached/license rename to tools/node_modules/eslint/node_modules/require-uncached/license diff --git a/tools/eslint/node_modules/require-uncached/package.json b/tools/node_modules/eslint/node_modules/require-uncached/package.json similarity index 100% rename from tools/eslint/node_modules/require-uncached/package.json rename to tools/node_modules/eslint/node_modules/require-uncached/package.json diff --git a/tools/eslint/node_modules/require-uncached/readme.md b/tools/node_modules/eslint/node_modules/require-uncached/readme.md similarity index 100% rename from tools/eslint/node_modules/require-uncached/readme.md rename to tools/node_modules/eslint/node_modules/require-uncached/readme.md diff --git a/tools/eslint/node_modules/resolve-from/index.js b/tools/node_modules/eslint/node_modules/resolve-from/index.js similarity index 100% rename from tools/eslint/node_modules/resolve-from/index.js rename to tools/node_modules/eslint/node_modules/resolve-from/index.js diff --git a/tools/eslint/node_modules/resolve-from/license b/tools/node_modules/eslint/node_modules/resolve-from/license similarity index 100% rename from tools/eslint/node_modules/resolve-from/license rename to tools/node_modules/eslint/node_modules/resolve-from/license diff --git a/tools/eslint/node_modules/resolve-from/package.json b/tools/node_modules/eslint/node_modules/resolve-from/package.json similarity index 100% rename from tools/eslint/node_modules/resolve-from/package.json rename to tools/node_modules/eslint/node_modules/resolve-from/package.json diff --git a/tools/eslint/node_modules/resolve-from/readme.md b/tools/node_modules/eslint/node_modules/resolve-from/readme.md similarity index 100% rename from tools/eslint/node_modules/resolve-from/readme.md rename to tools/node_modules/eslint/node_modules/resolve-from/readme.md diff --git a/tools/eslint/node_modules/restore-cursor/index.js b/tools/node_modules/eslint/node_modules/restore-cursor/index.js similarity index 100% rename from tools/eslint/node_modules/restore-cursor/index.js rename to tools/node_modules/eslint/node_modules/restore-cursor/index.js diff --git a/tools/eslint/node_modules/restore-cursor/license b/tools/node_modules/eslint/node_modules/restore-cursor/license similarity index 100% rename from tools/eslint/node_modules/restore-cursor/license rename to tools/node_modules/eslint/node_modules/restore-cursor/license diff --git a/tools/eslint/node_modules/restore-cursor/package.json b/tools/node_modules/eslint/node_modules/restore-cursor/package.json similarity index 100% rename from tools/eslint/node_modules/restore-cursor/package.json rename to tools/node_modules/eslint/node_modules/restore-cursor/package.json diff --git a/tools/eslint/node_modules/restore-cursor/readme.md b/tools/node_modules/eslint/node_modules/restore-cursor/readme.md similarity index 100% rename from tools/eslint/node_modules/restore-cursor/readme.md rename to tools/node_modules/eslint/node_modules/restore-cursor/readme.md diff --git a/tools/eslint/node_modules/rimraf/LICENSE b/tools/node_modules/eslint/node_modules/rimraf/LICENSE similarity index 100% rename from tools/eslint/node_modules/rimraf/LICENSE rename to tools/node_modules/eslint/node_modules/rimraf/LICENSE diff --git a/tools/eslint/node_modules/rimraf/README.md b/tools/node_modules/eslint/node_modules/rimraf/README.md similarity index 100% rename from tools/eslint/node_modules/rimraf/README.md rename to tools/node_modules/eslint/node_modules/rimraf/README.md diff --git a/tools/eslint/node_modules/rimraf/bin.js b/tools/node_modules/eslint/node_modules/rimraf/bin.js similarity index 100% rename from tools/eslint/node_modules/rimraf/bin.js rename to tools/node_modules/eslint/node_modules/rimraf/bin.js diff --git a/tools/eslint/node_modules/rimraf/package.json b/tools/node_modules/eslint/node_modules/rimraf/package.json similarity index 100% rename from tools/eslint/node_modules/rimraf/package.json rename to tools/node_modules/eslint/node_modules/rimraf/package.json diff --git a/tools/eslint/node_modules/rimraf/rimraf.js b/tools/node_modules/eslint/node_modules/rimraf/rimraf.js similarity index 100% rename from tools/eslint/node_modules/rimraf/rimraf.js rename to tools/node_modules/eslint/node_modules/rimraf/rimraf.js diff --git a/tools/eslint/node_modules/run-async/LICENSE b/tools/node_modules/eslint/node_modules/run-async/LICENSE similarity index 100% rename from tools/eslint/node_modules/run-async/LICENSE rename to tools/node_modules/eslint/node_modules/run-async/LICENSE diff --git a/tools/eslint/node_modules/run-async/README.md b/tools/node_modules/eslint/node_modules/run-async/README.md similarity index 100% rename from tools/eslint/node_modules/run-async/README.md rename to tools/node_modules/eslint/node_modules/run-async/README.md diff --git a/tools/eslint/node_modules/run-async/index.js b/tools/node_modules/eslint/node_modules/run-async/index.js similarity index 100% rename from tools/eslint/node_modules/run-async/index.js rename to tools/node_modules/eslint/node_modules/run-async/index.js diff --git a/tools/eslint/node_modules/run-async/package.json b/tools/node_modules/eslint/node_modules/run-async/package.json similarity index 100% rename from tools/eslint/node_modules/run-async/package.json rename to tools/node_modules/eslint/node_modules/run-async/package.json diff --git a/tools/eslint/node_modules/rx-lite-aggregates/package.json b/tools/node_modules/eslint/node_modules/rx-lite-aggregates/package.json similarity index 100% rename from tools/eslint/node_modules/rx-lite-aggregates/package.json rename to tools/node_modules/eslint/node_modules/rx-lite-aggregates/package.json diff --git a/tools/eslint/node_modules/rx-lite-aggregates/readme.md b/tools/node_modules/eslint/node_modules/rx-lite-aggregates/readme.md similarity index 100% rename from tools/eslint/node_modules/rx-lite-aggregates/readme.md rename to tools/node_modules/eslint/node_modules/rx-lite-aggregates/readme.md diff --git a/tools/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.js b/tools/node_modules/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.js similarity index 100% rename from tools/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.js rename to tools/node_modules/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.js diff --git a/tools/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.map b/tools/node_modules/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.map similarity index 100% rename from tools/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.map rename to tools/node_modules/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.map diff --git a/tools/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.min.js b/tools/node_modules/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.min.js similarity index 100% rename from tools/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.min.js rename to tools/node_modules/eslint/node_modules/rx-lite-aggregates/rx.lite.aggregates.min.js diff --git a/tools/eslint/node_modules/rx-lite/package.json b/tools/node_modules/eslint/node_modules/rx-lite/package.json similarity index 100% rename from tools/eslint/node_modules/rx-lite/package.json rename to tools/node_modules/eslint/node_modules/rx-lite/package.json diff --git a/tools/eslint/node_modules/rx-lite/readme.md b/tools/node_modules/eslint/node_modules/rx-lite/readme.md similarity index 100% rename from tools/eslint/node_modules/rx-lite/readme.md rename to tools/node_modules/eslint/node_modules/rx-lite/readme.md diff --git a/tools/eslint/node_modules/rx-lite/rx.lite.js b/tools/node_modules/eslint/node_modules/rx-lite/rx.lite.js similarity index 100% rename from tools/eslint/node_modules/rx-lite/rx.lite.js rename to tools/node_modules/eslint/node_modules/rx-lite/rx.lite.js diff --git a/tools/eslint/node_modules/rx-lite/rx.lite.map b/tools/node_modules/eslint/node_modules/rx-lite/rx.lite.map similarity index 100% rename from tools/eslint/node_modules/rx-lite/rx.lite.map rename to tools/node_modules/eslint/node_modules/rx-lite/rx.lite.map diff --git a/tools/eslint/node_modules/rx-lite/rx.lite.min.js b/tools/node_modules/eslint/node_modules/rx-lite/rx.lite.min.js similarity index 100% rename from tools/eslint/node_modules/rx-lite/rx.lite.min.js rename to tools/node_modules/eslint/node_modules/rx-lite/rx.lite.min.js diff --git a/tools/eslint/node_modules/safe-buffer/LICENSE b/tools/node_modules/eslint/node_modules/safe-buffer/LICENSE similarity index 100% rename from tools/eslint/node_modules/safe-buffer/LICENSE rename to tools/node_modules/eslint/node_modules/safe-buffer/LICENSE diff --git a/tools/eslint/node_modules/safe-buffer/README.md b/tools/node_modules/eslint/node_modules/safe-buffer/README.md similarity index 100% rename from tools/eslint/node_modules/safe-buffer/README.md rename to tools/node_modules/eslint/node_modules/safe-buffer/README.md diff --git a/tools/eslint/node_modules/safe-buffer/index.js b/tools/node_modules/eslint/node_modules/safe-buffer/index.js similarity index 100% rename from tools/eslint/node_modules/safe-buffer/index.js rename to tools/node_modules/eslint/node_modules/safe-buffer/index.js diff --git a/tools/eslint/node_modules/safe-buffer/package.json b/tools/node_modules/eslint/node_modules/safe-buffer/package.json similarity index 100% rename from tools/eslint/node_modules/safe-buffer/package.json rename to tools/node_modules/eslint/node_modules/safe-buffer/package.json diff --git a/tools/eslint/node_modules/semver/LICENSE b/tools/node_modules/eslint/node_modules/semver/LICENSE similarity index 100% rename from tools/eslint/node_modules/semver/LICENSE rename to tools/node_modules/eslint/node_modules/semver/LICENSE diff --git a/tools/eslint/node_modules/semver/README.md b/tools/node_modules/eslint/node_modules/semver/README.md similarity index 100% rename from tools/eslint/node_modules/semver/README.md rename to tools/node_modules/eslint/node_modules/semver/README.md diff --git a/tools/eslint/node_modules/semver/bin/semver b/tools/node_modules/eslint/node_modules/semver/bin/semver similarity index 100% rename from tools/eslint/node_modules/semver/bin/semver rename to tools/node_modules/eslint/node_modules/semver/bin/semver diff --git a/tools/eslint/node_modules/semver/package.json b/tools/node_modules/eslint/node_modules/semver/package.json similarity index 100% rename from tools/eslint/node_modules/semver/package.json rename to tools/node_modules/eslint/node_modules/semver/package.json diff --git a/tools/eslint/node_modules/semver/range.bnf b/tools/node_modules/eslint/node_modules/semver/range.bnf similarity index 100% rename from tools/eslint/node_modules/semver/range.bnf rename to tools/node_modules/eslint/node_modules/semver/range.bnf diff --git a/tools/eslint/node_modules/semver/semver.js b/tools/node_modules/eslint/node_modules/semver/semver.js similarity index 100% rename from tools/eslint/node_modules/semver/semver.js rename to tools/node_modules/eslint/node_modules/semver/semver.js diff --git a/tools/eslint/node_modules/shebang-command/index.js b/tools/node_modules/eslint/node_modules/shebang-command/index.js similarity index 100% rename from tools/eslint/node_modules/shebang-command/index.js rename to tools/node_modules/eslint/node_modules/shebang-command/index.js diff --git a/tools/eslint/node_modules/shebang-command/license b/tools/node_modules/eslint/node_modules/shebang-command/license similarity index 100% rename from tools/eslint/node_modules/shebang-command/license rename to tools/node_modules/eslint/node_modules/shebang-command/license diff --git a/tools/eslint/node_modules/shebang-command/package.json b/tools/node_modules/eslint/node_modules/shebang-command/package.json similarity index 100% rename from tools/eslint/node_modules/shebang-command/package.json rename to tools/node_modules/eslint/node_modules/shebang-command/package.json diff --git a/tools/eslint/node_modules/shebang-command/readme.md b/tools/node_modules/eslint/node_modules/shebang-command/readme.md similarity index 100% rename from tools/eslint/node_modules/shebang-command/readme.md rename to tools/node_modules/eslint/node_modules/shebang-command/readme.md diff --git a/tools/eslint/node_modules/shebang-regex/index.js b/tools/node_modules/eslint/node_modules/shebang-regex/index.js similarity index 100% rename from tools/eslint/node_modules/shebang-regex/index.js rename to tools/node_modules/eslint/node_modules/shebang-regex/index.js diff --git a/tools/eslint/node_modules/shebang-regex/license b/tools/node_modules/eslint/node_modules/shebang-regex/license similarity index 100% rename from tools/eslint/node_modules/shebang-regex/license rename to tools/node_modules/eslint/node_modules/shebang-regex/license diff --git a/tools/eslint/node_modules/shebang-regex/package.json b/tools/node_modules/eslint/node_modules/shebang-regex/package.json similarity index 100% rename from tools/eslint/node_modules/shebang-regex/package.json rename to tools/node_modules/eslint/node_modules/shebang-regex/package.json diff --git a/tools/eslint/node_modules/shebang-regex/readme.md b/tools/node_modules/eslint/node_modules/shebang-regex/readme.md similarity index 100% rename from tools/eslint/node_modules/shebang-regex/readme.md rename to tools/node_modules/eslint/node_modules/shebang-regex/readme.md diff --git a/tools/eslint/node_modules/signal-exit/LICENSE.txt b/tools/node_modules/eslint/node_modules/signal-exit/LICENSE.txt similarity index 100% rename from tools/eslint/node_modules/signal-exit/LICENSE.txt rename to tools/node_modules/eslint/node_modules/signal-exit/LICENSE.txt diff --git a/tools/eslint/node_modules/signal-exit/README.md b/tools/node_modules/eslint/node_modules/signal-exit/README.md similarity index 100% rename from tools/eslint/node_modules/signal-exit/README.md rename to tools/node_modules/eslint/node_modules/signal-exit/README.md diff --git a/tools/eslint/node_modules/signal-exit/index.js b/tools/node_modules/eslint/node_modules/signal-exit/index.js similarity index 100% rename from tools/eslint/node_modules/signal-exit/index.js rename to tools/node_modules/eslint/node_modules/signal-exit/index.js diff --git a/tools/eslint/node_modules/signal-exit/package.json b/tools/node_modules/eslint/node_modules/signal-exit/package.json similarity index 100% rename from tools/eslint/node_modules/signal-exit/package.json rename to tools/node_modules/eslint/node_modules/signal-exit/package.json diff --git a/tools/eslint/node_modules/signal-exit/signals.js b/tools/node_modules/eslint/node_modules/signal-exit/signals.js similarity index 100% rename from tools/eslint/node_modules/signal-exit/signals.js rename to tools/node_modules/eslint/node_modules/signal-exit/signals.js diff --git a/tools/eslint/node_modules/slice-ansi/index.js b/tools/node_modules/eslint/node_modules/slice-ansi/index.js similarity index 100% rename from tools/eslint/node_modules/slice-ansi/index.js rename to tools/node_modules/eslint/node_modules/slice-ansi/index.js diff --git a/tools/eslint/node_modules/slice-ansi/license b/tools/node_modules/eslint/node_modules/slice-ansi/license similarity index 100% rename from tools/eslint/node_modules/slice-ansi/license rename to tools/node_modules/eslint/node_modules/slice-ansi/license diff --git a/tools/eslint/node_modules/slice-ansi/package.json b/tools/node_modules/eslint/node_modules/slice-ansi/package.json similarity index 100% rename from tools/eslint/node_modules/slice-ansi/package.json rename to tools/node_modules/eslint/node_modules/slice-ansi/package.json diff --git a/tools/eslint/node_modules/slice-ansi/readme.md b/tools/node_modules/eslint/node_modules/slice-ansi/readme.md similarity index 100% rename from tools/eslint/node_modules/slice-ansi/readme.md rename to tools/node_modules/eslint/node_modules/slice-ansi/readme.md diff --git a/tools/eslint/node_modules/sprintf-js/LICENSE b/tools/node_modules/eslint/node_modules/sprintf-js/LICENSE similarity index 100% rename from tools/eslint/node_modules/sprintf-js/LICENSE rename to tools/node_modules/eslint/node_modules/sprintf-js/LICENSE diff --git a/tools/eslint/node_modules/sprintf-js/README.md b/tools/node_modules/eslint/node_modules/sprintf-js/README.md similarity index 100% rename from tools/eslint/node_modules/sprintf-js/README.md rename to tools/node_modules/eslint/node_modules/sprintf-js/README.md diff --git a/tools/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js b/tools/node_modules/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js similarity index 100% rename from tools/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js rename to tools/node_modules/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js diff --git a/tools/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js.map b/tools/node_modules/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js.map similarity index 100% rename from tools/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js.map rename to tools/node_modules/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.js.map diff --git a/tools/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.map b/tools/node_modules/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.map similarity index 100% rename from tools/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.map rename to tools/node_modules/eslint/node_modules/sprintf-js/dist/angular-sprintf.min.map diff --git a/tools/eslint/node_modules/sprintf-js/dist/sprintf.min.js b/tools/node_modules/eslint/node_modules/sprintf-js/dist/sprintf.min.js similarity index 100% rename from tools/eslint/node_modules/sprintf-js/dist/sprintf.min.js rename to tools/node_modules/eslint/node_modules/sprintf-js/dist/sprintf.min.js diff --git a/tools/eslint/node_modules/sprintf-js/dist/sprintf.min.js.map b/tools/node_modules/eslint/node_modules/sprintf-js/dist/sprintf.min.js.map similarity index 100% rename from tools/eslint/node_modules/sprintf-js/dist/sprintf.min.js.map rename to tools/node_modules/eslint/node_modules/sprintf-js/dist/sprintf.min.js.map diff --git a/tools/eslint/node_modules/sprintf-js/dist/sprintf.min.map b/tools/node_modules/eslint/node_modules/sprintf-js/dist/sprintf.min.map similarity index 100% rename from tools/eslint/node_modules/sprintf-js/dist/sprintf.min.map rename to tools/node_modules/eslint/node_modules/sprintf-js/dist/sprintf.min.map diff --git a/tools/eslint/node_modules/sprintf-js/package.json b/tools/node_modules/eslint/node_modules/sprintf-js/package.json similarity index 100% rename from tools/eslint/node_modules/sprintf-js/package.json rename to tools/node_modules/eslint/node_modules/sprintf-js/package.json diff --git a/tools/eslint/node_modules/sprintf-js/src/angular-sprintf.js b/tools/node_modules/eslint/node_modules/sprintf-js/src/angular-sprintf.js similarity index 100% rename from tools/eslint/node_modules/sprintf-js/src/angular-sprintf.js rename to tools/node_modules/eslint/node_modules/sprintf-js/src/angular-sprintf.js diff --git a/tools/eslint/node_modules/sprintf-js/src/sprintf.js b/tools/node_modules/eslint/node_modules/sprintf-js/src/sprintf.js similarity index 100% rename from tools/eslint/node_modules/sprintf-js/src/sprintf.js rename to tools/node_modules/eslint/node_modules/sprintf-js/src/sprintf.js diff --git a/tools/eslint/node_modules/state-toggle/LICENSE b/tools/node_modules/eslint/node_modules/state-toggle/LICENSE similarity index 100% rename from tools/eslint/node_modules/state-toggle/LICENSE rename to tools/node_modules/eslint/node_modules/state-toggle/LICENSE diff --git a/tools/eslint/node_modules/state-toggle/history.md b/tools/node_modules/eslint/node_modules/state-toggle/history.md similarity index 100% rename from tools/eslint/node_modules/state-toggle/history.md rename to tools/node_modules/eslint/node_modules/state-toggle/history.md diff --git a/tools/eslint/node_modules/state-toggle/index.js b/tools/node_modules/eslint/node_modules/state-toggle/index.js similarity index 100% rename from tools/eslint/node_modules/state-toggle/index.js rename to tools/node_modules/eslint/node_modules/state-toggle/index.js diff --git a/tools/eslint/node_modules/state-toggle/package.json b/tools/node_modules/eslint/node_modules/state-toggle/package.json similarity index 100% rename from tools/eslint/node_modules/state-toggle/package.json rename to tools/node_modules/eslint/node_modules/state-toggle/package.json diff --git a/tools/eslint/node_modules/state-toggle/readme.md b/tools/node_modules/eslint/node_modules/state-toggle/readme.md similarity index 100% rename from tools/eslint/node_modules/state-toggle/readme.md rename to tools/node_modules/eslint/node_modules/state-toggle/readme.md diff --git a/tools/eslint/node_modules/string-width/index.js b/tools/node_modules/eslint/node_modules/string-width/index.js similarity index 100% rename from tools/eslint/node_modules/string-width/index.js rename to tools/node_modules/eslint/node_modules/string-width/index.js diff --git a/tools/eslint/node_modules/string-width/license b/tools/node_modules/eslint/node_modules/string-width/license similarity index 100% rename from tools/eslint/node_modules/string-width/license rename to tools/node_modules/eslint/node_modules/string-width/license diff --git a/tools/eslint/node_modules/string-width/package.json b/tools/node_modules/eslint/node_modules/string-width/package.json similarity index 100% rename from tools/eslint/node_modules/string-width/package.json rename to tools/node_modules/eslint/node_modules/string-width/package.json diff --git a/tools/eslint/node_modules/string-width/readme.md b/tools/node_modules/eslint/node_modules/string-width/readme.md similarity index 100% rename from tools/eslint/node_modules/string-width/readme.md rename to tools/node_modules/eslint/node_modules/string-width/readme.md diff --git a/tools/eslint/node_modules/string_decoder/LICENSE b/tools/node_modules/eslint/node_modules/string_decoder/LICENSE similarity index 100% rename from tools/eslint/node_modules/string_decoder/LICENSE rename to tools/node_modules/eslint/node_modules/string_decoder/LICENSE diff --git a/tools/eslint/node_modules/string_decoder/README.md b/tools/node_modules/eslint/node_modules/string_decoder/README.md similarity index 100% rename from tools/eslint/node_modules/string_decoder/README.md rename to tools/node_modules/eslint/node_modules/string_decoder/README.md diff --git a/tools/eslint/node_modules/string_decoder/lib/string_decoder.js b/tools/node_modules/eslint/node_modules/string_decoder/lib/string_decoder.js similarity index 100% rename from tools/eslint/node_modules/string_decoder/lib/string_decoder.js rename to tools/node_modules/eslint/node_modules/string_decoder/lib/string_decoder.js diff --git a/tools/eslint/node_modules/string_decoder/package.json b/tools/node_modules/eslint/node_modules/string_decoder/package.json similarity index 100% rename from tools/eslint/node_modules/string_decoder/package.json rename to tools/node_modules/eslint/node_modules/string_decoder/package.json diff --git a/tools/eslint/node_modules/strip-ansi/index.js b/tools/node_modules/eslint/node_modules/strip-ansi/index.js similarity index 100% rename from tools/eslint/node_modules/strip-ansi/index.js rename to tools/node_modules/eslint/node_modules/strip-ansi/index.js diff --git a/tools/eslint/node_modules/strip-ansi/license b/tools/node_modules/eslint/node_modules/strip-ansi/license similarity index 100% rename from tools/eslint/node_modules/strip-ansi/license rename to tools/node_modules/eslint/node_modules/strip-ansi/license diff --git a/tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js similarity index 100% rename from tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js rename to tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js diff --git a/tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license similarity index 100% rename from tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license rename to tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license diff --git a/tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json similarity index 100% rename from tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json rename to tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json diff --git a/tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md similarity index 100% rename from tools/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md rename to tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md diff --git a/tools/eslint/node_modules/strip-ansi/package.json b/tools/node_modules/eslint/node_modules/strip-ansi/package.json similarity index 100% rename from tools/eslint/node_modules/strip-ansi/package.json rename to tools/node_modules/eslint/node_modules/strip-ansi/package.json diff --git a/tools/eslint/node_modules/strip-ansi/readme.md b/tools/node_modules/eslint/node_modules/strip-ansi/readme.md similarity index 100% rename from tools/eslint/node_modules/strip-ansi/readme.md rename to tools/node_modules/eslint/node_modules/strip-ansi/readme.md diff --git a/tools/eslint/node_modules/strip-json-comments/index.js b/tools/node_modules/eslint/node_modules/strip-json-comments/index.js similarity index 100% rename from tools/eslint/node_modules/strip-json-comments/index.js rename to tools/node_modules/eslint/node_modules/strip-json-comments/index.js diff --git a/tools/eslint/node_modules/strip-json-comments/license b/tools/node_modules/eslint/node_modules/strip-json-comments/license similarity index 100% rename from tools/eslint/node_modules/strip-json-comments/license rename to tools/node_modules/eslint/node_modules/strip-json-comments/license diff --git a/tools/eslint/node_modules/strip-json-comments/package.json b/tools/node_modules/eslint/node_modules/strip-json-comments/package.json similarity index 100% rename from tools/eslint/node_modules/strip-json-comments/package.json rename to tools/node_modules/eslint/node_modules/strip-json-comments/package.json diff --git a/tools/eslint/node_modules/strip-json-comments/readme.md b/tools/node_modules/eslint/node_modules/strip-json-comments/readme.md similarity index 100% rename from tools/eslint/node_modules/strip-json-comments/readme.md rename to tools/node_modules/eslint/node_modules/strip-json-comments/readme.md diff --git a/tools/eslint/node_modules/supports-color/index.js b/tools/node_modules/eslint/node_modules/supports-color/index.js similarity index 100% rename from tools/eslint/node_modules/supports-color/index.js rename to tools/node_modules/eslint/node_modules/supports-color/index.js diff --git a/tools/eslint/node_modules/supports-color/license b/tools/node_modules/eslint/node_modules/supports-color/license similarity index 100% rename from tools/eslint/node_modules/supports-color/license rename to tools/node_modules/eslint/node_modules/supports-color/license diff --git a/tools/eslint/node_modules/supports-color/package.json b/tools/node_modules/eslint/node_modules/supports-color/package.json similarity index 100% rename from tools/eslint/node_modules/supports-color/package.json rename to tools/node_modules/eslint/node_modules/supports-color/package.json diff --git a/tools/eslint/node_modules/supports-color/readme.md b/tools/node_modules/eslint/node_modules/supports-color/readme.md similarity index 100% rename from tools/eslint/node_modules/supports-color/readme.md rename to tools/node_modules/eslint/node_modules/supports-color/readme.md diff --git a/tools/eslint/node_modules/table/LICENSE b/tools/node_modules/eslint/node_modules/table/LICENSE similarity index 100% rename from tools/eslint/node_modules/table/LICENSE rename to tools/node_modules/eslint/node_modules/table/LICENSE diff --git a/tools/eslint/node_modules/table/README.md b/tools/node_modules/eslint/node_modules/table/README.md similarity index 100% rename from tools/eslint/node_modules/table/README.md rename to tools/node_modules/eslint/node_modules/table/README.md diff --git a/tools/eslint/node_modules/table/dist/alignString.js b/tools/node_modules/eslint/node_modules/table/dist/alignString.js similarity index 100% rename from tools/eslint/node_modules/table/dist/alignString.js rename to tools/node_modules/eslint/node_modules/table/dist/alignString.js diff --git a/tools/eslint/node_modules/table/dist/alignTableData.js b/tools/node_modules/eslint/node_modules/table/dist/alignTableData.js similarity index 100% rename from tools/eslint/node_modules/table/dist/alignTableData.js rename to tools/node_modules/eslint/node_modules/table/dist/alignTableData.js diff --git a/tools/eslint/node_modules/table/dist/calculateCellHeight.js b/tools/node_modules/eslint/node_modules/table/dist/calculateCellHeight.js similarity index 100% rename from tools/eslint/node_modules/table/dist/calculateCellHeight.js rename to tools/node_modules/eslint/node_modules/table/dist/calculateCellHeight.js diff --git a/tools/eslint/node_modules/table/dist/calculateCellWidthIndex.js b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js similarity index 100% rename from tools/eslint/node_modules/table/dist/calculateCellWidthIndex.js rename to tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js diff --git a/tools/eslint/node_modules/table/dist/calculateMaximumColumnWidthIndex.js b/tools/node_modules/eslint/node_modules/table/dist/calculateMaximumColumnWidthIndex.js similarity index 100% rename from tools/eslint/node_modules/table/dist/calculateMaximumColumnWidthIndex.js rename to tools/node_modules/eslint/node_modules/table/dist/calculateMaximumColumnWidthIndex.js diff --git a/tools/eslint/node_modules/table/dist/calculateRowHeightIndex.js b/tools/node_modules/eslint/node_modules/table/dist/calculateRowHeightIndex.js similarity index 100% rename from tools/eslint/node_modules/table/dist/calculateRowHeightIndex.js rename to tools/node_modules/eslint/node_modules/table/dist/calculateRowHeightIndex.js diff --git a/tools/eslint/node_modules/table/dist/createStream.js b/tools/node_modules/eslint/node_modules/table/dist/createStream.js similarity index 100% rename from tools/eslint/node_modules/table/dist/createStream.js rename to tools/node_modules/eslint/node_modules/table/dist/createStream.js diff --git a/tools/eslint/node_modules/table/dist/drawBorder.js b/tools/node_modules/eslint/node_modules/table/dist/drawBorder.js similarity index 100% rename from tools/eslint/node_modules/table/dist/drawBorder.js rename to tools/node_modules/eslint/node_modules/table/dist/drawBorder.js diff --git a/tools/eslint/node_modules/table/dist/drawRow.js b/tools/node_modules/eslint/node_modules/table/dist/drawRow.js similarity index 100% rename from tools/eslint/node_modules/table/dist/drawRow.js rename to tools/node_modules/eslint/node_modules/table/dist/drawRow.js diff --git a/tools/eslint/node_modules/table/dist/drawTable.js b/tools/node_modules/eslint/node_modules/table/dist/drawTable.js similarity index 100% rename from tools/eslint/node_modules/table/dist/drawTable.js rename to tools/node_modules/eslint/node_modules/table/dist/drawTable.js diff --git a/tools/eslint/node_modules/table/dist/getBorderCharacters.js b/tools/node_modules/eslint/node_modules/table/dist/getBorderCharacters.js similarity index 100% rename from tools/eslint/node_modules/table/dist/getBorderCharacters.js rename to tools/node_modules/eslint/node_modules/table/dist/getBorderCharacters.js diff --git a/tools/eslint/node_modules/table/dist/index.js b/tools/node_modules/eslint/node_modules/table/dist/index.js similarity index 100% rename from tools/eslint/node_modules/table/dist/index.js rename to tools/node_modules/eslint/node_modules/table/dist/index.js diff --git a/tools/eslint/node_modules/table/dist/makeConfig.js b/tools/node_modules/eslint/node_modules/table/dist/makeConfig.js similarity index 100% rename from tools/eslint/node_modules/table/dist/makeConfig.js rename to tools/node_modules/eslint/node_modules/table/dist/makeConfig.js diff --git a/tools/eslint/node_modules/table/dist/makeStreamConfig.js b/tools/node_modules/eslint/node_modules/table/dist/makeStreamConfig.js similarity index 100% rename from tools/eslint/node_modules/table/dist/makeStreamConfig.js rename to tools/node_modules/eslint/node_modules/table/dist/makeStreamConfig.js diff --git a/tools/eslint/node_modules/table/dist/mapDataUsingRowHeightIndex.js b/tools/node_modules/eslint/node_modules/table/dist/mapDataUsingRowHeightIndex.js similarity index 100% rename from tools/eslint/node_modules/table/dist/mapDataUsingRowHeightIndex.js rename to tools/node_modules/eslint/node_modules/table/dist/mapDataUsingRowHeightIndex.js diff --git a/tools/eslint/node_modules/table/dist/padTableData.js b/tools/node_modules/eslint/node_modules/table/dist/padTableData.js similarity index 100% rename from tools/eslint/node_modules/table/dist/padTableData.js rename to tools/node_modules/eslint/node_modules/table/dist/padTableData.js diff --git a/tools/eslint/node_modules/table/dist/schemas/config.json b/tools/node_modules/eslint/node_modules/table/dist/schemas/config.json similarity index 100% rename from tools/eslint/node_modules/table/dist/schemas/config.json rename to tools/node_modules/eslint/node_modules/table/dist/schemas/config.json diff --git a/tools/eslint/node_modules/table/dist/schemas/streamConfig.json b/tools/node_modules/eslint/node_modules/table/dist/schemas/streamConfig.json similarity index 100% rename from tools/eslint/node_modules/table/dist/schemas/streamConfig.json rename to tools/node_modules/eslint/node_modules/table/dist/schemas/streamConfig.json diff --git a/tools/eslint/node_modules/table/dist/stringifyTableData.js b/tools/node_modules/eslint/node_modules/table/dist/stringifyTableData.js similarity index 100% rename from tools/eslint/node_modules/table/dist/stringifyTableData.js rename to tools/node_modules/eslint/node_modules/table/dist/stringifyTableData.js diff --git a/tools/eslint/node_modules/table/dist/table.js b/tools/node_modules/eslint/node_modules/table/dist/table.js similarity index 100% rename from tools/eslint/node_modules/table/dist/table.js rename to tools/node_modules/eslint/node_modules/table/dist/table.js diff --git a/tools/eslint/node_modules/table/dist/truncateTableData.js b/tools/node_modules/eslint/node_modules/table/dist/truncateTableData.js similarity index 100% rename from tools/eslint/node_modules/table/dist/truncateTableData.js rename to tools/node_modules/eslint/node_modules/table/dist/truncateTableData.js diff --git a/tools/eslint/node_modules/table/dist/validateConfig.js b/tools/node_modules/eslint/node_modules/table/dist/validateConfig.js similarity index 100% rename from tools/eslint/node_modules/table/dist/validateConfig.js rename to tools/node_modules/eslint/node_modules/table/dist/validateConfig.js diff --git a/tools/eslint/node_modules/table/dist/validateStreamConfig.js b/tools/node_modules/eslint/node_modules/table/dist/validateStreamConfig.js similarity index 100% rename from tools/eslint/node_modules/table/dist/validateStreamConfig.js rename to tools/node_modules/eslint/node_modules/table/dist/validateStreamConfig.js diff --git a/tools/eslint/node_modules/table/dist/validateTableData.js b/tools/node_modules/eslint/node_modules/table/dist/validateTableData.js similarity index 100% rename from tools/eslint/node_modules/table/dist/validateTableData.js rename to tools/node_modules/eslint/node_modules/table/dist/validateTableData.js diff --git a/tools/eslint/node_modules/table/dist/wrapString.js b/tools/node_modules/eslint/node_modules/table/dist/wrapString.js similarity index 100% rename from tools/eslint/node_modules/table/dist/wrapString.js rename to tools/node_modules/eslint/node_modules/table/dist/wrapString.js diff --git a/tools/eslint/node_modules/table/dist/wrapWord.js b/tools/node_modules/eslint/node_modules/table/dist/wrapWord.js similarity index 100% rename from tools/eslint/node_modules/table/dist/wrapWord.js rename to tools/node_modules/eslint/node_modules/table/dist/wrapWord.js diff --git a/tools/eslint/node_modules/table/package.json b/tools/node_modules/eslint/node_modules/table/package.json similarity index 100% rename from tools/eslint/node_modules/table/package.json rename to tools/node_modules/eslint/node_modules/table/package.json diff --git a/tools/eslint/node_modules/text-table/LICENSE b/tools/node_modules/eslint/node_modules/text-table/LICENSE similarity index 100% rename from tools/eslint/node_modules/text-table/LICENSE rename to tools/node_modules/eslint/node_modules/text-table/LICENSE diff --git a/tools/eslint/node_modules/text-table/index.js b/tools/node_modules/eslint/node_modules/text-table/index.js similarity index 100% rename from tools/eslint/node_modules/text-table/index.js rename to tools/node_modules/eslint/node_modules/text-table/index.js diff --git a/tools/eslint/node_modules/text-table/package.json b/tools/node_modules/eslint/node_modules/text-table/package.json similarity index 100% rename from tools/eslint/node_modules/text-table/package.json rename to tools/node_modules/eslint/node_modules/text-table/package.json diff --git a/tools/eslint/node_modules/text-table/readme.markdown b/tools/node_modules/eslint/node_modules/text-table/readme.markdown similarity index 100% rename from tools/eslint/node_modules/text-table/readme.markdown rename to tools/node_modules/eslint/node_modules/text-table/readme.markdown diff --git a/tools/eslint/node_modules/through/LICENSE.APACHE2 b/tools/node_modules/eslint/node_modules/through/LICENSE.APACHE2 similarity index 100% rename from tools/eslint/node_modules/through/LICENSE.APACHE2 rename to tools/node_modules/eslint/node_modules/through/LICENSE.APACHE2 diff --git a/tools/eslint/node_modules/through/LICENSE.MIT b/tools/node_modules/eslint/node_modules/through/LICENSE.MIT similarity index 100% rename from tools/eslint/node_modules/through/LICENSE.MIT rename to tools/node_modules/eslint/node_modules/through/LICENSE.MIT diff --git a/tools/eslint/node_modules/through/index.js b/tools/node_modules/eslint/node_modules/through/index.js similarity index 100% rename from tools/eslint/node_modules/through/index.js rename to tools/node_modules/eslint/node_modules/through/index.js diff --git a/tools/eslint/node_modules/through/package.json b/tools/node_modules/eslint/node_modules/through/package.json similarity index 100% rename from tools/eslint/node_modules/through/package.json rename to tools/node_modules/eslint/node_modules/through/package.json diff --git a/tools/eslint/node_modules/through/readme.markdown b/tools/node_modules/eslint/node_modules/through/readme.markdown similarity index 100% rename from tools/eslint/node_modules/through/readme.markdown rename to tools/node_modules/eslint/node_modules/through/readme.markdown diff --git a/tools/eslint/node_modules/trim-trailing-lines/LICENSE b/tools/node_modules/eslint/node_modules/trim-trailing-lines/LICENSE similarity index 100% rename from tools/eslint/node_modules/trim-trailing-lines/LICENSE rename to tools/node_modules/eslint/node_modules/trim-trailing-lines/LICENSE diff --git a/tools/eslint/node_modules/trim-trailing-lines/index.js b/tools/node_modules/eslint/node_modules/trim-trailing-lines/index.js similarity index 100% rename from tools/eslint/node_modules/trim-trailing-lines/index.js rename to tools/node_modules/eslint/node_modules/trim-trailing-lines/index.js diff --git a/tools/eslint/node_modules/trim-trailing-lines/package.json b/tools/node_modules/eslint/node_modules/trim-trailing-lines/package.json similarity index 100% rename from tools/eslint/node_modules/trim-trailing-lines/package.json rename to tools/node_modules/eslint/node_modules/trim-trailing-lines/package.json diff --git a/tools/eslint/node_modules/trim-trailing-lines/readme.md b/tools/node_modules/eslint/node_modules/trim-trailing-lines/readme.md similarity index 100% rename from tools/eslint/node_modules/trim-trailing-lines/readme.md rename to tools/node_modules/eslint/node_modules/trim-trailing-lines/readme.md diff --git a/tools/eslint/node_modules/trim/Makefile b/tools/node_modules/eslint/node_modules/trim/Makefile similarity index 100% rename from tools/eslint/node_modules/trim/Makefile rename to tools/node_modules/eslint/node_modules/trim/Makefile diff --git a/tools/eslint/node_modules/trim/Readme.md b/tools/node_modules/eslint/node_modules/trim/Readme.md similarity index 100% rename from tools/eslint/node_modules/trim/Readme.md rename to tools/node_modules/eslint/node_modules/trim/Readme.md diff --git a/tools/eslint/node_modules/trim/index.js b/tools/node_modules/eslint/node_modules/trim/index.js similarity index 100% rename from tools/eslint/node_modules/trim/index.js rename to tools/node_modules/eslint/node_modules/trim/index.js diff --git a/tools/eslint/node_modules/trim/package.json b/tools/node_modules/eslint/node_modules/trim/package.json similarity index 100% rename from tools/eslint/node_modules/trim/package.json rename to tools/node_modules/eslint/node_modules/trim/package.json diff --git a/tools/eslint/node_modules/trough/LICENSE b/tools/node_modules/eslint/node_modules/trough/LICENSE similarity index 100% rename from tools/eslint/node_modules/trough/LICENSE rename to tools/node_modules/eslint/node_modules/trough/LICENSE diff --git a/tools/eslint/node_modules/trough/index.js b/tools/node_modules/eslint/node_modules/trough/index.js similarity index 100% rename from tools/eslint/node_modules/trough/index.js rename to tools/node_modules/eslint/node_modules/trough/index.js diff --git a/tools/eslint/node_modules/trough/package.json b/tools/node_modules/eslint/node_modules/trough/package.json similarity index 100% rename from tools/eslint/node_modules/trough/package.json rename to tools/node_modules/eslint/node_modules/trough/package.json diff --git a/tools/eslint/node_modules/trough/readme.md b/tools/node_modules/eslint/node_modules/trough/readme.md similarity index 100% rename from tools/eslint/node_modules/trough/readme.md rename to tools/node_modules/eslint/node_modules/trough/readme.md diff --git a/tools/eslint/node_modules/tryit/README.md b/tools/node_modules/eslint/node_modules/tryit/README.md similarity index 100% rename from tools/eslint/node_modules/tryit/README.md rename to tools/node_modules/eslint/node_modules/tryit/README.md diff --git a/tools/eslint/node_modules/tryit/package.json b/tools/node_modules/eslint/node_modules/tryit/package.json similarity index 100% rename from tools/eslint/node_modules/tryit/package.json rename to tools/node_modules/eslint/node_modules/tryit/package.json diff --git a/tools/eslint/node_modules/tryit/tryit.js b/tools/node_modules/eslint/node_modules/tryit/tryit.js similarity index 100% rename from tools/eslint/node_modules/tryit/tryit.js rename to tools/node_modules/eslint/node_modules/tryit/tryit.js diff --git a/tools/eslint/node_modules/type-check/LICENSE b/tools/node_modules/eslint/node_modules/type-check/LICENSE similarity index 100% rename from tools/eslint/node_modules/type-check/LICENSE rename to tools/node_modules/eslint/node_modules/type-check/LICENSE diff --git a/tools/eslint/node_modules/type-check/README.md b/tools/node_modules/eslint/node_modules/type-check/README.md similarity index 100% rename from tools/eslint/node_modules/type-check/README.md rename to tools/node_modules/eslint/node_modules/type-check/README.md diff --git a/tools/eslint/node_modules/type-check/lib/check.js b/tools/node_modules/eslint/node_modules/type-check/lib/check.js similarity index 100% rename from tools/eslint/node_modules/type-check/lib/check.js rename to tools/node_modules/eslint/node_modules/type-check/lib/check.js diff --git a/tools/eslint/node_modules/type-check/lib/index.js b/tools/node_modules/eslint/node_modules/type-check/lib/index.js similarity index 100% rename from tools/eslint/node_modules/type-check/lib/index.js rename to tools/node_modules/eslint/node_modules/type-check/lib/index.js diff --git a/tools/eslint/node_modules/type-check/lib/parse-type.js b/tools/node_modules/eslint/node_modules/type-check/lib/parse-type.js similarity index 100% rename from tools/eslint/node_modules/type-check/lib/parse-type.js rename to tools/node_modules/eslint/node_modules/type-check/lib/parse-type.js diff --git a/tools/eslint/node_modules/type-check/package.json b/tools/node_modules/eslint/node_modules/type-check/package.json similarity index 100% rename from tools/eslint/node_modules/type-check/package.json rename to tools/node_modules/eslint/node_modules/type-check/package.json diff --git a/tools/eslint/node_modules/typedarray/LICENSE b/tools/node_modules/eslint/node_modules/typedarray/LICENSE similarity index 100% rename from tools/eslint/node_modules/typedarray/LICENSE rename to tools/node_modules/eslint/node_modules/typedarray/LICENSE diff --git a/tools/eslint/node_modules/typedarray/index.js b/tools/node_modules/eslint/node_modules/typedarray/index.js similarity index 100% rename from tools/eslint/node_modules/typedarray/index.js rename to tools/node_modules/eslint/node_modules/typedarray/index.js diff --git a/tools/eslint/node_modules/typedarray/package.json b/tools/node_modules/eslint/node_modules/typedarray/package.json similarity index 100% rename from tools/eslint/node_modules/typedarray/package.json rename to tools/node_modules/eslint/node_modules/typedarray/package.json diff --git a/tools/eslint/node_modules/typedarray/readme.markdown b/tools/node_modules/eslint/node_modules/typedarray/readme.markdown similarity index 100% rename from tools/eslint/node_modules/typedarray/readme.markdown rename to tools/node_modules/eslint/node_modules/typedarray/readme.markdown diff --git a/tools/eslint/node_modules/unherit/LICENSE b/tools/node_modules/eslint/node_modules/unherit/LICENSE similarity index 100% rename from tools/eslint/node_modules/unherit/LICENSE rename to tools/node_modules/eslint/node_modules/unherit/LICENSE diff --git a/tools/eslint/node_modules/unherit/index.js b/tools/node_modules/eslint/node_modules/unherit/index.js similarity index 100% rename from tools/eslint/node_modules/unherit/index.js rename to tools/node_modules/eslint/node_modules/unherit/index.js diff --git a/tools/eslint/node_modules/unherit/package.json b/tools/node_modules/eslint/node_modules/unherit/package.json similarity index 100% rename from tools/eslint/node_modules/unherit/package.json rename to tools/node_modules/eslint/node_modules/unherit/package.json diff --git a/tools/eslint/node_modules/unherit/readme.md b/tools/node_modules/eslint/node_modules/unherit/readme.md similarity index 100% rename from tools/eslint/node_modules/unherit/readme.md rename to tools/node_modules/eslint/node_modules/unherit/readme.md diff --git a/tools/eslint/node_modules/unified/LICENSE b/tools/node_modules/eslint/node_modules/unified/LICENSE similarity index 100% rename from tools/eslint/node_modules/unified/LICENSE rename to tools/node_modules/eslint/node_modules/unified/LICENSE diff --git a/tools/eslint/node_modules/unified/index.js b/tools/node_modules/eslint/node_modules/unified/index.js similarity index 100% rename from tools/eslint/node_modules/unified/index.js rename to tools/node_modules/eslint/node_modules/unified/index.js diff --git a/tools/eslint/node_modules/unified/package.json b/tools/node_modules/eslint/node_modules/unified/package.json similarity index 100% rename from tools/eslint/node_modules/unified/package.json rename to tools/node_modules/eslint/node_modules/unified/package.json diff --git a/tools/eslint/node_modules/unified/readme.md b/tools/node_modules/eslint/node_modules/unified/readme.md similarity index 100% rename from tools/eslint/node_modules/unified/readme.md rename to tools/node_modules/eslint/node_modules/unified/readme.md diff --git a/tools/eslint/node_modules/unist-util-is/LICENSE b/tools/node_modules/eslint/node_modules/unist-util-is/LICENSE similarity index 100% rename from tools/eslint/node_modules/unist-util-is/LICENSE rename to tools/node_modules/eslint/node_modules/unist-util-is/LICENSE diff --git a/tools/eslint/node_modules/unist-util-is/index.js b/tools/node_modules/eslint/node_modules/unist-util-is/index.js similarity index 100% rename from tools/eslint/node_modules/unist-util-is/index.js rename to tools/node_modules/eslint/node_modules/unist-util-is/index.js diff --git a/tools/eslint/node_modules/unist-util-is/package.json b/tools/node_modules/eslint/node_modules/unist-util-is/package.json similarity index 100% rename from tools/eslint/node_modules/unist-util-is/package.json rename to tools/node_modules/eslint/node_modules/unist-util-is/package.json diff --git a/tools/eslint/node_modules/unist-util-is/readme.md b/tools/node_modules/eslint/node_modules/unist-util-is/readme.md similarity index 100% rename from tools/eslint/node_modules/unist-util-is/readme.md rename to tools/node_modules/eslint/node_modules/unist-util-is/readme.md diff --git a/tools/eslint/node_modules/unist-util-remove-position/LICENSE b/tools/node_modules/eslint/node_modules/unist-util-remove-position/LICENSE similarity index 100% rename from tools/eslint/node_modules/unist-util-remove-position/LICENSE rename to tools/node_modules/eslint/node_modules/unist-util-remove-position/LICENSE diff --git a/tools/eslint/node_modules/unist-util-remove-position/index.js b/tools/node_modules/eslint/node_modules/unist-util-remove-position/index.js similarity index 100% rename from tools/eslint/node_modules/unist-util-remove-position/index.js rename to tools/node_modules/eslint/node_modules/unist-util-remove-position/index.js diff --git a/tools/eslint/node_modules/unist-util-remove-position/package.json b/tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json similarity index 100% rename from tools/eslint/node_modules/unist-util-remove-position/package.json rename to tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json diff --git a/tools/eslint/node_modules/unist-util-remove-position/readme.md b/tools/node_modules/eslint/node_modules/unist-util-remove-position/readme.md similarity index 100% rename from tools/eslint/node_modules/unist-util-remove-position/readme.md rename to tools/node_modules/eslint/node_modules/unist-util-remove-position/readme.md diff --git a/tools/eslint/node_modules/unist-util-stringify-position/LICENSE b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/LICENSE similarity index 100% rename from tools/eslint/node_modules/unist-util-stringify-position/LICENSE rename to tools/node_modules/eslint/node_modules/unist-util-stringify-position/LICENSE diff --git a/tools/eslint/node_modules/unist-util-stringify-position/index.js b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/index.js similarity index 100% rename from tools/eslint/node_modules/unist-util-stringify-position/index.js rename to tools/node_modules/eslint/node_modules/unist-util-stringify-position/index.js diff --git a/tools/eslint/node_modules/unist-util-stringify-position/package.json b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/package.json similarity index 100% rename from tools/eslint/node_modules/unist-util-stringify-position/package.json rename to tools/node_modules/eslint/node_modules/unist-util-stringify-position/package.json diff --git a/tools/eslint/node_modules/unist-util-stringify-position/readme.md b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/readme.md similarity index 100% rename from tools/eslint/node_modules/unist-util-stringify-position/readme.md rename to tools/node_modules/eslint/node_modules/unist-util-stringify-position/readme.md diff --git a/tools/eslint/node_modules/unist-util-visit/LICENSE b/tools/node_modules/eslint/node_modules/unist-util-visit/LICENSE similarity index 100% rename from tools/eslint/node_modules/unist-util-visit/LICENSE rename to tools/node_modules/eslint/node_modules/unist-util-visit/LICENSE diff --git a/tools/eslint/node_modules/unist-util-visit/index.js b/tools/node_modules/eslint/node_modules/unist-util-visit/index.js similarity index 100% rename from tools/eslint/node_modules/unist-util-visit/index.js rename to tools/node_modules/eslint/node_modules/unist-util-visit/index.js diff --git a/tools/eslint/node_modules/unist-util-visit/package.json b/tools/node_modules/eslint/node_modules/unist-util-visit/package.json similarity index 100% rename from tools/eslint/node_modules/unist-util-visit/package.json rename to tools/node_modules/eslint/node_modules/unist-util-visit/package.json diff --git a/tools/eslint/node_modules/unist-util-visit/readme.md b/tools/node_modules/eslint/node_modules/unist-util-visit/readme.md similarity index 100% rename from tools/eslint/node_modules/unist-util-visit/readme.md rename to tools/node_modules/eslint/node_modules/unist-util-visit/readme.md diff --git a/tools/eslint/node_modules/util-deprecate/LICENSE b/tools/node_modules/eslint/node_modules/util-deprecate/LICENSE similarity index 100% rename from tools/eslint/node_modules/util-deprecate/LICENSE rename to tools/node_modules/eslint/node_modules/util-deprecate/LICENSE diff --git a/tools/eslint/node_modules/util-deprecate/README.md b/tools/node_modules/eslint/node_modules/util-deprecate/README.md similarity index 100% rename from tools/eslint/node_modules/util-deprecate/README.md rename to tools/node_modules/eslint/node_modules/util-deprecate/README.md diff --git a/tools/eslint/node_modules/util-deprecate/browser.js b/tools/node_modules/eslint/node_modules/util-deprecate/browser.js similarity index 100% rename from tools/eslint/node_modules/util-deprecate/browser.js rename to tools/node_modules/eslint/node_modules/util-deprecate/browser.js diff --git a/tools/eslint/node_modules/util-deprecate/node.js b/tools/node_modules/eslint/node_modules/util-deprecate/node.js similarity index 100% rename from tools/eslint/node_modules/util-deprecate/node.js rename to tools/node_modules/eslint/node_modules/util-deprecate/node.js diff --git a/tools/eslint/node_modules/util-deprecate/package.json b/tools/node_modules/eslint/node_modules/util-deprecate/package.json similarity index 100% rename from tools/eslint/node_modules/util-deprecate/package.json rename to tools/node_modules/eslint/node_modules/util-deprecate/package.json diff --git a/tools/eslint/node_modules/vfile-location/LICENSE b/tools/node_modules/eslint/node_modules/vfile-location/LICENSE similarity index 100% rename from tools/eslint/node_modules/vfile-location/LICENSE rename to tools/node_modules/eslint/node_modules/vfile-location/LICENSE diff --git a/tools/eslint/node_modules/vfile-location/index.js b/tools/node_modules/eslint/node_modules/vfile-location/index.js similarity index 100% rename from tools/eslint/node_modules/vfile-location/index.js rename to tools/node_modules/eslint/node_modules/vfile-location/index.js diff --git a/tools/eslint/node_modules/vfile-location/package.json b/tools/node_modules/eslint/node_modules/vfile-location/package.json similarity index 100% rename from tools/eslint/node_modules/vfile-location/package.json rename to tools/node_modules/eslint/node_modules/vfile-location/package.json diff --git a/tools/eslint/node_modules/vfile-location/readme.md b/tools/node_modules/eslint/node_modules/vfile-location/readme.md similarity index 100% rename from tools/eslint/node_modules/vfile-location/readme.md rename to tools/node_modules/eslint/node_modules/vfile-location/readme.md diff --git a/tools/eslint/node_modules/vfile-message/LICENSE b/tools/node_modules/eslint/node_modules/vfile-message/LICENSE similarity index 100% rename from tools/eslint/node_modules/vfile-message/LICENSE rename to tools/node_modules/eslint/node_modules/vfile-message/LICENSE diff --git a/tools/eslint/node_modules/vfile-message/index.js b/tools/node_modules/eslint/node_modules/vfile-message/index.js similarity index 100% rename from tools/eslint/node_modules/vfile-message/index.js rename to tools/node_modules/eslint/node_modules/vfile-message/index.js diff --git a/tools/eslint/node_modules/vfile-message/package.json b/tools/node_modules/eslint/node_modules/vfile-message/package.json similarity index 100% rename from tools/eslint/node_modules/vfile-message/package.json rename to tools/node_modules/eslint/node_modules/vfile-message/package.json diff --git a/tools/eslint/node_modules/vfile-message/readme.md b/tools/node_modules/eslint/node_modules/vfile-message/readme.md similarity index 100% rename from tools/eslint/node_modules/vfile-message/readme.md rename to tools/node_modules/eslint/node_modules/vfile-message/readme.md diff --git a/tools/eslint/node_modules/vfile/LICENSE b/tools/node_modules/eslint/node_modules/vfile/LICENSE similarity index 100% rename from tools/eslint/node_modules/vfile/LICENSE rename to tools/node_modules/eslint/node_modules/vfile/LICENSE diff --git a/tools/eslint/node_modules/vfile/core.js b/tools/node_modules/eslint/node_modules/vfile/core.js similarity index 100% rename from tools/eslint/node_modules/vfile/core.js rename to tools/node_modules/eslint/node_modules/vfile/core.js diff --git a/tools/eslint/node_modules/vfile/index.js b/tools/node_modules/eslint/node_modules/vfile/index.js similarity index 100% rename from tools/eslint/node_modules/vfile/index.js rename to tools/node_modules/eslint/node_modules/vfile/index.js diff --git a/tools/eslint/node_modules/vfile/package.json b/tools/node_modules/eslint/node_modules/vfile/package.json similarity index 100% rename from tools/eslint/node_modules/vfile/package.json rename to tools/node_modules/eslint/node_modules/vfile/package.json diff --git a/tools/eslint/node_modules/vfile/readme.md b/tools/node_modules/eslint/node_modules/vfile/readme.md similarity index 100% rename from tools/eslint/node_modules/vfile/readme.md rename to tools/node_modules/eslint/node_modules/vfile/readme.md diff --git a/tools/eslint/node_modules/which/LICENSE b/tools/node_modules/eslint/node_modules/which/LICENSE similarity index 100% rename from tools/eslint/node_modules/which/LICENSE rename to tools/node_modules/eslint/node_modules/which/LICENSE diff --git a/tools/eslint/node_modules/which/README.md b/tools/node_modules/eslint/node_modules/which/README.md similarity index 100% rename from tools/eslint/node_modules/which/README.md rename to tools/node_modules/eslint/node_modules/which/README.md diff --git a/tools/eslint/node_modules/which/bin/which b/tools/node_modules/eslint/node_modules/which/bin/which similarity index 100% rename from tools/eslint/node_modules/which/bin/which rename to tools/node_modules/eslint/node_modules/which/bin/which diff --git a/tools/eslint/node_modules/which/package.json b/tools/node_modules/eslint/node_modules/which/package.json similarity index 100% rename from tools/eslint/node_modules/which/package.json rename to tools/node_modules/eslint/node_modules/which/package.json diff --git a/tools/eslint/node_modules/which/which.js b/tools/node_modules/eslint/node_modules/which/which.js similarity index 100% rename from tools/eslint/node_modules/which/which.js rename to tools/node_modules/eslint/node_modules/which/which.js diff --git a/tools/eslint/node_modules/wordwrap/LICENSE b/tools/node_modules/eslint/node_modules/wordwrap/LICENSE similarity index 100% rename from tools/eslint/node_modules/wordwrap/LICENSE rename to tools/node_modules/eslint/node_modules/wordwrap/LICENSE diff --git a/tools/eslint/node_modules/wordwrap/README.markdown b/tools/node_modules/eslint/node_modules/wordwrap/README.markdown similarity index 100% rename from tools/eslint/node_modules/wordwrap/README.markdown rename to tools/node_modules/eslint/node_modules/wordwrap/README.markdown diff --git a/tools/eslint/node_modules/wordwrap/index.js b/tools/node_modules/eslint/node_modules/wordwrap/index.js similarity index 100% rename from tools/eslint/node_modules/wordwrap/index.js rename to tools/node_modules/eslint/node_modules/wordwrap/index.js diff --git a/tools/eslint/node_modules/wordwrap/package.json b/tools/node_modules/eslint/node_modules/wordwrap/package.json similarity index 100% rename from tools/eslint/node_modules/wordwrap/package.json rename to tools/node_modules/eslint/node_modules/wordwrap/package.json diff --git a/tools/eslint/node_modules/wrappy/LICENSE b/tools/node_modules/eslint/node_modules/wrappy/LICENSE similarity index 100% rename from tools/eslint/node_modules/wrappy/LICENSE rename to tools/node_modules/eslint/node_modules/wrappy/LICENSE diff --git a/tools/eslint/node_modules/wrappy/README.md b/tools/node_modules/eslint/node_modules/wrappy/README.md similarity index 100% rename from tools/eslint/node_modules/wrappy/README.md rename to tools/node_modules/eslint/node_modules/wrappy/README.md diff --git a/tools/eslint/node_modules/wrappy/package.json b/tools/node_modules/eslint/node_modules/wrappy/package.json similarity index 100% rename from tools/eslint/node_modules/wrappy/package.json rename to tools/node_modules/eslint/node_modules/wrappy/package.json diff --git a/tools/eslint/node_modules/wrappy/wrappy.js b/tools/node_modules/eslint/node_modules/wrappy/wrappy.js similarity index 100% rename from tools/eslint/node_modules/wrappy/wrappy.js rename to tools/node_modules/eslint/node_modules/wrappy/wrappy.js diff --git a/tools/eslint/node_modules/write/LICENSE b/tools/node_modules/eslint/node_modules/write/LICENSE similarity index 100% rename from tools/eslint/node_modules/write/LICENSE rename to tools/node_modules/eslint/node_modules/write/LICENSE diff --git a/tools/eslint/node_modules/write/README.md b/tools/node_modules/eslint/node_modules/write/README.md similarity index 100% rename from tools/eslint/node_modules/write/README.md rename to tools/node_modules/eslint/node_modules/write/README.md diff --git a/tools/eslint/node_modules/write/index.js b/tools/node_modules/eslint/node_modules/write/index.js similarity index 100% rename from tools/eslint/node_modules/write/index.js rename to tools/node_modules/eslint/node_modules/write/index.js diff --git a/tools/eslint/node_modules/write/package.json b/tools/node_modules/eslint/node_modules/write/package.json similarity index 100% rename from tools/eslint/node_modules/write/package.json rename to tools/node_modules/eslint/node_modules/write/package.json diff --git a/tools/eslint/node_modules/x-is-function/LICENSE b/tools/node_modules/eslint/node_modules/x-is-function/LICENSE similarity index 100% rename from tools/eslint/node_modules/x-is-function/LICENSE rename to tools/node_modules/eslint/node_modules/x-is-function/LICENSE diff --git a/tools/eslint/node_modules/x-is-function/README.md b/tools/node_modules/eslint/node_modules/x-is-function/README.md similarity index 100% rename from tools/eslint/node_modules/x-is-function/README.md rename to tools/node_modules/eslint/node_modules/x-is-function/README.md diff --git a/tools/eslint/node_modules/x-is-function/index.js b/tools/node_modules/eslint/node_modules/x-is-function/index.js similarity index 100% rename from tools/eslint/node_modules/x-is-function/index.js rename to tools/node_modules/eslint/node_modules/x-is-function/index.js diff --git a/tools/eslint/node_modules/x-is-function/package.json b/tools/node_modules/eslint/node_modules/x-is-function/package.json similarity index 100% rename from tools/eslint/node_modules/x-is-function/package.json rename to tools/node_modules/eslint/node_modules/x-is-function/package.json diff --git a/tools/eslint/node_modules/x-is-string/LICENCE b/tools/node_modules/eslint/node_modules/x-is-string/LICENCE similarity index 100% rename from tools/eslint/node_modules/x-is-string/LICENCE rename to tools/node_modules/eslint/node_modules/x-is-string/LICENCE diff --git a/tools/eslint/node_modules/x-is-string/README.md b/tools/node_modules/eslint/node_modules/x-is-string/README.md similarity index 100% rename from tools/eslint/node_modules/x-is-string/README.md rename to tools/node_modules/eslint/node_modules/x-is-string/README.md diff --git a/tools/eslint/node_modules/x-is-string/index.js b/tools/node_modules/eslint/node_modules/x-is-string/index.js similarity index 100% rename from tools/eslint/node_modules/x-is-string/index.js rename to tools/node_modules/eslint/node_modules/x-is-string/index.js diff --git a/tools/eslint/node_modules/x-is-string/package.json b/tools/node_modules/eslint/node_modules/x-is-string/package.json similarity index 100% rename from tools/eslint/node_modules/x-is-string/package.json rename to tools/node_modules/eslint/node_modules/x-is-string/package.json diff --git a/tools/eslint/node_modules/xtend/LICENCE b/tools/node_modules/eslint/node_modules/xtend/LICENCE similarity index 100% rename from tools/eslint/node_modules/xtend/LICENCE rename to tools/node_modules/eslint/node_modules/xtend/LICENCE diff --git a/tools/eslint/node_modules/xtend/Makefile b/tools/node_modules/eslint/node_modules/xtend/Makefile similarity index 100% rename from tools/eslint/node_modules/xtend/Makefile rename to tools/node_modules/eslint/node_modules/xtend/Makefile diff --git a/tools/eslint/node_modules/xtend/README.md b/tools/node_modules/eslint/node_modules/xtend/README.md similarity index 100% rename from tools/eslint/node_modules/xtend/README.md rename to tools/node_modules/eslint/node_modules/xtend/README.md diff --git a/tools/eslint/node_modules/xtend/immutable.js b/tools/node_modules/eslint/node_modules/xtend/immutable.js similarity index 100% rename from tools/eslint/node_modules/xtend/immutable.js rename to tools/node_modules/eslint/node_modules/xtend/immutable.js diff --git a/tools/eslint/node_modules/xtend/mutable.js b/tools/node_modules/eslint/node_modules/xtend/mutable.js similarity index 100% rename from tools/eslint/node_modules/xtend/mutable.js rename to tools/node_modules/eslint/node_modules/xtend/mutable.js diff --git a/tools/eslint/node_modules/xtend/package.json b/tools/node_modules/eslint/node_modules/xtend/package.json similarity index 100% rename from tools/eslint/node_modules/xtend/package.json rename to tools/node_modules/eslint/node_modules/xtend/package.json diff --git a/tools/eslint/node_modules/yallist/LICENSE b/tools/node_modules/eslint/node_modules/yallist/LICENSE similarity index 100% rename from tools/eslint/node_modules/yallist/LICENSE rename to tools/node_modules/eslint/node_modules/yallist/LICENSE diff --git a/tools/eslint/node_modules/yallist/README.md b/tools/node_modules/eslint/node_modules/yallist/README.md similarity index 100% rename from tools/eslint/node_modules/yallist/README.md rename to tools/node_modules/eslint/node_modules/yallist/README.md diff --git a/tools/eslint/node_modules/yallist/iterator.js b/tools/node_modules/eslint/node_modules/yallist/iterator.js similarity index 100% rename from tools/eslint/node_modules/yallist/iterator.js rename to tools/node_modules/eslint/node_modules/yallist/iterator.js diff --git a/tools/eslint/node_modules/yallist/package.json b/tools/node_modules/eslint/node_modules/yallist/package.json similarity index 100% rename from tools/eslint/node_modules/yallist/package.json rename to tools/node_modules/eslint/node_modules/yallist/package.json diff --git a/tools/eslint/node_modules/yallist/yallist.js b/tools/node_modules/eslint/node_modules/yallist/yallist.js similarity index 100% rename from tools/eslint/node_modules/yallist/yallist.js rename to tools/node_modules/eslint/node_modules/yallist/yallist.js diff --git a/tools/eslint/package.json b/tools/node_modules/eslint/package.json similarity index 100% rename from tools/eslint/package.json rename to tools/node_modules/eslint/package.json diff --git a/tools/update-eslint.sh b/tools/update-eslint.sh index 7de687f715cf25..44f43a05d31e1a 100755 --- a/tools/update-eslint.sh +++ b/tools/update-eslint.sh @@ -8,7 +8,7 @@ # $BASH_SOURCE[0] to determine directories to work in. cd "$( dirname "${BASH_SOURCE[0]}" )" -rm -rf eslint +rm -rf node_modules/eslint mkdir eslint-tmp cd eslint-tmp npm init --yes @@ -26,5 +26,5 @@ type -P dmn || npm install -g dmn dmn -f clean cd .. -mv eslint-tmp/node_modules/eslint eslint +mv eslint-tmp/node_modules/eslint node_modules/eslint rm -rf eslint-tmp/ diff --git a/vcbuild.bat b/vcbuild.bat index 7b58ca32e5ded5..38d42373a57412 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -535,9 +535,9 @@ goto exit :lint-js if defined lint_js_ci goto lint-js-ci if not defined lint_js goto exit -if not exist tools\eslint goto no-lint +if not exist tools\node_modules\eslint goto no-lint echo running lint-js -%config%\node tools\eslint\bin\eslint.js --cache --rule "linebreak-style: 0" --rulesdir=tools\eslint-rules --ext=.js,.md benchmark doc lib test tools +%config%\node tools\node_modules\eslint\bin\eslint.js --cache --rule "linebreak-style: 0" --rulesdir=tools\eslint-rules --ext=.js,.md benchmark doc lib test tools goto exit :lint-js-ci From d349fcae115595a9514224b5a052477db782674c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 9 Jan 2018 11:04:20 +0100 Subject: [PATCH 025/163] tools: update ESLint to 4.15.0 PR-URL: https://github.com/nodejs/node/pull/17820 Reviewed-By: Matteo Collina Reviewed-By: Benjamin Gruenbaum --- tools/node_modules/eslint/README.md | 6 +- tools/node_modules/eslint/lib/cli-engine.js | 4 + .../eslint/lib/formatters/checkstyle.js | 2 +- .../eslint/lib/formatters/jslint-xml.js | 2 +- .../eslint/lib/formatters/junit.js | 2 +- tools/node_modules/eslint/lib/linter.js | 113 ++++-- tools/node_modules/eslint/lib/options.js | 88 +++-- .../eslint/lib/report-translator.js | 47 ++- .../eslint/lib/rules/.eslintrc.yml | 1 + .../eslint/lib/rules/accessor-pairs.js | 3 +- .../eslint/lib/rules/array-bracket-newline.js | 3 +- .../eslint/lib/rules/array-bracket-spacing.js | 3 +- .../eslint/lib/rules/array-callback-return.js | 21 +- .../eslint/lib/rules/array-element-newline.js | 3 +- .../eslint/lib/rules/arrow-body-style.js | 17 +- .../eslint/lib/rules/arrow-parens.js | 3 +- .../eslint/lib/rules/arrow-spacing.js | 3 +- .../eslint/lib/rules/block-scoped-var.js | 3 +- .../eslint/lib/rules/block-spacing.js | 3 +- .../eslint/lib/rules/brace-style.js | 3 +- .../eslint/lib/rules/callback-return.js | 3 +- .../eslint/lib/rules/camelcase.js | 46 ++- .../eslint/lib/rules/capitalized-comments.js | 3 +- .../lib/rules/class-methods-use-this.js | 3 +- .../eslint/lib/rules/comma-dangle.js | 3 +- .../eslint/lib/rules/comma-spacing.js | 3 +- .../eslint/lib/rules/comma-style.js | 3 +- .../eslint/lib/rules/complexity.js | 19 +- .../lib/rules/computed-property-spacing.js | 3 +- .../eslint/lib/rules/consistent-return.js | 3 +- .../eslint/lib/rules/consistent-this.js | 3 +- .../eslint/lib/rules/constructor-super.js | 3 +- tools/node_modules/eslint/lib/rules/curly.js | 3 +- .../eslint/lib/rules/default-case.js | 3 +- .../eslint/lib/rules/dot-location.js | 3 +- .../eslint/lib/rules/dot-notation.js | 3 +- .../node_modules/eslint/lib/rules/eol-last.js | 11 +- tools/node_modules/eslint/lib/rules/eqeqeq.js | 3 +- .../eslint/lib/rules/for-direction.js | 3 +- .../eslint/lib/rules/func-call-spacing.js | 3 +- .../eslint/lib/rules/func-name-matching.js | 3 +- .../eslint/lib/rules/func-names.js | 3 +- .../eslint/lib/rules/func-style.js | 3 +- .../lib/rules/function-paren-newline.js | 3 +- .../lib/rules/generator-star-spacing.js | 3 +- .../eslint/lib/rules/getter-return.js | 3 +- .../eslint/lib/rules/global-require.js | 3 +- .../eslint/lib/rules/guard-for-in.js | 3 +- .../eslint/lib/rules/handle-callback-err.js | 3 +- .../eslint/lib/rules/id-blacklist.js | 3 +- .../eslint/lib/rules/id-length.js | 3 +- .../node_modules/eslint/lib/rules/id-match.js | 3 +- .../lib/rules/implicit-arrow-linebreak.js | 3 +- .../eslint/lib/rules/indent-legacy.js | 3 +- tools/node_modules/eslint/lib/rules/indent.js | 15 +- .../eslint/lib/rules/init-declarations.js | 3 +- .../eslint/lib/rules/jsx-quotes.js | 3 +- .../eslint/lib/rules/key-spacing.js | 3 +- .../eslint/lib/rules/keyword-spacing.js | 3 +- .../eslint/lib/rules/line-comment-position.js | 3 +- .../eslint/lib/rules/linebreak-style.js | 3 +- .../eslint/lib/rules/lines-around-comment.js | 3 +- .../lib/rules/lines-around-directive.js | 3 +- .../lib/rules/lines-between-class-members.js | 57 ++- .../eslint/lib/rules/max-depth.js | 3 +- .../node_modules/eslint/lib/rules/max-len.js | 3 +- .../eslint/lib/rules/max-lines.js | 3 +- .../eslint/lib/rules/max-nested-callbacks.js | 3 +- .../eslint/lib/rules/max-params.js | 3 +- .../lib/rules/max-statements-per-line.js | 3 +- .../eslint/lib/rules/max-statements.js | 3 +- .../lib/rules/multiline-comment-style.js | 3 +- .../eslint/lib/rules/multiline-ternary.js | 3 +- .../node_modules/eslint/lib/rules/new-cap.js | 3 +- .../eslint/lib/rules/new-parens.js | 3 +- .../eslint/lib/rules/newline-after-var.js | 3 +- .../eslint/lib/rules/newline-before-return.js | 3 +- .../lib/rules/newline-per-chained-call.js | 3 +- .../node_modules/eslint/lib/rules/no-alert.js | 3 +- .../eslint/lib/rules/no-array-constructor.js | 3 +- .../eslint/lib/rules/no-await-in-loop.js | 3 +- .../eslint/lib/rules/no-bitwise.js | 3 +- .../eslint/lib/rules/no-buffer-constructor.js | 3 +- .../eslint/lib/rules/no-caller.js | 3 +- .../eslint/lib/rules/no-case-declarations.js | 3 +- .../eslint/lib/rules/no-catch-shadow.js | 3 +- .../eslint/lib/rules/no-class-assign.js | 3 +- .../eslint/lib/rules/no-compare-neg-zero.js | 3 +- .../eslint/lib/rules/no-cond-assign.js | 3 +- .../eslint/lib/rules/no-confusing-arrow.js | 3 +- .../eslint/lib/rules/no-console.js | 3 +- .../eslint/lib/rules/no-const-assign.js | 3 +- .../eslint/lib/rules/no-constant-condition.js | 3 +- .../eslint/lib/rules/no-continue.js | 3 +- .../eslint/lib/rules/no-control-regex.js | 3 +- .../eslint/lib/rules/no-debugger.js | 3 +- .../eslint/lib/rules/no-delete-var.js | 3 +- .../eslint/lib/rules/no-div-regex.js | 3 +- .../eslint/lib/rules/no-dupe-args.js | 3 +- .../eslint/lib/rules/no-dupe-class-members.js | 3 +- .../eslint/lib/rules/no-dupe-keys.js | 3 +- .../eslint/lib/rules/no-duplicate-case.js | 3 +- .../eslint/lib/rules/no-duplicate-imports.js | 3 +- .../eslint/lib/rules/no-else-return.js | 3 +- .../lib/rules/no-empty-character-class.js | 3 +- .../eslint/lib/rules/no-empty-function.js | 3 +- .../eslint/lib/rules/no-empty-pattern.js | 3 +- .../node_modules/eslint/lib/rules/no-empty.js | 3 +- .../eslint/lib/rules/no-eq-null.js | 3 +- .../node_modules/eslint/lib/rules/no-eval.js | 3 +- .../eslint/lib/rules/no-ex-assign.js | 3 +- .../eslint/lib/rules/no-extend-native.js | 3 +- .../eslint/lib/rules/no-extra-bind.js | 3 +- .../eslint/lib/rules/no-extra-boolean-cast.js | 3 +- .../eslint/lib/rules/no-extra-label.js | 3 +- .../eslint/lib/rules/no-extra-parens.js | 5 +- .../eslint/lib/rules/no-extra-semi.js | 3 +- .../eslint/lib/rules/no-fallthrough.js | 3 +- .../eslint/lib/rules/no-floating-decimal.js | 3 +- .../eslint/lib/rules/no-func-assign.js | 3 +- .../eslint/lib/rules/no-global-assign.js | 3 +- .../eslint/lib/rules/no-implicit-coercion.js | 3 +- .../eslint/lib/rules/no-implicit-globals.js | 3 +- .../eslint/lib/rules/no-implied-eval.js | 3 +- .../eslint/lib/rules/no-inline-comments.js | 3 +- .../eslint/lib/rules/no-inner-declarations.js | 3 +- .../eslint/lib/rules/no-invalid-regexp.js | 3 +- .../eslint/lib/rules/no-invalid-this.js | 3 +- .../lib/rules/no-irregular-whitespace.js | 3 +- .../eslint/lib/rules/no-iterator.js | 3 +- .../eslint/lib/rules/no-label-var.js | 3 +- .../eslint/lib/rules/no-labels.js | 3 +- .../eslint/lib/rules/no-lone-blocks.js | 3 +- .../eslint/lib/rules/no-lonely-if.js | 3 +- .../eslint/lib/rules/no-loop-func.js | 3 +- .../eslint/lib/rules/no-magic-numbers.js | 3 +- .../eslint/lib/rules/no-mixed-operators.js | 3 +- .../eslint/lib/rules/no-mixed-requires.js | 3 +- .../lib/rules/no-mixed-spaces-and-tabs.js | 3 +- .../eslint/lib/rules/no-multi-assign.js | 3 +- .../eslint/lib/rules/no-multi-spaces.js | 3 +- .../eslint/lib/rules/no-multi-str.js | 3 +- .../lib/rules/no-multiple-empty-lines.js | 3 +- .../eslint/lib/rules/no-native-reassign.js | 3 +- .../eslint/lib/rules/no-negated-condition.js | 3 +- .../eslint/lib/rules/no-negated-in-lhs.js | 3 +- .../eslint/lib/rules/no-nested-ternary.js | 3 +- .../eslint/lib/rules/no-new-func.js | 3 +- .../eslint/lib/rules/no-new-object.js | 3 +- .../eslint/lib/rules/no-new-require.js | 3 +- .../eslint/lib/rules/no-new-symbol.js | 3 +- .../eslint/lib/rules/no-new-wrappers.js | 3 +- tools/node_modules/eslint/lib/rules/no-new.js | 3 +- .../eslint/lib/rules/no-obj-calls.js | 3 +- .../eslint/lib/rules/no-octal-escape.js | 3 +- .../node_modules/eslint/lib/rules/no-octal.js | 3 +- .../eslint/lib/rules/no-param-reassign.js | 3 +- .../eslint/lib/rules/no-path-concat.js | 3 +- .../eslint/lib/rules/no-plusplus.js | 3 +- .../eslint/lib/rules/no-process-env.js | 3 +- .../eslint/lib/rules/no-process-exit.js | 3 +- .../node_modules/eslint/lib/rules/no-proto.js | 3 +- .../eslint/lib/rules/no-prototype-builtins.js | 3 +- .../eslint/lib/rules/no-redeclare.js | 3 +- .../eslint/lib/rules/no-regex-spaces.js | 3 +- .../eslint/lib/rules/no-restricted-globals.js | 3 +- .../eslint/lib/rules/no-restricted-imports.js | 3 +- .../eslint/lib/rules/no-restricted-modules.js | 3 +- .../lib/rules/no-restricted-properties.js | 3 +- .../eslint/lib/rules/no-restricted-syntax.js | 3 +- .../eslint/lib/rules/no-return-assign.js | 3 +- .../eslint/lib/rules/no-return-await.js | 6 +- .../eslint/lib/rules/no-script-url.js | 3 +- .../eslint/lib/rules/no-self-assign.js | 3 +- .../eslint/lib/rules/no-self-compare.js | 3 +- .../eslint/lib/rules/no-sequences.js | 3 +- .../lib/rules/no-shadow-restricted-names.js | 3 +- .../eslint/lib/rules/no-shadow.js | 3 +- .../eslint/lib/rules/no-spaced-func.js | 3 +- .../eslint/lib/rules/no-sparse-arrays.js | 3 +- .../node_modules/eslint/lib/rules/no-sync.js | 3 +- .../node_modules/eslint/lib/rules/no-tabs.js | 3 +- .../lib/rules/no-template-curly-in-string.js | 3 +- .../eslint/lib/rules/no-ternary.js | 3 +- .../eslint/lib/rules/no-this-before-super.js | 3 +- .../eslint/lib/rules/no-throw-literal.js | 3 +- .../eslint/lib/rules/no-trailing-spaces.js | 3 +- .../eslint/lib/rules/no-undef-init.js | 3 +- .../node_modules/eslint/lib/rules/no-undef.js | 3 +- .../eslint/lib/rules/no-undefined.js | 3 +- .../eslint/lib/rules/no-underscore-dangle.js | 3 +- .../lib/rules/no-unexpected-multiline.js | 3 +- .../lib/rules/no-unmodified-loop-condition.js | 160 ++++---- .../eslint/lib/rules/no-unneeded-ternary.js | 3 +- .../eslint/lib/rules/no-unreachable.js | 3 +- .../eslint/lib/rules/no-unsafe-finally.js | 3 +- .../eslint/lib/rules/no-unsafe-negation.js | 3 +- .../eslint/lib/rules/no-unused-expressions.js | 3 +- .../eslint/lib/rules/no-unused-labels.js | 3 +- .../eslint/lib/rules/no-unused-vars.js | 24 +- .../eslint/lib/rules/no-use-before-define.js | 3 +- .../eslint/lib/rules/no-useless-call.js | 3 +- .../lib/rules/no-useless-computed-key.js | 3 +- .../eslint/lib/rules/no-useless-concat.js | 3 +- .../lib/rules/no-useless-constructor.js | 3 +- .../eslint/lib/rules/no-useless-escape.js | 3 +- .../eslint/lib/rules/no-useless-rename.js | 3 +- .../eslint/lib/rules/no-useless-return.js | 3 +- tools/node_modules/eslint/lib/rules/no-var.js | 3 +- .../node_modules/eslint/lib/rules/no-void.js | 3 +- .../eslint/lib/rules/no-warning-comments.js | 3 +- .../rules/no-whitespace-before-property.js | 3 +- .../node_modules/eslint/lib/rules/no-with.js | 3 +- .../rules/nonblock-statement-body-position.js | 3 +- .../eslint/lib/rules/object-curly-newline.js | 3 +- .../eslint/lib/rules/object-curly-spacing.js | 3 +- .../lib/rules/object-property-newline.js | 3 +- .../eslint/lib/rules/object-shorthand.js | 3 +- .../lib/rules/one-var-declaration-per-line.js | 3 +- .../node_modules/eslint/lib/rules/one-var.js | 50 ++- .../eslint/lib/rules/operator-assignment.js | 3 +- .../eslint/lib/rules/operator-linebreak.js | 3 +- .../eslint/lib/rules/padded-blocks.js | 3 +- .../rules/padding-line-between-statements.js | 3 +- .../eslint/lib/rules/prefer-arrow-callback.js | 3 +- .../eslint/lib/rules/prefer-const.js | 3 +- .../eslint/lib/rules/prefer-destructuring.js | 3 +- .../lib/rules/prefer-numeric-literals.js | 3 +- .../lib/rules/prefer-promise-reject-errors.js | 3 +- .../eslint/lib/rules/prefer-reflect.js | 3 +- .../eslint/lib/rules/prefer-rest-params.js | 3 +- .../eslint/lib/rules/prefer-spread.js | 3 +- .../eslint/lib/rules/prefer-template.js | 3 +- .../eslint/lib/rules/quote-props.js | 3 +- tools/node_modules/eslint/lib/rules/quotes.js | 3 +- tools/node_modules/eslint/lib/rules/radix.js | 3 +- .../eslint/lib/rules/require-await.js | 3 +- .../eslint/lib/rules/require-jsdoc.js | 3 +- .../eslint/lib/rules/require-yield.js | 3 +- .../eslint/lib/rules/rest-spread-spacing.js | 3 +- .../eslint/lib/rules/semi-spacing.js | 3 +- .../eslint/lib/rules/semi-style.js | 3 +- tools/node_modules/eslint/lib/rules/semi.js | 3 +- .../eslint/lib/rules/sort-imports.js | 3 +- .../eslint/lib/rules/sort-keys.js | 3 +- .../eslint/lib/rules/sort-vars.js | 3 +- .../eslint/lib/rules/space-before-blocks.js | 3 +- .../lib/rules/space-before-function-paren.js | 3 +- .../eslint/lib/rules/space-in-parens.js | 3 +- .../eslint/lib/rules/space-infix-ops.js | 3 +- .../eslint/lib/rules/space-unary-ops.js | 3 +- .../eslint/lib/rules/spaced-comment.js | 3 +- tools/node_modules/eslint/lib/rules/strict.js | 3 +- .../eslint/lib/rules/switch-colon-spacing.js | 3 +- .../eslint/lib/rules/symbol-description.js | 3 +- .../lib/rules/template-curly-spacing.js | 3 +- .../eslint/lib/rules/template-tag-spacing.js | 3 +- .../eslint/lib/rules/unicode-bom.js | 3 +- .../eslint/lib/rules/use-isnan.js | 3 +- .../eslint/lib/rules/valid-jsdoc.js | 3 +- .../eslint/lib/rules/valid-typeof.js | 3 +- .../eslint/lib/rules/vars-on-top.js | 3 +- .../eslint/lib/rules/wrap-iife.js | 3 +- .../eslint/lib/rules/wrap-regex.js | 3 +- .../eslint/lib/rules/yield-star-spacing.js | 3 +- tools/node_modules/eslint/lib/rules/yoda.js | 3 +- .../eslint/lib/testers/rule-tester.js | 93 +++-- .../eslint/lib/util/interpolate.js | 24 ++ .../eslint/lib/util/source-code.js | 47 ++- .../node_modules/eslint/lib/util/traverser.js | 178 ++++++++- .../acorn-jsx/node_modules/acorn/package.json | 2 +- .../node_modules/acorn-jsx/package.json | 2 +- .../eslint/node_modules/acorn/AUTHORS | 5 + .../eslint/node_modules/acorn/README.md | 27 +- .../eslint/node_modules/acorn/bin/_acorn.js | 69 ++++ .../eslint/node_modules/acorn/bin/acorn | 67 +--- .../node_modules/acorn/bin/run_test262.js | 27 ++ .../node_modules/acorn/bin/test262.whitelist | 372 ++++++++++++++++++ .../node_modules/acorn/dist/acorn.es.js | 327 ++++++++------- .../eslint/node_modules/acorn/dist/acorn.js | 329 +++++++++------- .../node_modules/acorn/dist/acorn_loose.js | 2 +- .../eslint/node_modules/acorn/dist/walk.js | 2 +- .../eslint/node_modules/acorn/package.json | 49 ++- .../node_modules/ajv-keywords/package.json | 2 +- .../eslint/node_modules/ajv/README.md | 2 +- .../node_modules/ajv/dist/ajv.bundle.js | 2 +- .../eslint/node_modules/ajv/dist/ajv.min.js | 4 +- .../node_modules/ajv/dist/ajv.min.js.map | 2 +- .../node_modules/ajv/dist/nodent.min.js | 4 +- .../node_modules/ajv/dist/regenerator.min.js | 4 +- .../eslint/node_modules/ajv/lib/ajv.d.ts | 126 +++--- .../eslint/node_modules/ajv/lib/ajv.js | 2 +- .../eslint/node_modules/ajv/package.json | 20 +- .../node_modules/ansi-escapes/package.json | 2 +- .../node_modules/ansi-regex/package.json | 2 +- .../node_modules/ansi-styles/package.json | 2 +- .../eslint/node_modules/argparse/package.json | 2 +- .../node_modules/array-union/package.json | 2 +- .../node_modules/array-uniq/package.json | 2 +- .../eslint/node_modules/arrify/package.json | 2 +- .../node_modules/chalk/package.json | 2 +- .../node_modules/strip-ansi/package.json | 2 +- .../babel-code-frame/package.json | 2 +- .../eslint/node_modules/bail/package.json | 2 +- .../node_modules/balanced-match/package.json | 2 +- .../node_modules/brace-expansion/package.json | 2 +- .../node_modules/caller-path/package.json | 2 +- .../node_modules/callsites/package.json | 2 +- .../node_modules/ansi-styles/package.json | 2 +- .../node_modules/supports-color/package.json | 2 +- .../eslint/node_modules/chalk/package.json | 2 +- .../character-entities-legacy/package.json | 2 +- .../character-entities/package.json | 2 +- .../character-reference-invalid/package.json | 2 +- .../eslint/node_modules/chardet/package.json | 12 +- .../node_modules/chardet/scripts/release | 16 - .../node_modules/circular-json/package.json | 2 +- .../node_modules/cli-cursor/package.json | 2 +- .../node_modules/cli-width/package.json | 2 +- .../eslint/node_modules/co/package.json | 2 +- .../collapse-white-space/package.json | 2 +- .../node_modules/color-convert/package.json | 2 +- .../node_modules/color-name/package.json | 2 +- .../node_modules/concat-map/package.json | 2 +- .../node_modules/concat-stream/package.json | 2 +- .../node_modules/core-util-is/package.json | 2 +- .../node_modules/cross-spawn/package.json | 2 +- .../debug/{Readme.md => README.md} | 0 .../eslint/node_modules/debug/package.json | 12 +- .../eslint/node_modules/deep-is/package.json | 2 +- .../eslint/node_modules/del/package.json | 2 +- .../eslint/node_modules/doctrine/README.md | 1 + .../node_modules/doctrine/lib/doctrine.js | 106 ++--- .../eslint/node_modules/doctrine/lib/typed.js | 162 ++++---- .../eslint/node_modules/doctrine/package.json | 12 +- .../escape-string-regexp/package.json | 2 +- .../eslint-plugin-markdown/package.json | 2 +- .../node_modules/eslint-scope/package.json | 2 +- .../node_modules/eslint-visitor-keys/LICENSE | 201 ++++++++++ .../eslint-visitor-keys/README.md | 98 +++++ .../eslint-visitor-keys/lib/index.js | 81 ++++ .../eslint-visitor-keys/lib/visitor-keys.json | 277 +++++++++++++ .../eslint-visitor-keys/package.json | 68 ++++ .../eslint/node_modules/espree/package.json | 2 +- .../eslint/node_modules/esprima/ChangeLog | 225 +++++++++++ .../eslint/node_modules/esprima/package.json | 2 +- .../eslint/node_modules/esquery/package.json | 2 +- .../node_modules/esrecurse/package.json | 2 +- .../node_modules/estraverse/package.json | 13 +- .../eslint/node_modules/esutils/package.json | 2 +- .../eslint/node_modules/extend/package.json | 2 +- .../node_modules/external-editor/package.json | 2 +- .../node_modules/fast-deep-equal/package.json | 2 +- .../fast-json-stable-stringify/package.json | 2 +- .../fast-levenshtein/package.json | 2 +- .../eslint/node_modules/figures/package.json | 2 +- .../file-entry-cache/package.json | 2 +- .../node_modules/flat-cache/package.json | 2 +- .../node_modules/fs.realpath/package.json | 2 +- .../node_modules/function-bind/package.json | 2 +- .../functional-red-black-tree/package.json | 2 +- .../eslint/node_modules/glob/package.json | 2 +- .../eslint/node_modules/globals/globals.json | 41 +- .../eslint/node_modules/globals/package.json | 12 +- .../eslint/node_modules/globby/package.json | 2 +- .../node_modules/graceful-fs/package.json | 2 +- .../eslint/node_modules/has-ansi/package.json | 2 +- .../eslint/node_modules/has-flag/package.json | 2 +- .../eslint/node_modules/has/package.json | 2 +- .../node_modules/iconv-lite/package.json | 2 +- .../eslint/node_modules/ignore/package.json | 2 +- .../node_modules/imurmurhash/package.json | 2 +- .../eslint/node_modules/inflight/package.json | 2 +- .../eslint/node_modules/inherits/package.json | 2 +- .../eslint/node_modules/inquirer/package.json | 2 +- .../node_modules/is-alphabetical/package.json | 2 +- .../is-alphanumerical/package.json | 2 +- .../node_modules/is-buffer/package.json | 2 +- .../node_modules/is-decimal/package.json | 2 +- .../is-fullwidth-code-point/package.json | 2 +- .../node_modules/is-hexadecimal/package.json | 2 +- .../node_modules/is-path-cwd/package.json | 2 +- .../node_modules/is-path-in-cwd/package.json | 2 +- .../node_modules/is-path-inside/license | 21 + .../node_modules/is-path-inside/package.json | 19 +- .../node_modules/is-path-inside/readme.md | 9 +- .../node_modules/is-plain-obj/package.json | 2 +- .../node_modules/is-promise/package.json | 2 +- .../eslint/node_modules/is-resolvable/LICENSE | 2 +- .../node_modules/is-resolvable/README.md | 6 +- .../node_modules/is-resolvable/index.js | 24 +- .../node_modules/is-resolvable/package.json | 50 ++- .../is-whitespace-character/package.json | 2 +- .../is-word-character/package.json | 2 +- .../eslint/node_modules/isarray/package.json | 2 +- .../eslint/node_modules/isexe/package.json | 2 +- .../js-tokens/{readme.md => README.md} | 0 .../node_modules/js-tokens/package.json | 2 +- .../eslint/node_modules/js-yaml/package.json | 2 +- .../json-schema-traverse/package.json | 2 +- .../package.json | 2 +- .../eslint/node_modules/levn/package.json | 2 +- .../eslint/node_modules/lodash/package.json | 2 +- .../node_modules/lru-cache/package.json | 2 +- .../markdown-escapes/package.json | 2 +- .../eslint/node_modules/mimic-fn/package.json | 2 +- .../node_modules/minimatch/package.json | 2 +- .../eslint/node_modules/minimist/package.json | 2 +- .../eslint/node_modules/mkdirp/package.json | 2 +- .../ms/{LICENSE.md => license.md} | 0 .../eslint/node_modules/ms/package.json | 2 +- .../node_modules/ms/{README.md => readme.md} | 0 .../node_modules/mute-stream/package.json | 2 +- .../node_modules/natural-compare/package.json | 2 +- .../node_modules/object-assign/package.json | 2 +- .../eslint/node_modules/once/package.json | 2 +- .../eslint/node_modules/onetime/package.json | 2 +- .../node_modules/optionator/package.json | 2 +- .../node_modules/os-tmpdir/package.json | 2 +- .../node_modules/parse-entities/package.json | 2 +- .../path-is-absolute/package.json | 2 +- .../node_modules/path-is-inside/package.json | 2 +- .../eslint/node_modules/pify/package.json | 2 +- .../node_modules/pinkie-promise/package.json | 2 +- .../eslint/node_modules/pinkie/package.json | 2 +- .../node_modules/pluralize/package.json | 2 +- .../node_modules/prelude-ls/package.json | 2 +- .../process-nextick-args/package.json | 2 +- .../progress/{Readme.md => README.md} | 0 .../eslint/node_modules/progress/package.json | 2 +- .../node_modules/pseudomap/package.json | 2 +- .../node_modules/readable-stream/package.json | 2 +- .../node_modules/remark-parse/package.json | 2 +- .../node_modules/repeat-string/package.json | 2 +- .../node_modules/replace-ext/package.json | 2 +- .../require-uncached/package.json | 2 +- .../node_modules/resolve-from/package.json | 2 +- .../node_modules/restore-cursor/package.json | 2 +- .../eslint/node_modules/rimraf/package.json | 2 +- .../node_modules/run-async/package.json | 2 +- .../rx-lite-aggregates/package.json | 2 +- .../eslint/node_modules/rx-lite/package.json | 2 +- .../node_modules/safe-buffer/package.json | 2 +- .../eslint/node_modules/semver/package.json | 2 +- .../node_modules/shebang-command/package.json | 2 +- .../node_modules/shebang-regex/package.json | 2 +- .../node_modules/signal-exit/package.json | 2 +- .../node_modules/slice-ansi/package.json | 2 +- .../node_modules/sprintf-js/package.json | 2 +- .../node_modules/state-toggle/package.json | 2 +- .../node_modules/string-width/package.json | 2 +- .../node_modules/string_decoder/package.json | 2 +- .../node_modules/ansi-regex/package.json | 2 +- .../node_modules/strip-ansi/package.json | 2 +- .../strip-json-comments/package.json | 2 +- .../node_modules/supports-color/package.json | 2 +- .../eslint/node_modules/table/package.json | 2 +- .../node_modules/text-table/package.json | 2 +- .../eslint/node_modules/through/package.json | 2 +- .../trim-trailing-lines/package.json | 2 +- .../eslint/node_modules/trim/package.json | 2 +- .../eslint/node_modules/trough/package.json | 2 +- .../eslint/node_modules/tryit/README.md | 56 --- .../eslint/node_modules/tryit/package.json | 59 --- .../eslint/node_modules/tryit/tryit.js | 14 - .../node_modules/type-check/package.json | 2 +- .../node_modules/typedarray/package.json | 2 +- .../eslint/node_modules/unherit/package.json | 2 +- .../eslint/node_modules/unified/package.json | 2 +- .../node_modules/unist-util-is/package.json | 2 +- .../unist-util-remove-position/package.json | 2 +- .../package.json | 2 +- .../node_modules/unist-util-visit/index.js | 34 +- .../unist-util-visit/package.json | 12 +- .../node_modules/unist-util-visit/readme.md | 73 +++- .../node_modules/util-deprecate/package.json | 2 +- .../node_modules/vfile-location/package.json | 2 +- .../node_modules/vfile-message/package.json | 2 +- .../eslint/node_modules/vfile/package.json | 2 +- .../eslint/node_modules/which/package.json | 2 +- .../eslint/node_modules/wordwrap/package.json | 2 +- .../eslint/node_modules/wrappy/package.json | 2 +- .../eslint/node_modules/write/package.json | 2 +- .../node_modules/x-is-function/package.json | 2 +- .../node_modules/x-is-string/package.json | 2 +- .../eslint/node_modules/xtend/package.json | 2 +- .../eslint/node_modules/yallist/package.json | 2 +- tools/node_modules/eslint/package.json | 16 +- 488 files changed, 3694 insertions(+), 1579 deletions(-) create mode 100644 tools/node_modules/eslint/lib/util/interpolate.js create mode 100644 tools/node_modules/eslint/node_modules/acorn/bin/_acorn.js create mode 100644 tools/node_modules/eslint/node_modules/acorn/bin/run_test262.js create mode 100644 tools/node_modules/eslint/node_modules/acorn/bin/test262.whitelist delete mode 100755 tools/node_modules/eslint/node_modules/chardet/scripts/release rename tools/node_modules/eslint/node_modules/debug/{Readme.md => README.md} (100%) create mode 100644 tools/node_modules/eslint/node_modules/eslint-visitor-keys/LICENSE create mode 100644 tools/node_modules/eslint/node_modules/eslint-visitor-keys/README.md create mode 100644 tools/node_modules/eslint/node_modules/eslint-visitor-keys/lib/index.js create mode 100644 tools/node_modules/eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.json create mode 100644 tools/node_modules/eslint/node_modules/eslint-visitor-keys/package.json create mode 100644 tools/node_modules/eslint/node_modules/esprima/ChangeLog create mode 100644 tools/node_modules/eslint/node_modules/is-path-inside/license mode change 100755 => 100644 tools/node_modules/eslint/node_modules/is-resolvable/README.md mode change 100755 => 100644 tools/node_modules/eslint/node_modules/is-resolvable/index.js rename tools/node_modules/eslint/node_modules/js-tokens/{readme.md => README.md} (100%) rename tools/node_modules/eslint/node_modules/ms/{LICENSE.md => license.md} (100%) rename tools/node_modules/eslint/node_modules/ms/{README.md => readme.md} (100%) rename tools/node_modules/eslint/node_modules/progress/{Readme.md => README.md} (100%) delete mode 100644 tools/node_modules/eslint/node_modules/tryit/README.md delete mode 100644 tools/node_modules/eslint/node_modules/tryit/package.json delete mode 100644 tools/node_modules/eslint/node_modules/tryit/tryit.js diff --git a/tools/node_modules/eslint/README.md b/tools/node_modules/eslint/README.md index 5a23d6295deff4..c333edd83bfaa1 100644 --- a/tools/node_modules/eslint/README.md +++ b/tools/node_modules/eslint/README.md @@ -156,7 +156,7 @@ Before filing an issue, please be sure to read the guidelines for what you're re ## Semantic Versioning Policy -ESLint follows [semantic versioning](http://semver.org). However, due to the nature of ESLint as a code quality tool, it's not always clear when a minor or major version bump occurs. To help clarify this for everyone, we've defined the following semantic versioning policy for ESLint: +ESLint follows [semantic versioning](https://semver.org). However, due to the nature of ESLint as a code quality tool, it's not always clear when a minor or major version bump occurs. To help clarify this for everyone, we've defined the following semantic versioning policy for ESLint: * Patch release (intended to not break your lint build) * A bug fix in a rule that results in ESLint reporting fewer errors. @@ -188,7 +188,7 @@ According to our policy, any minor update may report more errors than the previo ### How is ESLint different from JSHint? -The most significant difference is that ESlint has pluggable linting rules. That means you can use the rules it comes with, or you can extend it with rules created by others or by yourself! +The most significant difference is that ESLint has pluggable linting rules. That means you can use the rules it comes with, or you can extend it with rules created by others or by yourself! ### How does ESLint performance compare to JSHint? @@ -239,7 +239,7 @@ Once a language feature has been adopted into the ECMAScript standard (stage 4 a ### Where to ask for help? -Join our [Mailing List](https://groups.google.com/group/eslint) or [Chatroom](https://gitter.im/eslint/eslint) +Join our [Mailing List](https://groups.google.com/group/eslint) or [Chatroom](https://gitter.im/eslint/eslint). [npm-image]: https://img.shields.io/npm/v/eslint.svg?style=flat-square diff --git a/tools/node_modules/eslint/lib/cli-engine.js b/tools/node_modules/eslint/lib/cli-engine.js index 55450fd633e283..0c1afcbcebd13c 100644 --- a/tools/node_modules/eslint/lib/cli-engine.js +++ b/tools/node_modules/eslint/lib/cli-engine.js @@ -420,6 +420,10 @@ class CLIEngine { this.config = new Config(this.options, this.linter); } + getRules() { + return this.linter.getRules(); + } + /** * Returns results that only contains errors. * @param {LintResult[]} results The results to filter. diff --git a/tools/node_modules/eslint/lib/formatters/checkstyle.js b/tools/node_modules/eslint/lib/formatters/checkstyle.js index 720e831a3ecd67..c807871930bdec 100644 --- a/tools/node_modules/eslint/lib/formatters/checkstyle.js +++ b/tools/node_modules/eslint/lib/formatters/checkstyle.js @@ -32,7 +32,7 @@ module.exports = function(results) { let output = ""; - output += ""; + output += ""; output += ""; results.forEach(result => { diff --git a/tools/node_modules/eslint/lib/formatters/jslint-xml.js b/tools/node_modules/eslint/lib/formatters/jslint-xml.js index e152d8bdd71bff..14743430d8ff94 100644 --- a/tools/node_modules/eslint/lib/formatters/jslint-xml.js +++ b/tools/node_modules/eslint/lib/formatters/jslint-xml.js @@ -14,7 +14,7 @@ module.exports = function(results) { let output = ""; - output += ""; + output += ""; output += ""; results.forEach(result => { diff --git a/tools/node_modules/eslint/lib/formatters/junit.js b/tools/node_modules/eslint/lib/formatters/junit.js index ca666bb14c6ceb..77d548f380e2b6 100644 --- a/tools/node_modules/eslint/lib/formatters/junit.js +++ b/tools/node_modules/eslint/lib/formatters/junit.js @@ -32,7 +32,7 @@ module.exports = function(results) { let output = ""; - output += "\n"; + output += "\n"; output += "\n"; results.forEach(result => { diff --git a/tools/node_modules/eslint/lib/linter.js b/tools/node_modules/eslint/lib/linter.js index 21d62f73ae6a3b..2238c5be0e3448 100755 --- a/tools/node_modules/eslint/lib/linter.js +++ b/tools/node_modules/eslint/lib/linter.js @@ -10,6 +10,7 @@ //------------------------------------------------------------------------------ const eslintScope = require("eslint-scope"), + evk = require("eslint-visitor-keys"), levn = require("levn"), lodash = require("lodash"), blankScriptAST = require("../conf/blank-script.json"), @@ -43,6 +44,8 @@ const MAX_AUTOFIX_PASSES = 10; * @property {ASTNode} ast The ESTree AST Program node. * @property {Object} services An object containing additional services related * to the parser. + * @property {ScopeManager|null} scopeManager The scope manager object of this AST. + * @property {Object|null} visitorKeys The visitor keys to traverse this AST. */ //------------------------------------------------------------------------------ @@ -501,6 +504,28 @@ function getRuleOptions(ruleConfig) { } +/** + * Analyze scope of the given AST. + * @param {ASTNode} ast The `Program` node to analyze. + * @param {Object} parserOptions The parser options. + * @param {Object} visitorKeys The visitor keys. + * @returns {ScopeManager} The analysis result. + */ +function analyzeScope(ast, parserOptions, visitorKeys) { + const ecmaFeatures = parserOptions.ecmaFeatures || {}; + const ecmaVersion = parserOptions.ecmaVersion || 5; + + return eslintScope.analyze(ast, { + ignoreEval: true, + nodejsScope: ecmaFeatures.globalReturn, + impliedStrict: ecmaFeatures.impliedStrict, + ecmaVersion, + sourceType: parserOptions.sourceType || "script", + childVisitorKeys: visitorKeys || evk.KEYS, + fallback: Traverser.getKeys + }); +} + /** * Parses text into an AST. Moved out here because the try-catch prevents * optimization of functions, so it's best to keep the try-catch as isolated @@ -509,18 +534,20 @@ function getRuleOptions(ruleConfig) { * @param {Object} providedParserOptions Options to pass to the parser * @param {Object} parser The parser module * @param {string} filePath The path to the file being parsed. - * @returns {{success: false, error: Problem}|{success: true,ast: ASTNode, services: Object}} + * @returns {{success: false, error: Problem}|{success: true, sourceCode: SourceCode}} * An object containing the AST and parser services if parsing was successful, or the error if parsing failed * @private */ function parse(text, providedParserOptions, parser, filePath) { - + const textToParse = stripUnicodeBOM(text).replace(astUtils.SHEBANG_MATCHER, (match, captured) => `//${captured}`); const parserOptions = Object.assign({}, providedParserOptions, { loc: true, range: true, raw: true, tokens: true, comment: true, + eslintVisitorKeys: true, + eslintScopeManager: true, filePath }); @@ -531,20 +558,30 @@ function parse(text, providedParserOptions, parser, filePath) { * problem that ESLint identified just like any other. */ try { - if (typeof parser.parseForESLint === "function") { - const parseResult = parser.parseForESLint(text, parserOptions); - - return { - success: true, - ast: parseResult.ast, - services: parseResult.services || {} - }; - } + const parseResult = (typeof parser.parseForESLint === "function") + ? parser.parseForESLint(textToParse, parserOptions) + : { ast: parser.parse(textToParse, parserOptions) }; + const ast = parseResult.ast; + const parserServices = parseResult.services || {}; + const visitorKeys = parseResult.visitorKeys || evk.KEYS; + const scopeManager = parseResult.scopeManager || analyzeScope(ast, parserOptions, visitorKeys); return { success: true, - ast: parser.parse(text, parserOptions), - services: {} + + /* + * Save all values that `parseForESLint()` returned. + * If a `SourceCode` object is given as the first parameter instead of source code text, + * linter skips the parsing process and reuses the source code object. + * In that case, linter needs all the values that `parseForESLint()` returned. + */ + sourceCode: new SourceCode({ + text, + ast, + parserServices, + scopeManager, + visitorKeys + }) }; } catch (ex) { @@ -717,7 +754,6 @@ module.exports = class Linter { */ _verifyWithoutProcessors(textOrSourceCode, config, filenameOrOptions) { let text, - parserServices, allowInlineConfig, providedFilename, reportUnusedDisableDirectives; @@ -731,8 +767,6 @@ module.exports = class Linter { providedFilename = filenameOrOptions; } - const filename = typeof providedFilename === "string" ? providedFilename : ""; - if (typeof textOrSourceCode === "string") { lastSourceCodes.set(this, null); text = textOrSourceCode; @@ -741,6 +775,8 @@ module.exports = class Linter { text = textOrSourceCode.text; } + const filename = typeof providedFilename === "string" ? providedFilename : ""; + // search and apply "eslint-env *". const envInFile = findEslintEnv(text); @@ -757,9 +793,7 @@ module.exports = class Linter { // process initial config to make it safe to extend config = prepareConfig(config, this.environments); - if (lastSourceCodes.get(this)) { - parserServices = {}; - } else { + if (!lastSourceCodes.get(this)) { // there's no input, just exit here if (text.trim().length === 0) { @@ -783,7 +817,7 @@ module.exports = class Linter { }]; } const parseResult = parse( - stripUnicodeBOM(text).replace(astUtils.SHEBANG_MATCHER, (match, captured) => `//${captured}`), + text, config.parserOptions, parser, filename @@ -793,8 +827,24 @@ module.exports = class Linter { return [parseResult.error]; } - parserServices = parseResult.services; - lastSourceCodes.set(this, new SourceCode(text, parseResult.ast)); + lastSourceCodes.set(this, parseResult.sourceCode); + } else { + + /* + * If the given source code object as the first argument does not have scopeManager, analyze the scope. + * This is for backward compatibility (SourceCode is frozen so it cannot rebind). + */ + const lastSourceCode = lastSourceCodes.get(this); + + if (!lastSourceCode.scopeManager) { + lastSourceCodes.set(this, new SourceCode({ + text: lastSourceCode.text, + ast: lastSourceCode.ast, + parserServices: lastSourceCode.parserServices, + visitorKeys: lastSourceCode.visitorKeys, + scopeManager: analyzeScope(lastSourceCode.ast, config.parserOptions) + })); + } } const problems = []; @@ -814,16 +864,7 @@ module.exports = class Linter { const emitter = createEmitter(); const traverser = new Traverser(); - const ecmaFeatures = config.parserOptions.ecmaFeatures || {}; - const ecmaVersion = config.parserOptions.ecmaVersion || 5; - const scopeManager = eslintScope.analyze(sourceCode.ast, { - ignoreEval: true, - nodejsScope: ecmaFeatures.globalReturn, - impliedStrict: ecmaFeatures.impliedStrict, - ecmaVersion, - sourceType: config.parserOptions.sourceType || "script", - fallback: Traverser.getKeys - }); + const scopeManager = sourceCode.scopeManager; /* * Create a frozen object with the ruleContext properties and methods that are shared by all rules. @@ -842,7 +883,7 @@ module.exports = class Linter { markVariableAsUsed: name => markVariableAsUsed(scopeManager, traverser.current(), config.parserOptions, name), parserOptions: config.parserOptions, parserPath: config.parser, - parserServices, + parserServices: sourceCode.parserServices, settings: config.settings, /** @@ -870,6 +911,7 @@ module.exports = class Linter { } const rule = this.rules.get(ruleId); + const messageIds = rule && rule.meta && rule.meta.messages; let reportTranslator = null; const ruleContext = Object.freeze( Object.assign( @@ -890,7 +932,7 @@ module.exports = class Linter { * with Node 8.4.0. */ if (reportTranslator === null) { - reportTranslator = createReportTranslator({ ruleId, severity, sourceCode }); + reportTranslator = createReportTranslator({ ruleId, severity, sourceCode, messageIds }); } const problem = reportTranslator.apply(null, arguments); @@ -957,7 +999,8 @@ module.exports = class Linter { }, leave(node) { eventGenerator.leaveNode(node); - } + }, + visitorKeys: sourceCode.visitorKeys }); return applyDisableDirectives({ diff --git a/tools/node_modules/eslint/lib/options.js b/tools/node_modules/eslint/lib/options.js index ee1d3369cecf36..c8005d4445190e 100644 --- a/tools/node_modules/eslint/lib/options.js +++ b/tools/node_modules/eslint/lib/options.js @@ -64,26 +64,6 @@ module.exports = optionator({ type: "Object", description: "Specify parser options" }, - { - heading: "Caching" - }, - { - option: "cache", - type: "Boolean", - default: "false", - description: "Only check changed files" - }, - { - option: "cache-file", - type: "path::String", - default: ".eslintcache", - description: "Path to the cache file. Deprecated: use --cache-location" - }, - { - option: "cache-location", - type: "path::String", - description: "Path to the cache file or directory" - }, { heading: "Specifying rules and plugins" }, @@ -102,6 +82,21 @@ module.exports = optionator({ type: "Object", description: "Specify rules" }, + { + heading: "Fixing problems" + }, + { + option: "fix", + type: "Boolean", + default: false, + description: "Automatically fix problems" + }, + { + option: "fix-dry-run", + type: "Boolean", + default: false, + description: "Automatically fix problems without saving the changes to the file system" + }, { heading: "Ignoring files" }, @@ -176,25 +171,48 @@ module.exports = optionator({ description: "Force enabling/disabling of color" }, { - heading: "Miscellaneous" + heading: "Inline configuration comments" }, { - option: "init", + option: "inline-config", type: "Boolean", - default: "false", - description: "Run config initialization wizard" + default: "true", + description: "Prevent comments from changing config or rules" }, { - option: "fix", + option: "report-unused-disable-directives", type: "Boolean", default: false, - description: "Automatically fix problems" + description: "Adds reported errors for unused eslint-disable directives" }, { - option: "fix-dry-run", + heading: "Caching" + }, + { + option: "cache", type: "Boolean", - default: false, - description: "Automatically fix problems without saving the changes to the file system" + default: "false", + description: "Only check changed files" + }, + { + option: "cache-file", + type: "path::String", + default: ".eslintcache", + description: "Path to the cache file. Deprecated: use --cache-location" + }, + { + option: "cache-location", + type: "path::String", + description: "Path to the cache file or directory" + }, + { + heading: "Miscellaneous" + }, + { + option: "init", + type: "Boolean", + default: "false", + description: "Run config initialization wizard" }, { option: "debug", @@ -214,18 +232,6 @@ module.exports = optionator({ type: "Boolean", description: "Output the version number" }, - { - option: "inline-config", - type: "Boolean", - default: "true", - description: "Prevent comments from changing config or rules" - }, - { - option: "report-unused-disable-directives", - type: "Boolean", - default: false, - description: "Adds reported errors for unused eslint-disable directives" - }, { option: "print-config", type: "path::String", diff --git a/tools/node_modules/eslint/lib/report-translator.js b/tools/node_modules/eslint/lib/report-translator.js index 9c4ab8b9a9fb05..8e5b587f96c33c 100644 --- a/tools/node_modules/eslint/lib/report-translator.js +++ b/tools/node_modules/eslint/lib/report-translator.js @@ -11,6 +11,7 @@ const assert = require("assert"); const ruleFixer = require("./util/rule-fixer"); +const interpolate = require("./util/interpolate"); //------------------------------------------------------------------------------ // Typedefs @@ -41,7 +42,9 @@ function normalizeMultiArgReportCall() { // If there is one argument, it is considered to be a new-style call already. if (arguments.length === 1) { - return arguments[0]; + + // Shallow clone the object to avoid surprises if reusing the descriptor + return Object.assign({}, arguments[0]); } // If the second argument is a string, the arguments are interpreted as [node, message, data, fix]. @@ -100,16 +103,7 @@ function normalizeReportLoc(descriptor) { * @returns {string} The interpolated message for the descriptor */ function normalizeMessagePlaceholders(descriptor) { - if (!descriptor.data) { - return descriptor.message; - } - return descriptor.message.replace(/\{\{\s*([^{}]+?)\s*\}\}/g, (fullMatch, term) => { - if (term in descriptor.data) { - return descriptor.data[term]; - } - - return fullMatch; - }); + return interpolate(descriptor.message, descriptor.data); } /** @@ -216,6 +210,14 @@ function createProblem(options) { source: options.sourceLines[options.loc.start.line - 1] || "" }; + /* + * If this isn’t in the conditional, some of the tests fail + * because `messageId` is present in the problem object + */ + if (options.messageId) { + problem.messageId = options.messageId; + } + if (options.loc.end) { problem.endLine = options.loc.end.line; problem.endColumn = options.loc.end.column + 1; @@ -231,12 +233,13 @@ function createProblem(options) { /** * Returns a function that converts the arguments of a `context.report` call from a rule into a reported * problem for the Node.js API. - * @param {{ruleId: string, severity: number, sourceCode: SourceCode}} metadata Metadata for the reported problem + * @param {{ruleId: string, severity: number, sourceCode: SourceCode, messageIds: Object}} metadata Metadata for the reported problem * @param {SourceCode} sourceCode The `SourceCode` instance for the text being linted * @returns {function(...args): { * ruleId: string, * severity: (0|1|2), - * message: string, + * message: (string|undefined), + * messageId: (string|undefined), * line: number, * column: number, * endLine: (number|undefined), @@ -261,11 +264,29 @@ module.exports = function createReportTranslator(metadata) { assertValidNodeInfo(descriptor); + if (descriptor.messageId) { + if (!metadata.messageIds) { + throw new TypeError("context.report() called with a messageId, but no messages were present in the rule metadata."); + } + const id = descriptor.messageId; + const messages = metadata.messageIds; + + if (descriptor.message) { + throw new TypeError("context.report() called with a message and a messageId. Please only pass one."); + } + if (!messages || !Object.prototype.hasOwnProperty.call(messages, id)) { + throw new TypeError(`context.report() called with a messageId of '${id}' which is not present in the 'messages' config: ${JSON.stringify(messages, null, 2)}`); + } + descriptor.message = messages[id]; + } + + return createProblem({ ruleId: metadata.ruleId, severity: metadata.severity, node: descriptor.node, message: normalizeMessagePlaceholders(descriptor), + messageId: descriptor.messageId, loc: normalizeReportLoc(descriptor), fix: normalizeFixes(descriptor, metadata.sourceCode), sourceLines: metadata.sourceCode.lines diff --git a/tools/node_modules/eslint/lib/rules/.eslintrc.yml b/tools/node_modules/eslint/lib/rules/.eslintrc.yml index 2a8d907935b5f7..64b3cee7f0111e 100644 --- a/tools/node_modules/eslint/lib/rules/.eslintrc.yml +++ b/tools/node_modules/eslint/lib/rules/.eslintrc.yml @@ -1,3 +1,4 @@ rules: rulesdir/no-invalid-meta: "error" rulesdir/consistent-docs-description: "error" + rulesdir/consistent-docs-url: "error" diff --git a/tools/node_modules/eslint/lib/rules/accessor-pairs.js b/tools/node_modules/eslint/lib/rules/accessor-pairs.js index 4afdc7136ca2a6..b01b29b176390e 100644 --- a/tools/node_modules/eslint/lib/rules/accessor-pairs.js +++ b/tools/node_modules/eslint/lib/rules/accessor-pairs.js @@ -75,7 +75,8 @@ module.exports = { docs: { description: "enforce getter and setter pairs in objects", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/accessor-pairs" }, schema: [{ type: "object", diff --git a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js index cb7350a825057f..b939d65b3f1da4 100644 --- a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js +++ b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce linebreaks after opening and before closing array brackets", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/array-bracket-newline" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js b/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js index aecef2c4f2099e..933458a42a1a63 100644 --- a/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js +++ b/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce consistent spacing inside array brackets", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/array-bracket-spacing" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/array-callback-return.js b/tools/node_modules/eslint/lib/rules/array-callback-return.js index 37d6ebe3a72343..69655481d80626 100644 --- a/tools/node_modules/eslint/lib/rules/array-callback-return.js +++ b/tools/node_modules/eslint/lib/rules/array-callback-return.js @@ -142,13 +142,27 @@ module.exports = { docs: { description: "enforce `return` statements in callbacks of array methods", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/array-callback-return" }, - schema: [] + schema: [ + { + type: "object", + properties: { + allowImplicit: { + type: "boolean" + } + }, + additionalProperties: false + } + ] }, create(context) { + + const options = context.options[0] || { allowImplicit: false }; + let funcInfo = { upper: null, codePath: null, @@ -212,7 +226,8 @@ module.exports = { if (funcInfo.shouldCheck) { funcInfo.hasReturn = true; - if (!node.argument) { + // if allowImplicit: false, should also check node.argument + if (!options.allowImplicit && !node.argument) { context.report({ node, message: "{{name}} expected a return value.", diff --git a/tools/node_modules/eslint/lib/rules/array-element-newline.js b/tools/node_modules/eslint/lib/rules/array-element-newline.js index 26dc9bfa0b6af3..22352c7e33db65 100644 --- a/tools/node_modules/eslint/lib/rules/array-element-newline.js +++ b/tools/node_modules/eslint/lib/rules/array-element-newline.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce line breaks after each array element", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/array-element-newline" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/arrow-body-style.js b/tools/node_modules/eslint/lib/rules/arrow-body-style.js index 78a391334d7a51..afbf46fd54589f 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-body-style.js +++ b/tools/node_modules/eslint/lib/rules/arrow-body-style.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "require braces around arrow function bodies", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/arrow-body-style" }, schema: { @@ -109,10 +110,22 @@ module.exports = { } if (never || asNeeded && blockBody[0].type === "ReturnStatement") { + let message; + + if (blockBody.length === 0) { + message = "Unexpected block statement surrounding arrow body; put a value of `undefined` immediately after the `=>`."; + } else if (blockBody.length > 1) { + message = "Unexpected block statement surrounding arrow body."; + } else if (astUtils.isOpeningBraceToken(sourceCode.getFirstToken(blockBody[0], { skip: 1 }))) { + message = "Unexpected block statement surrounding arrow body; parenthesize the returned value and move it immediately after the `=>`."; + } else { + message = "Unexpected block statement surrounding arrow body; move the returned value immediately after the `=>`."; + } + context.report({ node, loc: arrowBody.loc.start, - message: "Unexpected block statement surrounding arrow body.", + message, fix(fixer) { const fixes = []; diff --git a/tools/node_modules/eslint/lib/rules/arrow-parens.js b/tools/node_modules/eslint/lib/rules/arrow-parens.js index e8f8ddd8e76583..5a0fd61b3482b0 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-parens.js +++ b/tools/node_modules/eslint/lib/rules/arrow-parens.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "require parentheses around arrow function arguments", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/arrow-parens" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/arrow-spacing.js b/tools/node_modules/eslint/lib/rules/arrow-spacing.js index 37e03907cb9f27..d2c5b9b77bfc6b 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-spacing.js +++ b/tools/node_modules/eslint/lib/rules/arrow-spacing.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce consistent spacing before and after the arrow in arrow functions", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/arrow-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/block-scoped-var.js b/tools/node_modules/eslint/lib/rules/block-scoped-var.js index 0b4d855fae5024..58cef1741a82db 100644 --- a/tools/node_modules/eslint/lib/rules/block-scoped-var.js +++ b/tools/node_modules/eslint/lib/rules/block-scoped-var.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "enforce the use of variables within the scope they are defined", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/block-scoped-var" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/block-spacing.js b/tools/node_modules/eslint/lib/rules/block-spacing.js index b3ea8405e24be1..4fbf6d4c0bfb66 100644 --- a/tools/node_modules/eslint/lib/rules/block-spacing.js +++ b/tools/node_modules/eslint/lib/rules/block-spacing.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow or enforce spaces inside of blocks after opening block and before closing block", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/block-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/brace-style.js b/tools/node_modules/eslint/lib/rules/brace-style.js index 320da9dac91cbc..bc0ddbd78f2810 100644 --- a/tools/node_modules/eslint/lib/rules/brace-style.js +++ b/tools/node_modules/eslint/lib/rules/brace-style.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce consistent brace style for blocks", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/brace-style" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/callback-return.js b/tools/node_modules/eslint/lib/rules/callback-return.js index 0fa7f278a18161..ed85c7181a9f4b 100644 --- a/tools/node_modules/eslint/lib/rules/callback-return.js +++ b/tools/node_modules/eslint/lib/rules/callback-return.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "require `return` statements after callbacks", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/callback-return" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/camelcase.js b/tools/node_modules/eslint/lib/rules/camelcase.js index 6fb1475b21dbcd..86822f975293b5 100644 --- a/tools/node_modules/eslint/lib/rules/camelcase.js +++ b/tools/node_modules/eslint/lib/rules/camelcase.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce camelcase naming convention", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/camelcase" }, schema: [ @@ -92,34 +93,45 @@ module.exports = { } // Always report underscored object names - if (node.parent.object.type === "Identifier" && - node.parent.object.name === node.name && - isUnderscored(name)) { + if (node.parent.object.type === "Identifier" && node.parent.object.name === node.name && isUnderscored(name)) { report(node); // Report AssignmentExpressions only if they are the left side of the assignment - } else if (effectiveParent.type === "AssignmentExpression" && - isUnderscored(name) && - (effectiveParent.right.type !== "MemberExpression" || - effectiveParent.left.type === "MemberExpression" && - effectiveParent.left.property.name === node.name)) { + } else if (effectiveParent.type === "AssignmentExpression" && isUnderscored(name) && (effectiveParent.right.type !== "MemberExpression" || effectiveParent.left.type === "MemberExpression" && effectiveParent.left.property.name === node.name)) { report(node); } - // Properties have their own rules - } else if (node.parent.type === "Property") { + /* + * Properties have their own rules, and + * AssignmentPattern nodes can be treated like Properties: + * e.g.: const { no_camelcased = false } = bar; + */ + } else if (node.parent.type === "Property" || node.parent.type === "AssignmentPattern") { - // "never" check properties - if (properties === "never") { - return; + if (node.parent.parent && node.parent.parent.type === "ObjectPattern") { + + if (node.parent.shorthand && node.parent.value.left && isUnderscored(name)) { + + report(node); + } + + // prevent checking righthand side of destructured object + if (node.parent.key === node && node.parent.value !== node) { + return; + } + + if (node.parent.value.name && isUnderscored(name)) { + report(node); + } } - if (node.parent.parent && node.parent.parent.type === "ObjectPattern" && - node.parent.key === node && node.parent.value !== node) { + // "never" check properties + if (properties === "never") { return; } - if (isUnderscored(name) && !ALLOWED_PARENT_TYPES.has(effectiveParent.type)) { + // don't check right hand side of AssignmentExpression to prevent duplicate warnings + if (isUnderscored(name) && !ALLOWED_PARENT_TYPES.has(effectiveParent.type) && !(node.parent.right === node)) { report(node); } diff --git a/tools/node_modules/eslint/lib/rules/capitalized-comments.js b/tools/node_modules/eslint/lib/rules/capitalized-comments.js index 1a276080673084..19b5f6a7175dbb 100644 --- a/tools/node_modules/eslint/lib/rules/capitalized-comments.js +++ b/tools/node_modules/eslint/lib/rules/capitalized-comments.js @@ -113,7 +113,8 @@ module.exports = { docs: { description: "enforce or disallow capitalization of the first letter of a comment", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/capitalized-comments" }, fixable: "code", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/class-methods-use-this.js b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js index d429c579b94110..774086780aef71 100644 --- a/tools/node_modules/eslint/lib/rules/class-methods-use-this.js +++ b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce that class methods utilize `this`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/class-methods-use-this" }, schema: [{ type: "object", diff --git a/tools/node_modules/eslint/lib/rules/comma-dangle.js b/tools/node_modules/eslint/lib/rules/comma-dangle.js index ddcc0cd229e977..180979d40321d0 100644 --- a/tools/node_modules/eslint/lib/rules/comma-dangle.js +++ b/tools/node_modules/eslint/lib/rules/comma-dangle.js @@ -79,7 +79,8 @@ module.exports = { docs: { description: "require or disallow trailing commas", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/comma-dangle" }, fixable: "code", schema: { diff --git a/tools/node_modules/eslint/lib/rules/comma-spacing.js b/tools/node_modules/eslint/lib/rules/comma-spacing.js index 25a0e7d82c8abe..dd3de7f35430a6 100644 --- a/tools/node_modules/eslint/lib/rules/comma-spacing.js +++ b/tools/node_modules/eslint/lib/rules/comma-spacing.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce consistent spacing before and after commas", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/comma-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/comma-style.js b/tools/node_modules/eslint/lib/rules/comma-style.js index 4c65338a4448c4..8b96e5e25a3b81 100644 --- a/tools/node_modules/eslint/lib/rules/comma-style.js +++ b/tools/node_modules/eslint/lib/rules/comma-style.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce consistent comma style", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/comma-style" }, fixable: "code", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/complexity.js b/tools/node_modules/eslint/lib/rules/complexity.js index e0313fa78f17c3..1838d4bf8ed707 100644 --- a/tools/node_modules/eslint/lib/rules/complexity.js +++ b/tools/node_modules/eslint/lib/rules/complexity.js @@ -23,7 +23,8 @@ module.exports = { docs: { description: "enforce a maximum cyclomatic complexity allowed in a program", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/complexity" }, schema: [ @@ -126,20 +127,6 @@ module.exports = { } } - /** - * Increase the logical path complexity in context - * @param {ASTNode} node node to evaluate - * @returns {void} - * @private - */ - function increaseLogicalComplexity(node) { - - // Avoiding && - if (node.operator === "||") { - increaseComplexity(); - } - } - //-------------------------------------------------------------------------- // Public API //-------------------------------------------------------------------------- @@ -154,7 +141,7 @@ module.exports = { CatchClause: increaseComplexity, ConditionalExpression: increaseComplexity, - LogicalExpression: increaseLogicalComplexity, + LogicalExpression: increaseComplexity, ForStatement: increaseComplexity, ForInStatement: increaseComplexity, ForOfStatement: increaseComplexity, diff --git a/tools/node_modules/eslint/lib/rules/computed-property-spacing.js b/tools/node_modules/eslint/lib/rules/computed-property-spacing.js index 19c28fd22e1a38..57408afb453d60 100644 --- a/tools/node_modules/eslint/lib/rules/computed-property-spacing.js +++ b/tools/node_modules/eslint/lib/rules/computed-property-spacing.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce consistent spacing inside computed property brackets", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/computed-property-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/consistent-return.js b/tools/node_modules/eslint/lib/rules/consistent-return.js index a42faaa1ed6484..a436dd1fc0c987 100644 --- a/tools/node_modules/eslint/lib/rules/consistent-return.js +++ b/tools/node_modules/eslint/lib/rules/consistent-return.js @@ -56,7 +56,8 @@ module.exports = { docs: { description: "require `return` statements to either always or never specify values", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/consistent-return" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/consistent-this.js b/tools/node_modules/eslint/lib/rules/consistent-this.js index 151cdcf9c9c03f..60690007f2de83 100644 --- a/tools/node_modules/eslint/lib/rules/consistent-this.js +++ b/tools/node_modules/eslint/lib/rules/consistent-this.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "enforce consistent naming when capturing the current execution context", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/consistent-this" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/constructor-super.js b/tools/node_modules/eslint/lib/rules/constructor-super.js index d0a238df8edbd3..30637472f196fe 100644 --- a/tools/node_modules/eslint/lib/rules/constructor-super.js +++ b/tools/node_modules/eslint/lib/rules/constructor-super.js @@ -95,7 +95,8 @@ module.exports = { docs: { description: "require `super()` calls in constructors", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/constructor-super" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/curly.js b/tools/node_modules/eslint/lib/rules/curly.js index 37f07d95eece49..7fdf57eda175e6 100644 --- a/tools/node_modules/eslint/lib/rules/curly.js +++ b/tools/node_modules/eslint/lib/rules/curly.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce consistent brace style for all control statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/curly" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/default-case.js b/tools/node_modules/eslint/lib/rules/default-case.js index 32cd8dfe4922d0..a66300a99b5ca3 100644 --- a/tools/node_modules/eslint/lib/rules/default-case.js +++ b/tools/node_modules/eslint/lib/rules/default-case.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "require `default` cases in `switch` statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/default-case" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/dot-location.js b/tools/node_modules/eslint/lib/rules/dot-location.js index 60f4af7013a9e3..c02476e0354662 100644 --- a/tools/node_modules/eslint/lib/rules/dot-location.js +++ b/tools/node_modules/eslint/lib/rules/dot-location.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce consistent newlines before and after dots", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/dot-location" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/dot-notation.js b/tools/node_modules/eslint/lib/rules/dot-notation.js index 21e3df17412e84..10c73b41f0415c 100644 --- a/tools/node_modules/eslint/lib/rules/dot-notation.js +++ b/tools/node_modules/eslint/lib/rules/dot-notation.js @@ -22,7 +22,8 @@ module.exports = { docs: { description: "enforce dot notation whenever possible", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/dot-notation" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/eol-last.js b/tools/node_modules/eslint/lib/rules/eol-last.js index 1f3676b0e96b2a..f96352676c72ef 100644 --- a/tools/node_modules/eslint/lib/rules/eol-last.js +++ b/tools/node_modules/eslint/lib/rules/eol-last.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "require or disallow newline at the end of files", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/eol-last" }, fixable: "whitespace", schema: [ @@ -46,6 +47,14 @@ module.exports = { CRLF = `\r${LF}`, endsWithNewline = lodash.endsWith(src, LF); + /* + * Empty source is always valid: No content in file so we don't + * need to lint for a newline on the last line of content. + */ + if (!src.length) { + return; + } + let mode = context.options[0] || "always", appendCRLF = false; diff --git a/tools/node_modules/eslint/lib/rules/eqeqeq.js b/tools/node_modules/eslint/lib/rules/eqeqeq.js index 8801102e649aa4..fc65450af4b091 100644 --- a/tools/node_modules/eslint/lib/rules/eqeqeq.js +++ b/tools/node_modules/eslint/lib/rules/eqeqeq.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "require the use of `===` and `!==`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/eqeqeq" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/for-direction.js b/tools/node_modules/eslint/lib/rules/for-direction.js index 7178ced9db0a4b..c91888da2295cb 100644 --- a/tools/node_modules/eslint/lib/rules/for-direction.js +++ b/tools/node_modules/eslint/lib/rules/for-direction.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce \"for\" loop update clause moving the counter in the right direction.", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/for-direction" }, fixable: null, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/func-call-spacing.js b/tools/node_modules/eslint/lib/rules/func-call-spacing.js index 00e677d33b0ac6..b13613cf8098f6 100644 --- a/tools/node_modules/eslint/lib/rules/func-call-spacing.js +++ b/tools/node_modules/eslint/lib/rules/func-call-spacing.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "require or disallow spacing between function identifiers and their invocations", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/func-call-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/func-name-matching.js b/tools/node_modules/eslint/lib/rules/func-name-matching.js index db06d5d468d774..85fd7d4f1ee864 100644 --- a/tools/node_modules/eslint/lib/rules/func-name-matching.js +++ b/tools/node_modules/eslint/lib/rules/func-name-matching.js @@ -70,7 +70,8 @@ module.exports = { docs: { description: "require function names to match the name of the variable or property to which they are assigned", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/func-name-matching" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/func-names.js b/tools/node_modules/eslint/lib/rules/func-names.js index 848ce9757413ea..722f276c1d2d3a 100644 --- a/tools/node_modules/eslint/lib/rules/func-names.js +++ b/tools/node_modules/eslint/lib/rules/func-names.js @@ -29,7 +29,8 @@ module.exports = { docs: { description: "require or disallow named `function` expressions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/func-names" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/func-style.js b/tools/node_modules/eslint/lib/rules/func-style.js index 123eae3d8a406f..ea6d74fb3a4998 100644 --- a/tools/node_modules/eslint/lib/rules/func-style.js +++ b/tools/node_modules/eslint/lib/rules/func-style.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "enforce the consistent use of either `function` declarations or expressions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/func-style" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/function-paren-newline.js b/tools/node_modules/eslint/lib/rules/function-paren-newline.js index 10ad960a4d3eea..7e4f2792cffcd2 100644 --- a/tools/node_modules/eslint/lib/rules/function-paren-newline.js +++ b/tools/node_modules/eslint/lib/rules/function-paren-newline.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce consistent line breaks inside function parentheses", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/function-paren-newline" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/generator-star-spacing.js b/tools/node_modules/eslint/lib/rules/generator-star-spacing.js index a718b59afcfa0d..282b37510b197c 100644 --- a/tools/node_modules/eslint/lib/rules/generator-star-spacing.js +++ b/tools/node_modules/eslint/lib/rules/generator-star-spacing.js @@ -30,7 +30,8 @@ module.exports = { docs: { description: "enforce consistent spacing around `*` operators in generator functions", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/generator-star-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/getter-return.js b/tools/node_modules/eslint/lib/rules/getter-return.js index 6eb1efc00c4951..58f2a3978b8bd6 100644 --- a/tools/node_modules/eslint/lib/rules/getter-return.js +++ b/tools/node_modules/eslint/lib/rules/getter-return.js @@ -47,7 +47,8 @@ module.exports = { docs: { description: "enforce `return` statements in getters", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/getter-return" }, fixable: null, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/global-require.js b/tools/node_modules/eslint/lib/rules/global-require.js index beda8d99f1b033..a5f5335d01dc12 100644 --- a/tools/node_modules/eslint/lib/rules/global-require.js +++ b/tools/node_modules/eslint/lib/rules/global-require.js @@ -51,7 +51,8 @@ module.exports = { docs: { description: "require `require()` calls to be placed at top-level module scope", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/global-require" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/guard-for-in.js b/tools/node_modules/eslint/lib/rules/guard-for-in.js index 754830f6a64be3..88a9106b3fb946 100644 --- a/tools/node_modules/eslint/lib/rules/guard-for-in.js +++ b/tools/node_modules/eslint/lib/rules/guard-for-in.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require `for-in` loops to include an `if` statement", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/guard-for-in" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/handle-callback-err.js b/tools/node_modules/eslint/lib/rules/handle-callback-err.js index de36a0c1b002c6..f6e6c108ce15c2 100644 --- a/tools/node_modules/eslint/lib/rules/handle-callback-err.js +++ b/tools/node_modules/eslint/lib/rules/handle-callback-err.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require error handling in callbacks", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/handle-callback-err" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/id-blacklist.js b/tools/node_modules/eslint/lib/rules/id-blacklist.js index ee28c0b5a819aa..ba9b5d4b398261 100644 --- a/tools/node_modules/eslint/lib/rules/id-blacklist.js +++ b/tools/node_modules/eslint/lib/rules/id-blacklist.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow specified identifiers", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/id-blacklist" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/id-length.js b/tools/node_modules/eslint/lib/rules/id-length.js index dad9c406493399..eaed26217ddf65 100644 --- a/tools/node_modules/eslint/lib/rules/id-length.js +++ b/tools/node_modules/eslint/lib/rules/id-length.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce minimum and maximum identifier lengths", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/id-length" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/id-match.js b/tools/node_modules/eslint/lib/rules/id-match.js index 0420fdc74e4e6f..608ef17d11485b 100644 --- a/tools/node_modules/eslint/lib/rules/id-match.js +++ b/tools/node_modules/eslint/lib/rules/id-match.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require identifiers to match a specified regular expression", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/id-match" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js b/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js index b8802f4de53320..a7ad1122b50544 100644 --- a/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js +++ b/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js @@ -12,7 +12,8 @@ module.exports = { docs: { description: "enforce the location of arrow function bodies", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/implicit-arrow-linebreak" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/indent-legacy.js b/tools/node_modules/eslint/lib/rules/indent-legacy.js index cf914068062adf..701cf0163248a1 100644 --- a/tools/node_modules/eslint/lib/rules/indent-legacy.js +++ b/tools/node_modules/eslint/lib/rules/indent-legacy.js @@ -25,7 +25,8 @@ module.exports = { description: "enforce consistent indentation", category: "Stylistic Issues", recommended: false, - replacedBy: ["indent"] + replacedBy: ["indent"], + url: "https://eslint.org/docs/rules/indent-legacy" }, deprecated: true, diff --git a/tools/node_modules/eslint/lib/rules/indent.js b/tools/node_modules/eslint/lib/rules/indent.js index 42cebf9ea53ce2..2159880f88d569 100644 --- a/tools/node_modules/eslint/lib/rules/indent.js +++ b/tools/node_modules/eslint/lib/rules/indent.js @@ -492,7 +492,8 @@ module.exports = { docs: { description: "enforce consistent indentation", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/indent" }, fixable: "whitespace", @@ -600,6 +601,9 @@ module.exports = { pattern: ":exit$" } } + }, + ignoreComments: { + type: "boolean" } }, additionalProperties: false @@ -638,7 +642,8 @@ module.exports = { ObjectExpression: 1, ImportDeclaration: 1, flatTernaryExpressions: false, - ignoredNodes: [] + ignoredNodes: [], + ignoreComments: false }; if (context.options.length) { @@ -1457,6 +1462,12 @@ module.exports = { }, "Program:exit"() { + // If ignoreComments option is enabled, ignore all comment tokens. + if (options.ignoreComments) { + sourceCode.getAllComments() + .forEach(comment => offsets.ignoreToken(comment)); + } + // Invoke the queued offset listeners for the nodes that aren't ignored. listenerCallQueue .filter(nodeInfo => !ignoredNodes.has(nodeInfo.node)) diff --git a/tools/node_modules/eslint/lib/rules/init-declarations.js b/tools/node_modules/eslint/lib/rules/init-declarations.js index 1f53f3dfc482db..412b96dc0abff9 100644 --- a/tools/node_modules/eslint/lib/rules/init-declarations.js +++ b/tools/node_modules/eslint/lib/rules/init-declarations.js @@ -47,7 +47,8 @@ module.exports = { docs: { description: "require or disallow initialization in variable declarations", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/init-declarations" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/jsx-quotes.js b/tools/node_modules/eslint/lib/rules/jsx-quotes.js index 5653922d9495d5..54ec481a80d0d7 100644 --- a/tools/node_modules/eslint/lib/rules/jsx-quotes.js +++ b/tools/node_modules/eslint/lib/rules/jsx-quotes.js @@ -41,7 +41,8 @@ module.exports = { docs: { description: "enforce the consistent use of either double or single quotes in JSX attributes", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/jsx-quotes" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/key-spacing.js b/tools/node_modules/eslint/lib/rules/key-spacing.js index 1c62ad42892012..1ae4990a594262 100644 --- a/tools/node_modules/eslint/lib/rules/key-spacing.js +++ b/tools/node_modules/eslint/lib/rules/key-spacing.js @@ -131,7 +131,8 @@ module.exports = { docs: { description: "enforce consistent spacing between keys and values in object literal properties", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/key-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/keyword-spacing.js b/tools/node_modules/eslint/lib/rules/keyword-spacing.js index 218cfd02be68b9..d0dd640255bee6 100644 --- a/tools/node_modules/eslint/lib/rules/keyword-spacing.js +++ b/tools/node_modules/eslint/lib/rules/keyword-spacing.js @@ -68,7 +68,8 @@ module.exports = { docs: { description: "enforce consistent spacing before and after keywords", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/keyword-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/line-comment-position.js b/tools/node_modules/eslint/lib/rules/line-comment-position.js index 0df806cca8cdeb..ebdb024f6e47cc 100644 --- a/tools/node_modules/eslint/lib/rules/line-comment-position.js +++ b/tools/node_modules/eslint/lib/rules/line-comment-position.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce position of line comments", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/line-comment-position" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/linebreak-style.js b/tools/node_modules/eslint/lib/rules/linebreak-style.js index 907bc02ec4c6b1..d5a170f73083ad 100644 --- a/tools/node_modules/eslint/lib/rules/linebreak-style.js +++ b/tools/node_modules/eslint/lib/rules/linebreak-style.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "enforce consistent linebreak style", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/linebreak-style" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/lines-around-comment.js b/tools/node_modules/eslint/lib/rules/lines-around-comment.js index 3df9cb86f4f69c..5d98473be1ccc2 100644 --- a/tools/node_modules/eslint/lib/rules/lines-around-comment.js +++ b/tools/node_modules/eslint/lib/rules/lines-around-comment.js @@ -55,7 +55,8 @@ module.exports = { docs: { description: "require empty lines around comments", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/lines-around-comment" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/lines-around-directive.js b/tools/node_modules/eslint/lib/rules/lines-around-directive.js index b560009f71439c..3ba3ab5bb333ea 100644 --- a/tools/node_modules/eslint/lib/rules/lines-around-directive.js +++ b/tools/node_modules/eslint/lib/rules/lines-around-directive.js @@ -18,7 +18,8 @@ module.exports = { description: "require or disallow newlines around directives", category: "Stylistic Issues", recommended: false, - replacedBy: ["padding-line-between-statements"] + replacedBy: ["padding-line-between-statements"], + url: "https://eslint.org/docs/rules/lines-around-directive" }, schema: [{ oneOf: [ diff --git a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js index 85e8c69358c9f3..252984da5ad8d4 100644 --- a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js +++ b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "require or disallow an empty line between class members", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/lines-between-class-members" }, fixable: "whitespace", @@ -55,7 +56,56 @@ module.exports = { * @returns {boolean} True if there is at least a line between the tokens */ function isPaddingBetweenTokens(first, second) { - return second.loc.start.line - first.loc.end.line >= 2; + const comments = sourceCode.getCommentsBefore(second); + const len = comments.length; + + // If there is no comments + if (len === 0) { + const linesBetweenFstAndSnd = second.loc.start.line - first.loc.end.line - 1; + + return linesBetweenFstAndSnd >= 1; + } + + + // If there are comments + let sumOfCommentLines = 0; // the numbers of lines of comments + let prevCommentLineNum = -1; // line number of the end of the previous comment + + for (let i = 0; i < len; i++) { + const commentLinesOfThisComment = comments[i].loc.end.line - comments[i].loc.start.line + 1; + + sumOfCommentLines += commentLinesOfThisComment; + + /* + * If this comment and the previous comment are in the same line, + * the count of comment lines is duplicated. So decrement sumOfCommentLines. + */ + if (prevCommentLineNum === comments[i].loc.start.line) { + sumOfCommentLines -= 1; + } + + prevCommentLineNum = comments[i].loc.end.line; + } + + /* + * If the first block and the first comment are in the same line, + * the count of comment lines is duplicated. So decrement sumOfCommentLines. + */ + if (first.loc.end.line === comments[0].loc.start.line) { + sumOfCommentLines -= 1; + } + + /* + * If the last comment and the second block are in the same line, + * the count of comment lines is duplicated. So decrement sumOfCommentLines. + */ + if (comments[len - 1].loc.end.line === second.loc.start.line) { + sumOfCommentLines -= 1; + } + + const linesBetweenFstAndSnd = second.loc.start.line - first.loc.end.line - 1; + + return linesBetweenFstAndSnd - sumOfCommentLines >= 1; } return { @@ -65,8 +115,7 @@ module.exports = { for (let i = 0; i < body.length - 1; i++) { const curFirst = sourceCode.getFirstToken(body[i]); const curLast = sourceCode.getLastToken(body[i]); - const comments = sourceCode.getCommentsBefore(body[i + 1]); - const nextFirst = comments.length ? comments[0] : sourceCode.getFirstToken(body[i + 1]); + const nextFirst = sourceCode.getFirstToken(body[i + 1]); const isPadded = isPaddingBetweenTokens(curLast, nextFirst); const isMulti = !astUtils.isTokenOnSameLine(curFirst, curLast); const skip = !isMulti && options[1].exceptAfterSingleLine; diff --git a/tools/node_modules/eslint/lib/rules/max-depth.js b/tools/node_modules/eslint/lib/rules/max-depth.js index 74c13ffa9fad2e..ead44b90cbaab6 100644 --- a/tools/node_modules/eslint/lib/rules/max-depth.js +++ b/tools/node_modules/eslint/lib/rules/max-depth.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce a maximum depth that blocks can be nested", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-depth" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/max-len.js b/tools/node_modules/eslint/lib/rules/max-len.js index 27d549c9c56af4..35ac803b65e091 100644 --- a/tools/node_modules/eslint/lib/rules/max-len.js +++ b/tools/node_modules/eslint/lib/rules/max-len.js @@ -68,7 +68,8 @@ module.exports = { docs: { description: "enforce a maximum line length", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-len" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/max-lines.js b/tools/node_modules/eslint/lib/rules/max-lines.js index 297c75dc138ad6..9bb4420edc0737 100644 --- a/tools/node_modules/eslint/lib/rules/max-lines.js +++ b/tools/node_modules/eslint/lib/rules/max-lines.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "enforce a maximum number of lines per file", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-lines" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js index a89f49ae02094e..7d7386ec1ead0a 100644 --- a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js +++ b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce a maximum depth that callbacks can be nested", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-nested-callbacks" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/max-params.js b/tools/node_modules/eslint/lib/rules/max-params.js index 85838adaccb846..d7c22c5274116b 100644 --- a/tools/node_modules/eslint/lib/rules/max-params.js +++ b/tools/node_modules/eslint/lib/rules/max-params.js @@ -22,7 +22,8 @@ module.exports = { docs: { description: "enforce a maximum number of parameters in function definitions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-params" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/max-statements-per-line.js b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js index 3d18da4ee10fc1..a6776bdea99393 100644 --- a/tools/node_modules/eslint/lib/rules/max-statements-per-line.js +++ b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce a maximum number of statements allowed per line", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-statements-per-line" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/max-statements.js b/tools/node_modules/eslint/lib/rules/max-statements.js index f98aa3a21d9f66..faa0d5d8445ad3 100644 --- a/tools/node_modules/eslint/lib/rules/max-statements.js +++ b/tools/node_modules/eslint/lib/rules/max-statements.js @@ -22,7 +22,8 @@ module.exports = { docs: { description: "enforce a maximum number of statements allowed in function blocks", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/max-statements" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/multiline-comment-style.js b/tools/node_modules/eslint/lib/rules/multiline-comment-style.js index db4f7684437b51..4da9a619fce3dd 100644 --- a/tools/node_modules/eslint/lib/rules/multiline-comment-style.js +++ b/tools/node_modules/eslint/lib/rules/multiline-comment-style.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce a particular style for multiline comments", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/multiline-comment-style" }, fixable: "whitespace", schema: [{ enum: ["starred-block", "separate-lines", "bare-block"] }] diff --git a/tools/node_modules/eslint/lib/rules/multiline-ternary.js b/tools/node_modules/eslint/lib/rules/multiline-ternary.js index a74f241d86c7ca..10cf269fb1866e 100644 --- a/tools/node_modules/eslint/lib/rules/multiline-ternary.js +++ b/tools/node_modules/eslint/lib/rules/multiline-ternary.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce newlines between operands of ternary expressions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/multiline-ternary" }, schema: [ { diff --git a/tools/node_modules/eslint/lib/rules/new-cap.js b/tools/node_modules/eslint/lib/rules/new-cap.js index f01e8f90ac3910..cc33e3b8175483 100644 --- a/tools/node_modules/eslint/lib/rules/new-cap.js +++ b/tools/node_modules/eslint/lib/rules/new-cap.js @@ -77,7 +77,8 @@ module.exports = { docs: { description: "require constructor names to begin with a capital letter", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/new-cap" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/new-parens.js b/tools/node_modules/eslint/lib/rules/new-parens.js index aa0f7fe931db5f..abf2e032b77f84 100644 --- a/tools/node_modules/eslint/lib/rules/new-parens.js +++ b/tools/node_modules/eslint/lib/rules/new-parens.js @@ -24,7 +24,8 @@ module.exports = { docs: { description: "require parentheses when invoking a constructor with no arguments", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/new-parens" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/newline-after-var.js b/tools/node_modules/eslint/lib/rules/newline-after-var.js index 80f73c836fa38c..b11d9d9952e832 100644 --- a/tools/node_modules/eslint/lib/rules/newline-after-var.js +++ b/tools/node_modules/eslint/lib/rules/newline-after-var.js @@ -22,7 +22,8 @@ module.exports = { description: "require or disallow an empty line after variable declarations", category: "Stylistic Issues", recommended: false, - replacedBy: ["padding-line-between-statements"] + replacedBy: ["padding-line-between-statements"], + url: "https://eslint.org/docs/rules/newline-after-var" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/newline-before-return.js b/tools/node_modules/eslint/lib/rules/newline-before-return.js index 02bd66db13788a..5bc1f7031b057a 100644 --- a/tools/node_modules/eslint/lib/rules/newline-before-return.js +++ b/tools/node_modules/eslint/lib/rules/newline-before-return.js @@ -15,7 +15,8 @@ module.exports = { description: "require an empty line before `return` statements", category: "Stylistic Issues", recommended: false, - replacedBy: ["padding-line-between-statements"] + replacedBy: ["padding-line-between-statements"], + url: "https://eslint.org/docs/rules/newline-before-return" }, fixable: "whitespace", schema: [], diff --git a/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js index 356c4baf32763c..9691da44e0118d 100644 --- a/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js +++ b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js @@ -17,7 +17,8 @@ module.exports = { docs: { description: "require a newline after each call in a method chain", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/newline-per-chained-call" }, fixable: "whitespace", schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/no-alert.js b/tools/node_modules/eslint/lib/rules/no-alert.js index bc1087253bf76b..b4fd23121508b1 100644 --- a/tools/node_modules/eslint/lib/rules/no-alert.js +++ b/tools/node_modules/eslint/lib/rules/no-alert.js @@ -88,7 +88,8 @@ module.exports = { docs: { description: "disallow the use of `alert`, `confirm`, and `prompt`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-alert" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-array-constructor.js b/tools/node_modules/eslint/lib/rules/no-array-constructor.js index 70dc8b4cd5ded8..187389fdff3312 100644 --- a/tools/node_modules/eslint/lib/rules/no-array-constructor.js +++ b/tools/node_modules/eslint/lib/rules/no-array-constructor.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `Array` constructors", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-array-constructor" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-await-in-loop.js b/tools/node_modules/eslint/lib/rules/no-await-in-loop.js index d1ed92b704cebf..7d4f8a0a6ba9e6 100644 --- a/tools/node_modules/eslint/lib/rules/no-await-in-loop.js +++ b/tools/node_modules/eslint/lib/rules/no-await-in-loop.js @@ -28,7 +28,8 @@ module.exports = { docs: { description: "disallow `await` inside of loops", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-await-in-loop" }, schema: [] }, diff --git a/tools/node_modules/eslint/lib/rules/no-bitwise.js b/tools/node_modules/eslint/lib/rules/no-bitwise.js index f062ad26699369..8376674f65f78f 100644 --- a/tools/node_modules/eslint/lib/rules/no-bitwise.js +++ b/tools/node_modules/eslint/lib/rules/no-bitwise.js @@ -25,7 +25,8 @@ module.exports = { docs: { description: "disallow bitwise operators", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-bitwise" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js b/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js index 1521ff2847e11d..55f181ee69715b 100644 --- a/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js +++ b/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow use of the Buffer() constructor", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-buffer-constructor" }, schema: [] }, diff --git a/tools/node_modules/eslint/lib/rules/no-caller.js b/tools/node_modules/eslint/lib/rules/no-caller.js index 55a37b7d86406a..df10bf3736b597 100644 --- a/tools/node_modules/eslint/lib/rules/no-caller.js +++ b/tools/node_modules/eslint/lib/rules/no-caller.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow the use of `arguments.caller` or `arguments.callee`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-caller" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-case-declarations.js b/tools/node_modules/eslint/lib/rules/no-case-declarations.js index e801c6bb6e0db7..03c730ddbdb4bd 100644 --- a/tools/node_modules/eslint/lib/rules/no-case-declarations.js +++ b/tools/node_modules/eslint/lib/rules/no-case-declarations.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow lexical declarations in case clauses", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-case-declarations" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-catch-shadow.js b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js index bef61902e90598..69a4e6aff85649 100644 --- a/tools/node_modules/eslint/lib/rules/no-catch-shadow.js +++ b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow `catch` clause parameters from shadowing variables in the outer scope", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-catch-shadow" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-class-assign.js b/tools/node_modules/eslint/lib/rules/no-class-assign.js index 4b0443abc72858..56e75122a252e4 100644 --- a/tools/node_modules/eslint/lib/rules/no-class-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-class-assign.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow reassigning class members", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-class-assign" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js b/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js index 604e221919922a..09cf29506307b8 100644 --- a/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js +++ b/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow comparing against -0", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-compare-neg-zero" }, fixable: null, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-cond-assign.js b/tools/node_modules/eslint/lib/rules/no-cond-assign.js index 7c031c13f06de2..e761be14ecda0c 100644 --- a/tools/node_modules/eslint/lib/rules/no-cond-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-cond-assign.js @@ -22,7 +22,8 @@ module.exports = { docs: { description: "disallow assignment operators in conditional expressions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-cond-assign" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js index fc69ca39a9eda0..542a4060e27535 100644 --- a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js +++ b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js @@ -30,7 +30,8 @@ module.exports = { docs: { description: "disallow arrow functions where they could be confused with comparisons", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-confusing-arrow" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/no-console.js b/tools/node_modules/eslint/lib/rules/no-console.js index f5a3a235e6b196..b00582ebada3c9 100644 --- a/tools/node_modules/eslint/lib/rules/no-console.js +++ b/tools/node_modules/eslint/lib/rules/no-console.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow the use of `console`", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-console" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-const-assign.js b/tools/node_modules/eslint/lib/rules/no-const-assign.js index db1848a9819f00..8a08a52df4eb75 100644 --- a/tools/node_modules/eslint/lib/rules/no-const-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-const-assign.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow reassigning `const` variables", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-const-assign" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-constant-condition.js b/tools/node_modules/eslint/lib/rules/no-constant-condition.js index 0cd445dfdbadf8..5611d617ec8daf 100644 --- a/tools/node_modules/eslint/lib/rules/no-constant-condition.js +++ b/tools/node_modules/eslint/lib/rules/no-constant-condition.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow constant expressions in conditions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-constant-condition" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-continue.js b/tools/node_modules/eslint/lib/rules/no-continue.js index 2615fba13e2401..52061ef5328a5e 100644 --- a/tools/node_modules/eslint/lib/rules/no-continue.js +++ b/tools/node_modules/eslint/lib/rules/no-continue.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `continue` statements", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-continue" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-control-regex.js b/tools/node_modules/eslint/lib/rules/no-control-regex.js index 14981f4ab13b34..676c666128e22e 100644 --- a/tools/node_modules/eslint/lib/rules/no-control-regex.js +++ b/tools/node_modules/eslint/lib/rules/no-control-regex.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow control characters in regular expressions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-control-regex" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-debugger.js b/tools/node_modules/eslint/lib/rules/no-debugger.js index d79cb1816670b2..7d816e3a000e42 100644 --- a/tools/node_modules/eslint/lib/rules/no-debugger.js +++ b/tools/node_modules/eslint/lib/rules/no-debugger.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow the use of `debugger`", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-debugger" }, fixable: "code", schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-delete-var.js b/tools/node_modules/eslint/lib/rules/no-delete-var.js index adc1b5bb9c2c01..9ca09f1deaebc9 100644 --- a/tools/node_modules/eslint/lib/rules/no-delete-var.js +++ b/tools/node_modules/eslint/lib/rules/no-delete-var.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow deleting variables", category: "Variables", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-delete-var" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-div-regex.js b/tools/node_modules/eslint/lib/rules/no-div-regex.js index 84a9b9a3aaa9a6..87423f8861a0b5 100644 --- a/tools/node_modules/eslint/lib/rules/no-div-regex.js +++ b/tools/node_modules/eslint/lib/rules/no-div-regex.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow division operators explicitly at the beginning of regular expressions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-div-regex" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-args.js b/tools/node_modules/eslint/lib/rules/no-dupe-args.js index c932be01d7615e..a71d01f9bd2beb 100644 --- a/tools/node_modules/eslint/lib/rules/no-dupe-args.js +++ b/tools/node_modules/eslint/lib/rules/no-dupe-args.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow duplicate arguments in `function` definitions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-dupe-args" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js b/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js index 07b999fab19bb9..cc7f8da284ac2c 100644 --- a/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js +++ b/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow duplicate class members", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-dupe-class-members" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-keys.js b/tools/node_modules/eslint/lib/rules/no-dupe-keys.js index 0120d0b38cfffc..10955e45037103 100644 --- a/tools/node_modules/eslint/lib/rules/no-dupe-keys.js +++ b/tools/node_modules/eslint/lib/rules/no-dupe-keys.js @@ -87,7 +87,8 @@ module.exports = { docs: { description: "disallow duplicate keys in object literals", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-dupe-keys" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-duplicate-case.js b/tools/node_modules/eslint/lib/rules/no-duplicate-case.js index 07823f284c1c3d..2a9d9551114185 100644 --- a/tools/node_modules/eslint/lib/rules/no-duplicate-case.js +++ b/tools/node_modules/eslint/lib/rules/no-duplicate-case.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow duplicate case labels", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-duplicate-case" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js index d12c3a56dffc61..32071da15fd2cf 100644 --- a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js +++ b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js @@ -104,7 +104,8 @@ module.exports = { docs: { description: "disallow duplicate module imports", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-duplicate-imports" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/no-else-return.js b/tools/node_modules/eslint/lib/rules/no-else-return.js index deeff41ab83ed3..91cb5b97963b9b 100644 --- a/tools/node_modules/eslint/lib/rules/no-else-return.js +++ b/tools/node_modules/eslint/lib/rules/no-else-return.js @@ -21,7 +21,8 @@ module.exports = { docs: { description: "disallow `else` blocks after `return` statements in `if` statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-else-return" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/no-empty-character-class.js b/tools/node_modules/eslint/lib/rules/no-empty-character-class.js index 0ea7c5a0d1c470..3c4806632e5c99 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty-character-class.js +++ b/tools/node_modules/eslint/lib/rules/no-empty-character-class.js @@ -32,7 +32,8 @@ module.exports = { docs: { description: "disallow empty character classes in regular expressions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-empty-character-class" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-empty-function.js b/tools/node_modules/eslint/lib/rules/no-empty-function.js index 38c915c33f9730..3852774e6b243f 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty-function.js +++ b/tools/node_modules/eslint/lib/rules/no-empty-function.js @@ -93,7 +93,8 @@ module.exports = { docs: { description: "disallow empty functions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-empty-function" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-empty-pattern.js b/tools/node_modules/eslint/lib/rules/no-empty-pattern.js index 11f50b54142e04..1d0c3ab4b1da06 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty-pattern.js +++ b/tools/node_modules/eslint/lib/rules/no-empty-pattern.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow empty destructuring patterns", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-empty-pattern" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-empty.js b/tools/node_modules/eslint/lib/rules/no-empty.js index b71b8582a37195..15f1df67908710 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty.js +++ b/tools/node_modules/eslint/lib/rules/no-empty.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow empty block statements", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-empty" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-eq-null.js b/tools/node_modules/eslint/lib/rules/no-eq-null.js index 7e915a8c726f9f..befb9d46f09991 100644 --- a/tools/node_modules/eslint/lib/rules/no-eq-null.js +++ b/tools/node_modules/eslint/lib/rules/no-eq-null.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow `null` comparisons without type-checking operators", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-eq-null" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js index ee5f577f471ef9..8cf4aa307b0f62 100644 --- a/tools/node_modules/eslint/lib/rules/no-eval.js +++ b/tools/node_modules/eslint/lib/rules/no-eval.js @@ -79,7 +79,8 @@ module.exports = { docs: { description: "disallow the use of `eval()`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-eval" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-ex-assign.js b/tools/node_modules/eslint/lib/rules/no-ex-assign.js index 20869d5cd107c9..6ede2fc210b3f2 100644 --- a/tools/node_modules/eslint/lib/rules/no-ex-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-ex-assign.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow reassigning exceptions in `catch` clauses", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-ex-assign" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-extend-native.js b/tools/node_modules/eslint/lib/rules/no-extend-native.js index c550cf5da57a25..2e170017a87e22 100644 --- a/tools/node_modules/eslint/lib/rules/no-extend-native.js +++ b/tools/node_modules/eslint/lib/rules/no-extend-native.js @@ -27,7 +27,8 @@ module.exports = { docs: { description: "disallow extending native types", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-extend-native" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-extra-bind.js b/tools/node_modules/eslint/lib/rules/no-extra-bind.js index 2d22eff2459b5d..21b96c3c261a4f 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-bind.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-bind.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow unnecessary calls to `.bind()`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-extra-bind" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js b/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js index 47ca7e22feabda..471e8b5b82c6ac 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow unnecessary boolean casts", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-extra-boolean-cast" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-extra-label.js b/tools/node_modules/eslint/lib/rules/no-extra-label.js index b89267de93d7b3..f90a403cbfde89 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-label.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-label.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow unnecessary labels", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-extra-label" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-extra-parens.js b/tools/node_modules/eslint/lib/rules/no-extra-parens.js index d8e0df64a7b2d9..4bf8f995009a41 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-parens.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-parens.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow unnecessary parentheses", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-extra-parens" }, fixable: "code", @@ -582,7 +583,7 @@ module.exports = { tokensToIgnore.add(firstLeftToken); } } - if (hasExcessParens(node.right)) { + if (!(node.type === "ForOfStatement" && node.right.type === "SequenceExpression") && hasExcessParens(node.right)) { report(node.right); } if (hasExcessParens(node.left)) { diff --git a/tools/node_modules/eslint/lib/rules/no-extra-semi.js b/tools/node_modules/eslint/lib/rules/no-extra-semi.js index acd312b32b2513..5668c7e095ef9d 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-semi.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-semi.js @@ -21,7 +21,8 @@ module.exports = { docs: { description: "disallow unnecessary semicolons", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-extra-semi" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/no-fallthrough.js b/tools/node_modules/eslint/lib/rules/no-fallthrough.js index 082e8431d63dc6..ce4f91ad9643ce 100644 --- a/tools/node_modules/eslint/lib/rules/no-fallthrough.js +++ b/tools/node_modules/eslint/lib/rules/no-fallthrough.js @@ -58,7 +58,8 @@ module.exports = { docs: { description: "disallow fallthrough of `case` statements", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-fallthrough" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-floating-decimal.js b/tools/node_modules/eslint/lib/rules/no-floating-decimal.js index dfba453a4984d6..da8c4791237475 100644 --- a/tools/node_modules/eslint/lib/rules/no-floating-decimal.js +++ b/tools/node_modules/eslint/lib/rules/no-floating-decimal.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow leading or trailing decimal points in numeric literals", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-floating-decimal" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-func-assign.js b/tools/node_modules/eslint/lib/rules/no-func-assign.js index ea86365b2914eb..a0a17f3697964e 100644 --- a/tools/node_modules/eslint/lib/rules/no-func-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-func-assign.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow reassigning `function` declarations", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-func-assign" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-global-assign.js b/tools/node_modules/eslint/lib/rules/no-global-assign.js index 679650cb70fdd6..3397bdbe0009fc 100644 --- a/tools/node_modules/eslint/lib/rules/no-global-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-global-assign.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow assignments to native objects or read-only global variables", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-global-assign" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js index 24e04858f0651f..7efab83935f305 100644 --- a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js +++ b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js @@ -156,7 +156,8 @@ module.exports = { docs: { description: "disallow shorthand type conversions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-implicit-coercion" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/no-implicit-globals.js b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js index f0962cdc7a864a..c4717b6a374e86 100644 --- a/tools/node_modules/eslint/lib/rules/no-implicit-globals.js +++ b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow variable and `function` declarations in the global scope", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-implicit-globals" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-implied-eval.js b/tools/node_modules/eslint/lib/rules/no-implied-eval.js index cfb16dbf73e42d..de294bc8858f94 100644 --- a/tools/node_modules/eslint/lib/rules/no-implied-eval.js +++ b/tools/node_modules/eslint/lib/rules/no-implied-eval.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow the use of `eval()`-like methods", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-implied-eval" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-inline-comments.js b/tools/node_modules/eslint/lib/rules/no-inline-comments.js index 42b4753dfdd713..85a0d3831699c3 100644 --- a/tools/node_modules/eslint/lib/rules/no-inline-comments.js +++ b/tools/node_modules/eslint/lib/rules/no-inline-comments.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow inline comments after code", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-inline-comments" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-inner-declarations.js b/tools/node_modules/eslint/lib/rules/no-inner-declarations.js index 28aa5b4b5c37e3..032c0a0f096788 100644 --- a/tools/node_modules/eslint/lib/rules/no-inner-declarations.js +++ b/tools/node_modules/eslint/lib/rules/no-inner-declarations.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow variable or `function` declarations in nested blocks", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-inner-declarations" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js b/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js index 45596f7ee876a1..8ccb5242b00558 100644 --- a/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js +++ b/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow invalid regular expression strings in `RegExp` constructors", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-invalid-regexp" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/no-invalid-this.js b/tools/node_modules/eslint/lib/rules/no-invalid-this.js index 5a0a62f7a1d442..a04673be867d68 100644 --- a/tools/node_modules/eslint/lib/rules/no-invalid-this.js +++ b/tools/node_modules/eslint/lib/rules/no-invalid-this.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow `this` keywords outside of classes or class-like objects", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-invalid-this" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js index cfbdfd1a5ef97b..e36ec88b013553 100644 --- a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js +++ b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js @@ -30,7 +30,8 @@ module.exports = { docs: { description: "disallow irregular whitespace outside of strings and comments", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-irregular-whitespace" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-iterator.js b/tools/node_modules/eslint/lib/rules/no-iterator.js index 3677dd94d9f938..ca12fcda477639 100644 --- a/tools/node_modules/eslint/lib/rules/no-iterator.js +++ b/tools/node_modules/eslint/lib/rules/no-iterator.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow the use of the `__iterator__` property", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-iterator" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-label-var.js b/tools/node_modules/eslint/lib/rules/no-label-var.js index 954066aef32e69..a880abfcabb011 100644 --- a/tools/node_modules/eslint/lib/rules/no-label-var.js +++ b/tools/node_modules/eslint/lib/rules/no-label-var.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow labels that share a name with a variable", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-label-var" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-labels.js b/tools/node_modules/eslint/lib/rules/no-labels.js index 101092a667622b..e09bb7b6eef6f9 100644 --- a/tools/node_modules/eslint/lib/rules/no-labels.js +++ b/tools/node_modules/eslint/lib/rules/no-labels.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow labeled statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-labels" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js index 2b5666e213c4a2..5e22aacf00f8a6 100644 --- a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js +++ b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow unnecessary nested blocks", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-lone-blocks" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-lonely-if.js b/tools/node_modules/eslint/lib/rules/no-lonely-if.js index db127d1945a577..3ecc41e8cf6e22 100644 --- a/tools/node_modules/eslint/lib/rules/no-lonely-if.js +++ b/tools/node_modules/eslint/lib/rules/no-lonely-if.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow `if` statements as the only statement in `else` blocks", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-lonely-if" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-loop-func.js b/tools/node_modules/eslint/lib/rules/no-loop-func.js index c97e0c3c5aefd6..0dce09a61a450c 100644 --- a/tools/node_modules/eslint/lib/rules/no-loop-func.js +++ b/tools/node_modules/eslint/lib/rules/no-loop-func.js @@ -159,7 +159,8 @@ module.exports = { docs: { description: "disallow `function` declarations and expressions inside loop statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-loop-func" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js index 796ecff0f8a090..20a752e554f941 100644 --- a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js +++ b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow magic numbers", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-magic-numbers" }, schema: [{ diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js index 9f1fbc9a6d41b6..0df42259db80cc 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js @@ -74,7 +74,8 @@ module.exports = { docs: { description: "disallow mixed binary operators", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-mixed-operators" }, schema: [ { diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js index 171052a52a3f7c..1058f3a511e120 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `require` calls to be mixed with regular variable declarations", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-mixed-requires" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js b/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js index 2b8e89d3c87123..7cb4b4ceeaea38 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow mixed spaces and tabs for indentation", category: "Stylistic Issues", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-mixed-spaces-and-tabs" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-multi-assign.js b/tools/node_modules/eslint/lib/rules/no-multi-assign.js index 164869f6ddc1d9..ca3f778ac6fd87 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-assign.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow use of chained assignment expressions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-multi-assign" }, schema: [] }, diff --git a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js index 84f1b501896341..d0ca097ad670d5 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow multiple spaces", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-multi-spaces" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/no-multi-str.js b/tools/node_modules/eslint/lib/rules/no-multi-str.js index 76f29cbb5a9f6b..2b97c261e0f0e5 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-str.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-str.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow multiline strings", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-multi-str" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js b/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js index 9d1067c205dd0a..a111786a30829f 100644 --- a/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +++ b/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow multiple empty lines", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-multiple-empty-lines" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/no-native-reassign.js b/tools/node_modules/eslint/lib/rules/no-native-reassign.js index a60d4e499cb816..b1064b0bb36661 100644 --- a/tools/node_modules/eslint/lib/rules/no-native-reassign.js +++ b/tools/node_modules/eslint/lib/rules/no-native-reassign.js @@ -16,7 +16,8 @@ module.exports = { description: "disallow assignments to native objects or read-only global variables", category: "Best Practices", recommended: false, - replacedBy: ["no-global-assign"] + replacedBy: ["no-global-assign"], + url: "https://eslint.org/docs/rules/no-native-reassign" }, deprecated: true, diff --git a/tools/node_modules/eslint/lib/rules/no-negated-condition.js b/tools/node_modules/eslint/lib/rules/no-negated-condition.js index 8ea8559ea1c96f..254dcb5c23c7e9 100644 --- a/tools/node_modules/eslint/lib/rules/no-negated-condition.js +++ b/tools/node_modules/eslint/lib/rules/no-negated-condition.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow negated conditions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-negated-condition" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js b/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js index 495cbc160ec7d6..7f08814c941ffd 100644 --- a/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js +++ b/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js @@ -16,7 +16,8 @@ module.exports = { description: "disallow negating the left operand in `in` expressions", category: "Possible Errors", recommended: false, - replacedBy: ["no-unsafe-negation"] + replacedBy: ["no-unsafe-negation"], + url: "https://eslint.org/docs/rules/no-negated-in-lhs" }, deprecated: true, diff --git a/tools/node_modules/eslint/lib/rules/no-nested-ternary.js b/tools/node_modules/eslint/lib/rules/no-nested-ternary.js index 4fe49fc9c01e58..15e72f20d1cb7f 100644 --- a/tools/node_modules/eslint/lib/rules/no-nested-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-nested-ternary.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow nested ternary expressions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-nested-ternary" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-new-func.js b/tools/node_modules/eslint/lib/rules/no-new-func.js index 6abbe8391d5d38..8ee327baa1c445 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-func.js +++ b/tools/node_modules/eslint/lib/rules/no-new-func.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `new` operators with the `Function` object", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-new-func" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-new-object.js b/tools/node_modules/eslint/lib/rules/no-new-object.js index d4d77b55147a62..3f68cbc1b51b29 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-object.js +++ b/tools/node_modules/eslint/lib/rules/no-new-object.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `Object` constructors", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-new-object" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-new-require.js b/tools/node_modules/eslint/lib/rules/no-new-require.js index f9ea1f84bf3bb3..f74daa7569c984 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-require.js +++ b/tools/node_modules/eslint/lib/rules/no-new-require.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `new` operators with calls to `require`", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-new-require" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-new-symbol.js b/tools/node_modules/eslint/lib/rules/no-new-symbol.js index 5743a4748a9275..a537268e38dc1d 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-symbol.js +++ b/tools/node_modules/eslint/lib/rules/no-new-symbol.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `new` operators with the `Symbol` object", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-new-symbol" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-new-wrappers.js b/tools/node_modules/eslint/lib/rules/no-new-wrappers.js index 65bf79b87c50b3..e8d516212b67aa 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-wrappers.js +++ b/tools/node_modules/eslint/lib/rules/no-new-wrappers.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `new` operators with the `String`, `Number`, and `Boolean` objects", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-new-wrappers" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-new.js b/tools/node_modules/eslint/lib/rules/no-new.js index 6e6025aac54304..f9121bc18f656a 100644 --- a/tools/node_modules/eslint/lib/rules/no-new.js +++ b/tools/node_modules/eslint/lib/rules/no-new.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow `new` operators outside of assignments or comparisons", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-new" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-obj-calls.js b/tools/node_modules/eslint/lib/rules/no-obj-calls.js index 0ca8a5effb6e86..320343cb2c01e6 100644 --- a/tools/node_modules/eslint/lib/rules/no-obj-calls.js +++ b/tools/node_modules/eslint/lib/rules/no-obj-calls.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow calling global object properties as functions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-obj-calls" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-octal-escape.js b/tools/node_modules/eslint/lib/rules/no-octal-escape.js index 04bfb6aae3357c..e9509b87f821ec 100644 --- a/tools/node_modules/eslint/lib/rules/no-octal-escape.js +++ b/tools/node_modules/eslint/lib/rules/no-octal-escape.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow octal escape sequences in string literals", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-octal-escape" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-octal.js b/tools/node_modules/eslint/lib/rules/no-octal.js index 58082d0d1cfb04..d782c23a39b719 100644 --- a/tools/node_modules/eslint/lib/rules/no-octal.js +++ b/tools/node_modules/eslint/lib/rules/no-octal.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow octal literals", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-octal" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-param-reassign.js b/tools/node_modules/eslint/lib/rules/no-param-reassign.js index f32e42ae2fa4c6..be1a559178a973 100644 --- a/tools/node_modules/eslint/lib/rules/no-param-reassign.js +++ b/tools/node_modules/eslint/lib/rules/no-param-reassign.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow reassigning `function` parameters", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-param-reassign" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-path-concat.js b/tools/node_modules/eslint/lib/rules/no-path-concat.js index 1e153a43b6c683..1dee7bda1117a6 100644 --- a/tools/node_modules/eslint/lib/rules/no-path-concat.js +++ b/tools/node_modules/eslint/lib/rules/no-path-concat.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow string concatenation with `__dirname` and `__filename`", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-path-concat" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-plusplus.js b/tools/node_modules/eslint/lib/rules/no-plusplus.js index 94f259ac9ef441..f754b3672194cd 100644 --- a/tools/node_modules/eslint/lib/rules/no-plusplus.js +++ b/tools/node_modules/eslint/lib/rules/no-plusplus.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow the unary operators `++` and `--`", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-plusplus" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-process-env.js b/tools/node_modules/eslint/lib/rules/no-process-env.js index ef58b38e3cccd4..71b27ffd72069b 100644 --- a/tools/node_modules/eslint/lib/rules/no-process-env.js +++ b/tools/node_modules/eslint/lib/rules/no-process-env.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow the use of `process.env`", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-process-env" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-process-exit.js b/tools/node_modules/eslint/lib/rules/no-process-exit.js index 04e423b88ffb99..2d22d7fd96a120 100644 --- a/tools/node_modules/eslint/lib/rules/no-process-exit.js +++ b/tools/node_modules/eslint/lib/rules/no-process-exit.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow the use of `process.exit()`", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-process-exit" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-proto.js b/tools/node_modules/eslint/lib/rules/no-proto.js index 933746f559cd4b..e37c6c22e628b8 100644 --- a/tools/node_modules/eslint/lib/rules/no-proto.js +++ b/tools/node_modules/eslint/lib/rules/no-proto.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow the use of the `__proto__` property", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-proto" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js b/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js index b9f040eaf67497..f52847f44d4b0e 100644 --- a/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js +++ b/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow calling some `Object.prototype` methods directly on objects", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-prototype-builtins" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js index ccb57003ed628b..79ab21137ecf93 100644 --- a/tools/node_modules/eslint/lib/rules/no-redeclare.js +++ b/tools/node_modules/eslint/lib/rules/no-redeclare.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow variable redeclaration", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-redeclare" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js index 9250437caa472e..a50692a4c3d1f8 100644 --- a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow multiple spaces in regular expressions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-regex-spaces" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-globals.js b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js index 75428fc1747386..691e55d1924aec 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-globals.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow specified global variables", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-restricted-globals" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-imports.js b/tools/node_modules/eslint/lib/rules/no-restricted-imports.js index eb477b4be612b6..11d09d6d226689 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-imports.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-imports.js @@ -56,7 +56,8 @@ module.exports = { docs: { description: "disallow specified modules when loaded by `import`", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-restricted-imports" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-modules.js b/tools/node_modules/eslint/lib/rules/no-restricted-modules.js index cd47975733d166..54271094fd434d 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-modules.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-modules.js @@ -50,7 +50,8 @@ module.exports = { docs: { description: "disallow specified modules when loaded by `require`", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-restricted-modules" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-properties.js b/tools/node_modules/eslint/lib/rules/no-restricted-properties.js index cdc73f9e41097c..71cc83c65a42ac 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-properties.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-properties.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow certain properties on certain objects", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-restricted-properties" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js index 1798065ec06cbe..c472d9432e69d7 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow specified syntax", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-restricted-syntax" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/no-return-assign.js b/tools/node_modules/eslint/lib/rules/no-return-assign.js index 882f94b7246212..0a016cfad5e044 100644 --- a/tools/node_modules/eslint/lib/rules/no-return-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-return-assign.js @@ -25,7 +25,8 @@ module.exports = { docs: { description: "disallow assignment operators in `return` statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-return-assign" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-return-await.js b/tools/node_modules/eslint/lib/rules/no-return-await.js index 2f06b611084904..490ccaeb369a88 100644 --- a/tools/node_modules/eslint/lib/rules/no-return-await.js +++ b/tools/node_modules/eslint/lib/rules/no-return-await.js @@ -17,7 +17,11 @@ module.exports = { docs: { description: "disallow unnecessary `return await`", category: "Best Practices", - recommended: false // TODO: set to true + + // TODO: set to true + recommended: false, + + url: "https://eslint.org/docs/rules/no-return-await" }, fixable: null, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-script-url.js b/tools/node_modules/eslint/lib/rules/no-script-url.js index 98f988ff1a3b96..ba74dafb8e274d 100644 --- a/tools/node_modules/eslint/lib/rules/no-script-url.js +++ b/tools/node_modules/eslint/lib/rules/no-script-url.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow `javascript:` urls", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-script-url" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-self-assign.js b/tools/node_modules/eslint/lib/rules/no-self-assign.js index 48b922d46b88fa..30140420025092 100644 --- a/tools/node_modules/eslint/lib/rules/no-self-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-self-assign.js @@ -166,7 +166,8 @@ module.exports = { docs: { description: "disallow assignments where both sides are exactly the same", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-self-assign" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-self-compare.js b/tools/node_modules/eslint/lib/rules/no-self-compare.js index 5beaa181b99022..6ebc3870feb6b7 100644 --- a/tools/node_modules/eslint/lib/rules/no-self-compare.js +++ b/tools/node_modules/eslint/lib/rules/no-self-compare.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "disallow comparisons where both sides are exactly the same", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-self-compare" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-sequences.js b/tools/node_modules/eslint/lib/rules/no-sequences.js index 5e746dfa88f77b..8eaf55572b374b 100644 --- a/tools/node_modules/eslint/lib/rules/no-sequences.js +++ b/tools/node_modules/eslint/lib/rules/no-sequences.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow comma operators", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-sequences" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js index 6c60232b8b444b..7b92521b0723cc 100644 --- a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +++ b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow identifiers from shadowing restricted names", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-shadow-restricted-names" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js index e093d48c810aeb..d01231ff99c1ff 100644 --- a/tools/node_modules/eslint/lib/rules/no-shadow.js +++ b/tools/node_modules/eslint/lib/rules/no-shadow.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "disallow variable declarations from shadowing variables declared in the outer scope", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-shadow" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-spaced-func.js b/tools/node_modules/eslint/lib/rules/no-spaced-func.js index 361c1e0cd7ec0c..42d1e4b243a4d0 100644 --- a/tools/node_modules/eslint/lib/rules/no-spaced-func.js +++ b/tools/node_modules/eslint/lib/rules/no-spaced-func.js @@ -16,7 +16,8 @@ module.exports = { description: "disallow spacing between function identifiers and their applications (deprecated)", category: "Stylistic Issues", recommended: false, - replacedBy: ["func-call-spacing"] + replacedBy: ["func-call-spacing"], + url: "https://eslint.org/docs/rules/no-spaced-func" }, deprecated: true, diff --git a/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js b/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js index 3044896c612d17..1cc6f7ccba9569 100644 --- a/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js +++ b/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow sparse arrays", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-sparse-arrays" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-sync.js b/tools/node_modules/eslint/lib/rules/no-sync.js index 06305969a1fabf..eb7b787d38c35a 100644 --- a/tools/node_modules/eslint/lib/rules/no-sync.js +++ b/tools/node_modules/eslint/lib/rules/no-sync.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow synchronous methods", category: "Node.js and CommonJS", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-sync" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-tabs.js b/tools/node_modules/eslint/lib/rules/no-tabs.js index 4bab96f3873d30..08a8fa5b758b4f 100644 --- a/tools/node_modules/eslint/lib/rules/no-tabs.js +++ b/tools/node_modules/eslint/lib/rules/no-tabs.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow all tabs", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-tabs" }, schema: [] }, diff --git a/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js b/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js index d8f6c31108bb23..ed74fcc6f7f16c 100644 --- a/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js +++ b/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow template literal placeholder syntax in regular strings", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-template-curly-in-string" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-ternary.js b/tools/node_modules/eslint/lib/rules/no-ternary.js index 3e254f68126f5a..4dcc8db069e991 100644 --- a/tools/node_modules/eslint/lib/rules/no-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-ternary.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow ternary operators", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-ternary" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-this-before-super.js b/tools/node_modules/eslint/lib/rules/no-this-before-super.js index 2a686ac72e9dd1..944a3235290803 100644 --- a/tools/node_modules/eslint/lib/rules/no-this-before-super.js +++ b/tools/node_modules/eslint/lib/rules/no-this-before-super.js @@ -39,7 +39,8 @@ module.exports = { docs: { description: "disallow `this`/`super` before calling `super()` in constructors", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-this-before-super" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-throw-literal.js b/tools/node_modules/eslint/lib/rules/no-throw-literal.js index 5e9054399a28ae..b080578bf2fd5f 100644 --- a/tools/node_modules/eslint/lib/rules/no-throw-literal.js +++ b/tools/node_modules/eslint/lib/rules/no-throw-literal.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow throwing literals as exceptions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-throw-literal" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js index fbbc6402175029..4d70c3b5cd2f1d 100644 --- a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow trailing whitespace at the end of lines", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-trailing-spaces" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/no-undef-init.js b/tools/node_modules/eslint/lib/rules/no-undef-init.js index 7e58f55a6900d5..2e0ab246299c6d 100644 --- a/tools/node_modules/eslint/lib/rules/no-undef-init.js +++ b/tools/node_modules/eslint/lib/rules/no-undef-init.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow initializing variables to `undefined`", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-undef-init" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-undef.js b/tools/node_modules/eslint/lib/rules/no-undef.js index 74a33dd9973234..c8347d50d1aa15 100644 --- a/tools/node_modules/eslint/lib/rules/no-undef.js +++ b/tools/node_modules/eslint/lib/rules/no-undef.js @@ -28,7 +28,8 @@ module.exports = { docs: { description: "disallow the use of undeclared variables unless mentioned in `/*global */` comments", category: "Variables", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-undef" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-undefined.js b/tools/node_modules/eslint/lib/rules/no-undefined.js index 7e9f96b921855a..94b514e91d81b4 100644 --- a/tools/node_modules/eslint/lib/rules/no-undefined.js +++ b/tools/node_modules/eslint/lib/rules/no-undefined.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow the use of `undefined` as an identifier", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-undefined" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js index 5964da41cde61a..c76488a94313c4 100644 --- a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js +++ b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow dangling underscores in identifiers", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-underscore-dangle" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js b/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js index 9398b8a6036bc3..c7c26686d92e7d 100644 --- a/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js +++ b/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow confusing multiline expressions", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-unexpected-multiline" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js index 49dff0d0ced3c7..623144dc064f11 100644 --- a/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js +++ b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js @@ -106,84 +106,6 @@ const isInLoop = { } }; -/** - * Checks whether or not a given group node has any dynamic elements. - * - * @param {ASTNode} root - A node to check. - * This node is one of BinaryExpression or ConditionalExpression. - * @returns {boolean} `true` if the node is dynamic. - */ -function hasDynamicExpressions(root) { - let retv = false; - const traverser = new Traverser(); - - traverser.traverse(root, { - enter(node) { - if (DYNAMIC_PATTERN.test(node.type)) { - retv = true; - this.break(); - } else if (SKIP_PATTERN.test(node.type)) { - this.skip(); - } - } - }); - - return retv; -} - -/** - * Creates the loop condition information from a given reference. - * - * @param {eslint-scope.Reference} reference - A reference to create. - * @returns {LoopConditionInfo|null} Created loop condition info, or null. - */ -function toLoopCondition(reference) { - if (reference.init) { - return null; - } - - let group = null; - let child = reference.identifier; - let node = child.parent; - - while (node) { - if (SENTINEL_PATTERN.test(node.type)) { - if (LOOP_PATTERN.test(node.type) && node.test === child) { - - // This reference is inside of a loop condition. - return { - reference, - group, - isInLoop: isInLoop[node.type].bind(null, node), - modified: false - }; - } - - // This reference is outside of a loop condition. - break; - } - - /* - * If it's inside of a group, OK if either operand is modified. - * So stores the group this reference belongs to. - */ - if (GROUP_PATTERN.test(node.type)) { - - // If this expression is dynamic, no need to check. - if (hasDynamicExpressions(node)) { - break; - } else { - group = node; - } - } - - child = node; - node = node.parent; - } - - return null; -} - /** * Gets the function which encloses a given reference. * This supports only FunctionDeclaration. @@ -247,13 +169,15 @@ module.exports = { docs: { description: "disallow unmodified loop conditions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-unmodified-loop-condition" }, schema: [] }, create(context) { + const sourceCode = context.getSourceCode(); let groupMap = null; /** @@ -307,6 +231,84 @@ module.exports = { } } + /** + * Checks whether or not a given group node has any dynamic elements. + * + * @param {ASTNode} root - A node to check. + * This node is one of BinaryExpression or ConditionalExpression. + * @returns {boolean} `true` if the node is dynamic. + */ + function hasDynamicExpressions(root) { + let retv = false; + + Traverser.traverse(root, { + visitorKeys: sourceCode.visitorKeys, + enter(node) { + if (DYNAMIC_PATTERN.test(node.type)) { + retv = true; + this.break(); + } else if (SKIP_PATTERN.test(node.type)) { + this.skip(); + } + } + }); + + return retv; + } + + /** + * Creates the loop condition information from a given reference. + * + * @param {eslint-scope.Reference} reference - A reference to create. + * @returns {LoopConditionInfo|null} Created loop condition info, or null. + */ + function toLoopCondition(reference) { + if (reference.init) { + return null; + } + + let group = null; + let child = reference.identifier; + let node = child.parent; + + while (node) { + if (SENTINEL_PATTERN.test(node.type)) { + if (LOOP_PATTERN.test(node.type) && node.test === child) { + + // This reference is inside of a loop condition. + return { + reference, + group, + isInLoop: isInLoop[node.type].bind(null, node), + modified: false + }; + } + + // This reference is outside of a loop condition. + break; + } + + /* + * If it's inside of a group, OK if either operand is modified. + * So stores the group this reference belongs to. + */ + if (GROUP_PATTERN.test(node.type)) { + + // If this expression is dynamic, no need to check. + if (hasDynamicExpressions(node)) { + break; + } else { + group = node; + } + } + + child = node; + node = node.parent; + } + + return null; + } + /** * Finds unmodified references which are inside of a loop condition. * Then reports the references which are outside of groups. diff --git a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js index 57455378053f37..7f82c8ee281cf0 100644 --- a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js @@ -27,7 +27,8 @@ module.exports = { docs: { description: "disallow ternary operators when simpler alternatives exist", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-unneeded-ternary" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-unreachable.js b/tools/node_modules/eslint/lib/rules/no-unreachable.js index 217a6a42995184..80d246307c31ea 100644 --- a/tools/node_modules/eslint/lib/rules/no-unreachable.js +++ b/tools/node_modules/eslint/lib/rules/no-unreachable.js @@ -104,7 +104,8 @@ module.exports = { docs: { description: "disallow unreachable code after `return`, `throw`, `continue`, and `break` statements", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-unreachable" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js b/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js index d25033e5453ce4..ebef05188fb4a4 100644 --- a/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js +++ b/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js @@ -23,7 +23,8 @@ module.exports = { docs: { description: "disallow control flow statements in `finally` blocks", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-unsafe-finally" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js b/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js index 761dc03386e13f..5dc39f183bc0dc 100644 --- a/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js +++ b/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js @@ -44,7 +44,8 @@ module.exports = { docs: { description: "disallow negating the left operand of relational operators", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-unsafe-negation" }, schema: [], fixable: "code" diff --git a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js index b4e1074d5498a1..fedfac17d1fb15 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow unused expressions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-unused-expressions" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-unused-labels.js b/tools/node_modules/eslint/lib/rules/no-unused-labels.js index bcd3cfdc4780f0..3e1dcb6601fece 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-labels.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-labels.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow unused labels", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-unused-labels" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-unused-vars.js b/tools/node_modules/eslint/lib/rules/no-unused-vars.js index 05940d5932a900..1d0cef85628f42 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-vars.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-vars.js @@ -21,7 +21,8 @@ module.exports = { docs: { description: "disallow unused variables", category: "Variables", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-unused-vars" }, schema: [ @@ -105,26 +106,21 @@ module.exports = { * @returns {string} The warning message to be used with this unused variable. */ function getDefinedMessage(unusedVar) { + const defType = unusedVar.defs && unusedVar.defs[0] && unusedVar.defs[0].type; let type; let pattern; - if (config.varsIgnorePattern) { + if (defType === "CatchClause" && config.caughtErrorsIgnorePattern) { + type = "args"; + pattern = config.caughtErrorsIgnorePattern.toString(); + } else if (defType === "Parameter" && config.argsIgnorePattern) { + type = "args"; + pattern = config.argsIgnorePattern.toString(); + } else if (defType !== "Parameter" && config.varsIgnorePattern) { type = "vars"; pattern = config.varsIgnorePattern.toString(); } - if (unusedVar.defs && unusedVar.defs[0] && unusedVar.defs[0].type) { - const defType = unusedVar.defs[0].type; - - if (defType === "CatchClause" && config.caughtErrorsIgnorePattern) { - type = "args"; - pattern = config.caughtErrorsIgnorePattern.toString(); - } else if (defType === "Parameter" && config.argsIgnorePattern) { - type = "args"; - pattern = config.argsIgnorePattern.toString(); - } - } - const additional = type ? ` Allowed unused ${type} must match ${pattern}.` : ""; return `'{{name}}' is defined but never used.${additional}`; diff --git a/tools/node_modules/eslint/lib/rules/no-use-before-define.js b/tools/node_modules/eslint/lib/rules/no-use-before-define.js index ada01815d9c888..37b8e11ca84db6 100644 --- a/tools/node_modules/eslint/lib/rules/no-use-before-define.js +++ b/tools/node_modules/eslint/lib/rules/no-use-before-define.js @@ -139,7 +139,8 @@ module.exports = { docs: { description: "disallow the use of variables before they are defined", category: "Variables", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-use-before-define" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-useless-call.js b/tools/node_modules/eslint/lib/rules/no-useless-call.js index e4820ac248e04a..925c9f79a99815 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-call.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-call.js @@ -52,7 +52,8 @@ module.exports = { docs: { description: "disallow unnecessary calls to `.call()` and `.apply()`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-useless-call" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js b/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js index f8114ab754368b..07573075e1a469 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js @@ -21,7 +21,8 @@ module.exports = { docs: { description: "disallow unnecessary computed property keys in object literals", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-useless-computed-key" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-useless-concat.js b/tools/node_modules/eslint/lib/rules/no-useless-concat.js index e42781fee7da30..a9ac7868436a6a 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-concat.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-concat.js @@ -69,7 +69,8 @@ module.exports = { docs: { description: "disallow unnecessary concatenation of literals or template literals", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-useless-concat" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-useless-constructor.js b/tools/node_modules/eslint/lib/rules/no-useless-constructor.js index f790c789f53d0b..59e40bef8f4b66 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-constructor.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-constructor.js @@ -145,7 +145,8 @@ module.exports = { docs: { description: "disallow unnecessary constructors", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-useless-constructor" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-useless-escape.js b/tools/node_modules/eslint/lib/rules/no-useless-escape.js index cdc3e98df85c5d..80abec78e84fe3 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-escape.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-escape.js @@ -82,7 +82,8 @@ module.exports = { docs: { description: "disallow unnecessary escape characters", category: "Best Practices", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/no-useless-escape" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-useless-rename.js b/tools/node_modules/eslint/lib/rules/no-useless-rename.js index a489a6e51ba0c0..83a03deb63022a 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-rename.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-rename.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow renaming import, export, and destructured assignments to the same name", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-useless-rename" }, fixable: "code", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-useless-return.js b/tools/node_modules/eslint/lib/rules/no-useless-return.js index 5415bf59b80bce..8e2a6d97f6709d 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-return.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-return.js @@ -76,7 +76,8 @@ module.exports = { docs: { description: "disallow redundant return statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-useless-return" }, fixable: "code", schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-var.js b/tools/node_modules/eslint/lib/rules/no-var.js index d3c163e5577402..d95ca539f0336b 100644 --- a/tools/node_modules/eslint/lib/rules/no-var.js +++ b/tools/node_modules/eslint/lib/rules/no-var.js @@ -183,7 +183,8 @@ module.exports = { docs: { description: "require `let` or `const` instead of `var`", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-var" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/no-void.js b/tools/node_modules/eslint/lib/rules/no-void.js index 5202fa49a8543a..1d3d887da66873 100644 --- a/tools/node_modules/eslint/lib/rules/no-void.js +++ b/tools/node_modules/eslint/lib/rules/no-void.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "disallow `void` operators", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-void" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/no-warning-comments.js b/tools/node_modules/eslint/lib/rules/no-warning-comments.js index c0ecaca9e7dff4..ce58f9ac8088b2 100644 --- a/tools/node_modules/eslint/lib/rules/no-warning-comments.js +++ b/tools/node_modules/eslint/lib/rules/no-warning-comments.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "disallow specified warning terms in comments", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-warning-comments" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js b/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js index 2d476b66c0a99c..fc4c25f8497097 100644 --- a/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js +++ b/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "disallow whitespace before properties", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-whitespace-before-property" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/no-with.js b/tools/node_modules/eslint/lib/rules/no-with.js index be9e3463606404..d72dcdfb21e4d6 100644 --- a/tools/node_modules/eslint/lib/rules/no-with.js +++ b/tools/node_modules/eslint/lib/rules/no-with.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "disallow `with` statements", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/no-with" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js b/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js index 212e36a57c2b57..e447ef886b3c03 100644 --- a/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js +++ b/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce the location of single-line statements", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/nonblock-statement-body-position" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/object-curly-newline.js b/tools/node_modules/eslint/lib/rules/object-curly-newline.js index ebad69de2ee123..91b2ca6c97c335 100644 --- a/tools/node_modules/eslint/lib/rules/object-curly-newline.js +++ b/tools/node_modules/eslint/lib/rules/object-curly-newline.js @@ -97,7 +97,8 @@ module.exports = { docs: { description: "enforce consistent line breaks inside braces", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/object-curly-newline" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/object-curly-spacing.js b/tools/node_modules/eslint/lib/rules/object-curly-spacing.js index 3341e915f24954..b37d6fd90f3baa 100644 --- a/tools/node_modules/eslint/lib/rules/object-curly-spacing.js +++ b/tools/node_modules/eslint/lib/rules/object-curly-spacing.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce consistent spacing inside braces", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/object-curly-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/object-property-newline.js b/tools/node_modules/eslint/lib/rules/object-property-newline.js index 0463e389ab9918..56ca269402fe1c 100644 --- a/tools/node_modules/eslint/lib/rules/object-property-newline.js +++ b/tools/node_modules/eslint/lib/rules/object-property-newline.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce placing object properties on separate lines", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/object-property-newline" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js index 980d0fc35a52b2..c6c0b104458bef 100644 --- a/tools/node_modules/eslint/lib/rules/object-shorthand.js +++ b/tools/node_modules/eslint/lib/rules/object-shorthand.js @@ -27,7 +27,8 @@ module.exports = { docs: { description: "require or disallow method and property shorthand syntax for object literals", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/object-shorthand" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js b/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js index 61b505c82d5d71..e17529b6bed487 100644 --- a/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js +++ b/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "require or disallow newlines around variable declarations", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/one-var-declaration-per-line" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/one-var.js b/tools/node_modules/eslint/lib/rules/one-var.js index 9e40d4ea6f26c1..cd094444b6ab05 100644 --- a/tools/node_modules/eslint/lib/rules/one-var.js +++ b/tools/node_modules/eslint/lib/rules/one-var.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce variables to be declared either together or separately in functions", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/one-var" }, schema: [ @@ -26,6 +27,9 @@ module.exports = { { type: "object", properties: { + separateRequires: { + type: "boolean" + }, var: { enum: ["always", "never"] }, @@ -62,21 +66,23 @@ module.exports = { const mode = context.options[0] || MODE_ALWAYS; - const options = { - }; + const options = {}; if (typeof mode === "string") { // simple options configuration with just a string options.var = { uninitialized: mode, initialized: mode }; options.let = { uninitialized: mode, initialized: mode }; options.const = { uninitialized: mode, initialized: mode }; } else if (typeof mode === "object") { // options configuration is an object - if (mode.hasOwnProperty("var") && typeof mode.var === "string") { + if (mode.hasOwnProperty("separateRequires")) { + options.separateRequires = !!mode.separateRequires; + } + if (mode.hasOwnProperty("var")) { options.var = { uninitialized: mode.var, initialized: mode.var }; } - if (mode.hasOwnProperty("let") && typeof mode.let === "string") { + if (mode.hasOwnProperty("let")) { options.let = { uninitialized: mode.let, initialized: mode.let }; } - if (mode.hasOwnProperty("const") && typeof mode.const === "string") { + if (mode.hasOwnProperty("const")) { options.const = { uninitialized: mode.const, initialized: mode.const }; } if (mode.hasOwnProperty("uninitialized")) { @@ -158,7 +164,17 @@ module.exports = { } /** - * Records whether initialized or uninitialized variables are defined in current scope. + * Check if a variable declaration is a require. + * @param {ASTNode} decl variable declaration Node + * @returns {bool} if decl is a require, return true; else return false. + * @private + */ + function isRequire(decl) { + return decl.init && decl.init.type === "CallExpression" && decl.init.callee.name === "require"; + } + + /** + * Records whether initialized/uninitialized/required variables are defined in current scope. * @param {string} statementType node.kind, one of: "var", "let", or "const" * @param {ASTNode[]} declarations List of declarations * @param {Object} currentScope The scope being investigated @@ -173,7 +189,11 @@ module.exports = { } } else { if (options[statementType] && options[statementType].initialized === MODE_ALWAYS) { - currentScope.initialized = true; + if (options.separateRequires && isRequire(declarations[i])) { + currentScope.required = true; + } else { + currentScope.initialized = true; + } } } } @@ -228,6 +248,7 @@ module.exports = { const declarationCounts = countDeclarations(declarations); const currentOptions = options[statementType] || {}; const currentScope = getCurrentScope(statementType); + const hasRequires = declarations.some(isRequire); if (currentOptions.uninitialized === MODE_ALWAYS && currentOptions.initialized === MODE_ALWAYS) { if (currentScope.uninitialized || currentScope.initialized) { @@ -245,6 +266,9 @@ module.exports = { return false; } } + if (currentScope.required && hasRequires) { + return false; + } recordTypes(statementType, declarations, currentScope); return true; } @@ -275,6 +299,16 @@ module.exports = { const declarations = node.declarations; const declarationCounts = countDeclarations(declarations); + const mixedRequires = declarations.some(isRequire) && !declarations.every(isRequire); + + if (options[type].initialized === MODE_ALWAYS) { + if (options.separateRequires && mixedRequires) { + context.report({ + node, + message: "Split requires to be separated into a single block." + }); + } + } // always if (!hasOnlyOneStatement(type, declarations)) { diff --git a/tools/node_modules/eslint/lib/rules/operator-assignment.js b/tools/node_modules/eslint/lib/rules/operator-assignment.js index f776609f5e33ac..ad516bbfc4cab7 100644 --- a/tools/node_modules/eslint/lib/rules/operator-assignment.js +++ b/tools/node_modules/eslint/lib/rules/operator-assignment.js @@ -92,7 +92,8 @@ module.exports = { docs: { description: "require or disallow assignment operator shorthand where possible", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/operator-assignment" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/operator-linebreak.js b/tools/node_modules/eslint/lib/rules/operator-linebreak.js index 271cbb35c1d88b..558258b27df533 100644 --- a/tools/node_modules/eslint/lib/rules/operator-linebreak.js +++ b/tools/node_modules/eslint/lib/rules/operator-linebreak.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "enforce consistent linebreak style for operators", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/operator-linebreak" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/padded-blocks.js b/tools/node_modules/eslint/lib/rules/padded-blocks.js index ad65882ac6a7dc..2fbb2671216d3b 100644 --- a/tools/node_modules/eslint/lib/rules/padded-blocks.js +++ b/tools/node_modules/eslint/lib/rules/padded-blocks.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require or disallow padding within blocks", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/padded-blocks" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js b/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js index a89c49decf5e4a..9d1a4a3c7eb5f4 100644 --- a/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js +++ b/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js @@ -394,7 +394,8 @@ module.exports = { docs: { description: "require or disallow padding lines between statements", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/padding-line-between-statements" }, fixable: "whitespace", schema: { diff --git a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js index 31ae2859fea840..ff7a0fa7e7a6d2 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js +++ b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js @@ -134,7 +134,8 @@ module.exports = { docs: { description: "require using arrow functions for callbacks", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-arrow-callback" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/prefer-const.js b/tools/node_modules/eslint/lib/rules/prefer-const.js index a8cf3b7ef61893..a24a00284f5fa5 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-const.js +++ b/tools/node_modules/eslint/lib/rules/prefer-const.js @@ -233,7 +233,8 @@ module.exports = { docs: { description: "require `const` declarations for variables that are never reassigned after declared", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-const" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js index 56c348a4785321..e9d02da3a113c9 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js +++ b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "require destructuring from arrays and/or objects", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-destructuring" }, schema: [ { diff --git a/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js b/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js index 929e660c665538..051a91c81cb446 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js +++ b/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js @@ -41,7 +41,8 @@ module.exports = { docs: { description: "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-numeric-literals" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js index d2a6b5df102eb1..f92bd58d2e6c96 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +++ b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "require using Error objects as Promise rejection reasons", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-promise-reject-errors" }, fixable: null, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/prefer-reflect.js b/tools/node_modules/eslint/lib/rules/prefer-reflect.js index a47e66c5f533b1..56e841ff181799 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-reflect.js +++ b/tools/node_modules/eslint/lib/rules/prefer-reflect.js @@ -15,7 +15,8 @@ module.exports = { description: "require `Reflect` methods where applicable", category: "ECMAScript 6", recommended: false, - replacedBy: [] + replacedBy: [], + url: "https://eslint.org/docs/rules/prefer-reflect" }, deprecated: true, diff --git a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js index 03342371b2bfed..133456e4d176cf 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js +++ b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js @@ -65,7 +65,8 @@ module.exports = { docs: { description: "require rest parameters instead of `arguments`", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-rest-params" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/prefer-spread.js b/tools/node_modules/eslint/lib/rules/prefer-spread.js index c111d5f98e805f..62cfb28e7e26a0 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-spread.js +++ b/tools/node_modules/eslint/lib/rules/prefer-spread.js @@ -52,7 +52,8 @@ module.exports = { docs: { description: "require spread operators instead of `.apply()`", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-spread" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/prefer-template.js b/tools/node_modules/eslint/lib/rules/prefer-template.js index 076ce6a3ea8a63..c583bdcf9a202e 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-template.js +++ b/tools/node_modules/eslint/lib/rules/prefer-template.js @@ -103,7 +103,8 @@ module.exports = { docs: { description: "require template literals instead of string concatenation", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/prefer-template" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/quote-props.js b/tools/node_modules/eslint/lib/rules/quote-props.js index 6ac1f3c138f9a4..36739494da4058 100644 --- a/tools/node_modules/eslint/lib/rules/quote-props.js +++ b/tools/node_modules/eslint/lib/rules/quote-props.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "require quotes around object literal property names", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/quote-props" }, schema: { diff --git a/tools/node_modules/eslint/lib/rules/quotes.js b/tools/node_modules/eslint/lib/rules/quotes.js index 914762727bdcb9..fa8bbae5fa14d9 100644 --- a/tools/node_modules/eslint/lib/rules/quotes.js +++ b/tools/node_modules/eslint/lib/rules/quotes.js @@ -79,7 +79,8 @@ module.exports = { docs: { description: "enforce the consistent use of either backticks, double, or single quotes", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/quotes" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/radix.js b/tools/node_modules/eslint/lib/rules/radix.js index 0484c3bfb371b5..7e116a6fbf9508 100644 --- a/tools/node_modules/eslint/lib/rules/radix.js +++ b/tools/node_modules/eslint/lib/rules/radix.js @@ -81,7 +81,8 @@ module.exports = { docs: { description: "enforce the consistent use of the radix argument when using `parseInt()`", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/radix" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/require-await.js b/tools/node_modules/eslint/lib/rules/require-await.js index a5698ae058bdf0..6adc84ae15c64b 100644 --- a/tools/node_modules/eslint/lib/rules/require-await.js +++ b/tools/node_modules/eslint/lib/rules/require-await.js @@ -34,7 +34,8 @@ module.exports = { docs: { description: "disallow async functions which have no `await` expression", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/require-await" }, schema: [] }, diff --git a/tools/node_modules/eslint/lib/rules/require-jsdoc.js b/tools/node_modules/eslint/lib/rules/require-jsdoc.js index a02ee3659c3fff..91b90b7d10a381 100644 --- a/tools/node_modules/eslint/lib/rules/require-jsdoc.js +++ b/tools/node_modules/eslint/lib/rules/require-jsdoc.js @@ -9,7 +9,8 @@ module.exports = { docs: { description: "require JSDoc comments", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/require-jsdoc" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/require-yield.js b/tools/node_modules/eslint/lib/rules/require-yield.js index 5cc2944bc692d6..83a29876f0912a 100644 --- a/tools/node_modules/eslint/lib/rules/require-yield.js +++ b/tools/node_modules/eslint/lib/rules/require-yield.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require generator functions to contain `yield`", category: "ECMAScript 6", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/require-yield" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js b/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js index 91770eca74e4d3..1fbc2c4cc584cf 100644 --- a/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js +++ b/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce spacing between rest and spread operators and their expressions", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/rest-spread-spacing" }, fixable: "whitespace", schema: [ diff --git a/tools/node_modules/eslint/lib/rules/semi-spacing.js b/tools/node_modules/eslint/lib/rules/semi-spacing.js index fd300e4a37a782..07af993764a24c 100644 --- a/tools/node_modules/eslint/lib/rules/semi-spacing.js +++ b/tools/node_modules/eslint/lib/rules/semi-spacing.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce consistent spacing before and after semicolons", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/semi-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/semi-style.js b/tools/node_modules/eslint/lib/rules/semi-style.js index 41fb39246c7514..de65928136b3b8 100644 --- a/tools/node_modules/eslint/lib/rules/semi-style.js +++ b/tools/node_modules/eslint/lib/rules/semi-style.js @@ -68,7 +68,8 @@ module.exports = { docs: { description: "enforce location of semicolons", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/semi-style" }, schema: [{ enum: ["last", "first"] }], fixable: "whitespace" diff --git a/tools/node_modules/eslint/lib/rules/semi.js b/tools/node_modules/eslint/lib/rules/semi.js index 78b6966deab67e..33a214db7c9dbf 100644 --- a/tools/node_modules/eslint/lib/rules/semi.js +++ b/tools/node_modules/eslint/lib/rules/semi.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "require or disallow semicolons instead of ASI", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/semi" }, fixable: "code", diff --git a/tools/node_modules/eslint/lib/rules/sort-imports.js b/tools/node_modules/eslint/lib/rules/sort-imports.js index 2bd415e9746968..8735be5d307144 100644 --- a/tools/node_modules/eslint/lib/rules/sort-imports.js +++ b/tools/node_modules/eslint/lib/rules/sort-imports.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "enforce sorted import declarations within modules", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/sort-imports" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/sort-keys.js b/tools/node_modules/eslint/lib/rules/sort-keys.js index 8821f629433d48..9318e2fbb2377c 100644 --- a/tools/node_modules/eslint/lib/rules/sort-keys.js +++ b/tools/node_modules/eslint/lib/rules/sort-keys.js @@ -76,7 +76,8 @@ module.exports = { docs: { description: "require object keys to be sorted", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/sort-keys" }, schema: [ { diff --git a/tools/node_modules/eslint/lib/rules/sort-vars.js b/tools/node_modules/eslint/lib/rules/sort-vars.js index c77cdf86207518..334deb0657f3ef 100644 --- a/tools/node_modules/eslint/lib/rules/sort-vars.js +++ b/tools/node_modules/eslint/lib/rules/sort-vars.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require variables within the same declaration block to be sorted", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/sort-vars" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/space-before-blocks.js b/tools/node_modules/eslint/lib/rules/space-before-blocks.js index f50298c9c403a2..2b82066d727c08 100644 --- a/tools/node_modules/eslint/lib/rules/space-before-blocks.js +++ b/tools/node_modules/eslint/lib/rules/space-before-blocks.js @@ -16,7 +16,8 @@ module.exports = { docs: { description: "enforce consistent spacing before blocks", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/space-before-blocks" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js index 8851c4587ac779..51f6cc43262c87 100644 --- a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js +++ b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce consistent spacing before `function` definition opening parenthesis", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/space-before-function-paren" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/space-in-parens.js b/tools/node_modules/eslint/lib/rules/space-in-parens.js index 67ec5847cd1514..7e315c448627c6 100644 --- a/tools/node_modules/eslint/lib/rules/space-in-parens.js +++ b/tools/node_modules/eslint/lib/rules/space-in-parens.js @@ -15,7 +15,8 @@ module.exports = { docs: { description: "enforce consistent spacing inside parentheses", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/space-in-parens" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/space-infix-ops.js b/tools/node_modules/eslint/lib/rules/space-infix-ops.js index b92c889c7fb4e9..49b64658d190e0 100644 --- a/tools/node_modules/eslint/lib/rules/space-infix-ops.js +++ b/tools/node_modules/eslint/lib/rules/space-infix-ops.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "require spacing around infix operators", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/space-infix-ops" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/space-unary-ops.js b/tools/node_modules/eslint/lib/rules/space-unary-ops.js index 06a70fb6adec9b..4d122836ad6379 100644 --- a/tools/node_modules/eslint/lib/rules/space-unary-ops.js +++ b/tools/node_modules/eslint/lib/rules/space-unary-ops.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce consistent spacing before or after unary operators", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/space-unary-ops" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/spaced-comment.js b/tools/node_modules/eslint/lib/rules/spaced-comment.js index 8cdd05514ca654..9d2f5f49acd69d 100644 --- a/tools/node_modules/eslint/lib/rules/spaced-comment.js +++ b/tools/node_modules/eslint/lib/rules/spaced-comment.js @@ -158,7 +158,8 @@ module.exports = { docs: { description: "enforce consistent spacing after the `//` or `/*` in a comment", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/spaced-comment" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/strict.js b/tools/node_modules/eslint/lib/rules/strict.js index 433b47136797c6..633a8b323da9f8 100644 --- a/tools/node_modules/eslint/lib/rules/strict.js +++ b/tools/node_modules/eslint/lib/rules/strict.js @@ -83,7 +83,8 @@ module.exports = { docs: { description: "require or disallow strict mode directives", category: "Strict Mode", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/strict" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js index 400e850997e54e..cf19df6ed4a05a 100644 --- a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js +++ b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "enforce spacing around colons of switch statements", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/switch-colon-spacing" }, schema: [ { diff --git a/tools/node_modules/eslint/lib/rules/symbol-description.js b/tools/node_modules/eslint/lib/rules/symbol-description.js index 3f5ffd7463cd5a..95c1a1deb5db14 100644 --- a/tools/node_modules/eslint/lib/rules/symbol-description.js +++ b/tools/node_modules/eslint/lib/rules/symbol-description.js @@ -21,7 +21,8 @@ module.exports = { docs: { description: "require symbol descriptions", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/symbol-description" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/template-curly-spacing.js b/tools/node_modules/eslint/lib/rules/template-curly-spacing.js index 1d491a24c9c1e2..707ea76a360ee6 100644 --- a/tools/node_modules/eslint/lib/rules/template-curly-spacing.js +++ b/tools/node_modules/eslint/lib/rules/template-curly-spacing.js @@ -27,7 +27,8 @@ module.exports = { docs: { description: "require or disallow spacing around embedded expressions of template strings", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/template-curly-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/template-tag-spacing.js b/tools/node_modules/eslint/lib/rules/template-tag-spacing.js index 907c537ff30182..aee7ac108be16c 100755 --- a/tools/node_modules/eslint/lib/rules/template-tag-spacing.js +++ b/tools/node_modules/eslint/lib/rules/template-tag-spacing.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require or disallow spacing between template tags and their literals", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/template-tag-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/unicode-bom.js b/tools/node_modules/eslint/lib/rules/unicode-bom.js index 7109a49edbb5ed..03b2d5ae68e463 100644 --- a/tools/node_modules/eslint/lib/rules/unicode-bom.js +++ b/tools/node_modules/eslint/lib/rules/unicode-bom.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "require or disallow Unicode byte order mark (BOM)", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/unicode-bom" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/use-isnan.js b/tools/node_modules/eslint/lib/rules/use-isnan.js index 5ec48a0386e1b5..5bad5b3c6ddb5b 100644 --- a/tools/node_modules/eslint/lib/rules/use-isnan.js +++ b/tools/node_modules/eslint/lib/rules/use-isnan.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require calls to `isNaN()` when checking for `NaN`", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/use-isnan" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js index ea60b115ce6c76..5e1af10de7ad8b 100644 --- a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js +++ b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js @@ -19,7 +19,8 @@ module.exports = { docs: { description: "enforce valid JSDoc comments", category: "Possible Errors", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/valid-jsdoc" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/valid-typeof.js b/tools/node_modules/eslint/lib/rules/valid-typeof.js index fba4cc5712a7dc..ac4e74f20ba6c5 100644 --- a/tools/node_modules/eslint/lib/rules/valid-typeof.js +++ b/tools/node_modules/eslint/lib/rules/valid-typeof.js @@ -13,7 +13,8 @@ module.exports = { docs: { description: "enforce comparing `typeof` expressions against valid strings", category: "Possible Errors", - recommended: true + recommended: true, + url: "https://eslint.org/docs/rules/valid-typeof" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/vars-on-top.js b/tools/node_modules/eslint/lib/rules/vars-on-top.js index f74db905b1908d..8f6bf1d977782b 100644 --- a/tools/node_modules/eslint/lib/rules/vars-on-top.js +++ b/tools/node_modules/eslint/lib/rules/vars-on-top.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require `var` declarations be placed at the top of their containing scope", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/vars-on-top" }, schema: [] diff --git a/tools/node_modules/eslint/lib/rules/wrap-iife.js b/tools/node_modules/eslint/lib/rules/wrap-iife.js index c4e6a9e0c735cf..a21bf21634c8b8 100644 --- a/tools/node_modules/eslint/lib/rules/wrap-iife.js +++ b/tools/node_modules/eslint/lib/rules/wrap-iife.js @@ -20,7 +20,8 @@ module.exports = { docs: { description: "require parentheses around immediate `function` invocations", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/wrap-iife" }, schema: [ diff --git a/tools/node_modules/eslint/lib/rules/wrap-regex.js b/tools/node_modules/eslint/lib/rules/wrap-regex.js index 79f3d30515d63d..e58a4fe537669e 100644 --- a/tools/node_modules/eslint/lib/rules/wrap-regex.js +++ b/tools/node_modules/eslint/lib/rules/wrap-regex.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require parenthesis around regex literals", category: "Stylistic Issues", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/wrap-regex" }, schema: [], diff --git a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js index eb20fc01b0b9a9..33a37f0d991577 100644 --- a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js +++ b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js @@ -14,7 +14,8 @@ module.exports = { docs: { description: "require or disallow spacing around the `*` in `yield*` expressions", category: "ECMAScript 6", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/yield-star-spacing" }, fixable: "whitespace", diff --git a/tools/node_modules/eslint/lib/rules/yoda.js b/tools/node_modules/eslint/lib/rules/yoda.js index 2ccb61f73a0946..7f3bc6115b969b 100644 --- a/tools/node_modules/eslint/lib/rules/yoda.js +++ b/tools/node_modules/eslint/lib/rules/yoda.js @@ -155,7 +155,8 @@ module.exports = { docs: { description: "require or disallow \"Yoda\" conditions", category: "Best Practices", - recommended: false + recommended: false, + url: "https://eslint.org/docs/rules/yoda" }, schema: [ diff --git a/tools/node_modules/eslint/lib/testers/rule-tester.js b/tools/node_modules/eslint/lib/testers/rule-tester.js index aae66301d87173..de218a875f53d1 100644 --- a/tools/node_modules/eslint/lib/testers/rule-tester.js +++ b/tools/node_modules/eslint/lib/testers/rule-tester.js @@ -47,7 +47,8 @@ const lodash = require("lodash"), ajv = require("../util/ajv"), Linter = require("../linter"), Environments = require("../config/environments"), - SourceCodeFixer = require("../util/source-code-fixer"); + SourceCodeFixer = require("../util/source-code-fixer"), + interpolate = require("../util/interpolate"); //------------------------------------------------------------------------------ // Private Members @@ -131,13 +132,31 @@ const DESCRIBE = Symbol("describe"); const IT = Symbol("it"); /** - * This is `it` or `describe` if those don't exist. + * This is `it` default handler if `it` don't exist. * @this {Mocha} * @param {string} text - The description of the test case. * @param {Function} method - The logic of the test case. * @returns {any} Returned value of `method`. */ -function defaultHandler(text, method) { +function itDefaultHandler(text, method) { + try { + return method.apply(this); + } catch (err) { + if (err instanceof assert.AssertionError) { + err.message += ` (${util.inspect(err.actual)} ${err.operator} ${util.inspect(err.expected)})`; + } + throw err; + } +} + +/** + * This is `describe` default handler if `describe` don't exist. + * @this {Mocha} + * @param {string} text - The description of the test case. + * @param {Function} method - The logic of the test case. + * @returns {any} Returned value of `method`. + */ +function describeDefaultHandler(text, method) { return method.apply(this); } @@ -212,7 +231,7 @@ class RuleTester { static get describe() { return ( this[DESCRIBE] || - (typeof describe === "function" ? describe : defaultHandler) + (typeof describe === "function" ? describe : describeDefaultHandler) ); } @@ -223,7 +242,7 @@ class RuleTester { static get it() { return ( this[IT] || - (typeof it === "function" ? it : defaultHandler) + (typeof it === "function" ? it : itDefaultHandler) ); } @@ -454,59 +473,73 @@ class RuleTester { const hasMessageOfThisRule = messages.some(m => m.ruleId === ruleName); for (let i = 0, l = item.errors.length; i < l; i++) { - assert(!messages[i].fatal, `A fatal parsing error occurred: ${messages[i].message}`); + const error = item.errors[i]; + const message = messages[i]; + + assert(!message.fatal, `A fatal parsing error occurred: ${message.message}`); assert(hasMessageOfThisRule, "Error rule name should be the same as the name of the rule being tested"); - if (typeof item.errors[i] === "string" || item.errors[i] instanceof RegExp) { + if (typeof error === "string" || error instanceof RegExp) { // Just an error message. - assertMessageMatches(messages[i].message, item.errors[i]); - } else if (typeof item.errors[i] === "object") { + assertMessageMatches(message.message, error); + } else if (typeof error === "object") { /* * Error object. * This may have a message, node type, line, and/or * column. */ - if (item.errors[i].message) { - assertMessageMatches(messages[i].message, item.errors[i].message); + if (error.message) { + assertMessageMatches(message.message, error.message); } - // The following checks use loose equality assertions for backwards compatibility. + if (error.messageId) { + const hOP = Object.hasOwnProperty.call.bind(Object.hasOwnProperty); - if (item.errors[i].type) { + // verify that `error.message` is `undefined` + assert.strictEqual(error.message, void 0, "Error should not specify both a message and a messageId."); + if (!hOP(rule, "meta") || !hOP(rule.meta, "messages")) { + assert.fail("Rule must specify a messages hash in `meta`"); + } + if (!hOP(rule.meta.messages, error.messageId)) { + const friendlyIDList = `[${Object.keys(rule.meta.messages).map(key => `'${key}'`).join(", ")}]`; - // eslint-disable-next-line no-restricted-properties - assert.equal(messages[i].nodeType, item.errors[i].type, `Error type should be ${item.errors[i].type}, found ${messages[i].nodeType}`); - } + assert.fail(`Invalid messageId '${error.messageId}'. Expected one of ${friendlyIDList}.`); + } - if (item.errors[i].hasOwnProperty("line")) { + let expectedMessage = rule.meta.messages[error.messageId]; - // eslint-disable-next-line no-restricted-properties - assert.equal(messages[i].line, item.errors[i].line, `Error line should be ${item.errors[i].line}`); - } + if (error.data) { + expectedMessage = interpolate(expectedMessage, error.data); + } - if (item.errors[i].hasOwnProperty("column")) { + assertMessageMatches(message.message, expectedMessage); + } - // eslint-disable-next-line no-restricted-properties - assert.equal(messages[i].column, item.errors[i].column, `Error column should be ${item.errors[i].column}`); + if (error.type) { + assert.strictEqual(message.nodeType, error.type, `Error type should be ${error.type}, found ${message.nodeType}`); } - if (item.errors[i].hasOwnProperty("endLine")) { + if (error.hasOwnProperty("line")) { + assert.strictEqual(message.line, error.line, `Error line should be ${error.line}`); + } - // eslint-disable-next-line no-restricted-properties - assert.equal(messages[i].endLine, item.errors[i].endLine, `Error endLine should be ${item.errors[i].endLine}`); + if (error.hasOwnProperty("column")) { + assert.strictEqual(message.column, error.column, `Error column should be ${error.column}`); } - if (item.errors[i].hasOwnProperty("endColumn")) { + if (error.hasOwnProperty("endLine")) { + assert.strictEqual(message.endLine, error.endLine, `Error endLine should be ${error.endLine}`); + } - // eslint-disable-next-line no-restricted-properties - assert.equal(messages[i].endColumn, item.errors[i].endColumn, `Error endColumn should be ${item.errors[i].endColumn}`); + if (error.hasOwnProperty("endColumn")) { + assert.strictEqual(message.endColumn, error.endColumn, `Error endColumn should be ${error.endColumn}`); } } else { // Message was an unexpected type - assert.fail(messages[i], null, "Error should be a string, object, or RegExp."); + assert.fail(message, null, "Error should be a string, object, or RegExp."); } } } diff --git a/tools/node_modules/eslint/lib/util/interpolate.js b/tools/node_modules/eslint/lib/util/interpolate.js new file mode 100644 index 00000000000000..e0f2d027d197ca --- /dev/null +++ b/tools/node_modules/eslint/lib/util/interpolate.js @@ -0,0 +1,24 @@ +/** + * @fileoverview Interpolate keys from an object into a string with {{ }} markers. + * @author Jed Fox + */ + +"use strict"; + +//------------------------------------------------------------------------------ +// Public Interface +//------------------------------------------------------------------------------ + +module.exports = (text, data) => { + if (!data) { + return text; + } + return text.replace(/\{\{\s*([^{}]+?)\s*\}\}/g, (fullMatch, term) => { + if (term in data) { + return data[term]; + } + + // Preserve old behavior: If parameter name not provided, don't replace it. + return fullMatch; + }); +}; diff --git a/tools/node_modules/eslint/lib/util/source-code.js b/tools/node_modules/eslint/lib/util/source-code.js index 0bd710bf67ae93..dee81aa10cade8 100644 --- a/tools/node_modules/eslint/lib/util/source-code.js +++ b/tools/node_modules/eslint/lib/util/source-code.js @@ -84,13 +84,30 @@ class SourceCode extends TokenStore { /** * Represents parsed source code. - * @param {string} text - The source code text. - * @param {ASTNode} ast - The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped. + * @param {string|Object} textOrConfig - The source code text or config object. + * @param {string} textOrConfig.text - The source code text. + * @param {ASTNode} textOrConfig.ast - The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped. + * @param {Object|null} textOrConfig.parserServices - The parser srevices. + * @param {ScopeManager|null} textOrConfig.scopeManager - The scope of this source code. + * @param {Object|null} textOrConfig.visitorKeys - The visitor keys to traverse AST. + * @param {ASTNode} [ast] - The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped. * @constructor */ - constructor(text, ast) { - validate(ast); + constructor(textOrConfig, ast) { + let text, parserServices, scopeManager, visitorKeys; + + // Process overloading. + if (typeof textOrConfig === "string") { + text = textOrConfig; + } else if (typeof textOrConfig === "object" && textOrConfig !== null) { + text = textOrConfig.text; + ast = textOrConfig.ast; + parserServices = textOrConfig.parserServices; + scopeManager = textOrConfig.scopeManager; + visitorKeys = textOrConfig.visitorKeys; + } + validate(ast); super(ast.tokens, ast.comments); /** @@ -112,6 +129,24 @@ class SourceCode extends TokenStore { */ this.ast = ast; + /** + * The parser services of this source code. + * @type {Object} + */ + this.parserServices = parserServices || {}; + + /** + * The scope of this source code. + * @type {ScopeManager|null} + */ + this.scopeManager = scopeManager || null; + + /** + * The visitor keys to traverse AST. + * @type {Object} + */ + this.visitorKeys = visitorKeys || Traverser.DEFAULT_VISITOR_KEYS; + // Check the source text for the presence of a shebang since it is parsed as a standard line comment. const shebangMatched = this.text.match(astUtils.SHEBANG_MATCHER); const hasShebang = shebangMatched && ast.comments.length && ast.comments[0].value === shebangMatched[1]; @@ -353,9 +388,9 @@ class SourceCode extends TokenStore { getNodeByRangeIndex(index) { let result = null, resultParent = null; - const traverser = new Traverser(); - traverser.traverse(this.ast, { + Traverser.traverse(this.ast, { + visitorKeys: this.visitorKeys, enter(node, parent) { if (node.range[0] <= index && index < node.range[1]) { result = node; diff --git a/tools/node_modules/eslint/lib/util/traverser.js b/tools/node_modules/eslint/lib/util/traverser.js index fc070186b3b60e..79fb32faf95cff 100644 --- a/tools/node_modules/eslint/lib/util/traverser.js +++ b/tools/node_modules/eslint/lib/util/traverser.js @@ -1,6 +1,7 @@ /** - * @fileoverview Wrapper around estraverse + * @fileoverview Traverser to traverse AST trees. * @author Nicholas C. Zakas + * @author Toru Nagashima */ "use strict"; @@ -8,27 +9,153 @@ // Requirements //------------------------------------------------------------------------------ -const estraverse = require("estraverse"); +const vk = require("eslint-visitor-keys"); +const debug = require("debug")("eslint:traverser"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -const KEY_BLACKLIST = new Set([ - "parent", - "leadingComments", - "trailingComments" -]); +/** + * Do nothing. + * @returns {void} + */ +function noop() { + + // do nothing. +} + +/** + * Check whether the given value is an ASTNode or not. + * @param {any} x The value to check. + * @returns {boolean} `true` if the value is an ASTNode. + */ +function isNode(x) { + return x !== null && typeof x === "object" && typeof x.type === "string"; +} /** - * Wrapper around an estraverse controller that ensures the correct keys - * are visited. - * @constructor + * Get the visitor keys of a given node. + * @param {Object} visitorKeys The map of visitor keys. + * @param {ASTNode} node The node to get their visitor keys. + * @returns {string[]} The visitor keys of the node. */ -class Traverser extends estraverse.Controller { - traverse(node, visitor) { - visitor.fallback = Traverser.getKeys; - return super.traverse(node, visitor); +function getVisitorKeys(visitorKeys, node) { + let keys = visitorKeys[node.type]; + + if (!keys) { + keys = vk.getKeys(node); + debug("Unknown node type \"%s\": Estimated visitor keys %j", node.type, keys); + } + + return keys; +} + +/** + * The traverser class to traverse AST trees. + */ +class Traverser { + constructor() { + this._current = null; + this._parents = []; + this._skipped = false; + this._broken = false; + this._visitorKeys = null; + this._enter = null; + this._leave = null; + } + + /** + * @returns {ASTNode} The current node. + */ + current() { + return this._current; + } + + /** + * @returns {ASTNode[]} The ancestor nodes. + */ + parents() { + return this._parents.slice(0); + } + + /** + * Break the current traversal. + * @returns {void} + */ + break() { + this._broken = true; + } + + /** + * Skip child nodes for the current traversal. + * @returns {void} + */ + skip() { + this._skipped = true; + } + + /** + * Traverse the given AST tree. + * @param {ASTNode} node The root node to traverse. + * @param {Object} options The option object. + * @param {Object} [options.visitorKeys=DEFAULT_VISITOR_KEYS] The keys of each node types to traverse child nodes. Default is `./default-visitor-keys.json`. + * @param {Function} [options.enter=noop] The callback function which is called on entering each node. + * @param {Function} [options.leave=noop] The callback function which is called on leaving each node. + * @returns {void} + */ + traverse(node, options) { + this._current = null; + this._parents = []; + this._skipped = false; + this._broken = false; + this._visitorKeys = options.visitorKeys || vk.KEYS; + this._enter = options.enter || noop; + this._leave = options.leave || noop; + this._traverse(node, null); + } + + /** + * Traverse the given AST tree recursively. + * @param {ASTNode} node The current node. + * @param {ASTNode|null} parent The parent node. + * @returns {void} + * @private + */ + _traverse(node, parent) { + if (!isNode(node)) { + return; + } + + this._current = node; + this._skipped = false; + this._enter(node, parent); + + if (!this._skipped && !this._broken) { + const keys = getVisitorKeys(this._visitorKeys, node); + + if (keys.length >= 1) { + this._parents.push(node); + for (let i = 0; i < keys.length && !this._broken; ++i) { + const child = node[keys[i]]; + + if (Array.isArray(child)) { + for (let j = 0; j < child.length && !this._broken; ++j) { + this._traverse(child[j], node); + } + } else { + this._traverse(child, node); + } + } + this._parents.pop(); + } + } + + if (!this._broken) { + this._leave(node, parent); + } + + this._current = parent; } /** @@ -38,7 +165,28 @@ class Traverser extends estraverse.Controller { * @private */ static getKeys(node) { - return Object.keys(node).filter(key => !KEY_BLACKLIST.has(key)); + return vk.getKeys(node); + } + + /** + * Traverse the given AST tree. + * @param {ASTNode} node The root node to traverse. + * @param {Object} options The option object. + * @param {Object} [options.visitorKeys=DEFAULT_VISITOR_KEYS] The keys of each node types to traverse child nodes. Default is `./default-visitor-keys.json`. + * @param {Function} [options.enter=noop] The callback function which is called on entering each node. + * @param {Function} [options.leave=noop] The callback function which is called on leaving each node. + * @returns {void} + */ + static traverse(node, options) { + new Traverser().traverse(node, options); + } + + /** + * The default visitor keys. + * @type {Object} + */ + static get DEFAULT_VISITOR_KEYS() { + return vk.KEYS; } } diff --git a/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json index c62e197f4931b7..b021abbb407094 100644 --- a/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json +++ b/tools/node_modules/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json @@ -21,7 +21,7 @@ "_resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "_shasum": "45e37fb39e8da3f25baee3ff5369e2bb5f22017a", "_spec": "acorn@^3.0.4", - "_where": "/Users/cjihrig/iojs/node/tools/eslint-tmp/node_modules/eslint/node_modules/acorn-jsx", + "_where": "/home/mzasso/git/nodejs/node/tools/eslint-tmp/node_modules/eslint/node_modules/acorn-jsx", "bin": { "acorn": "./bin/acorn" }, diff --git a/tools/node_modules/eslint/node_modules/acorn-jsx/package.json b/tools/node_modules/eslint/node_modules/acorn-jsx/package.json index 96c127e87b9201..2690b541f9f4ef 100644 --- a/tools/node_modules/eslint/node_modules/acorn-jsx/package.json +++ b/tools/node_modules/eslint/node_modules/acorn-jsx/package.json @@ -21,7 +21,7 @@ "_resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "_shasum": "afdf9488fb1ecefc8348f6fb22f464e32a58b36b", "_spec": "acorn-jsx@^3.0.0", - "_where": "/Users/cjihrig/iojs/node/tools/eslint-tmp/node_modules/eslint/node_modules/espree", + "_where": "/home/mzasso/git/nodejs/node/tools/eslint-tmp/node_modules/eslint/node_modules/espree", "bugs": { "url": "https://github.com/RReverser/acorn-jsx/issues" }, diff --git a/tools/node_modules/eslint/node_modules/acorn/AUTHORS b/tools/node_modules/eslint/node_modules/acorn/AUTHORS index 78437f610c6ef7..bdbfea230f631b 100644 --- a/tools/node_modules/eslint/node_modules/acorn/AUTHORS +++ b/tools/node_modules/eslint/node_modules/acorn/AUTHORS @@ -1,5 +1,7 @@ List of Acorn contributors. Updated before every release. +Adrian Heine +Adrian Heine né Lang Adrian Rakovsky Alistair Braidwood Amila Welihinda @@ -11,11 +13,13 @@ Artem Govorov Bradley Heinz Brandon Mills Charles Hughes +Charmander Conrad Irwin Daniel Tschinder David Bonnet Domenico Matteo ehmicky +Felix Maier Forbes Lindesay Gilad Peleg impinball @@ -34,6 +38,7 @@ Keheliya Gallaba Kevin Irish Kevin Kwok krator +laosb Marek Marijn Haverbeke Martin Carlberg diff --git a/tools/node_modules/eslint/node_modules/acorn/README.md b/tools/node_modules/eslint/node_modules/acorn/README.md index ab2c12ea51add7..8855fa7cf4baf9 100644 --- a/tools/node_modules/eslint/node_modules/acorn/README.md +++ b/tools/node_modules/eslint/node_modules/acorn/README.md @@ -1,6 +1,6 @@ # Acorn -[![Build Status](https://travis-ci.org/ternjs/acorn.svg?branch=master)](https://travis-ci.org/ternjs/acorn) +[![Build Status](https://travis-ci.org/acornjs/acorn.svg?branch=master)](https://travis-ci.org/acornjs/acorn) [![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn) [![CDNJS](https://img.shields.io/cdnjs/v/acorn.svg)](https://cdnjs.com/libraries/acorn) [Author funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?force)](https://marijnhaverbeke.nl/fund/) @@ -10,13 +10,13 @@ A tiny, fast JavaScript parser, written completely in JavaScript. ## Community Acorn is open source software released under an -[MIT license](https://github.com/ternjs/acorn/blob/master/LICENSE). +[MIT license](https://github.com/acornjs/acorn/blob/master/LICENSE). You are welcome to -[report bugs](https://github.com/ternjs/acorn/issues) or create pull -requests on [github](https://github.com/ternjs/acorn). For questions +[report bugs](https://github.com/acornjs/acorn/issues) or create pull +requests on [github](https://github.com/acornjs/acorn). For questions and discussion, please use the -[Tern discussion forum](https://discuss.ternjs.net). +[Tern discussion forum](https://discuss.acornjs.net). ## Installation @@ -31,7 +31,7 @@ npm install acorn Alternately, download the source. ```sh -git clone https://github.com/ternjs/acorn.git +git clone https://github.com/acornjs/acorn.git ``` ## Components @@ -443,10 +443,13 @@ looseParser.extend("readToken", function(nextMethod) { ### Existing plugins - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx) - - [`acorn-es7-plugin`](https://github.com/MatAtBread/acorn-es7-plugin/): Parse [async/await syntax proposal](https://github.com/tc39/ecmascript-asyncawait) - - [`acorn-object-spread`](https://github.com/UXtemple/acorn-object-spread): Parse [object spread syntax proposal](https://github.com/sebmarkbage/ecmascript-rest-spread) - - [`acorn-es7`](https://www.npmjs.com/package/acorn-es7): Parse [decorator syntax proposal](https://github.com/wycats/javascript-decorators) - - [`acorn-objj`](https://www.npmjs.com/package/acorn-objj): [Objective-J](http://www.cappuccino-project.org/learn/objective-j.html) language parser built as Acorn plugin - - [`acorn-object-rest-spread`](https://github.com/victor-homyakov/acorn-object-rest-spread) Parse [Object Rest/Spread Properties proposal](https://github.com/tc39/proposal-object-rest-spread), works with latest Acorn version (5.0.3) - - [`acorn-static-class-property-initializer`](https://github.com/victor-homyakov/acorn-static-class-property-initializer) Partial support for static class properties from [ES Class Fields & Static Properties Proposal](https://github.com/tc39/proposal-class-public-fields) to support static property initializers in [React components written as ES6+ classes](https://babeljs.io/blog/2015/06/07/react-on-es6-plus) + - [`acorn-objj`](https://github.com/cappuccino/acorn-objj): [Objective-J](http://www.cappuccino-project.org/learn/objective-j.html) language parser built as Acorn plugin + Plugins for ECMAScript proposals: + + - [`acorn-object-rest-spread`](https://github.com/victor-homyakov/acorn-object-rest-spread): Parse [Object Rest/Spread Properties proposal](https://github.com/tc39/proposal-object-rest-spread) + - [`acorn5-object-spread`](https://github.com/adrianheine/acorn5-object-spread): Parse [Object Rest/Spread Properties proposal](https://github.com/tc39/proposal-object-rest-spread) + - [`acorn-es7`](https://github.com/angelozerr/acorn-es7): Parse [decorator syntax proposal](https://github.com/wycats/javascript-decorators) + - [`acorn-static-class-property-initializer`](https://github.com/victor-homyakov/acorn-static-class-property-initializer): Partial support for static class properties from [ES Class Fields & Static Properties Proposal](https://github.com/tc39/proposal-class-public-fields) to support static property initializers in [React components written as ES6+ classes](https://babeljs.io/blog/2015/06/07/react-on-es6-plus) + - [`acorn-dynamic-import`](https://github.com/kesne/acorn-dynamic-import): Parse [import() proposal](https://github.com/tc39/proposal-dynamic-import) + - [`acorn-async-iteration`](https://github.com/adrianheine/acorn-async-iteration): Parse [async iteration proposal](https://github.com/tc39/proposal-async-iteration) diff --git a/tools/node_modules/eslint/node_modules/acorn/bin/_acorn.js b/tools/node_modules/eslint/node_modules/acorn/bin/_acorn.js new file mode 100644 index 00000000000000..830c3896417798 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/acorn/bin/_acorn.js @@ -0,0 +1,69 @@ +#!/usr/bin/env node +'use strict'; + +var path = require('path'); +var fs = require('fs'); +var acorn = require('../dist/acorn.js'); + +var infile; +var forceFile; +var silent = false; +var compact = false; +var tokenize = false; +var options = {}; + +function help(status) { + var print = (status == 0) ? console.log : console.error; + print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]"); + print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]"); + process.exit(status); +} + +for (var i = 2; i < process.argv.length; ++i) { + var arg = process.argv[i]; + if ((arg == "-" || arg[0] != "-") && !infile) { infile = arg; } + else if (arg == "--" && !infile && i + 2 == process.argv.length) { forceFile = infile = process.argv[++i]; } + else if (arg == "--locations") { options.locations = true; } + else if (arg == "--allow-hash-bang") { options.allowHashBang = true; } + else if (arg == "--silent") { silent = true; } + else if (arg == "--compact") { compact = true; } + else if (arg == "--help") { help(0); } + else if (arg == "--tokenize") { tokenize = true; } + else if (arg == "--module") { options.sourceType = "module"; } + else { + var match = arg.match(/^--ecma(\d+)$/); + if (match) + { options.ecmaVersion = +match[1]; } + else + { help(1); } + } +} + +function run(code) { + var result; + try { + if (!tokenize) { + result = acorn.parse(code, options); + } else { + result = []; + var tokenizer$$1 = acorn.tokenizer(code, options), token; + do { + token = tokenizer$$1.getToken(); + result.push(token); + } while (token.type != acorn.tokTypes.eof) + } + } catch (e) { + console.error(e.message); + process.exit(1); + } + if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); } +} + +if (forceFile || infile && infile != "-") { + run(fs.readFileSync(infile, "utf8")); +} else { + var code = ""; + process.stdin.resume(); + process.stdin.on("data", function (chunk) { return code += chunk; }); + process.stdin.on("end", function () { return run(code); }); +} diff --git a/tools/node_modules/eslint/node_modules/acorn/bin/acorn b/tools/node_modules/eslint/node_modules/acorn/bin/acorn index 830c3896417798..03888d0aecac17 100755 --- a/tools/node_modules/eslint/node_modules/acorn/bin/acorn +++ b/tools/node_modules/eslint/node_modules/acorn/bin/acorn @@ -1,69 +1,4 @@ #!/usr/bin/env node 'use strict'; -var path = require('path'); -var fs = require('fs'); -var acorn = require('../dist/acorn.js'); - -var infile; -var forceFile; -var silent = false; -var compact = false; -var tokenize = false; -var options = {}; - -function help(status) { - var print = (status == 0) ? console.log : console.error; - print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]"); - print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]"); - process.exit(status); -} - -for (var i = 2; i < process.argv.length; ++i) { - var arg = process.argv[i]; - if ((arg == "-" || arg[0] != "-") && !infile) { infile = arg; } - else if (arg == "--" && !infile && i + 2 == process.argv.length) { forceFile = infile = process.argv[++i]; } - else if (arg == "--locations") { options.locations = true; } - else if (arg == "--allow-hash-bang") { options.allowHashBang = true; } - else if (arg == "--silent") { silent = true; } - else if (arg == "--compact") { compact = true; } - else if (arg == "--help") { help(0); } - else if (arg == "--tokenize") { tokenize = true; } - else if (arg == "--module") { options.sourceType = "module"; } - else { - var match = arg.match(/^--ecma(\d+)$/); - if (match) - { options.ecmaVersion = +match[1]; } - else - { help(1); } - } -} - -function run(code) { - var result; - try { - if (!tokenize) { - result = acorn.parse(code, options); - } else { - result = []; - var tokenizer$$1 = acorn.tokenizer(code, options), token; - do { - token = tokenizer$$1.getToken(); - result.push(token); - } while (token.type != acorn.tokTypes.eof) - } - } catch (e) { - console.error(e.message); - process.exit(1); - } - if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); } -} - -if (forceFile || infile && infile != "-") { - run(fs.readFileSync(infile, "utf8")); -} else { - var code = ""; - process.stdin.resume(); - process.stdin.on("data", function (chunk) { return code += chunk; }); - process.stdin.on("end", function () { return run(code); }); -} +require('./_acorn.js'); diff --git a/tools/node_modules/eslint/node_modules/acorn/bin/run_test262.js b/tools/node_modules/eslint/node_modules/acorn/bin/run_test262.js new file mode 100644 index 00000000000000..b0e4e8fac81f2b --- /dev/null +++ b/tools/node_modules/eslint/node_modules/acorn/bin/run_test262.js @@ -0,0 +1,27 @@ +const fs = require("fs") +const path = require("path") +const run = require("test262-parser-runner") +const parse = require("..").parse + +const unsupportedFeatures = [ + "async-iteration", + "BigInt", + "class-fields", + "class-fields-private", + "class-fields-public", + "object-rest", + "object-spread", + "optional-catch-binding", + "regexp-lookbehind", + "regexp-named-groups", + "regexp-unicode-property-escapes" +]; + +run( + (content, {sourceType}) => parse(content, {sourceType, ecmaVersion: 9}), + { + testsDirectory: path.dirname(require.resolve("test262/package.json")), + skip: test => (test.attrs.features && unsupportedFeatures.some(f => test.attrs.features.includes(f))), + whitelist: fs.readFileSync("./bin/test262.whitelist", "utf8").split("\n").filter(v => v) + } +) diff --git a/tools/node_modules/eslint/node_modules/acorn/bin/test262.whitelist b/tools/node_modules/eslint/node_modules/acorn/bin/test262.whitelist new file mode 100644 index 00000000000000..4524b3b1f0505b --- /dev/null +++ b/tools/node_modules/eslint/node_modules/acorn/bin/test262.whitelist @@ -0,0 +1,372 @@ +annexB/language/function-code/block-decl-func-no-skip-try.js (default) +annexB/language/function-code/block-decl-func-skip-early-err-block.js (default) +annexB/language/function-code/block-decl-func-skip-early-err.js (default) +annexB/language/function-code/block-decl-func-skip-early-err-switch.js (default) +annexB/language/function-code/block-decl-func-skip-early-err-try.js (default) +annexB/language/function-code/if-decl-else-decl-a-func-no-skip-try.js (default) +annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err-block.js (default) +annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err.js (default) +annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err-switch.js (default) +annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err-try.js (default) +annexB/language/function-code/if-decl-else-decl-b-func-no-skip-try.js (default) +annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err-block.js (default) +annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err.js (default) +annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err-switch.js (default) +annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err-try.js (default) +annexB/language/function-code/if-decl-else-stmt-func-no-skip-try.js (default) +annexB/language/function-code/if-decl-else-stmt-func-skip-early-err-block.js (default) +annexB/language/function-code/if-decl-else-stmt-func-skip-early-err.js (default) +annexB/language/function-code/if-decl-else-stmt-func-skip-early-err-switch.js (default) +annexB/language/function-code/if-decl-else-stmt-func-skip-early-err-try.js (default) +annexB/language/function-code/if-decl-no-else-func-no-skip-try.js (default) +annexB/language/function-code/if-decl-no-else-func-skip-early-err-block.js (default) +annexB/language/function-code/if-decl-no-else-func-skip-early-err.js (default) +annexB/language/function-code/if-decl-no-else-func-skip-early-err-switch.js (default) +annexB/language/function-code/if-decl-no-else-func-skip-early-err-try.js (default) +annexB/language/function-code/if-stmt-else-decl-func-no-skip-try.js (default) +annexB/language/function-code/if-stmt-else-decl-func-skip-early-err-block.js (default) +annexB/language/function-code/if-stmt-else-decl-func-skip-early-err.js (default) +annexB/language/function-code/if-stmt-else-decl-func-skip-early-err-switch.js (default) +annexB/language/function-code/if-stmt-else-decl-func-skip-early-err-try.js (default) +annexB/language/function-code/switch-case-func-no-skip-try.js (default) +annexB/language/function-code/switch-case-func-skip-early-err-block.js (default) +annexB/language/function-code/switch-case-func-skip-early-err.js (default) +annexB/language/function-code/switch-case-func-skip-early-err-switch.js (default) +annexB/language/function-code/switch-case-func-skip-early-err-try.js (default) +annexB/language/function-code/switch-dflt-func-no-skip-try.js (default) +annexB/language/function-code/switch-dflt-func-skip-early-err-block.js (default) +annexB/language/function-code/switch-dflt-func-skip-early-err.js (default) +annexB/language/function-code/switch-dflt-func-skip-early-err-switch.js (default) +annexB/language/function-code/switch-dflt-func-skip-early-err-try.js (default) +annexB/language/global-code/block-decl-global-no-skip-try.js (default) +annexB/language/global-code/block-decl-global-skip-early-err-block.js (default) +annexB/language/global-code/block-decl-global-skip-early-err.js (default) +annexB/language/global-code/block-decl-global-skip-early-err-switch.js (default) +annexB/language/global-code/block-decl-global-skip-early-err-try.js (default) +annexB/language/global-code/if-decl-else-decl-a-global-no-skip-try.js (default) +annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err-block.js (default) +annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err.js (default) +annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err-switch.js (default) +annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err-try.js (default) +annexB/language/global-code/if-decl-else-decl-b-global-no-skip-try.js (default) +annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err-block.js (default) +annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err.js (default) +annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err-switch.js (default) +annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err-try.js (default) +annexB/language/global-code/if-decl-else-stmt-global-no-skip-try.js (default) +annexB/language/global-code/if-decl-else-stmt-global-skip-early-err-block.js (default) +annexB/language/global-code/if-decl-else-stmt-global-skip-early-err.js (default) +annexB/language/global-code/if-decl-else-stmt-global-skip-early-err-switch.js (default) +annexB/language/global-code/if-decl-else-stmt-global-skip-early-err-try.js (default) +annexB/language/global-code/if-decl-no-else-global-no-skip-try.js (default) +annexB/language/global-code/if-decl-no-else-global-skip-early-err-block.js (default) +annexB/language/global-code/if-decl-no-else-global-skip-early-err.js (default) +annexB/language/global-code/if-decl-no-else-global-skip-early-err-switch.js (default) +annexB/language/global-code/if-decl-no-else-global-skip-early-err-try.js (default) +annexB/language/global-code/if-stmt-else-decl-global-no-skip-try.js (default) +annexB/language/global-code/if-stmt-else-decl-global-skip-early-err-block.js (default) +annexB/language/global-code/if-stmt-else-decl-global-skip-early-err.js (default) +annexB/language/global-code/if-stmt-else-decl-global-skip-early-err-switch.js (default) +annexB/language/global-code/if-stmt-else-decl-global-skip-early-err-try.js (default) +annexB/language/global-code/switch-case-global-no-skip-try.js (default) +annexB/language/global-code/switch-case-global-skip-early-err-block.js (default) +annexB/language/global-code/switch-case-global-skip-early-err.js (default) +annexB/language/global-code/switch-case-global-skip-early-err-switch.js (default) +annexB/language/global-code/switch-case-global-skip-early-err-try.js (default) +annexB/language/global-code/switch-dflt-global-no-skip-try.js (default) +annexB/language/global-code/switch-dflt-global-skip-early-err-block.js (default) +annexB/language/global-code/switch-dflt-global-skip-early-err.js (default) +annexB/language/global-code/switch-dflt-global-skip-early-err-switch.js (default) +annexB/language/global-code/switch-dflt-global-skip-early-err-try.js (default) +annexB/language/statements/try/catch-redeclared-for-in-var.js (default) +annexB/language/statements/try/catch-redeclared-for-in-var.js (strict mode) +annexB/language/statements/try/catch-redeclared-for-var.js (default) +annexB/language/statements/try/catch-redeclared-for-var.js (strict mode) +annexB/language/statements/try/catch-redeclared-var-statement-captured.js (default) +annexB/language/statements/try/catch-redeclared-var-statement-captured.js (strict mode) +annexB/language/statements/try/catch-redeclared-var-statement.js (default) +annexB/language/statements/try/catch-redeclared-var-statement.js (strict mode) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js (default) +language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js (strict mode) +language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js (default) +language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js (strict mode) +language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js (default) +language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js (strict mode) +language/expressions/async-function/early-errors-expression-body-contains-super-call.js (default) +language/expressions/async-function/early-errors-expression-body-contains-super-call.js (strict mode) +language/expressions/async-function/early-errors-expression-body-contains-super-property.js (default) +language/expressions/async-function/early-errors-expression-body-contains-super-property.js (strict mode) +language/expressions/async-function/early-errors-expression-formals-contains-super-call.js (default) +language/expressions/async-function/early-errors-expression-formals-contains-super-call.js (strict mode) +language/expressions/async-function/early-errors-expression-formals-contains-super-property.js (default) +language/expressions/async-function/early-errors-expression-formals-contains-super-property.js (strict mode) +language/expressions/class/method-param-dflt-yield.js (default) +language/expressions/class/static-method-param-dflt-yield.js (default) +language/expressions/function/early-body-super-call.js (default) +language/expressions/function/early-body-super-call.js (strict mode) +language/expressions/function/early-body-super-prop.js (default) +language/expressions/function/early-body-super-prop.js (strict mode) +language/expressions/function/early-params-super-call.js (default) +language/expressions/function/early-params-super-call.js (strict mode) +language/expressions/function/early-params-super-prop.js (default) +language/expressions/function/early-params-super-prop.js (strict mode) +language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js (default) +language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js (strict mode) +language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js (default) +language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js (default) +language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js (strict mode) +language/expressions/object/method-definition/generator-super-call-body.js (default) +language/expressions/object/method-definition/generator-super-call-body.js (strict mode) +language/expressions/object/method-definition/generator-super-call-param.js (default) +language/expressions/object/method-definition/generator-super-call-param.js (strict mode) +language/expressions/object/prop-def-invalid-async-prefix.js (default) +language/expressions/object/prop-def-invalid-async-prefix.js (strict mode) +language/expressions/yield/in-iteration-stmt.js (default) +language/expressions/yield/in-iteration-stmt.js (strict mode) +language/expressions/yield/star-in-iteration-stmt.js (default) +language/expressions/yield/star-in-iteration-stmt.js (strict mode) +language/global-code/new.target-arrow.js (default) +language/global-code/new.target-arrow.js (strict mode) +language/global-code/super-call-arrow.js (default) +language/global-code/super-call-arrow.js (strict mode) +language/global-code/super-prop-arrow.js (default) +language/global-code/super-prop-arrow.js (strict mode) +language/literals/regexp/early-err-dup-flag.js (default) +language/literals/regexp/early-err-dup-flag.js (strict mode) +language/literals/regexp/early-err-flags-unicode-escape.js (default) +language/literals/regexp/early-err-flags-unicode-escape.js (strict mode) +language/literals/string/legacy-non-octal-escape-sequence-strict.js (strict mode) +language/module-code/early-export-global.js (default) +language/module-code/early-export-global.js (strict mode) +language/module-code/early-export-unresolvable.js (default) +language/module-code/early-export-unresolvable.js (strict mode) +language/module-code/instn-resolve-empty-export.js (default) +language/module-code/instn-resolve-empty-export.js (strict mode) +language/module-code/instn-resolve-empty-import.js (default) +language/module-code/instn-resolve-empty-import.js (strict mode) +language/module-code/instn-resolve-err-reference.js (default) +language/module-code/instn-resolve-err-reference.js (strict mode) +language/module-code/instn-resolve-err-syntax.js (default) +language/module-code/instn-resolve-err-syntax.js (strict mode) +language/module-code/instn-resolve-order-depth.js (default) +language/module-code/instn-resolve-order-depth.js (strict mode) +language/module-code/instn-resolve-order-src.js (default) +language/module-code/instn-resolve-order-src.js (strict mode) +language/module-code/parse-err-hoist-lex-fun.js (default) +language/module-code/parse-err-hoist-lex-fun.js (strict mode) +language/module-code/parse-err-hoist-lex-gen.js (default) +language/module-code/parse-err-hoist-lex-gen.js (strict mode) +language/statements/async-function/early-errors-declaration-body-contains-super-call.js (default) +language/statements/async-function/early-errors-declaration-body-contains-super-call.js (strict mode) +language/statements/async-function/early-errors-declaration-body-contains-super-property.js (default) +language/statements/async-function/early-errors-declaration-body-contains-super-property.js (strict mode) +language/statements/async-function/early-errors-declaration-formals-contains-super-call.js (default) +language/statements/async-function/early-errors-declaration-formals-contains-super-call.js (strict mode) +language/statements/async-function/early-errors-declaration-formals-contains-super-property.js (default) +language/statements/async-function/early-errors-declaration-formals-contains-super-property.js (strict mode) +language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js (default) +language/statements/class/definition/early-errors-class-method-body-contains-super-call.js (default) +language/statements/class/definition/early-errors-class-method-body-contains-super-call.js (strict mode) +language/statements/class/definition/early-errors-class-method-duplicate-parameters.js (default) +language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js (default) +language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js (default) +language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js (strict mode) +language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js (default) +language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js (default) +language/statements/class/method-param-yield.js (default) +language/statements/class/static-method-param-yield.js (default) +language/statements/class/strict-mode/with.js (default) +language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js (default) +language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js (strict mode) +language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js (default) +language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js (strict mode) +language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js (default) +language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js (strict mode) +language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js (default) +language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js (strict mode) +language/statements/const/syntax/const-declaring-let-split-across-two-lines.js (default) +language/statements/do-while/labelled-fn-stmt.js (default) +language/statements/for/head-let-bound-names-in-stmt.js (default) +language/statements/for/head-let-bound-names-in-stmt.js (strict mode) +language/statements/for-in/head-const-bound-names-in-stmt.js (default) +language/statements/for-in/head-const-bound-names-in-stmt.js (strict mode) +language/statements/for-in/head-const-bound-names-let.js (default) +language/statements/for-in/head-let-bound-names-in-stmt.js (default) +language/statements/for-in/head-let-bound-names-in-stmt.js (strict mode) +language/statements/for-in/head-let-bound-names-let.js (default) +language/statements/for-in/labelled-fn-stmt-const.js (default) +language/statements/for-in/labelled-fn-stmt-let.js (default) +language/statements/for-in/labelled-fn-stmt-lhs.js (default) +language/statements/for-in/labelled-fn-stmt-var.js (default) +language/statements/for-in/let-block-with-newline.js (default) +language/statements/for-in/let-identifier-with-newline.js (default) +language/statements/for/labelled-fn-stmt-expr.js (default) +language/statements/for/labelled-fn-stmt-let.js (default) +language/statements/for/labelled-fn-stmt-var.js (default) +language/statements/for/let-block-with-newline.js (default) +language/statements/for/let-identifier-with-newline.js (default) +language/statements/for-of/head-const-bound-names-in-stmt.js (default) +language/statements/for-of/head-const-bound-names-in-stmt.js (strict mode) +language/statements/for-of/head-const-bound-names-let.js (default) +language/statements/for-of/head-let-bound-names-in-stmt.js (default) +language/statements/for-of/head-let-bound-names-in-stmt.js (strict mode) +language/statements/for-of/head-let-bound-names-let.js (default) +language/statements/for-of/labelled-fn-stmt-const.js (default) +language/statements/for-of/labelled-fn-stmt-let.js (default) +language/statements/for-of/labelled-fn-stmt-lhs.js (default) +language/statements/for-of/labelled-fn-stmt-var.js (default) +language/statements/for-of/let-block-with-newline.js (default) +language/statements/for-of/let-identifier-with-newline.js (default) +language/statements/function/early-body-super-call.js (default) +language/statements/function/early-body-super-call.js (strict mode) +language/statements/function/early-body-super-prop.js (default) +language/statements/function/early-body-super-prop.js (strict mode) +language/statements/function/early-params-super-call.js (default) +language/statements/function/early-params-super-call.js (strict mode) +language/statements/function/early-params-super-prop.js (default) +language/statements/function/early-params-super-prop.js (strict mode) +language/statements/if/if-gen-else-gen.js (default) +language/statements/if/if-gen-else-stmt.js (default) +language/statements/if/if-gen-no-else.js (default) +language/statements/if/if-stmt-else-gen.js (default) +language/statements/if/labelled-fn-stmt-first.js (default) +language/statements/if/labelled-fn-stmt-lone.js (default) +language/statements/if/labelled-fn-stmt-second.js (default) +language/statements/if/let-block-with-newline.js (default) +language/statements/if/let-identifier-with-newline.js (default) +language/statements/labeled/decl-async-function.js (default) +language/statements/labeled/let-block-with-newline.js (default) +language/statements/labeled/let-identifier-with-newline.js (default) +language/statements/let/syntax/identifier-let-disallowed-as-boundname.js (default) +language/statements/let/syntax/let-let-declaration-split-across-two-lines.js (default) +language/statements/let/syntax/let-let-declaration-with-initializer-split-across-two-lines.js (default) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (default) +language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (default) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (default) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (default) +language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode) +language/statements/while/labelled-fn-stmt.js (default) +language/statements/while/let-block-with-newline.js (default) +language/statements/while/let-identifier-with-newline.js (default) +language/statements/with/labelled-fn-stmt.js (default) +language/statements/with/let-block-with-newline.js (default) +language/statements/with/let-identifier-with-newline.js (default) +language/white-space/mongolian-vowel-separator.js (default) +language/white-space/mongolian-vowel-separator.js (strict mode) diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.es.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.es.js index d7289102c28efb..019417b6d3af94 100644 --- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.es.js +++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.es.js @@ -17,6 +17,8 @@ var keywords = { 6: ecma5AndLessKeywords + " const class extends export import super" }; +var keywordRelationalOperator = /^in(stanceof)?$/; + // ## Character categories // Big ugly regular expressions that match characters in the @@ -570,13 +572,15 @@ pp.eat = function(type) { // Tests whether parsed token is a contextual keyword. pp.isContextual = function(name) { - return this.type === types.name && this.value === name + return this.type === types.name && this.value === name && !this.containsEsc }; // Consumes contextual keyword if possible. pp.eatContextual = function(name) { - return this.value === name && this.eat(types.name) + if (!this.isContextual(name)) { return false } + this.next(); + return true }; // Asserts that following token is given contextual keyword. @@ -636,6 +640,7 @@ function DestructuringErrors() { this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = + this.doubleProto = -1; } @@ -648,9 +653,14 @@ pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { }; pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { - var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1; - if (!andThrow) { return pos >= 0 } - if (pos > -1) { this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns"); } + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } }; pp.checkYieldAwaitInDefaultParams = function() { @@ -696,7 +706,7 @@ var loopLabel = {kind: "loop"}; var switchLabel = {kind: "switch"}; pp$1.isLet = function() { - if (this.type !== types.name || this.options.ecmaVersion < 6 || this.value != "let") { return false } + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } skipWhiteSpace.lastIndex = this.pos; var skip = skipWhiteSpace.exec(this.input); var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); @@ -705,7 +715,7 @@ pp$1.isLet = function() { var pos = next + 1; while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; } var ident = this.input.slice(next, pos); - if (!this.isKeyword(ident)) { return true } + if (!keywordRelationalOperator.test(ident)) { return true } } return false }; @@ -714,7 +724,7 @@ pp$1.isLet = function() { // - 'async /*foo*/ function' is OK. // - 'async /*\n*/ function' is invalid. pp$1.isAsyncFunction = function() { - if (this.type !== types.name || this.options.ecmaVersion < 8 || this.value != "async") + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) { return false } skipWhiteSpace.lastIndex = this.pos; @@ -784,7 +794,8 @@ pp$1.parseStatement = function(declaration, topLevel, exports) { // next token is a colon and the expression was a simple // Identifier node, we switch to interpreting it as a label. default: - if (this.isAsyncFunction() && declaration) { + if (this.isAsyncFunction()) { + if (!declaration) { this.unexpected(); } this.next(); return this.parseFunctionStatement(node, true) } @@ -870,9 +881,8 @@ pp$1.parseForStatement = function(node) { var refDestructuringErrors = new DestructuringErrors; var init = this.parseExpression(true, refDestructuringErrors); if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - this.toAssignable(init); + this.toAssignable(init, false, refDestructuringErrors); this.checkLVal(init); - this.checkPatternErrors(refDestructuringErrors, true); return this.parseForIn(node, init) } else { this.checkExpressionErrors(refDestructuringErrors, true); @@ -885,16 +895,12 @@ pp$1.parseFunctionStatement = function(node, isAsync) { return this.parseFunction(node, true, false, isAsync) }; -pp$1.isFunction = function() { - return this.type === types._function || this.isAsyncFunction() -}; - pp$1.parseIfStatement = function(node) { this.next(); node.test = this.parseParenExpression(); // allow function declarations in branches, but only in non-strict mode - node.consequent = this.parseStatement(!this.strict && this.isFunction()); - node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.isFunction()) : null; + node.consequent = this.parseStatement(!this.strict && this.type == types._function); + node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type == types._function) : null; return this.finishNode(node, "IfStatement") }; @@ -1032,6 +1038,7 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) { for (var i = this.labels.length - 1; i >= 0; i--) { var label$1 = this$1.labels[i]; if (label$1.statementStart == node.start) { + // Update information about previous labels on this node label$1.statementStart = this$1.start; label$1.kind = kind; } else { break } @@ -1100,8 +1107,14 @@ pp$1.parseFor = function(node, init) { pp$1.parseForIn = function(node, init) { var type = this.type === types._in ? "ForInStatement" : "ForOfStatement"; this.next(); + if (type == "ForInStatement") { + if (init.type === "AssignmentPattern" || + (init.type === "VariableDeclaration" && init.declarations[0].init != null && + (this.strict || init.declarations[0].id.type !== "Identifier"))) + { this.raise(init.start, "Invalid assignment in for-in loop head"); } + } node.left = init; - node.right = this.parseExpression(); + node.right = type == "ForInStatement" ? this.parseExpression() : this.parseMaybeAssign(); this.expect(types.parenR); this.exitLexicalScope(); node.body = this.parseStatement(false); @@ -1200,62 +1213,70 @@ pp$1.parseClass = function(node, isStatement) { classBody.body = []; this.expect(types.braceL); while (!this.eat(types.braceR)) { - if (this$1.eat(types.semi)) { continue } - var method = this$1.startNode(); - var isGenerator = this$1.eat(types.star); - var isAsync = false; - var isMaybeStatic = this$1.type === types.name && this$1.value === "static"; - this$1.parsePropertyName(method); - method.static = isMaybeStatic && this$1.type !== types.parenL; - if (method.static) { - if (isGenerator) { this$1.unexpected(); } - isGenerator = this$1.eat(types.star); - this$1.parsePropertyName(method); - } - if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed && - method.key.type === "Identifier" && method.key.name === "async" && this$1.type !== types.parenL && - !this$1.canInsertSemicolon()) { - isAsync = true; - this$1.parsePropertyName(method); - } - method.kind = "method"; - var isGetSet = false; - if (!method.computed) { - var key = method.key; - if (!isGenerator && !isAsync && key.type === "Identifier" && this$1.type !== types.parenL && (key.name === "get" || key.name === "set")) { - isGetSet = true; - method.kind = key.name; - key = this$1.parsePropertyName(method); - } - if (!method.static && (key.type === "Identifier" && key.name === "constructor" || - key.type === "Literal" && key.value === "constructor")) { - if (hadConstructor) { this$1.raise(key.start, "Duplicate constructor in the same class"); } - if (isGetSet) { this$1.raise(key.start, "Constructor can't have get/set modifier"); } - if (isGenerator) { this$1.raise(key.start, "Constructor can't be a generator"); } - if (isAsync) { this$1.raise(key.start, "Constructor can't be an async method"); } - method.kind = "constructor"; - hadConstructor = true; - } - } - this$1.parseClassMethod(classBody, method, isGenerator, isAsync); - if (isGetSet) { - var paramCount = method.kind === "get" ? 0 : 1; - if (method.value.params.length !== paramCount) { - var start = method.value.start; - if (method.kind === "get") - { this$1.raiseRecoverable(start, "getter should have no params"); } - else - { this$1.raiseRecoverable(start, "setter should have exactly one param"); } - } else { - if (method.kind === "set" && method.value.params[0].type === "RestElement") - { this$1.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } - } + var member = this$1.parseClassMember(classBody); + if (member && member.type === "MethodDefinition" && member.kind === "constructor") { + if (hadConstructor) { this$1.raise(member.start, "Duplicate constructor in the same class"); } + hadConstructor = true; } } node.body = this.finishNode(classBody, "ClassBody"); return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") }; +pp$1.parseClassMember = function(classBody) { + var this$1 = this; + + if (this.eat(types.semi)) { return null } + + var method = this.startNode(); + var tryContextual = function (k, noLineBreak) { + if ( noLineBreak === void 0 ) noLineBreak = false; + + var start = this$1.start, startLoc = this$1.startLoc; + if (!this$1.eatContextual(k)) { return false } + if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) { return true } + if (method.key) { this$1.unexpected(); } + method.computed = false; + method.key = this$1.startNodeAt(start, startLoc); + method.key.name = k; + this$1.finishNode(method.key, "Identifier"); + return false + }; + + method.kind = "method"; + method.static = tryContextual("static"); + var isGenerator = this.eat(types.star); + var isAsync = false; + if (!isGenerator) { + if (this.options.ecmaVersion >= 8 && tryContextual("async", true)) { + isAsync = true; + } else if (tryContextual("get")) { + method.kind = "get"; + } else if (tryContextual("set")) { + method.kind = "set"; + } + } + if (!method.key) { this.parsePropertyName(method); } + var key = method.key; + if (!method.computed && !method.static && (key.type === "Identifier" && key.name === "constructor" || + key.type === "Literal" && key.value === "constructor")) { + if (method.kind !== "method") { this.raise(key.start, "Constructor can't have get/set modifier"); } + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + method.kind = "constructor"; + } else if (method.static && key.type === "Identifier" && key.name === "prototype") { + this.raise(key.start, "Classes may not have a static property named prototype"); + } + this.parseClassMethod(classBody, method, isGenerator, isAsync); + if (method.kind === "get" && method.value.params.length !== 0) + { this.raiseRecoverable(method.value.start, "getter should have no params"); } + if (method.kind === "set" && method.value.params.length !== 1) + { this.raiseRecoverable(method.value.start, "setter should have exactly one param"); } + if (method.kind === "set" && method.value.params[0].type === "RestElement") + { this.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } + return method +}; + pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) { method.value = this.parseMethod(isGenerator, isAsync); classBody.body.push(this.finishNode(method, "MethodDefinition")); @@ -1278,7 +1299,8 @@ pp$1.parseExport = function(node, exports) { // export * from '...' if (this.eat(types.star)) { this.expectContextual("from"); - node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); this.semicolon(); return this.finishNode(node, "ExportAllDeclaration") } @@ -1312,7 +1334,8 @@ pp$1.parseExport = function(node, exports) { node.declaration = null; node.specifiers = this.parseExportSpecifiers(exports); if (this.eatContextual("from")) { - node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); } else { // check for keywords used as local names for (var i = 0, list = node.specifiers; i < list.length; i += 1) { @@ -1486,7 +1509,7 @@ var pp$2 = Parser.prototype; // Convert existing expression atom to assignable pattern // if possible. -pp$2.toAssignable = function(node, isBinding) { +pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) { var this$1 = this; if (this.options.ecmaVersion >= 6 && node) { @@ -1498,33 +1521,45 @@ pp$2.toAssignable = function(node, isBinding) { case "ObjectPattern": case "ArrayPattern": + case "RestElement": break case "ObjectExpression": node.type = "ObjectPattern"; - for (var i = 0, list = node.properties; i < list.length; i += 1) { - var prop = list[i]; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) + { + var prop = list[i]; - if (prop.kind !== "init") { this$1.raise(prop.key.start, "Object pattern can't contain getter or setter"); } - this$1.toAssignable(prop.value, isBinding); - } + this$1.toAssignable(prop, isBinding); + } + break + + case "Property": + // AssignmentProperty has type == "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); break case "ArrayExpression": node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } this.toAssignableList(node.elements, isBinding); break + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break + case "AssignmentExpression": - if (node.operator === "=") { - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isBinding); - // falls through to AssignmentPattern - } else { - this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); - break - } + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + // falls through to AssignmentPattern case "AssignmentPattern": break @@ -1539,7 +1574,7 @@ pp$2.toAssignable = function(node, isBinding) { default: this.raise(node.start, "Assigning to rvalue"); } - } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } return node }; @@ -1549,24 +1584,15 @@ pp$2.toAssignableList = function(exprList, isBinding) { var this$1 = this; var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this$1.toAssignable(elt, isBinding); } + } if (end) { var last = exprList[end - 1]; - if (last && last.type == "RestElement") { - --end; - } else if (last && last.type == "SpreadElement") { - last.type = "RestElement"; - var arg = last.argument; - this.toAssignable(arg, isBinding); - --end; - } - if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") { this.unexpected(last.argument.start); } } - for (var i = 0; i < end; i++) { - var elt = exprList[i]; - if (elt) { this$1.toAssignable(elt, isBinding); } - } return exprList }; @@ -1687,7 +1713,7 @@ pp$2.checkLVal = function(expr, bindingType, checkClashes) { break case "MemberExpression": - if (bindingType) { this.raiseRecoverable(expr.start, (bindingType ? "Binding" : "Assigning to") + " member expression"); } + if (bindingType) { this.raiseRecoverable(expr.start, "Binding member expression"); } break case "ObjectPattern": @@ -1695,10 +1721,15 @@ pp$2.checkLVal = function(expr, bindingType, checkClashes) { { var prop = list[i]; - this$1.checkLVal(prop.value, bindingType, checkClashes); + this$1.checkLVal(prop, bindingType, checkClashes); } break + case "Property": + // AssignmentProperty has type == "Property" + this.checkLVal(expr.value, bindingType, checkClashes); + break + case "ArrayPattern": for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { var elem = list$1[i$1]; @@ -1749,7 +1780,7 @@ var pp$3 = Parser.prototype; // either with each other or with an init property — and in // strict mode, init properties are also not allowed to be repeated. -pp$3.checkPropClash = function(prop, propHash) { +pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) { return } var key = prop.key; @@ -1762,7 +1793,11 @@ pp$3.checkPropClash = function(prop, propHash) { var kind = prop.kind; if (this.options.ecmaVersion >= 6) { if (name === "__proto__" && kind === "init") { - if (propHash.proto) { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + if (propHash.proto) { + if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) { refDestructuringErrors.doubleProto = key.start; } + // Backwards-compat kludge. Can be removed in version 6.0 + else { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + } propHash.proto = true; } return @@ -1839,11 +1874,10 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { var left = this.parseMaybeConditional(noIn, refDestructuringErrors); if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } if (this.type.isAssign) { - this.checkPatternErrors(refDestructuringErrors, true); - if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); } var node = this.startNodeAt(startPos, startLoc); node.operator = this.value; - node.left = this.type === types.eq ? this.toAssignable(left) : left; + node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left; + if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); } refDestructuringErrors.shorthandAssign = -1; // reset because shorthand default was used correctly this.checkLVal(left); this.next(); @@ -1974,7 +2008,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { var this$1 = this; var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && - this.lastTokEnd == base.end && !this.canInsertSemicolon(); + this.lastTokEnd == base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async"; for (var computed = (void 0);;) { if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) { var node = this$1.startNodeAt(startPos, startLoc); @@ -2042,14 +2076,14 @@ pp$3.parseExprAtom = function(refDestructuringErrors) { return this.finishNode(node, "ThisExpression") case types.name: - var startPos = this.start, startLoc = this.startLoc; + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; var id = this.parseIdent(this.type !== types.name); - if (this.options.ecmaVersion >= 8 && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) { return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true) } if (canBeArrow && !this.canInsertSemicolon()) { if (this.eat(types.arrow)) { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } - if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name) { + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) { id = this.parseIdent(); if (this.canInsertSemicolon() || !this.eat(types.arrow)) { this.unexpected(); } @@ -2136,7 +2170,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { var innerStartPos = this.start, innerStartLoc = this.startLoc; var exprList = [], first = true, lastIsComma = false; - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; this.yieldPos = 0; this.awaitPos = 0; while (this.type !== types.parenR) { @@ -2150,9 +2184,6 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { if (this$1.type === types.comma) { this$1.raise(this$1.start, "Comma is not permitted after the rest element"); } break } else { - if (this$1.type === types.parenL && !innerParenStart) { - innerParenStart = this$1.start; - } exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem)); } } @@ -2162,7 +2193,6 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { this.checkPatternErrors(refDestructuringErrors, false); this.checkYieldAwaitInDefaultParams(); - if (innerParenStart) { this.unexpected(innerParenStart); } this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; return this.parseParenArrowList(startPos, startLoc, exprList) @@ -2215,8 +2245,9 @@ pp$3.parseNew = function() { var meta = this.parseIdent(true); if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) { node.meta = meta; + var containsEsc = this.containsEsc; node.property = this.parseIdent(true); - if (node.property.name !== "target") + if (node.property.name !== "target" || containsEsc) { this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target"); } if (!this.inFunction) { this.raiseRecoverable(node.start, "new.target can only be used in functions"); } @@ -2295,7 +2326,7 @@ pp$3.parseObj = function(isPattern, refDestructuringErrors) { } else { first = false; } var prop = this$1.parseProperty(isPattern, refDestructuringErrors); - this$1.checkPropClash(prop, propHash); + if (!isPattern) { this$1.checkPropClash(prop, propHash, refDestructuringErrors); } node.properties.push(prop); } return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") @@ -2313,18 +2344,19 @@ pp$3.parseProperty = function(isPattern, refDestructuringErrors) { if (!isPattern) { isGenerator = this.eat(types.star); } } + var containsEsc = this.containsEsc; this.parsePropertyName(prop); - if (!isPattern && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { isAsync = true; this.parsePropertyName(prop, refDestructuringErrors); } else { isAsync = false; } - this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors); + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); return this.finishNode(prop, "Property") }; -pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) { +pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { if ((isGenerator || isAsync) && this.type === types.colon) { this.unexpected(); } @@ -2336,7 +2368,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP prop.kind = "init"; prop.method = true; prop.value = this.parseMethod(isGenerator, isAsync); - } else if (!isPattern && + } else if (!isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.type != types.comma && this.type != types.braceR)) { @@ -2570,8 +2602,11 @@ pp$3.checkUnreserved = function(ref) { if (this.options.ecmaVersion < 6 && this.input.slice(start, end).indexOf("\\") != -1) { return } var re = this.strict ? this.reservedWordsStrict : this.reservedWords; - if (re.test(name)) - { this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); } + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Can not use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } }; // Parse the next token as an identifier. If `liberal` is true (used @@ -2586,7 +2621,7 @@ pp$3.parseIdent = function(liberal, isBinding) { } else if (this.type.keyword) { node.name = this.type.keyword; - // To fix https://github.com/ternjs/acorn/issues/575 + // To fix https://github.com/acornjs/acorn/issues/575 // `class` and `function` keywords push new context into this.context. // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword @@ -3214,12 +3249,12 @@ pp$8.readToken_eq_excl = function(code) { // '=!' pp$8.getTokenFromCode = function(code) { switch (code) { - // The interpretation of a dot depends on whether it is followed - // by a digit or another two dots. + // The interpretation of a dot depends on whether it is followed + // by a digit or another two dots. case 46: // '.' return this.readToken_dot() - // Punctuation tokens. + // Punctuation tokens. case 40: ++this.pos; return this.finishToken(types.parenL) case 41: ++this.pos; return this.finishToken(types.parenR) case 59: ++this.pos; return this.finishToken(types.semi) @@ -3243,19 +3278,20 @@ pp$8.getTokenFromCode = function(code) { if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number } - // Anything else beginning with a digit is an integer, octal - // number, or float. + + // Anything else beginning with a digit is an integer, octal + // number, or float. case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 return this.readNumber(false) - // Quotes produce strings. + // Quotes produce strings. case 34: case 39: // '"', "'" return this.readString(code) - // Operators are parsed inline in tiny state machines. '=' (61) is - // often referred to. `finishOp` simply skips the amount of - // characters it is given as second argument, and returns a token - // of the type given by its first argument. + // Operators are parsed inline in tiny state machines. '=' (61) is + // often referred to. `finishOp` simply skips the amount of + // characters it is given as second argument, and returns a token + // of the type given by its first argument. case 47: // '/' return this.readToken_slash() @@ -3332,6 +3368,7 @@ pp$8.readRegexp = function() { if (mods) { var validFlags = /^[gim]*$/; if (this.options.ecmaVersion >= 6) { validFlags = /^[gimuy]*$/; } + if (this.options.ecmaVersion >= 9) { validFlags = /^[gimsuy]*$/; } if (!validFlags.test(mods)) { this.raise(start, "Invalid regular expression flag"); } if (mods.indexOf("u") >= 0) { if (regexpUnicodeSupport) { @@ -3402,30 +3439,26 @@ pp$8.readRadixNumber = function(radix) { // Read an integer, octal integer, or floating-point number. pp$8.readNumber = function(startsWithDot) { - var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48; + var start = this.pos; if (!startsWithDot && this.readInt(10) === null) { this.raise(start, "Invalid number"); } - if (octal && this.pos == start + 1) { octal = false; } + var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (octal && this.strict) { this.raise(start, "Invalid number"); } + if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; } var next = this.input.charCodeAt(this.pos); if (next === 46 && !octal) { // '.' ++this.pos; this.readInt(10); - isFloat = true; next = this.input.charCodeAt(this.pos); } if ((next === 69 || next === 101) && !octal) { // 'eE' next = this.input.charCodeAt(++this.pos); if (next === 43 || next === 45) { ++this.pos; } // '+-' if (this.readInt(10) === null) { this.raise(start, "Invalid number"); } - isFloat = true; } if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - var str = this.input.slice(start, this.pos), val; - if (isFloat) { val = parseFloat(str); } - else if (!octal || str.length === 1) { val = parseInt(str, 10); } - else if (this.strict) { this.raise(start, "Invalid number"); } - else if (/[89]/.test(str)) { val = parseInt(str, 10); } - else { val = parseInt(str, 8); } + var str = this.input.slice(start, this.pos); + var val = octal ? parseInt(str, 8) : parseFloat(str); return this.finishToken(types.num, val) }; @@ -3676,11 +3709,11 @@ pp$8.readWord = function() { // Git repositories for Acorn are available at // // http://marijnhaverbeke.nl/git/acorn -// https://github.com/ternjs/acorn.git +// https://github.com/acornjs/acorn.git // // Please use the [github bug tracker][ghbt] to report issues. // -// [ghbt]: https://github.com/ternjs/acorn/issues +// [ghbt]: https://github.com/acornjs/acorn/issues // // This file defines the main parser interface. The library also comes // with a [error-tolerant parser][dammit] and an @@ -3689,7 +3722,7 @@ pp$8.readWord = function() { // [dammit]: acorn_loose.js // [walk]: util/walk.js -var version = "5.2.1"; +var version = "5.3.0"; // The main exported interface (under `self.acorn` when in the // browser) is a `parse` function that takes a code string and diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js index 4f0dd5d2123b1f..c7bf2b5494cdfc 100644 --- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js +++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js @@ -1,7 +1,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.acorn = global.acorn || {}))); + (factory((global.acorn = {}))); }(this, (function (exports) { 'use strict'; // Reserved word lists for various dialects of the language @@ -23,6 +23,8 @@ var keywords = { 6: ecma5AndLessKeywords + " const class extends export import super" }; +var keywordRelationalOperator = /^in(stanceof)?$/; + // ## Character categories // Big ugly regular expressions that match characters in the @@ -576,13 +578,15 @@ pp.eat = function(type) { // Tests whether parsed token is a contextual keyword. pp.isContextual = function(name) { - return this.type === types.name && this.value === name + return this.type === types.name && this.value === name && !this.containsEsc }; // Consumes contextual keyword if possible. pp.eatContextual = function(name) { - return this.value === name && this.eat(types.name) + if (!this.isContextual(name)) { return false } + this.next(); + return true }; // Asserts that following token is given contextual keyword. @@ -642,6 +646,7 @@ function DestructuringErrors() { this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = + this.doubleProto = -1; } @@ -654,9 +659,14 @@ pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { }; pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { - var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1; - if (!andThrow) { return pos >= 0 } - if (pos > -1) { this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns"); } + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } }; pp.checkYieldAwaitInDefaultParams = function() { @@ -702,7 +712,7 @@ var loopLabel = {kind: "loop"}; var switchLabel = {kind: "switch"}; pp$1.isLet = function() { - if (this.type !== types.name || this.options.ecmaVersion < 6 || this.value != "let") { return false } + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } skipWhiteSpace.lastIndex = this.pos; var skip = skipWhiteSpace.exec(this.input); var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); @@ -711,7 +721,7 @@ pp$1.isLet = function() { var pos = next + 1; while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; } var ident = this.input.slice(next, pos); - if (!this.isKeyword(ident)) { return true } + if (!keywordRelationalOperator.test(ident)) { return true } } return false }; @@ -720,7 +730,7 @@ pp$1.isLet = function() { // - 'async /*foo*/ function' is OK. // - 'async /*\n*/ function' is invalid. pp$1.isAsyncFunction = function() { - if (this.type !== types.name || this.options.ecmaVersion < 8 || this.value != "async") + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) { return false } skipWhiteSpace.lastIndex = this.pos; @@ -790,7 +800,8 @@ pp$1.parseStatement = function(declaration, topLevel, exports) { // next token is a colon and the expression was a simple // Identifier node, we switch to interpreting it as a label. default: - if (this.isAsyncFunction() && declaration) { + if (this.isAsyncFunction()) { + if (!declaration) { this.unexpected(); } this.next(); return this.parseFunctionStatement(node, true) } @@ -876,9 +887,8 @@ pp$1.parseForStatement = function(node) { var refDestructuringErrors = new DestructuringErrors; var init = this.parseExpression(true, refDestructuringErrors); if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - this.toAssignable(init); + this.toAssignable(init, false, refDestructuringErrors); this.checkLVal(init); - this.checkPatternErrors(refDestructuringErrors, true); return this.parseForIn(node, init) } else { this.checkExpressionErrors(refDestructuringErrors, true); @@ -891,16 +901,12 @@ pp$1.parseFunctionStatement = function(node, isAsync) { return this.parseFunction(node, true, false, isAsync) }; -pp$1.isFunction = function() { - return this.type === types._function || this.isAsyncFunction() -}; - pp$1.parseIfStatement = function(node) { this.next(); node.test = this.parseParenExpression(); // allow function declarations in branches, but only in non-strict mode - node.consequent = this.parseStatement(!this.strict && this.isFunction()); - node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.isFunction()) : null; + node.consequent = this.parseStatement(!this.strict && this.type == types._function); + node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type == types._function) : null; return this.finishNode(node, "IfStatement") }; @@ -1038,6 +1044,7 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) { for (var i = this.labels.length - 1; i >= 0; i--) { var label$1 = this$1.labels[i]; if (label$1.statementStart == node.start) { + // Update information about previous labels on this node label$1.statementStart = this$1.start; label$1.kind = kind; } else { break } @@ -1106,8 +1113,14 @@ pp$1.parseFor = function(node, init) { pp$1.parseForIn = function(node, init) { var type = this.type === types._in ? "ForInStatement" : "ForOfStatement"; this.next(); + if (type == "ForInStatement") { + if (init.type === "AssignmentPattern" || + (init.type === "VariableDeclaration" && init.declarations[0].init != null && + (this.strict || init.declarations[0].id.type !== "Identifier"))) + { this.raise(init.start, "Invalid assignment in for-in loop head"); } + } node.left = init; - node.right = this.parseExpression(); + node.right = type == "ForInStatement" ? this.parseExpression() : this.parseMaybeAssign(); this.expect(types.parenR); this.exitLexicalScope(); node.body = this.parseStatement(false); @@ -1206,62 +1219,70 @@ pp$1.parseClass = function(node, isStatement) { classBody.body = []; this.expect(types.braceL); while (!this.eat(types.braceR)) { - if (this$1.eat(types.semi)) { continue } - var method = this$1.startNode(); - var isGenerator = this$1.eat(types.star); - var isAsync = false; - var isMaybeStatic = this$1.type === types.name && this$1.value === "static"; - this$1.parsePropertyName(method); - method.static = isMaybeStatic && this$1.type !== types.parenL; - if (method.static) { - if (isGenerator) { this$1.unexpected(); } - isGenerator = this$1.eat(types.star); - this$1.parsePropertyName(method); - } - if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed && - method.key.type === "Identifier" && method.key.name === "async" && this$1.type !== types.parenL && - !this$1.canInsertSemicolon()) { - isAsync = true; - this$1.parsePropertyName(method); - } - method.kind = "method"; - var isGetSet = false; - if (!method.computed) { - var key = method.key; - if (!isGenerator && !isAsync && key.type === "Identifier" && this$1.type !== types.parenL && (key.name === "get" || key.name === "set")) { - isGetSet = true; - method.kind = key.name; - key = this$1.parsePropertyName(method); - } - if (!method.static && (key.type === "Identifier" && key.name === "constructor" || - key.type === "Literal" && key.value === "constructor")) { - if (hadConstructor) { this$1.raise(key.start, "Duplicate constructor in the same class"); } - if (isGetSet) { this$1.raise(key.start, "Constructor can't have get/set modifier"); } - if (isGenerator) { this$1.raise(key.start, "Constructor can't be a generator"); } - if (isAsync) { this$1.raise(key.start, "Constructor can't be an async method"); } - method.kind = "constructor"; - hadConstructor = true; - } - } - this$1.parseClassMethod(classBody, method, isGenerator, isAsync); - if (isGetSet) { - var paramCount = method.kind === "get" ? 0 : 1; - if (method.value.params.length !== paramCount) { - var start = method.value.start; - if (method.kind === "get") - { this$1.raiseRecoverable(start, "getter should have no params"); } - else - { this$1.raiseRecoverable(start, "setter should have exactly one param"); } - } else { - if (method.kind === "set" && method.value.params[0].type === "RestElement") - { this$1.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } - } + var member = this$1.parseClassMember(classBody); + if (member && member.type === "MethodDefinition" && member.kind === "constructor") { + if (hadConstructor) { this$1.raise(member.start, "Duplicate constructor in the same class"); } + hadConstructor = true; } } node.body = this.finishNode(classBody, "ClassBody"); return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") }; +pp$1.parseClassMember = function(classBody) { + var this$1 = this; + + if (this.eat(types.semi)) { return null } + + var method = this.startNode(); + var tryContextual = function (k, noLineBreak) { + if ( noLineBreak === void 0 ) noLineBreak = false; + + var start = this$1.start, startLoc = this$1.startLoc; + if (!this$1.eatContextual(k)) { return false } + if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) { return true } + if (method.key) { this$1.unexpected(); } + method.computed = false; + method.key = this$1.startNodeAt(start, startLoc); + method.key.name = k; + this$1.finishNode(method.key, "Identifier"); + return false + }; + + method.kind = "method"; + method.static = tryContextual("static"); + var isGenerator = this.eat(types.star); + var isAsync = false; + if (!isGenerator) { + if (this.options.ecmaVersion >= 8 && tryContextual("async", true)) { + isAsync = true; + } else if (tryContextual("get")) { + method.kind = "get"; + } else if (tryContextual("set")) { + method.kind = "set"; + } + } + if (!method.key) { this.parsePropertyName(method); } + var key = method.key; + if (!method.computed && !method.static && (key.type === "Identifier" && key.name === "constructor" || + key.type === "Literal" && key.value === "constructor")) { + if (method.kind !== "method") { this.raise(key.start, "Constructor can't have get/set modifier"); } + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + method.kind = "constructor"; + } else if (method.static && key.type === "Identifier" && key.name === "prototype") { + this.raise(key.start, "Classes may not have a static property named prototype"); + } + this.parseClassMethod(classBody, method, isGenerator, isAsync); + if (method.kind === "get" && method.value.params.length !== 0) + { this.raiseRecoverable(method.value.start, "getter should have no params"); } + if (method.kind === "set" && method.value.params.length !== 1) + { this.raiseRecoverable(method.value.start, "setter should have exactly one param"); } + if (method.kind === "set" && method.value.params[0].type === "RestElement") + { this.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } + return method +}; + pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) { method.value = this.parseMethod(isGenerator, isAsync); classBody.body.push(this.finishNode(method, "MethodDefinition")); @@ -1284,7 +1305,8 @@ pp$1.parseExport = function(node, exports) { // export * from '...' if (this.eat(types.star)) { this.expectContextual("from"); - node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); this.semicolon(); return this.finishNode(node, "ExportAllDeclaration") } @@ -1318,7 +1340,8 @@ pp$1.parseExport = function(node, exports) { node.declaration = null; node.specifiers = this.parseExportSpecifiers(exports); if (this.eatContextual("from")) { - node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); } else { // check for keywords used as local names for (var i = 0, list = node.specifiers; i < list.length; i += 1) { @@ -1492,7 +1515,7 @@ var pp$2 = Parser.prototype; // Convert existing expression atom to assignable pattern // if possible. -pp$2.toAssignable = function(node, isBinding) { +pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) { var this$1 = this; if (this.options.ecmaVersion >= 6 && node) { @@ -1504,33 +1527,45 @@ pp$2.toAssignable = function(node, isBinding) { case "ObjectPattern": case "ArrayPattern": + case "RestElement": break case "ObjectExpression": node.type = "ObjectPattern"; - for (var i = 0, list = node.properties; i < list.length; i += 1) { - var prop = list[i]; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) + { + var prop = list[i]; - if (prop.kind !== "init") { this$1.raise(prop.key.start, "Object pattern can't contain getter or setter"); } - this$1.toAssignable(prop.value, isBinding); - } + this$1.toAssignable(prop, isBinding); + } + break + + case "Property": + // AssignmentProperty has type == "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); break case "ArrayExpression": node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } this.toAssignableList(node.elements, isBinding); break + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break + case "AssignmentExpression": - if (node.operator === "=") { - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isBinding); - // falls through to AssignmentPattern - } else { - this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); - break - } + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + // falls through to AssignmentPattern case "AssignmentPattern": break @@ -1545,7 +1580,7 @@ pp$2.toAssignable = function(node, isBinding) { default: this.raise(node.start, "Assigning to rvalue"); } - } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } return node }; @@ -1555,24 +1590,15 @@ pp$2.toAssignableList = function(exprList, isBinding) { var this$1 = this; var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this$1.toAssignable(elt, isBinding); } + } if (end) { var last = exprList[end - 1]; - if (last && last.type == "RestElement") { - --end; - } else if (last && last.type == "SpreadElement") { - last.type = "RestElement"; - var arg = last.argument; - this.toAssignable(arg, isBinding); - --end; - } - if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") { this.unexpected(last.argument.start); } } - for (var i = 0; i < end; i++) { - var elt = exprList[i]; - if (elt) { this$1.toAssignable(elt, isBinding); } - } return exprList }; @@ -1693,7 +1719,7 @@ pp$2.checkLVal = function(expr, bindingType, checkClashes) { break case "MemberExpression": - if (bindingType) { this.raiseRecoverable(expr.start, (bindingType ? "Binding" : "Assigning to") + " member expression"); } + if (bindingType) { this.raiseRecoverable(expr.start, "Binding member expression"); } break case "ObjectPattern": @@ -1701,10 +1727,15 @@ pp$2.checkLVal = function(expr, bindingType, checkClashes) { { var prop = list[i]; - this$1.checkLVal(prop.value, bindingType, checkClashes); + this$1.checkLVal(prop, bindingType, checkClashes); } break + case "Property": + // AssignmentProperty has type == "Property" + this.checkLVal(expr.value, bindingType, checkClashes); + break + case "ArrayPattern": for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { var elem = list$1[i$1]; @@ -1755,7 +1786,7 @@ var pp$3 = Parser.prototype; // either with each other or with an init property — and in // strict mode, init properties are also not allowed to be repeated. -pp$3.checkPropClash = function(prop, propHash) { +pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) { return } var key = prop.key; @@ -1768,7 +1799,11 @@ pp$3.checkPropClash = function(prop, propHash) { var kind = prop.kind; if (this.options.ecmaVersion >= 6) { if (name === "__proto__" && kind === "init") { - if (propHash.proto) { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + if (propHash.proto) { + if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) { refDestructuringErrors.doubleProto = key.start; } + // Backwards-compat kludge. Can be removed in version 6.0 + else { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + } propHash.proto = true; } return @@ -1845,11 +1880,10 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { var left = this.parseMaybeConditional(noIn, refDestructuringErrors); if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } if (this.type.isAssign) { - this.checkPatternErrors(refDestructuringErrors, true); - if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); } var node = this.startNodeAt(startPos, startLoc); node.operator = this.value; - node.left = this.type === types.eq ? this.toAssignable(left) : left; + node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left; + if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); } refDestructuringErrors.shorthandAssign = -1; // reset because shorthand default was used correctly this.checkLVal(left); this.next(); @@ -1980,7 +2014,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { var this$1 = this; var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && - this.lastTokEnd == base.end && !this.canInsertSemicolon(); + this.lastTokEnd == base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async"; for (var computed = (void 0);;) { if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) { var node = this$1.startNodeAt(startPos, startLoc); @@ -2048,14 +2082,14 @@ pp$3.parseExprAtom = function(refDestructuringErrors) { return this.finishNode(node, "ThisExpression") case types.name: - var startPos = this.start, startLoc = this.startLoc; + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; var id = this.parseIdent(this.type !== types.name); - if (this.options.ecmaVersion >= 8 && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) { return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true) } if (canBeArrow && !this.canInsertSemicolon()) { if (this.eat(types.arrow)) { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } - if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name) { + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) { id = this.parseIdent(); if (this.canInsertSemicolon() || !this.eat(types.arrow)) { this.unexpected(); } @@ -2142,7 +2176,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { var innerStartPos = this.start, innerStartLoc = this.startLoc; var exprList = [], first = true, lastIsComma = false; - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; this.yieldPos = 0; this.awaitPos = 0; while (this.type !== types.parenR) { @@ -2156,9 +2190,6 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { if (this$1.type === types.comma) { this$1.raise(this$1.start, "Comma is not permitted after the rest element"); } break } else { - if (this$1.type === types.parenL && !innerParenStart) { - innerParenStart = this$1.start; - } exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem)); } } @@ -2168,7 +2199,6 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { this.checkPatternErrors(refDestructuringErrors, false); this.checkYieldAwaitInDefaultParams(); - if (innerParenStart) { this.unexpected(innerParenStart); } this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; return this.parseParenArrowList(startPos, startLoc, exprList) @@ -2221,8 +2251,9 @@ pp$3.parseNew = function() { var meta = this.parseIdent(true); if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) { node.meta = meta; + var containsEsc = this.containsEsc; node.property = this.parseIdent(true); - if (node.property.name !== "target") + if (node.property.name !== "target" || containsEsc) { this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target"); } if (!this.inFunction) { this.raiseRecoverable(node.start, "new.target can only be used in functions"); } @@ -2301,7 +2332,7 @@ pp$3.parseObj = function(isPattern, refDestructuringErrors) { } else { first = false; } var prop = this$1.parseProperty(isPattern, refDestructuringErrors); - this$1.checkPropClash(prop, propHash); + if (!isPattern) { this$1.checkPropClash(prop, propHash, refDestructuringErrors); } node.properties.push(prop); } return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") @@ -2319,18 +2350,19 @@ pp$3.parseProperty = function(isPattern, refDestructuringErrors) { if (!isPattern) { isGenerator = this.eat(types.star); } } + var containsEsc = this.containsEsc; this.parsePropertyName(prop); - if (!isPattern && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { isAsync = true; this.parsePropertyName(prop, refDestructuringErrors); } else { isAsync = false; } - this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors); + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); return this.finishNode(prop, "Property") }; -pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) { +pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { if ((isGenerator || isAsync) && this.type === types.colon) { this.unexpected(); } @@ -2342,7 +2374,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP prop.kind = "init"; prop.method = true; prop.value = this.parseMethod(isGenerator, isAsync); - } else if (!isPattern && + } else if (!isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.type != types.comma && this.type != types.braceR)) { @@ -2576,8 +2608,11 @@ pp$3.checkUnreserved = function(ref) { if (this.options.ecmaVersion < 6 && this.input.slice(start, end).indexOf("\\") != -1) { return } var re = this.strict ? this.reservedWordsStrict : this.reservedWords; - if (re.test(name)) - { this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); } + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Can not use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } }; // Parse the next token as an identifier. If `liberal` is true (used @@ -2592,7 +2627,7 @@ pp$3.parseIdent = function(liberal, isBinding) { } else if (this.type.keyword) { node.name = this.type.keyword; - // To fix https://github.com/ternjs/acorn/issues/575 + // To fix https://github.com/acornjs/acorn/issues/575 // `class` and `function` keywords push new context into this.context. // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword @@ -3220,12 +3255,12 @@ pp$8.readToken_eq_excl = function(code) { // '=!' pp$8.getTokenFromCode = function(code) { switch (code) { - // The interpretation of a dot depends on whether it is followed - // by a digit or another two dots. + // The interpretation of a dot depends on whether it is followed + // by a digit or another two dots. case 46: // '.' return this.readToken_dot() - // Punctuation tokens. + // Punctuation tokens. case 40: ++this.pos; return this.finishToken(types.parenL) case 41: ++this.pos; return this.finishToken(types.parenR) case 59: ++this.pos; return this.finishToken(types.semi) @@ -3249,19 +3284,20 @@ pp$8.getTokenFromCode = function(code) { if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number } - // Anything else beginning with a digit is an integer, octal - // number, or float. + + // Anything else beginning with a digit is an integer, octal + // number, or float. case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 return this.readNumber(false) - // Quotes produce strings. + // Quotes produce strings. case 34: case 39: // '"', "'" return this.readString(code) - // Operators are parsed inline in tiny state machines. '=' (61) is - // often referred to. `finishOp` simply skips the amount of - // characters it is given as second argument, and returns a token - // of the type given by its first argument. + // Operators are parsed inline in tiny state machines. '=' (61) is + // often referred to. `finishOp` simply skips the amount of + // characters it is given as second argument, and returns a token + // of the type given by its first argument. case 47: // '/' return this.readToken_slash() @@ -3338,6 +3374,7 @@ pp$8.readRegexp = function() { if (mods) { var validFlags = /^[gim]*$/; if (this.options.ecmaVersion >= 6) { validFlags = /^[gimuy]*$/; } + if (this.options.ecmaVersion >= 9) { validFlags = /^[gimsuy]*$/; } if (!validFlags.test(mods)) { this.raise(start, "Invalid regular expression flag"); } if (mods.indexOf("u") >= 0) { if (regexpUnicodeSupport) { @@ -3408,30 +3445,26 @@ pp$8.readRadixNumber = function(radix) { // Read an integer, octal integer, or floating-point number. pp$8.readNumber = function(startsWithDot) { - var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48; + var start = this.pos; if (!startsWithDot && this.readInt(10) === null) { this.raise(start, "Invalid number"); } - if (octal && this.pos == start + 1) { octal = false; } + var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (octal && this.strict) { this.raise(start, "Invalid number"); } + if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; } var next = this.input.charCodeAt(this.pos); if (next === 46 && !octal) { // '.' ++this.pos; this.readInt(10); - isFloat = true; next = this.input.charCodeAt(this.pos); } if ((next === 69 || next === 101) && !octal) { // 'eE' next = this.input.charCodeAt(++this.pos); if (next === 43 || next === 45) { ++this.pos; } // '+-' if (this.readInt(10) === null) { this.raise(start, "Invalid number"); } - isFloat = true; } if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - var str = this.input.slice(start, this.pos), val; - if (isFloat) { val = parseFloat(str); } - else if (!octal || str.length === 1) { val = parseInt(str, 10); } - else if (this.strict) { this.raise(start, "Invalid number"); } - else if (/[89]/.test(str)) { val = parseInt(str, 10); } - else { val = parseInt(str, 8); } + var str = this.input.slice(start, this.pos); + var val = octal ? parseInt(str, 8) : parseFloat(str); return this.finishToken(types.num, val) }; @@ -3682,11 +3715,11 @@ pp$8.readWord = function() { // Git repositories for Acorn are available at // // http://marijnhaverbeke.nl/git/acorn -// https://github.com/ternjs/acorn.git +// https://github.com/acornjs/acorn.git // // Please use the [github bug tracker][ghbt] to report issues. // -// [ghbt]: https://github.com/ternjs/acorn/issues +// [ghbt]: https://github.com/acornjs/acorn/issues // // This file defines the main parser interface. The library also comes // with a [error-tolerant parser][dammit] and an @@ -3695,7 +3728,7 @@ pp$8.readWord = function() { // [dammit]: acorn_loose.js // [walk]: util/walk.js -var version = "5.2.1"; +var version = "5.3.0"; // The main exported interface (under `self.acorn` when in the // browser) is a `parse` function that takes a code string and diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.js index d6738db9dcd847..fbfe0f88b1c567 100644 --- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.js +++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn_loose.js @@ -1,7 +1,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('./acorn')) : typeof define === 'function' && define.amd ? define(['exports', './acorn'], factory) : - (factory((global.acorn = global.acorn || {}, global.acorn.loose = global.acorn.loose || {}),global.acorn)); + (factory((global.acorn = global.acorn || {}, global.acorn.loose = {}),global.acorn)); }(this, (function (exports,__acorn) { 'use strict'; // Registered plugins diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/walk.js b/tools/node_modules/eslint/node_modules/acorn/dist/walk.js index b4fb694053583d..64dae20f026486 100644 --- a/tools/node_modules/eslint/node_modules/acorn/dist/walk.js +++ b/tools/node_modules/eslint/node_modules/acorn/dist/walk.js @@ -1,7 +1,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.acorn = global.acorn || {}, global.acorn.walk = global.acorn.walk || {}))); + (factory((global.acorn = global.acorn || {}, global.acorn.walk = {}))); }(this, (function (exports) { 'use strict'; // AST walker module for Mozilla Parser API compatible trees diff --git a/tools/node_modules/eslint/node_modules/acorn/package.json b/tools/node_modules/eslint/node_modules/acorn/package.json index 610943538459dd..3512ede7ce5225 100644 --- a/tools/node_modules/eslint/node_modules/acorn/package.json +++ b/tools/node_modules/eslint/node_modules/acorn/package.json @@ -1,8 +1,8 @@ { "_from": "acorn@^5.2.1", - "_id": "acorn@5.2.1", + "_id": "acorn@5.3.0", "_inBundle": false, - "_integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "_integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", "_location": "/eslint/acorn", "_phantomChildren": {}, "_requested": { @@ -18,21 +18,27 @@ "_requiredBy": [ "/eslint/espree" ], - "_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "_shasum": "317ac7821826c22c702d66189ab8359675f135d7", + "_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "_shasum": "7446d39459c54fb49a80e6ee6478149b940ec822", "_spec": "acorn@^5.2.1", - "_where": "/Users/cjihrig/iojs/node/tools/eslint-tmp/node_modules/eslint/node_modules/espree", + "_where": "/home/mzasso/git/nodejs/node/tools/eslint-tmp/node_modules/eslint/node_modules/espree", "bin": { "acorn": "./bin/acorn" }, "bugs": { - "url": "https://github.com/ternjs/acorn/issues" + "url": "https://github.com/acornjs/acorn/issues" }, "bundleDependencies": false, "contributors": [ { "name": "List of Acorn contributors. Updated before every release." }, + { + "name": "Adrian Heine" + }, + { + "name": "Adrian Heine né Lang" + }, { "name": "Adrian Rakovsky" }, @@ -66,6 +72,9 @@ { "name": "Charles Hughes" }, + { + "name": "Charmander" + }, { "name": "Conrad Irwin" }, @@ -81,6 +90,9 @@ { "name": "ehmicky" }, + { + "name": "Felix Maier" + }, { "name": "Forbes Lindesay" }, @@ -135,6 +147,9 @@ { "name": "krator" }, + { + "name": "laosb" + }, { "name": "Marek" }, @@ -238,19 +253,22 @@ "deprecated": false, "description": "ECMAScript parser", "devDependencies": { - "eslint": "^3.18.0", - "eslint-config-standard": "^7.1.0", + "eslint": "^4.10.0", + "eslint-config-standard": "^10.2.1", "eslint-plugin-import": "^2.2.0", + "eslint-plugin-node": "^5.2.1", "eslint-plugin-promise": "^3.5.0", - "eslint-plugin-standard": "^2.1.1", - "rollup": "^0.43.0", - "rollup-plugin-buble": "^0.15.0", + "eslint-plugin-standard": "^3.0.1", + "rollup": "^0.45.0", + "rollup-plugin-buble": "^0.16.0", + "test262": "git+https://github.com/tc39/test262.git#51553973738063f457e248f7f1e643c561c8a64c", + "test262-parser-runner": "^0.2.0", "unicode-9.0.0": "^0.7.0" }, "engines": { "node": ">=0.4.0" }, - "homepage": "https://github.com/ternjs/acorn", + "homepage": "https://github.com/acornjs/acorn", "license": "MIT", "main": "dist/acorn.js", "maintainers": [ @@ -269,7 +287,7 @@ "name": "acorn", "repository": { "type": "git", - "url": "git+https://github.com/ternjs/acorn.git" + "url": "git+https://github.com/acornjs/acorn.git" }, "scripts": { "build": "npm run build:main && npm run build:walk && npm run build:loose && npm run build:bin", @@ -280,7 +298,8 @@ "lint": "eslint src/", "prepare": "npm test", "pretest": "npm run build:main && npm run build:loose", - "test": "node test/run.js && node test/lint.js" + "test": "node test/run.js && node test/lint.js", + "test:test262": "node bin/run_test262.js" }, - "version": "5.2.1" + "version": "5.3.0" } diff --git a/tools/node_modules/eslint/node_modules/ajv-keywords/package.json b/tools/node_modules/eslint/node_modules/ajv-keywords/package.json index 0afdd4666bca8b..ec2cfa0aceef22 100644 --- a/tools/node_modules/eslint/node_modules/ajv-keywords/package.json +++ b/tools/node_modules/eslint/node_modules/ajv-keywords/package.json @@ -21,7 +21,7 @@ "_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", "_shasum": "617997fc5f60576894c435f940d819e135b80762", "_spec": "ajv-keywords@^2.1.0", - "_where": "/Users/cjihrig/iojs/node/tools/eslint-tmp/node_modules/eslint/node_modules/table", + "_where": "/home/mzasso/git/nodejs/node/tools/eslint-tmp/node_modules/eslint/node_modules/table", "author": { "name": "Evgeny Poberezkin" }, diff --git a/tools/node_modules/eslint/node_modules/ajv/README.md b/tools/node_modules/eslint/node_modules/ajv/README.md index fdf6144a20e9c7..387c81d8ca6750 100644 --- a/tools/node_modules/eslint/node_modules/ajv/README.md +++ b/tools/node_modules/eslint/node_modules/ajv/README.md @@ -74,7 +74,7 @@ Currently Ajv is the fastest and the most standard compliant validator according Performance of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark): -[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:%7Cajv%7Cis-my-json-valid%7Cjsen%7Cschemasaurus%7Cthemis%7Cz-schema%7Cjsck%7Cjsonschema%7Cskeemas%7Ctv4%7Cjayschema&chd=t:100,68,61,22.8,17.6,6.6,2.7,0.9,0.7,0.4,0.1)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance) +[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:|djv|ajv|json-schema-validator-generator|jsen|is-my-json-valid|themis|z-schema|jsck|skeemas|json-schema-library|tv4&chd=t:100,98,72.1,66.8,50.1,15.1,6.1,3.8,1.2,0.7,0.2)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance) ## Features diff --git a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js index ee5623cb196da0..01d56327e693b3 100644 --- a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js +++ b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js @@ -6971,7 +6971,7 @@ function compile(schema, _meta) { function addSchema(schema, key, _skipValidation, _meta) { if (Array.isArray(schema)){ for (var i=0; i=1&&t<=12&&a>=1&&a<=h[t]}function o(e,r){var t=e.match(u);if(!t)return!1;return t[1]<=23&&t[2]<=59&&t[3]<=59&&(!r||t[5])}function i(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var n=e("./util"),l=/^\d\d\d\d-(\d\d)-(\d\d)$/,h=[0,31,29,31,30,31,30,31,31,30,31,30,31],u=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,c=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,d=/^(?:[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,f=/^(?:(?:[^\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,p=/^(?:(?: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,m=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,v=/^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,y=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;r.exports=a,a.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\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(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i,"uri-template":f,url:p,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:c,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:i,uuid:m,"json-pointer":v,"relative-json-pointer":y},a.full={date:s,time:o,"date-time":function(e){var r=e.split(g);return 2==r.length&&s(r[0])&&o(r[1],!0)},uri:function(e){return P.test(e)&&d.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":f,url:p,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:function(e){return e.length<=255&&c.test(e)},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:i,uuid:m,"json-pointer":v,"relative-json-pointer":y};var g=/t|\s/i,P=/\/|:/,E=/[^\\]\\Z/},{"./util":12}],7:[function(e,r,t){"use strict";function a(e,r,t,P){function E(){var e=C.validate,r=e.apply(null,arguments);return E.errors=e.errors,r}function w(e,t,s,f){var P=!t||t&&t.schema==e;if(t.schema!=r.schema)return a.call($,e,t,s,f);var E=!0===e.$async,w=p({isTop:!0,schema:e,isRoot:P,baseId:f,root:t,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:d.MissingRef,RULES:U,validate:p,util:c,resolve:u,resolveRef:b,usePattern:_,useDefault:x,useCustomRule:F,opts:R,formats:Q,logger:$.logger,self:$});w=h(O,n)+h(I,o)+h(k,i)+h(L,l)+w,R.processCode&&(w=R.processCode(w));var S;try{S=new Function("self","RULES","formats","root","refVal","defaults","customRules","co","equal","ucs2length","ValidationError",w)($,U,Q,r,O,k,L,m,y,v,g),O[0]=S}catch(e){throw $.logger.error("Error compiling schema, function code:",w),e}return S.schema=e,S.errors=null,S.refs=D,S.refVal=O,S.root=P?S:t,E&&(S.$async=!0),!0===R.sourceCode&&(S.source={code:w,patterns:I,defaults:k}),S}function b(e,s,o){s=u.url(e,s);var i,n,l=D[s];if(void 0!==l)return i=O[l],n="refVal["+l+"]",j(i,n);if(!o&&r.refs){var h=r.refs[s];if(void 0!==h)return i=r.refVal[h],n=S(s,i),j(i,n)}n=S(s);var c=u.call($,w,r,s);if(void 0===c){var d=t&&t[s];d&&(c=u.inlineRef(d,R.inlineRefs)?d:a.call($,d,r,t,e))}if(void 0!==c)return function(e,r){O[D[e]]=r}(s,c),j(c,n);!function(e){delete D[e]}(s)}function S(e,r){var t=O.length;return O[t]=r,D[e]=t,"refVal"+t}function j(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=A[e];return void 0===r&&(r=A[e]=I.length,I[r]=e),"pattern"+r}function x(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return c.toQuotedString(e);case"object":if(null===e)return"null";var r=f(e),t=q[r];return void 0===t&&(t=q[r]=k.length,k[t]=e),"default"+t}}function F(e,r,t,a){var s=e.definition.validateSchema;if(s&&!1!==$._opts.validateSchema){if(!s(r)){var o="keyword schema is invalid: "+$.errorsText(s.errors);if("log"!=$._opts.validateSchema)throw new Error(o);$.logger.error(o)}}var i,n=e.definition.compile,l=e.definition.inline,h=e.definition.macro;if(n)i=n.call($,r,t,a);else if(h)i=h.call($,r,t,a),!1!==R.validateSchema&&$.validateSchema(i,!0);else if(l)i=l.call($,a,e.keyword,r,t);else if(!(i=e.definition.validate))return;if(void 0===i)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var u=L.length;return L[u]=i,{code:"customRule"+u,validate:i}}var $=this,R=this._opts,O=[void 0],D={},I=[],A={},k=[],q={},L=[],z=function(e,r,t){var a=s.call(this,e,r,t);return a>=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:r,baseId:t},{index:a,compiling:!1})}.call(this,e,r=r||{schema:e,refVal:O,refs:D},P),C=this._compilations[z.index];if(z.compiling)return C.callValidate=E;var Q=this._formats,U=this.RULES;try{var V=w(e,r,t,P);C.validate=V;var N=C.callValidate;return N&&(N.schema=V.schema,N.errors=null,N.refs=V.refs,N.refVal=V.refVal,N.root=V.root,N.$async=V.$async,R.sourceCode&&(N.source=V.source)),V}finally{(function(e,r,t){var a=s.call(this,e,r,t);a>=0&&this._compilations.splice(a,1)}).call(this,e,r,P)}}function s(e,r,t){for(var a=0;a=55296&&r<=56319&&s=r)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(a>r)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(i="data"+(r-a||""),!s)return i}for(var l=i,h=s.split("/"),c=0;c",y=f?">":"<",g=void 0;if(e.opts.$data&&m&&m.$data){var P=e.util.getData(m.$data,i,e.dataPathArr),E="exclusive"+o,w="exclType"+o,b="exclIsNumber"+o,S="' + "+(j="op"+o)+" + '";s+=" var schemaExcl"+o+" = "+P+"; ",s+=" var "+E+"; var "+w+" = typeof "+(P="schemaExcl"+o)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { ";g=p;(_=_||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: {} ",!1!==e.opts.messages&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";x=s;s=_.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+w+" == 'number' ? ( ("+E+" = "+a+" === undefined || "+P+" "+v+"= "+a+") ? "+c+" "+y+"= "+P+" : "+c+" "+y+" "+a+" ) : ( ("+E+" = "+P+" === true) ? "+c+" "+y+"= "+a+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { var op"+o+" = "+E+" ? '"+v+"' : '"+v+"=';"}else{S=v;if((b="number"==typeof m)&&d){j="'"+S+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ( "+a+" === undefined || "+m+" "+v+"= "+a+" ? "+c+" "+y+"= "+m+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { "}else{b&&void 0===n?(E=!0,g=p,h=e.errSchemaPath+"/"+p,a=m,y+="="):(b&&(a=Math[f?"min":"max"](m,n)),m===(!b||a)?(E=!0,g=p,h=e.errSchemaPath+"/"+p,y+="="):(E=!1,S+="="));var j="'"+S+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+" "+y+" "+a+" || "+c+" !== "+c+") { "}}g=g||r;var _=_||[];_.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { comparison: "+j+", limit: "+a+", exclusive: "+E+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be "+S+" ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var x=s;return s=_.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+".length "+("maxItems"==r?">":"<")+" "+a+") { ";var f=r,p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"less",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=!1===e.opts.unicode?" "+c+".length ":" ucs2length("+c+") ",s+=" "+("maxLength"==r?">":"<")+" "+a+") { ";var f=r,p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" Object.keys("+c+").length "+("maxProperties"==r?">":"<")+" "+a+") { ";var f=r,p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"less",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.schema[r],o=e.schemaPath+e.util.getProperty(r),i=e.errSchemaPath+"/"+r,n=!e.opts.allErrors,l=e.util.copy(e),h="";l.level++;var u="valid"+l.level,c=l.baseId,d=!0,f=s;if(f)for(var p,m=-1,v=f.length-1;m=0)return h&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v="object"==typeof m&&!(m instanceof RegExp)&&m.validate,y=v&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return h&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");P="formats"+e.util.getProperty(i)+".validate";a+=" if (!("+e.yieldAwait+" "+P+"("+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?""+c:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+c+" + '":""+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&&h?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+=" } ",h&&(a+=" else { "),a}},{}],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,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,d="errs__"+s,f=e.util.copy(e),p="";f.level++;var m="valid"+f.level,v="i"+s,y=f.dataLevel=e.dataLevel+1,g="data"+y,P=e.baseId;if(a+="var "+d+" = errors;var "+c+";",Array.isArray(i)){var E=e.schema.additionalItems;if(!1===E){a+=" "+c+" = "+u+".length <= "+i.length+"; ";var w=l;l=e.errSchemaPath+"/additionalItems",a+=" if (!"+c+") { ";var b=b||[];b.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var S=a;a=b.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=w,h&&(p+="}",a+=" else { ")}var j=i;if(j)for(var _,x=-1,F=j.length-1;x "+x+") { ";$=u+"["+x+"]";f.schema=_,f.schemaPath=n+"["+x+"]",f.errSchemaPath=l+"/"+x,f.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),f.dataPathArr[y]=x;R=e.validate(f);f.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){f.schema=E,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+u+".length > "+i.length+") { for (var "+v+" = "+i.length+"; "+v+" < "+u+".length; "+v+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=u+"["+v+"]";f.dataPathArr[y]=v;R=e.validate(f);f.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" } } ",h&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+u+".length; "+v+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var $=u+"["+v+"]";f.dataPathArr[y]=v;var R=e.validate(f);f.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" }"}return h&&(a+=" "+p+" if ("+d+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,s+="var division"+o+";if (",d&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+c+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",d&&(s+=" ) "),s+=" ) { ";var f=f||[];f.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be multiple of ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var p=s;return s=f.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],27:[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,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,d=e.util.copy(e);d.level++;var f="valid"+d.level;if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" var "+c+" = errors; ";var p=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var m;d.opts.allErrors&&(m=d.opts.allErrors,d.opts.allErrors=!1),a+=" "+e.validate(d)+" ",d.createErrors=!0,m&&(d.opts.allErrors=m),e.compositeRule=d.compositeRule=p,a+=" if ("+f+") { ";var v=v||[];v.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(a+=" if (false) { ");return a}},{}],28:[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,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,d="errs__"+s,f=e.util.copy(e),p="";f.level++;var m="valid"+f.level;a+="var "+d+" = errors;var prevValid"+s+" = false;var "+c+" = false;";var v=f.baseId,y=e.compositeRule;e.compositeRule=f.compositeRule=!0;var g=i;if(g)for(var P,E=-1,w=g.length-1;E5)a+=" || validate.schema"+n+"["+v+"] ";else{var L=w;if(L)for(var z=-1,C=L.length-1;z= "+me+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+=" if (!"+c+") { ";(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(he)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(he)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";we=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+we+"]); ":" validate.errors = ["+we+"]; return false; ":" var err = "+we+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==ve&&(a+=" else ")}if(void 0!==ve){var ye=ve,ge="maximum",Pe="more";a+=" "+c+" = pgPropCount"+s+" <= "+ve+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+=" if (!"+c+") { ";var Ee=Ee||[];Ee.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(he)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(he)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var we=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+we+"]); ":" validate.errors = ["+we+"]; return false; ":" var err = "+we+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=te,h&&(a+=" if ("+c+") { ",p+="}")}}}}return h&&(a+=" "+p+" if ("+d+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],31:[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,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,d=e.util.copy(e);d.level++;var f="valid"+d.level;if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l;var p="key"+s,m="idx"+s,v="i"+s,y="' + "+p+" + '",g="data"+(d.dataLevel=e.dataLevel+1),P="dataProperties"+s,E=e.opts.ownProperties,w=e.baseId;a+=" var "+c+" = errors; ",E&&(a+=" var "+P+" = undefined; "),a+=E?" "+P+" = "+P+" || Object.keys("+u+"); for (var "+m+"=0; "+m+"<"+P+".length; "+m+"++) { var "+p+" = "+P+"["+m+"]; ":" for (var "+p+" in "+u+") { ",a+=" var startErrs"+s+" = errors; ";var b=p,S=e.compositeRule;e.compositeRule=d.compositeRule=!0;var j=e.validate(d);d.baseId=w,e.util.varOccurences(j,g)<2?a+=" "+e.util.varReplace(j,g,b)+" ":a+=" var "+g+" = "+b+"; "+j+" ",e.compositeRule=d.compositeRule=S,a+=" if (!"+f+") { for (var "+v+"=startErrs"+s+"; "+v+"=e.opts.loopRequired,b=e.opts.ownProperties;if(h)if(a+=" var missing"+s+"; ",w){d||(a+=" var "+f+" = validate.schema"+n+"; ");R="' + "+($="schema"+s+"["+(j="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,$,e.opts.jsonPointers)),a+=" var "+c+" = true; ",d&&(a+=" if (schema"+s+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+s+")) "+c+" = false; else {"),a+=" for (var "+j+" = 0; "+j+" < "+f+".length; "+j+"++) { "+c+" = "+u+"["+f+"["+j+"]] !== undefined ",b&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", "+f+"["+j+"]) "),a+="; if (!"+c+") break; } ",d&&(a+=" } "),a+=" if (!"+c+") { ";(x=x||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;a=x.pop(),a+=!e.compositeRule&&h?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 { "}else{a+=" if ( ";var S=p;if(S)for(var j=-1,_=S.length-1;j<_;){D=S[j+=1],j&&(a+=" || ");a+=" ( ( "+(q=u+(k=e.util.getProperty(D)))+" === undefined ",b&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(D)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:k)+") ) "}a+=") { ";R="' + "+($="missing"+s)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,$,!0):E+" + "+$);var x=x||[];x.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=x.pop(),a+=!e.compositeRule&&h?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 { "}else if(w){d||(a+=" var "+f+" = validate.schema"+n+"; ");var $="schema"+s+"["+(j="i"+s)+"]",R="' + "+$+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,$,e.opts.jsonPointers)),d&&(a+=" if ("+f+" && !Array.isArray("+f+")) { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+f+" !== undefined) { "),a+=" for (var "+j+" = 0; "+j+" < "+f+".length; "+j+"++) { if ("+u+"["+f+"["+j+"]] === undefined ",b&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", "+f+"["+j+"]) "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",d&&(a+=" } ")}else{var O=p;if(O)for(var D,I=-1,A=O.length-1;I 1) { var i = "+c+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+c+"[i], "+c+"[j])) { "+d+" = false; break outer; } } } } ",f&&(s+=" } "),s+=" if (!"+d+") { ";var p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r,t){function a(e){for(var r=e.rules,t=0;t2&&(r=n.call(arguments,1)),t(r)})})}.call(this,e):Array.isArray(e)?function(e){return Promise.all(e.map(s,this))}.call(this,e):function(e){return Object==e.constructor}(e)?function(e){for(var r=new e.constructor,t=Object.keys(e),a=[],i=0;i1&&(a=t[0]+"@",e=t[1]);return a+o((e=e.replace(O,".")).split("."),r).join(".")}function n(e){for(var r,t,a=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(r+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=k(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:E}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function c(e,r,t){var a=0;for(e=t?A(e/j):e>>1,e+=A(e/r);e>I*b>>1;a+=E)e=A(e/I);return A(a+(I+1)*e/(e+S))}function d(e){var r,t,a,o,i,n,u,d,f,p,m=[],v=e.length,y=0,g=x,S=_;for((t=e.lastIndexOf(F))<0&&(t=0),a=0;a=128&&s("not-basic"),m.push(e.charCodeAt(a));for(o=t>0?t+1:0;o=v&&s("invalid-input"),((d=h(e.charCodeAt(o++)))>=E||d>A((P-y)/n))&&s("overflow"),y+=d*n,f=u<=S?w:u>=S+b?b:u-S,!(dA(P/(p=E-f))&&s("overflow"),n*=p;S=c(y-i,r=m.length+1,0==i),A(y/r)>P-g&&s("overflow"),g+=A(y/r),y%=r,m.splice(y++,0,g)}return l(m)}function f(e){var r,t,a,o,i,l,h,d,f,p,m,v,y,g,S,j=[];for(v=(e=n(e)).length,r=x,t=0,i=_,l=0;l=r&&mA((P-t)/(y=a+1))&&s("overflow"),t+=(h-r)*y,r=h,l=0;lP&&s("overflow"),m==r){for(d=t,f=E;p=f<=i?w:f>=i+b?b:f-i,!(d= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=E-w,A=Math.floor,k=String.fromCharCode;if(y={version:"1.4.1",ucs2:{decode:n,encode:l},decode:d,encode:f,toASCII:function(e){return i(e,function(e){return R.test(e)?"xn--"+f(e):e})},toUnicode:function(e){return i(e,function(e){return $.test(e)?d(e.slice(4).toLowerCase()):e})}},p&&m)if(r.exports==p)m.exports=y;else for(g in y)y.hasOwnProperty(g)&&(p[g]=y[g]);else a.punycode=y}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],45:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var h=e.length;l>0&&h>l&&(h=l);for(var u=0;u=0?(c=m.substr(0,v),d=m.substr(v+1)):(c=m,d=""),f=decodeURIComponent(c),p=decodeURIComponent(d),a(i,f)?s(i[f])?i[f].push(p):i[f]=[i[f],p]:i[f]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],46:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;a",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(u),d=["%","/","?",";","#"].concat(c),f=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,v={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},P=e("querystring");a.prototype.parse=function(e,r,t){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a127?A+="x":A+=I[k];if(!A.match(p)){var L=O.slice(0,_),z=O.slice(_+1),C=I.match(m);C&&(L.push(C[1]),z.unshift(C[2])),z.length&&(u="/"+z.join(".")+u),this.hostname=L.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),R||(this.hostname=o.toASCII(this.hostname));T=this.port?":"+this.port:"";this.host=(this.hostname||"")+T,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==u[0]&&(u="/"+u))}if(!v[b])for(var _=0,D=c.length;_0)&&t.host.split("@"))&&(t.auth=$.shift(),t.host=t.hostname=$.shift())}return t.search=e.search,t.query=e.query,i.isNull(t.pathname)&&i.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!E.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var S=E.slice(-1)[0],j=(t.host||e.host||E.length>1)&&("."===S||".."===S)||""===S,_=0,x=E.length;x>=0;x--)"."===(S=E[x])?E.splice(x,1):".."===S?(E.splice(x,1),_++):_&&(E.splice(x,1),_--);if(!v&&!P)for(;_--;_)E.unshift("..");!v||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),j&&"/"!==E.join("/").substr(-1)&&E.push("");var F=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(b){t.hostname=t.host=F?"":E.length?E.shift():"";var $=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@");$&&(t.auth=$.shift(),t.host=t.hostname=$.shift())}return(v=v||t.host&&E.length)&&!F&&E.unshift(""),E.length?t.pathname=E.join("/"):(t.pathname=null,t.path=null),i.isNull(t.pathname)&&i.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=l.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":49,punycode:44,querystring:47}],49:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,r,t){"use strict";function a(r){if(!(this instanceof a))return new a(r);r=this._opts=E.copy(r)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:u,warn:u,error:u};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=v(r.format);var t=this._schemaUriFormat=this._formats["uri-reference"];this._schemaUriFormatFunc=function(e){return t.test(e)},this._cache=r.cache||new f,this._loadingSchemas={},this._compilations=[],this.RULES=y(),this._getId=function(e){switch(e.schemaId){case"$id":return n;case"id":return i;default:return l}}(r),r.loopRequired=r.loopRequired||1/0,"property"==r.errorDataPath&&(r._errorDataPathProperty=!0),void 0===r.serialize&&(r.serialize=m),this._metaOpts=function(e){for(var r=E.copy(e._opts),t=0;t<_.length;t++)delete r[_[t]];return r}(this),r.formats&&function(e){for(var r in e._opts.formats){e.addFormat(r,e._opts.formats[r])}}(this),function(r){var t;r._opts.$data&&(t=e("./refs/$data.json"),r.addMetaSchema(t,t.$id,!0));if(!1===r._opts.meta)return;var a=e("./refs/json-schema-draft-06.json");r._opts.$data&&(a=g(a,x));r.addMetaSchema(a,j,!0),r._refs["http://json-schema.org/schema"]=j}(this),"object"==typeof r.meta&&this.addMetaSchema(r.meta),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),r.patternGroups&&P(this)}function s(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function o(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 i(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function n(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function l(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 h(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function u(){}var c=e("./compile"),d=e("./compile/resolve"),f=e("./cache"),p=e("./compile/schema_obj"),m=e("fast-json-stable-stringify"),v=e("./compile/formats"),y=e("./compile/rules"),g=e("./$data"),P=e("./patternGroups"),E=e("./compile/util"),w=e("co");r.exports=a,a.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);return!0===t.$async?"*"==this._opts.async?w(s):s:(this.errors=t.errors,s)},a.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},a.prototype.addSchema=function(e,r,t,a){if(!Array.isArray(e)){var s=this._getId(e);if(void 0!==s&&"string"!=typeof s)throw new Error("schema id must be string");return r=d.normalizeId(r||s),h(this,r),this._schemas[r]=this._addSchema(e,t,a,!0),this}for(var o=0;o=1&&t<=12&&a>=1&&a<=h[t]}function o(e,r){var t=e.match(u);if(!t)return!1;return t[1]<=23&&t[2]<=59&&t[3]<=59&&(!r||t[5])}function i(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var n=e("./util"),l=/^\d\d\d\d-(\d\d)-(\d\d)$/,h=[0,31,29,31,30,31,30,31,31,30,31,30,31],u=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,c=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,d=/^(?:[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,f=/^(?:(?:[^\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,p=/^(?:(?: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,m=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,v=/^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,y=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;r.exports=a,a.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\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(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i,"uri-template":f,url:p,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:c,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:i,uuid:m,"json-pointer":v,"relative-json-pointer":y},a.full={date:s,time:o,"date-time":function(e){var r=e.split(g);return 2==r.length&&s(r[0])&&o(r[1],!0)},uri:function(e){return P.test(e)&&d.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":f,url:p,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:function(e){return e.length<=255&&c.test(e)},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:i,uuid:m,"json-pointer":v,"relative-json-pointer":y};var g=/t|\s/i,P=/\/|:/,E=/[^\\]\\Z/},{"./util":12}],7:[function(e,r,t){"use strict";function a(e,r,t,P){function E(){var e=C.validate,r=e.apply(null,arguments);return E.errors=e.errors,r}function w(e,t,s,f){var P=!t||t&&t.schema==e;if(t.schema!=r.schema)return a.call($,e,t,s,f);var E=!0===e.$async,w=p({isTop:!0,schema:e,isRoot:P,baseId:f,root:t,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:d.MissingRef,RULES:U,validate:p,util:c,resolve:u,resolveRef:b,usePattern:_,useDefault:x,useCustomRule:F,opts:R,formats:Q,logger:$.logger,self:$});w=h(O,n)+h(I,o)+h(k,i)+h(L,l)+w,R.processCode&&(w=R.processCode(w));var S;try{S=new Function("self","RULES","formats","root","refVal","defaults","customRules","co","equal","ucs2length","ValidationError",w)($,U,Q,r,O,k,L,m,y,v,g),O[0]=S}catch(e){throw $.logger.error("Error compiling schema, function code:",w),e}return S.schema=e,S.errors=null,S.refs=D,S.refVal=O,S.root=P?S:t,E&&(S.$async=!0),!0===R.sourceCode&&(S.source={code:w,patterns:I,defaults:k}),S}function b(e,s,o){s=u.url(e,s);var i,n,l=D[s];if(void 0!==l)return i=O[l],n="refVal["+l+"]",j(i,n);if(!o&&r.refs){var h=r.refs[s];if(void 0!==h)return i=r.refVal[h],n=S(s,i),j(i,n)}n=S(s);var c=u.call($,w,r,s);if(void 0===c){var d=t&&t[s];d&&(c=u.inlineRef(d,R.inlineRefs)?d:a.call($,d,r,t,e))}if(void 0!==c)return function(e,r){O[D[e]]=r}(s,c),j(c,n);!function(e){delete D[e]}(s)}function S(e,r){var t=O.length;return O[t]=r,D[e]=t,"refVal"+t}function j(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=A[e];return void 0===r&&(r=A[e]=I.length,I[r]=e),"pattern"+r}function x(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return c.toQuotedString(e);case"object":if(null===e)return"null";var r=f(e),t=q[r];return void 0===t&&(t=q[r]=k.length,k[t]=e),"default"+t}}function F(e,r,t,a){var s=e.definition.validateSchema;if(s&&!1!==$._opts.validateSchema){if(!s(r)){var o="keyword schema is invalid: "+$.errorsText(s.errors);if("log"!=$._opts.validateSchema)throw new Error(o);$.logger.error(o)}}var i,n=e.definition.compile,l=e.definition.inline,h=e.definition.macro;if(n)i=n.call($,r,t,a);else if(h)i=h.call($,r,t,a),!1!==R.validateSchema&&$.validateSchema(i,!0);else if(l)i=l.call($,a,e.keyword,r,t);else if(!(i=e.definition.validate))return;if(void 0===i)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var u=L.length;return L[u]=i,{code:"customRule"+u,validate:i}}var $=this,R=this._opts,O=[void 0],D={},I=[],A={},k=[],q={},L=[],z=function(e,r,t){var a=s.call(this,e,r,t);return a>=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:r,baseId:t},{index:a,compiling:!1})}.call(this,e,r=r||{schema:e,refVal:O,refs:D},P),C=this._compilations[z.index];if(z.compiling)return C.callValidate=E;var Q=this._formats,U=this.RULES;try{var V=w(e,r,t,P);C.validate=V;var N=C.callValidate;return N&&(N.schema=V.schema,N.errors=null,N.refs=V.refs,N.refVal=V.refVal,N.root=V.root,N.$async=V.$async,R.sourceCode&&(N.source=V.source)),V}finally{(function(e,r,t){var a=s.call(this,e,r,t);a>=0&&this._compilations.splice(a,1)}).call(this,e,r,P)}}function s(e,r,t){for(var a=0;a=55296&&r<=56319&&s=r)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(a>r)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(i="data"+(r-a||""),!s)return i}for(var l=i,h=s.split("/"),c=0;c",y=f?">":"<",g=void 0;if(e.opts.$data&&m&&m.$data){var P=e.util.getData(m.$data,i,e.dataPathArr),E="exclusive"+o,w="exclType"+o,b="exclIsNumber"+o,S="' + "+(_="op"+o)+" + '";s+=" var schemaExcl"+o+" = "+P+"; ",s+=" var "+E+"; var "+w+" = typeof "+(P="schemaExcl"+o)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { ";g=p;(x=x||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: {} ",!1!==e.opts.messages&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var j=s;s=x.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+j+"]); ":" validate.errors = ["+j+"]; return false; ":" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+w+" == 'number' ? ( ("+E+" = "+a+" === undefined || "+P+" "+v+"= "+a+") ? "+c+" "+y+"= "+P+" : "+c+" "+y+" "+a+" ) : ( ("+E+" = "+P+" === true) ? "+c+" "+y+"= "+a+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { var op"+o+" = "+E+" ? '"+v+"' : '"+v+"=';"}else{S=v;if((b="number"==typeof m)&&d){var _="'"+S+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ( "+a+" === undefined || "+m+" "+v+"= "+a+" ? "+c+" "+y+"= "+m+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { "}else{b&&void 0===n?(E=!0,g=p,h=e.errSchemaPath+"/"+p,a=m,y+="="):(b&&(a=Math[f?"min":"max"](m,n)),m===(!b||a)?(E=!0,g=p,h=e.errSchemaPath+"/"+p,y+="="):(E=!1,S+="="));_="'"+S+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+" "+y+" "+a+" || "+c+" !== "+c+") { "}}g=g||r;var x;(x=x||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { comparison: "+_+", limit: "+a+", exclusive: "+E+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be "+S+" ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";j=s;return s=x.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+j+"]); ":" validate.errors = ["+j+"]; return false; ":" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+".length "+("maxItems"==r?">":"<")+" "+a+") { ";var f=r,p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"less",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=!1===e.opts.unicode?" "+c+".length ":" ucs2length("+c+") ",s+=" "+("maxLength"==r?">":"<")+" "+a+") { ";var f=r,p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" Object.keys("+c+").length "+("maxProperties"==r?">":"<")+" "+a+") { ";var f=r,p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"less",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.schema[r],o=e.schemaPath+e.util.getProperty(r),i=e.errSchemaPath+"/"+r,n=!e.opts.allErrors,l=e.util.copy(e),h="";l.level++;var u="valid"+l.level,c=l.baseId,d=!0,f=s;if(f)for(var p,m=-1,v=f.length-1;m=0)return h&&(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 h&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");var P="formats"+e.util.getProperty(i)+".validate";a+=" if (!("+e.yieldAwait+" "+P+"("+u+"))) { "}else{a+=" if (! ";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?""+c:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+c+" + '":""+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&&h?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+=" } ",h&&(a+=" else { "),a}},{}],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,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,d="errs__"+s,f=e.util.copy(e),p="";f.level++;var m="valid"+f.level,v="i"+s,y=f.dataLevel=e.dataLevel+1,g="data"+y,P=e.baseId;if(a+="var "+d+" = errors;var "+c+";",Array.isArray(i)){var E=e.schema.additionalItems;if(!1===E){a+=" "+c+" = "+u+".length <= "+i.length+"; ";var w=l;l=e.errSchemaPath+"/additionalItems",a+=" if (!"+c+") { ";var b=b||[];b.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var S=a;a=b.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=w,h&&(p+="}",a+=" else { ")}var j=i;if(j)for(var _,x=-1,F=j.length-1;x "+x+") { ";var $=u+"["+x+"]";f.schema=_,f.schemaPath=n+"["+x+"]",f.errSchemaPath=l+"/"+x,f.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),f.dataPathArr[y]=x;var R=e.validate(f);f.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){f.schema=E,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+u+".length > "+i.length+") { for (var "+v+" = "+i.length+"; "+v+" < "+u+".length; "+v+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=u+"["+v+"]";f.dataPathArr[y]=v;R=e.validate(f);f.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" } } ",h&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+u+".length; "+v+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=u+"["+v+"]";f.dataPathArr[y]=v;R=e.validate(f);f.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" }"}return h&&(a+=" "+p+" if ("+d+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),d=e.opts.$data&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,s+="var division"+o+";if (",d&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+c+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",d&&(s+=" ) "),s+=" ) { ";var f=f||[];f.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be multiple of ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var p=s;return s=f.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],27:[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,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,d=e.util.copy(e);d.level++;var f="valid"+d.level;if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" var "+c+" = errors; ";var p=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var m;d.opts.allErrors&&(m=d.opts.allErrors,d.opts.allErrors=!1),a+=" "+e.validate(d)+" ",d.createErrors=!0,m&&(d.opts.allErrors=m),e.compositeRule=d.compositeRule=p,a+=" if ("+f+") { ";var v=v||[];v.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(a+=" if (false) { ");return a}},{}],28:[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,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,d="errs__"+s,f=e.util.copy(e),p="";f.level++;var m="valid"+f.level;a+="var "+d+" = errors;var prevValid"+s+" = false;var "+c+" = false;";var v=f.baseId,y=e.compositeRule;e.compositeRule=f.compositeRule=!0;var g=i;if(g)for(var P,E=-1,w=g.length-1;E5)a+=" || validate.schema"+n+"["+v+"] ";else{var L=w;if(L)for(var z=-1,C=L.length-1;z= "+ve+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+=" if (!"+c+") { ";(we=we||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+Pe+"', limit: "+ge+", pattern: '"+e.util.escapeQuotes(ce)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Ee+" than "+ge+' properties matching pattern "'+e.util.escapeQuotes(ce)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";B=a;a=we.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==ye&&(a+=" else ")}if(void 0!==ye){ge=ye,Pe="maximum",Ee="more";a+=" "+c+" = pgPropCount"+s+" <= "+ye+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+=" if (!"+c+") { ";var we;(we=we||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+Pe+"', limit: "+ge+", pattern: '"+e.util.escapeQuotes(ce)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Ee+" than "+ge+' properties matching pattern "'+e.util.escapeQuotes(ce)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";B=a;a=we.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=K,h&&(a+=" if ("+c+") { ",p+="}")}}}}return h&&(a+=" "+p+" if ("+d+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],31:[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,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,d=e.util.copy(e);d.level++;var f="valid"+d.level;if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l;var p="key"+s,m="idx"+s,v="i"+s,y="' + "+p+" + '",g="data"+(d.dataLevel=e.dataLevel+1),P="dataProperties"+s,E=e.opts.ownProperties,w=e.baseId;a+=" var "+c+" = errors; ",E&&(a+=" var "+P+" = undefined; "),a+=E?" "+P+" = "+P+" || Object.keys("+u+"); for (var "+m+"=0; "+m+"<"+P+".length; "+m+"++) { var "+p+" = "+P+"["+m+"]; ":" for (var "+p+" in "+u+") { ",a+=" var startErrs"+s+" = errors; ";var b=p,S=e.compositeRule;e.compositeRule=d.compositeRule=!0;var j=e.validate(d);d.baseId=w,e.util.varOccurences(j,g)<2?a+=" "+e.util.varReplace(j,g,b)+" ":a+=" var "+g+" = "+b+"; "+j+" ",e.compositeRule=d.compositeRule=S,a+=" if (!"+f+") { for (var "+v+"=startErrs"+s+"; "+v+"=e.opts.loopRequired,b=e.opts.ownProperties;if(h)if(a+=" var missing"+s+"; ",w){d||(a+=" var "+f+" = validate.schema"+n+"; ");var S="' + "+(R="schema"+s+"["+(x="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,R,e.opts.jsonPointers)),a+=" var "+c+" = true; ",d&&(a+=" if (schema"+s+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+s+")) "+c+" = false; else {"),a+=" for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { "+c+" = "+u+"["+f+"["+x+"]] !== undefined ",b&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", "+f+"["+x+"]) "),a+="; if (!"+c+") break; } ",d&&(a+=" } "),a+=" if (!"+c+") { ";($=$||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+S+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+S+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var j=a;a=$.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+j+"]); ":" validate.errors = ["+j+"]; return false; ":" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var _=p;if(_)for(var x=-1,F=_.length-1;x 1) { var i = "+c+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+c+"[i], "+c+"[j])) { "+d+" = false; break outer; } } } } ",f&&(s+=" } "),s+=" if (!"+d+") { ";var p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r,t){function a(e){for(var r=e.rules,t=0;t2&&(r=n.call(arguments,1)),t(r)})})}.call(this,e):Array.isArray(e)?function(e){return Promise.all(e.map(s,this))}.call(this,e):function(e){return Object==e.constructor}(e)?function(e){for(var r=new e.constructor,t=Object.keys(e),a=[],i=0;i1&&(a=t[0]+"@",e=t[1]);return a+o((e=e.replace(O,".")).split("."),r).join(".")}function n(e){for(var r,t,a=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(r+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=k(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:E}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function c(e,r,t){var a=0;for(e=t?A(e/j):e>>1,e+=A(e/r);e>I*b>>1;a+=E)e=A(e/I);return A(a+(I+1)*e/(e+S))}function d(e){var r,t,a,o,i,n,u,d,f,p,m=[],v=e.length,y=0,g=x,S=_;for((t=e.lastIndexOf(F))<0&&(t=0),a=0;a=128&&s("not-basic"),m.push(e.charCodeAt(a));for(o=t>0?t+1:0;o=v&&s("invalid-input"),((d=h(e.charCodeAt(o++)))>=E||d>A((P-y)/n))&&s("overflow"),y+=d*n,f=u<=S?w:u>=S+b?b:u-S,!(dA(P/(p=E-f))&&s("overflow"),n*=p;S=c(y-i,r=m.length+1,0==i),A(y/r)>P-g&&s("overflow"),g+=A(y/r),y%=r,m.splice(y++,0,g)}return l(m)}function f(e){var r,t,a,o,i,l,h,d,f,p,m,v,y,g,S,j=[];for(v=(e=n(e)).length,r=x,t=0,i=_,l=0;l=r&&mA((P-t)/(y=a+1))&&s("overflow"),t+=(h-r)*y,r=h,l=0;lP&&s("overflow"),m==r){for(d=t,f=E;p=f<=i?w:f>=i+b?b:f-i,!(d= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=E-w,A=Math.floor,k=String.fromCharCode;if(y={version:"1.4.1",ucs2:{decode:n,encode:l},decode:d,encode:f,toASCII:function(e){return i(e,function(e){return R.test(e)?"xn--"+f(e):e})},toUnicode:function(e){return i(e,function(e){return $.test(e)?d(e.slice(4).toLowerCase()):e})}},p&&m)if(r.exports==p)m.exports=y;else for(g in y)y.hasOwnProperty(g)&&(p[g]=y[g]);else a.punycode=y}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],45:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var h=e.length;l>0&&h>l&&(h=l);for(var u=0;u=0?(c=m.substr(0,v),d=m.substr(v+1)):(c=m,d=""),f=decodeURIComponent(c),p=decodeURIComponent(d),a(i,f)?s(i[f])?i[f].push(p):i[f]=[i[f],p]:i[f]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],46:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;a",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(u),d=["%","/","?",";","#"].concat(c),f=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,v={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},P=e("querystring");a.prototype.parse=function(e,r,t){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a127?A+="x":A+=I[k];if(!A.match(p)){var L=O.slice(0,_),z=O.slice(_+1),C=I.match(m);C&&(L.push(C[1]),z.unshift(C[2])),z.length&&(u="/"+z.join(".")+u),this.hostname=L.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),R||(this.hostname=o.toASCII(this.hostname));var Q=this.port?":"+this.port:"";this.host=(this.hostname||"")+Q,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==u[0]&&(u="/"+u))}if(!v[b])for(_=0,D=c.length;_0)&&t.host.split("@"))&&(t.auth=$.shift(),t.host=t.hostname=$.shift())}return t.search=e.search,t.query=e.query,i.isNull(t.pathname)&&i.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!w.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var S=w.slice(-1)[0],j=(t.host||e.host||w.length>1)&&("."===S||".."===S)||""===S,_=0,x=w.length;x>=0;x--)"."===(S=w[x])?w.splice(x,1):".."===S?(w.splice(x,1),_++):_&&(w.splice(x,1),_--);if(!P&&!E)for(;_--;_)w.unshift("..");!P||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),j&&"/"!==w.join("/").substr(-1)&&w.push("");var F=""===w[0]||w[0]&&"/"===w[0].charAt(0);if(b){t.hostname=t.host=F?"":w.length?w.shift():"";var $;($=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=$.shift(),t.host=t.hostname=$.shift())}return(P=P||t.host&&w.length)&&!F&&w.unshift(""),w.length?t.pathname=w.join("/"):(t.pathname=null,t.path=null),i.isNull(t.pathname)&&i.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=l.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":49,punycode:44,querystring:47}],49:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,r,t){"use strict";function a(r){if(!(this instanceof a))return new a(r);r=this._opts=E.copy(r)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:u,warn:u,error:u};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=v(r.format);var t=this._schemaUriFormat=this._formats["uri-reference"];this._schemaUriFormatFunc=function(e){return t.test(e)},this._cache=r.cache||new f,this._loadingSchemas={},this._compilations=[],this.RULES=y(),this._getId=function(e){switch(e.schemaId){case"$id":return n;case"id":return i;default:return l}}(r),r.loopRequired=r.loopRequired||1/0,"property"==r.errorDataPath&&(r._errorDataPathProperty=!0),void 0===r.serialize&&(r.serialize=m),this._metaOpts=function(e){for(var r=E.copy(e._opts),t=0;t<_.length;t++)delete r[_[t]];return r}(this),r.formats&&function(e){for(var r in e._opts.formats){var t=e._opts.formats[r];e.addFormat(r,t)}}(this),function(r){var t;r._opts.$data&&(t=e("./refs/$data.json"),r.addMetaSchema(t,t.$id,!0));if(!1===r._opts.meta)return;var a=e("./refs/json-schema-draft-06.json");r._opts.$data&&(a=g(a,x));r.addMetaSchema(a,j,!0),r._refs["http://json-schema.org/schema"]=j}(this),"object"==typeof r.meta&&this.addMetaSchema(r.meta),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),r.patternGroups&&P(this)}function s(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function o(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 i(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function n(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function l(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 h(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function u(){}var c=e("./compile"),d=e("./compile/resolve"),f=e("./cache"),p=e("./compile/schema_obj"),m=e("fast-json-stable-stringify"),v=e("./compile/formats"),y=e("./compile/rules"),g=e("./$data"),P=e("./patternGroups"),E=e("./compile/util"),w=e("co");r.exports=a,a.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);return!0===t.$async?"*"==this._opts.async?w(s):s:(this.errors=t.errors,s)},a.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},a.prototype.addSchema=function(e,r,t,a){if(Array.isArray(e)){for(var s=0;s=t}function i(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(l,"$1 $3")),e.test(r)}function s(e,t,n,r){var i=new e.constructor(e.options,e.input,t);if(n)for(var s in n)i[s]=n[s];var o=e,a=i;return["inFunction","inAsyncFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in o&&(a[e]=o[e])}),r&&(i.options.preserveParens=!0),i.nextToken(),i}var o={},a=/^async[\t ]+(return|throw)/,u=/^async[\t ]+function/,c=/^\s*[():;]/,l=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g,p=/\s*(get|set)\s*\(/;t.exports=function(e,t){var n=function(){};e.extend("initialContext",function(r){return function(){return this.options.ecmaVersion<7&&(n=function(t){e.raise(t.start,"async/await keywords only available when ecmaVersion>=7")}),this.reservedWords=new RegExp(this.reservedWords.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrict=new RegExp(this.reservedWordsStrict.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrictBind=new RegExp(this.reservedWordsStrictBind.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.inAsyncFunction=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),r.apply(this,arguments)}}),e.extend("shouldParseExportStatement",function(e){return function(){return!("name"!==this.type.label||"async"!==this.value||!i(u,this))||e.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,o=this.startLoc;if("name"===this.type.label)if(i(u,this,!0)){var c=this.inAsyncFunction;try{return this.inAsyncFunction=!0,this.next(),(l=this.parseStatement(n,r)).async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}finally{this.inAsyncFunction=c}}else if("object"==typeof t&&t.asyncExits&&i(a,this)){this.next();var l=this.parseStatement(n,r);return l.async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(t){var n=e.apply(this,arguments);return this.inAsyncFunction&&"await"===n.name&&0===arguments.length&&this.raise(n.start,"'await' is reserved within async functions"),n}}),e.extend("parseExprAtom",function(e){return function(i){var a,u=this.start,l=this.startLoc,p=e.apply(this,arguments);if("Identifier"===p.type)if("async"!==p.name||r(this,p.end)){if("await"===p.name){var h=this.startNodeAt(p.start,p.loc&&p.loc.start);if(this.inAsyncFunction)return a=this.parseExprSubscripts(),h.operator="await",h.argument=a,h=this.finishNodeAt(h,"AwaitExpression",a.end,a.loc&&a.loc.end),n(h),h;if(this.input.slice(p.end).match(c))return t.awaitAnywhere||"module"!==this.options.sourceType?p:this.raise(p.start,"'await' is reserved within modules");if("object"==typeof t&&t.awaitAnywhere&&(u=this.start,(a=s(this,u-4).parseExprSubscripts()).end<=u))return a=s(this,u).parseExprSubscripts(),h.operator="await",h.argument=a,h=this.finishNodeAt(h,"AwaitExpression",a.end,a.loc&&a.loc.end),this.pos=a.end,this.end=a.end,this.endLoc=a.endLoc,this.next(),n(h),h;if(!t.awaitAnywhere&&"module"===this.options.sourceType)return this.raise(p.start,"'await' is reserved within modules")}}else{var f=this.inAsyncFunction;try{this.inAsyncFunction=!0;var d=this,y=!1,m={parseFunctionBody:function(e,t){try{var n=y;return y=!0,d.parseFunctionBody.apply(this,arguments)}finally{y=n}},raise:function(){try{return d.raise.apply(this,arguments)}catch(e){throw y?e:o}}};if("SequenceExpression"===(a=s(this,this.start,m,!0).parseExpression()).type&&(a=a.expressions[0]),"CallExpression"===a.type&&(a=a.callee),"FunctionExpression"===a.type||"FunctionDeclaration"===a.type||"ArrowFunctionExpression"===a.type)return"SequenceExpression"===(a=s(this,this.start,m).parseExpression()).type&&(a=a.expressions[0]),"CallExpression"===a.type&&(a=a.callee),a.async=!0,a.start=u,a.loc&&(a.loc.start=l),a.range&&(a.range[0]=u),this.pos=a.end,this.end=a.end,this.endLoc=a.endLoc,this.next(),n(a),a}catch(e){if(e!==o)throw e}finally{this.inAsyncFunction=f}}return p}}),e.extend("finishNodeAt",function(e){return function(t,n,r,i){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}}),e.extend("finishNode",function(e){return function(t,n){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}}),e.extend("parsePropertyName",function(e){return function(t){t.key&&t.key.name;var i=e.apply(this,arguments);return"Identifier"!==i.type||"async"!==i.name||r(this,i.end)||this.input.slice(i.end).match(c)||(p.test(this.input.slice(i.end))?(i=e.apply(this,arguments),t.__asyncValue=!0):(n(t),"set"===t.kind&&this.raise(i.start,"'set (value)' cannot be be async"),"Identifier"===(i=e.apply(this,arguments)).type&&"set"===i.name&&this.raise(i.start,"'set (value)' cannot be be async"),t.__asyncValue=!0)),i}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i;n.__asyncValue&&("constructor"===n.kind&&this.raise(n.start,"class constructor() cannot be be async"),i=this.inAsyncFunction,this.inAsyncFunction=!0);var s=e.apply(this,arguments);return this.inAsyncFunction=i,s}}),e.extend("parseMethod",function(e){return function(t){var n;this.__currentProperty&&this.__currentProperty.__asyncValue&&(n=this.inAsyncFunction,this.inAsyncFunction=!0);var r=e.apply(this,arguments);return this.inAsyncFunction=n,r}}),e.extend("parsePropertyValue",function(e){return function(t,n,r,i,s,o){var a=this.__currentProperty;this.__currentProperty=t;var u;t.__asyncValue&&(u=this.inAsyncFunction,this.inAsyncFunction=!0);var c=e.apply(this,arguments);return this.inAsyncFunction=u,this.__currentProperty=a,c}})}},{}],3:[function(e,t,n){function r(e,t,n){var r=new e.constructor(e.options,e.input,t);if(n)for(var i in n)r[i]=n[i];var s=e,o=r;return["inFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in s&&(o[e]=s[e])}),r.nextToken(),r}var i=/^async[\t ]+(return|throw)/,s=/^\s*[):;]/,o=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g;t.exports=function(e,t){t&&"object"==typeof t||(t={}),e.extend("parse",function(n){return function(){return this.inAsync=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),n.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,a=this.startLoc;if("name"===this.type.label&&t.asyncExits&&function(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(o,"$1 $3")),e.test(r)}(i,this)){this.next();var u=this.parseStatement(n,r);return u.async=!0,u.start=s,u.loc&&(u.loc.start=a),u.range&&(u.range[0]=s),u}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(n){return"module"===this.options.sourceType&&this.options.ecmaVersion>=8&&t.awaitAnywhere?e.call(this,!0):e.apply(this,arguments)}}),e.extend("parseExprAtom",function(e){var n={};return function(i){var s,o=this.start,a=(this.startLoc,e.apply(this,arguments));if("Identifier"===a.type&&"await"===a.name&&!this.inAsync&&t.awaitAnywhere){var u=this.startNodeAt(a.start,a.loc&&a.loc.start);o=this.start;var c={raise:function(){try{return pp.raise.apply(this,arguments)}catch(e){throw n}}};try{if((s=r(this,o-4,c).parseExprSubscripts()).end<=o)return s=r(this,o,c).parseExprSubscripts(),u.argument=s,u=this.finishNodeAt(u,"AwaitExpression",s.end,s.loc&&s.loc.end),this.pos=s.end,this.end=s.end,this.endLoc=s.endLoc,this.next(),u}catch(e){if(e===n)return a;throw e}}return a}});var n={undefined:!0,get:!0,set:!0,static:!0,async:!0,constructor:!0};e.extend("parsePropertyName",function(e){return function(t){var r=t.key&&t.key.name,i=e.apply(this,arguments);return"get"===this.value&&(t.__maybeStaticAsyncGetter=!0),n[this.value]?i:("Identifier"!==i.type||"async"!==i.name&&"async"!==r||function(e,t){return e.lineStart>=t}(this,i.end)||this.input.slice(i.end).match(s)?delete t.__maybeStaticAsyncGetter:"set"===t.kind||"set"===i.name?this.raise(i.start,"'set (value)' cannot be be async"):(this.__isAsyncProp=!0,"Identifier"===(i=e.apply(this,arguments)).type&&"set"===i.name&&this.raise(i.start,"'set (value)' cannot be be async")),i)}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i=e.apply(this,arguments);return n.__maybeStaticAsyncGetter&&(delete n.__maybeStaticAsyncGetter,"get"!==n.key.name&&(n.kind="get")),i}}),e.extend("parseFunctionBody",function(e){return function(t,n){var r=this.inAsync;this.__isAsyncProp&&(t.async=!0,this.inAsync=!0,delete this.__isAsyncProp);var i=e.apply(this,arguments);return this.inAsync=r,i}})}},{}],4:[function(e,t,n){!function(e,r){"object"==typeof n&&void 0!==t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.acorn=e.acorn||{})}(this,function(e){"use strict";function t(e,t){for(var n=65536,r=0;re)return!1;if((n+=t[r+1])>=e)return!0}}function n(e,n){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&x.test(String.fromCharCode(e)):!1!==n&&t(e,E)))}function r(e,n){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&w.test(String.fromCharCode(e)):!1!==n&&(t(e,E)||t(e,S)))))}function i(e,t){return new k(e,{beforeExpr:!0,binop:t})}function s(e,t){return void 0===t&&(t={}),t.keyword=e,_[e]=new k(e,t)}function o(e){return 10===e||13===e||8232===e||8233===e}function a(e,t){return $.call(e,t)}function u(e,t){for(var n=1,r=0;;){T.lastIndex=r;var i=T.exec(e);if(!(i&&i.index=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),R(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return R(t.onComment)&&(t.onComment=function(e,t){return function(n,r,i,s,o,a){var u={type:n?"Block":"Line",value:r,start:i,end:s};e.locations&&(u.loc=new j(this,o,a)),e.ranges&&(u.range=[i,s]),t.push(u)}}(t,t.onComment)),t}function l(e){return new RegExp("^(?:"+e.replace(/ /g,"|")+")$")}function p(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=-1}function h(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}function f(e,t,n,r){try{return new RegExp(e,t)}catch(e){if(void 0!==n)throw e instanceof SyntaxError&&r.raise(n,"Error parsing regular expression: "+e.message),e}}function d(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}var y={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},m="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",g={5:m,6:m+" const class extends export import super"},v="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",b="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",x=new RegExp("["+v+"]"),w=new RegExp("["+v+b+"]");v=b=null;var E=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],S=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],k=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null},A={beforeExpr:!0},C={startsExpr:!0},_={},L={num:new k("num",C),regexp:new k("regexp",C),string:new k("string",C),name:new k("name",C),eof:new k("eof"),bracketL:new k("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new k("]"),braceL:new k("{",{beforeExpr:!0,startsExpr:!0}),braceR:new k("}"),parenL:new k("(",{beforeExpr:!0,startsExpr:!0}),parenR:new k(")"),comma:new k(",",A),semi:new k(";",A),colon:new k(":",A),dot:new k("."),question:new k("?",A),arrow:new k("=>",A),template:new k("template"),invalidTemplate:new k("invalidTemplate"),ellipsis:new k("...",A),backQuote:new k("`",C),dollarBraceL:new k("${",{beforeExpr:!0,startsExpr:!0}),eq:new k("=",{beforeExpr:!0,isAssign:!0}),assign:new k("_=",{beforeExpr:!0,isAssign:!0}),incDec:new k("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new k("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:i("||",1),logicalAND:i("&&",2),bitwiseOR:i("|",3),bitwiseXOR:i("^",4),bitwiseAND:i("&",5),equality:i("==/!=/===/!==",6),relational:i("/<=/>=",7),bitShift:i("<>/>>>",8),plusMin:new k("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:i("%",10),star:i("*",10),slash:i("/",10),starstar:new k("**",{beforeExpr:!0}),_break:s("break"),_case:s("case",A),_catch:s("catch"),_continue:s("continue"),_debugger:s("debugger"),_default:s("default",A),_do:s("do",{isLoop:!0,beforeExpr:!0}),_else:s("else",A),_finally:s("finally"),_for:s("for",{isLoop:!0}),_function:s("function",C),_if:s("if"),_return:s("return",A),_switch:s("switch"),_throw:s("throw",A),_try:s("try"),_var:s("var"),_const:s("const"),_while:s("while",{isLoop:!0}),_with:s("with"),_new:s("new",{beforeExpr:!0,startsExpr:!0}),_this:s("this",C),_super:s("super",C),_class:s("class",C),_extends:s("extends",A),_export:s("export"),_import:s("import"),_null:s("null",C),_true:s("true",C),_false:s("false",C),_in:s("in",{beforeExpr:!0,binop:7}),_instanceof:s("instanceof",{beforeExpr:!0,binop:7}),_typeof:s("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:s("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:s("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},O=/\r\n?|\n|\u2028|\u2029/,T=new RegExp(O.source,"g"),N=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,P=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,F=Object.prototype,$=F.hasOwnProperty,B=F.toString,R=Array.isArray||function(e){return"[object Array]"===B.call(e)},I=function(e,t){this.line=e,this.column=t};I.prototype.offset=function(e){return new I(this.line,this.column+e)};var j=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)},D={ecmaVersion:7,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowHashBang:!1,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1,plugins:{}},M={},q=function(e,t,n){this.options=e=c(e),this.sourceFile=e.sourceFile,this.keywords=l(g[e.ecmaVersion>=6?6:5]);var r="";if(!e.allowReserved){for(var i=e.ecmaVersion;!(r=y[i]);i--);"module"==e.sourceType&&(r+=" await")}this.reservedWords=l(r);var s=(r?r+" ":"")+y.strict;this.reservedWordsStrict=l(s),this.reservedWordsStrictBind=l(s+" "+y.strictBind),this.input=String(t),this.containsEsc=!1,this.loadPlugins(e.plugins),n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(O).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=L.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===e.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterFunctionScope()};q.prototype.isKeyword=function(e){return this.keywords.test(e)},q.prototype.isReservedWord=function(e){return this.reservedWords.test(e)},q.prototype.extend=function(e,t){this[e]=t(this[e])},q.prototype.loadPlugins=function(e){for(var t in e){var n=M[t];if(!n)throw new Error("Plugin '"+t+"' not found");n(this,e[t])}},q.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)};var V=q.prototype,U=/^(?:'((?:\\.|[^'])*?)'|"((?:\\.|[^"])*?)"|;)/;V.strictDirective=function(e){for(;;){P.lastIndex=e,e+=P.exec(this.input)[0].length;var t=U.exec(this.input.slice(e));if(!t)return!1;if("use strict"==(t[1]||t[2]))return!0;e+=t[0].length}},V.eat=function(e){return this.type===e&&(this.next(),!0)},V.isContextual=function(e){return this.type===L.name&&this.value===e},V.eatContextual=function(e){return this.value===e&&this.eat(L.name)},V.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},V.canInsertSemicolon=function(){return this.type===L.eof||this.type===L.braceR||O.test(this.input.slice(this.lastTokEnd,this.start))},V.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},V.semicolon=function(){this.eat(L.semi)||this.insertSemicolon()||this.unexpected()},V.afterTrailingComma=function(e,t){if(this.type==e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},V.expect=function(e){this.eat(e)||this.unexpected()},V.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")},V.checkPatternErrors=function(e,t){if(e){e.trailingComma>-1&&this.raiseRecoverable(e.trailingComma,"Comma is not permitted after the rest element");var n=t?e.parenthesizedAssign:e.parenthesizedBind;n>-1&&this.raiseRecoverable(n,"Parenthesized pattern")}},V.checkExpressionErrors=function(e,t){var n=e?e.shorthandAssign:-1;if(!t)return n>=0;n>-1&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns")},V.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos=6&&(e.sourceType=this.options.sourceType),this.finishNode(e,"Program")};var W={kind:"loop"},G={kind:"switch"};z.isLet=function(){if(this.type!==L.name||this.options.ecmaVersion<6||"let"!=this.value)return!1;P.lastIndex=this.pos;var e=P.exec(this.input),t=this.pos+e[0].length,i=this.input.charCodeAt(t);if(91===i||123==i)return!0;if(n(i,!0)){for(var s=t+1;r(this.input.charCodeAt(s),!0);)++s;var o=this.input.slice(t,s);if(!this.isKeyword(o))return!0}return!1},z.isAsyncFunction=function(){if(this.type!==L.name||this.options.ecmaVersion<8||"async"!=this.value)return!1;P.lastIndex=this.pos;var e=P.exec(this.input),t=this.pos+e[0].length;return!(O.test(this.input.slice(this.pos,t))||"function"!==this.input.slice(t,t+8)||t+8!=this.input.length&&r(this.input.charAt(t+8)))},z.parseStatement=function(e,t,n){var r,i=this.type,s=this.startNode();switch(this.isLet()&&(i=L._var,r="let"),i){case L._break:case L._continue:return this.parseBreakContinueStatement(s,i.keyword);case L._debugger:return this.parseDebuggerStatement(s);case L._do:return this.parseDoStatement(s);case L._for:return this.parseForStatement(s);case L._function:return!e&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(s,!1);case L._class:return e||this.unexpected(),this.parseClass(s,!0);case L._if:return this.parseIfStatement(s);case L._return:return this.parseReturnStatement(s);case L._switch:return this.parseSwitchStatement(s);case L._throw:return this.parseThrowStatement(s);case L._try:return this.parseTryStatement(s);case L._const:case L._var:return r=r||this.value,e||"var"==r||this.unexpected(),this.parseVarStatement(s,r);case L._while:return this.parseWhileStatement(s);case L._with:return this.parseWithStatement(s);case L.braceL:return this.parseBlock();case L.semi:return this.parseEmptyStatement(s);case L._export:case L._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),i===L._import?this.parseImport(s):this.parseExport(s,n);default:if(this.isAsyncFunction()&&e)return this.next(),this.parseFunctionStatement(s,!0);var o=this.value,a=this.parseExpression();return i===L.name&&"Identifier"===a.type&&this.eat(L.colon)?this.parseLabeledStatement(s,o,a):this.parseExpressionStatement(s,a)}},z.parseBreakContinueStatement=function(e,t){var n="break"==t;this.next(),this.eat(L.semi)||this.insertSemicolon()?e.label=null:this.type!==L.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var r=0;r=6?this.eat(L.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},z.parseForStatement=function(e){if(this.next(),this.labels.push(W),this.enterLexicalScope(),this.expect(L.parenL),this.type===L.semi)return this.parseFor(e,null);var t=this.isLet();if(this.type===L._var||this.type===L._const||t){var n=this.startNode(),r=t?"let":this.value;return this.next(),this.parseVar(n,!0,r),this.finishNode(n,"VariableDeclaration"),!(this.type===L._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==n.declarations.length||"var"!==r&&n.declarations[0].init?this.parseFor(e,n):this.parseForIn(e,n)}var i=new p,s=this.parseExpression(!0,i);return this.type===L._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.toAssignable(s),this.checkLVal(s),this.checkPatternErrors(i,!0),this.parseForIn(e,s)):(this.checkExpressionErrors(i,!0),this.parseFor(e,s))},z.parseFunctionStatement=function(e,t){return this.next(),this.parseFunction(e,!0,!1,t)},z.isFunction=function(){return this.type===L._function||this.isAsyncFunction()},z.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!this.strict&&this.isFunction()),e.alternate=this.eat(L._else)?this.parseStatement(!this.strict&&this.isFunction()):null,this.finishNode(e,"IfStatement")},z.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(L.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},z.parseSwitchStatement=function(e){this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(L.braceL),this.labels.push(G),this.enterLexicalScope();for(var t,n=!1;this.type!=L.braceR;)if(this.type===L._case||this.type===L._default){var r=this.type===L._case;t&&this.finishNode(t,"SwitchCase"),e.cases.push(t=this.startNode()),t.consequent=[],this.next(),r?t.test=this.parseExpression():(n&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),n=!0,t.test=null),this.expect(L.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(!0));return this.exitLexicalScope(),t&&this.finishNode(t,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},z.parseThrowStatement=function(e){return this.next(),O.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var J=[];z.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===L._catch){var t=this.startNode();this.next(),this.expect(L.parenL),t.param=this.parseBindingAtom(),this.enterLexicalScope(),this.checkLVal(t.param,"let"),this.expect(L.parenR),t.body=this.parseBlock(!1),this.exitLexicalScope(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(L._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},z.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},z.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(W),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"WhileStatement")},z.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},z.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},z.parseLabeledStatement=function(e,t,n){for(var r=0,i=this.labels;r=0;o--){var a=this.labels[o];if(a.statementStart!=e.start)break;a.statementStart=this.start,a.kind=s}return this.labels.push({name:t,kind:s,statementStart:this.start}),e.body=this.parseStatement(!0),("ClassDeclaration"==e.body.type||"VariableDeclaration"==e.body.type&&"var"!=e.body.kind||"FunctionDeclaration"==e.body.type&&(this.strict||e.body.generator))&&this.raiseRecoverable(e.body.start,"Invalid labeled declaration"),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},z.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},z.parseBlock=function(e){void 0===e&&(e=!0);var t=this.startNode();for(t.body=[],this.expect(L.braceL),e&&this.enterLexicalScope();!this.eat(L.braceR);){var n=this.parseStatement(!0);t.body.push(n)}return e&&this.exitLexicalScope(),this.finishNode(t,"BlockStatement")},z.parseFor=function(e,t){return e.init=t,this.expect(L.semi),e.test=this.type===L.semi?null:this.parseExpression(),this.expect(L.semi),e.update=this.type===L.parenR?null:this.parseExpression(),this.expect(L.parenR),this.exitLexicalScope(),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"ForStatement")},z.parseForIn=function(e,t){var n=this.type===L._in?"ForInStatement":"ForOfStatement";return this.next(),e.left=t,e.right=this.parseExpression(),this.expect(L.parenR),this.exitLexicalScope(),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,n)},z.parseVar=function(e,t,n){for(e.declarations=[],e.kind=n;;){var r=this.startNode();if(this.parseVarId(r,n),this.eat(L.eq)?r.init=this.parseMaybeAssign(t):"const"!==n||this.type===L._in||this.options.ecmaVersion>=6&&this.isContextual("of")?"Identifier"==r.id.type||t&&(this.type===L._in||this.isContextual("of"))?r.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(r,"VariableDeclarator")),!this.eat(L.comma))break}return e},z.parseVarId=function(e,t){e.id=this.parseBindingAtom(t),this.checkLVal(e.id,t,!1)},z.parseFunction=function(e,t,n,r){this.initFunction(e),this.options.ecmaVersion>=6&&!r&&(e.generator=this.eat(L.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&&(e.id="nullableID"===t&&this.type!=L.name?null:this.parseIdent(),e.id&&this.checkLVal(e.id,"var"));var i=this.inGenerator,s=this.inAsync,o=this.yieldPos,a=this.awaitPos,u=this.inFunction;return this.inGenerator=e.generator,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),t||(e.id=this.type==L.name?this.parseIdent():null),this.parseFunctionParams(e),this.parseFunctionBody(e,n),this.inGenerator=i,this.inAsync=s,this.yieldPos=o,this.awaitPos=a,this.inFunction=u,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},z.parseFunctionParams=function(e){this.expect(L.parenL),e.params=this.parseBindingList(L.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},z.parseClass=function(e,t){this.next(),this.parseClassId(e,t),this.parseClassSuper(e);var n=this.startNode(),r=!1;for(n.body=[],this.expect(L.braceL);!this.eat(L.braceR);)if(!this.eat(L.semi)){var i=this.startNode(),s=this.eat(L.star),o=!1,a=this.type===L.name&&"static"===this.value;this.parsePropertyName(i),i.static=a&&this.type!==L.parenL,i.static&&(s&&this.unexpected(),s=this.eat(L.star),this.parsePropertyName(i)),this.options.ecmaVersion>=8&&!s&&!i.computed&&"Identifier"===i.key.type&&"async"===i.key.name&&this.type!==L.parenL&&!this.canInsertSemicolon()&&(o=!0,this.parsePropertyName(i)),i.kind="method";var u=!1;if(!i.computed){var c=i.key;s||o||"Identifier"!==c.type||this.type===L.parenL||"get"!==c.name&&"set"!==c.name||(u=!0,i.kind=c.name,c=this.parsePropertyName(i)),!i.static&&("Identifier"===c.type&&"constructor"===c.name||"Literal"===c.type&&"constructor"===c.value)&&(r&&this.raise(c.start,"Duplicate constructor in the same class"),u&&this.raise(c.start,"Constructor can't have get/set modifier"),s&&this.raise(c.start,"Constructor can't be a generator"),o&&this.raise(c.start,"Constructor can't be an async method"),i.kind="constructor",r=!0)}if(this.parseClassMethod(n,i,s,o),u){var l="get"===i.kind?0:1;if(i.value.params.length!==l){var p=i.value.start;"get"===i.kind?this.raiseRecoverable(p,"getter should have no params"):this.raiseRecoverable(p,"setter should have exactly one param")}else"set"===i.kind&&"RestElement"===i.value.params[0].type&&this.raiseRecoverable(i.value.params[0].start,"Setter cannot use rest params")}}return e.body=this.finishNode(n,"ClassBody"),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},z.parseClassMethod=function(e,t,n,r){t.value=this.parseMethod(n,r),e.body.push(this.finishNode(t,"MethodDefinition"))},z.parseClassId=function(e,t){e.id=this.type===L.name?this.parseIdent():!0===t?this.unexpected():null},z.parseClassSuper=function(e){e.superClass=this.eat(L._extends)?this.parseExprSubscripts():null},z.parseExport=function(e,t){if(this.next(),this.eat(L.star))return this.expectContextual("from"),e.source=this.type===L.string?this.parseExprAtom():this.unexpected(),this.semicolon(),this.finishNode(e,"ExportAllDeclaration");if(this.eat(L._default)){this.checkExport(t,"default",this.lastTokStart);var n;if(this.type===L._function||(n=this.isAsyncFunction())){var r=this.startNode();this.next(),n&&this.next(),e.declaration=this.parseFunction(r,"nullableID",!1,n)}else if(this.type===L._class){var i=this.startNode();e.declaration=this.parseClass(i,"nullableID")}else e.declaration=this.parseMaybeAssign(),this.semicolon();return this.finishNode(e,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())e.declaration=this.parseStatement(!0),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id.name,e.declaration.id.start),e.specifiers=[],e.source=null;else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))e.source=this.type===L.string?this.parseExprAtom():this.unexpected();else{for(var s=0,o=e.specifiers;s=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var n=0,r=e.properties;n=6&&(e.computed||e.method||e.shorthand))){var n,r=e.key;switch(r.type){case"Identifier":n=r.name;break;case"Literal":n=String(r.value);break;default:return}var i=e.kind;if(this.options.ecmaVersion>=6)"__proto__"===n&&"init"===i&&(t.proto&&this.raiseRecoverable(r.start,"Redefinition of __proto__ property"),t.proto=!0);else{var s=t[n="$"+n];if(s){("init"===i?this.strict&&s.init||s.get||s.set:s.init||s[i])&&this.raiseRecoverable(r.start,"Redefinition of property")}else s=t[n]={init:!1,get:!1,set:!1};s[i]=!0}}},Y.parseExpression=function(e,t){var n=this.start,r=this.startLoc,i=this.parseMaybeAssign(e,t);if(this.type===L.comma){var s=this.startNodeAt(n,r);for(s.expressions=[i];this.eat(L.comma);)s.expressions.push(this.parseMaybeAssign(e,t));return this.finishNode(s,"SequenceExpression")}return i},Y.parseMaybeAssign=function(e,t,n){if(this.inGenerator&&this.isContextual("yield"))return this.parseYield();var r=!1,i=-1,s=-1;t?(i=t.parenthesizedAssign,s=t.trailingComma,t.parenthesizedAssign=t.trailingComma=-1):(t=new p,r=!0);var o=this.start,a=this.startLoc;this.type!=L.parenL&&this.type!=L.name||(this.potentialArrowAt=this.start);var u=this.parseMaybeConditional(e,t);if(n&&(u=n.call(this,u,o,a)),this.type.isAssign){this.checkPatternErrors(t,!0),r||p.call(t);var c=this.startNodeAt(o,a);return c.operator=this.value,c.left=this.type===L.eq?this.toAssignable(u):u,t.shorthandAssign=-1,this.checkLVal(u),this.next(),c.right=this.parseMaybeAssign(e),this.finishNode(c,"AssignmentExpression")}return r&&this.checkExpressionErrors(t,!0),i>-1&&(t.parenthesizedAssign=i),s>-1&&(t.trailingComma=s),u},Y.parseMaybeConditional=function(e,t){var n=this.start,r=this.startLoc,i=this.parseExprOps(e,t);if(this.checkExpressionErrors(t))return i;if(this.eat(L.question)){var s=this.startNodeAt(n,r);return s.test=i,s.consequent=this.parseMaybeAssign(),this.expect(L.colon),s.alternate=this.parseMaybeAssign(e),this.finishNode(s,"ConditionalExpression")}return i},Y.parseExprOps=function(e,t){var n=this.start,r=this.startLoc,i=this.parseMaybeUnary(t,!1);return this.checkExpressionErrors(t)?i:i.start==n&&"ArrowFunctionExpression"===i.type?i:this.parseExprOp(i,n,r,-1,e)},Y.parseExprOp=function(e,t,n,r,i){var s=this.type.binop;if(null!=s&&(!i||this.type!==L._in)&&s>r){var o=this.type===L.logicalOR||this.type===L.logicalAND,a=this.value;this.next();var u=this.start,c=this.startLoc,l=this.parseExprOp(this.parseMaybeUnary(null,!1),u,c,s,i),p=this.buildBinary(t,n,e,l,a,o);return this.parseExprOp(p,t,n,r,i)}return e},Y.buildBinary=function(e,t,n,r,i,s){var o=this.startNodeAt(e,t);return o.left=n,o.operator=i,o.right=r,this.finishNode(o,s?"LogicalExpression":"BinaryExpression")},Y.parseMaybeUnary=function(e,t){var n,r=this.start,i=this.startLoc;if(this.inAsync&&this.isContextual("await"))n=this.parseAwait(),t=!0;else if(this.type.prefix){var s=this.startNode(),o=this.type===L.incDec;s.operator=this.value,s.prefix=!0,this.next(),s.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(e,!0),o?this.checkLVal(s.argument):this.strict&&"delete"===s.operator&&"Identifier"===s.argument.type?this.raiseRecoverable(s.start,"Deleting local variable in strict mode"):t=!0,n=this.finishNode(s,o?"UpdateExpression":"UnaryExpression")}else{if(n=this.parseExprSubscripts(e),this.checkExpressionErrors(e))return n;for(;this.type.postfix&&!this.canInsertSemicolon();){var a=this.startNodeAt(r,i);a.operator=this.value,a.prefix=!1,a.argument=n,this.checkLVal(n),this.next(),n=this.finishNode(a,"UpdateExpression")}}return!t&&this.eat(L.starstar)?this.buildBinary(r,i,n,this.parseMaybeUnary(null,!1),"**",!1):n},Y.parseExprSubscripts=function(e){var t=this.start,n=this.startLoc,r=this.parseExprAtom(e),i="ArrowFunctionExpression"===r.type&&")"!==this.input.slice(this.lastTokStart,this.lastTokEnd);if(this.checkExpressionErrors(e)||i)return r;var s=this.parseSubscripts(r,t,n);return e&&"MemberExpression"===s.type&&(e.parenthesizedAssign>=s.start&&(e.parenthesizedAssign=-1),e.parenthesizedBind>=s.start&&(e.parenthesizedBind=-1)),s},Y.parseSubscripts=function(e,t,n,r){for(var i=this.options.ecmaVersion>=8&&"Identifier"===e.type&&"async"===e.name&&this.lastTokEnd==e.end&&!this.canInsertSemicolon(),s=void 0;;)if((s=this.eat(L.bracketL))||this.eat(L.dot)){var o=this.startNodeAt(t,n);o.object=e,o.property=s?this.parseExpression():this.parseIdent(!0),o.computed=!!s,s&&this.expect(L.bracketR),e=this.finishNode(o,"MemberExpression")}else if(!r&&this.eat(L.parenL)){var a=new p,u=this.yieldPos,c=this.awaitPos;this.yieldPos=0,this.awaitPos=0;var l=this.parseExprList(L.parenR,this.options.ecmaVersion>=8,!1,a);if(i&&!this.canInsertSemicolon()&&this.eat(L.arrow))return this.checkPatternErrors(a,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=u,this.awaitPos=c,this.parseArrowExpression(this.startNodeAt(t,n),l,!0);this.checkExpressionErrors(a,!0),this.yieldPos=u||this.yieldPos,this.awaitPos=c||this.awaitPos;var h=this.startNodeAt(t,n);h.callee=e,h.arguments=l,e=this.finishNode(h,"CallExpression")}else{if(this.type!==L.backQuote)return e;var f=this.startNodeAt(t,n);f.tag=e,f.quasi=this.parseTemplate({isTagged:!0}),e=this.finishNode(f,"TaggedTemplateExpression")}},Y.parseExprAtom=function(e){var t,n=this.potentialArrowAt==this.start;switch(this.type){case L._super:return this.inFunction||this.raise(this.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.type!==L.dot&&this.type!==L.bracketL&&this.type!==L.parenL&&this.unexpected(),this.finishNode(t,"Super");case L._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case L.name:var r=this.start,i=this.startLoc,s=this.parseIdent(this.type!==L.name);if(this.options.ecmaVersion>=8&&"async"===s.name&&!this.canInsertSemicolon()&&this.eat(L._function))return this.parseFunction(this.startNodeAt(r,i),!1,!1,!0);if(n&&!this.canInsertSemicolon()){if(this.eat(L.arrow))return this.parseArrowExpression(this.startNodeAt(r,i),[s],!1);if(this.options.ecmaVersion>=8&&"async"===s.name&&this.type===L.name)return s=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(L.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(r,i),[s],!0)}return s;case L.regexp:var o=this.value;return t=this.parseLiteral(o.value),t.regex={pattern:o.pattern,flags:o.flags},t;case L.num:case L.string:return this.parseLiteral(this.value);case L._null:case L._true:case L._false:return t=this.startNode(),t.value=this.type===L._null?null:this.type===L._true,t.raw=this.type.keyword,this.next(),this.finishNode(t,"Literal");case L.parenL:var a=this.start,u=this.parseParenAndDistinguishExpression(n);return e&&(e.parenthesizedAssign<0&&!this.isSimpleAssignTarget(u)&&(e.parenthesizedAssign=a),e.parenthesizedBind<0&&(e.parenthesizedBind=a)),u;case L.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(L.bracketR,!0,!0,e),this.finishNode(t,"ArrayExpression");case L.braceL:return this.parseObj(!1,e);case L._function:return t=this.startNode(),this.next(),this.parseFunction(t,!1);case L._class:return this.parseClass(this.startNode(),!1);case L._new:return this.parseNew();case L.backQuote:return this.parseTemplate();default:this.unexpected()}},Y.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(t,"Literal")},Y.parseParenExpression=function(){this.expect(L.parenL);var e=this.parseExpression();return this.expect(L.parenR),e},Y.parseParenAndDistinguishExpression=function(e){var t,n=this.start,r=this.startLoc,i=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var s,o,a=this.start,u=this.startLoc,c=[],l=!0,h=!1,f=new p,d=this.yieldPos,y=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==L.parenR;){if(l?l=!1:this.expect(L.comma),i&&this.afterTrailingComma(L.parenR,!0)){h=!0;break}if(this.type===L.ellipsis){s=this.start,c.push(this.parseParenItem(this.parseRestBinding())),this.type===L.comma&&this.raise(this.start,"Comma is not permitted after the rest element");break}this.type!==L.parenL||o||(o=this.start),c.push(this.parseMaybeAssign(!1,f,this.parseParenItem))}var m=this.start,g=this.startLoc;if(this.expect(L.parenR),e&&!this.canInsertSemicolon()&&this.eat(L.arrow))return this.checkPatternErrors(f,!1),this.checkYieldAwaitInDefaultParams(),o&&this.unexpected(o),this.yieldPos=d,this.awaitPos=y,this.parseParenArrowList(n,r,c);c.length&&!h||this.unexpected(this.lastTokStart),s&&this.unexpected(s),this.checkExpressionErrors(f,!0),this.yieldPos=d||this.yieldPos,this.awaitPos=y||this.awaitPos,c.length>1?((t=this.startNodeAt(a,u)).expressions=c,this.finishNodeAt(t,"SequenceExpression",m,g)):t=c[0]}else t=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(n,r);return v.expression=t,this.finishNode(v,"ParenthesizedExpression")}return t},Y.parseParenItem=function(e){return e},Y.parseParenArrowList=function(e,t,n){return this.parseArrowExpression(this.startNodeAt(e,t),n)};var Z=[];Y.parseNew=function(){var e=this.startNode(),t=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(L.dot))return e.meta=t,e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(e.start,"new.target can only be used in functions"),this.finishNode(e,"MetaProperty");var n=this.start,r=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(),n,r,!0),this.eat(L.parenL)?e.arguments=this.parseExprList(L.parenR,this.options.ecmaVersion>=8,!1):e.arguments=Z,this.finishNode(e,"NewExpression")},Y.parseTemplateElement=function(e){var t=e.isTagged,n=this.startNode();return this.type===L.invalidTemplate?(t||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),n.value={raw:this.value,cooked:null}):n.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),n.tail=this.type===L.backQuote,this.finishNode(n,"TemplateElement")},Y.parseTemplate=function(e){void 0===e&&(e={});var t=e.isTagged;void 0===t&&(t=!1);var n=this.startNode();this.next(),n.expressions=[];var r=this.parseTemplateElement({isTagged:t});for(n.quasis=[r];!r.tail;)this.expect(L.dollarBraceL),n.expressions.push(this.parseExpression()),this.expect(L.braceR),n.quasis.push(r=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(n,"TemplateLiteral")},Y.isAsyncProp=function(e){return!e.computed&&"Identifier"===e.key.type&&"async"===e.key.name&&(this.type===L.name||this.type===L.num||this.type===L.string||this.type===L.bracketL||this.type.keyword)&&!O.test(this.input.slice(this.lastTokEnd,this.start))},Y.parseObj=function(e,t){var n=this.startNode(),r=!0,i={};for(n.properties=[],this.next();!this.eat(L.braceR);){if(r)r=!1;else if(this.expect(L.comma),this.afterTrailingComma(L.braceR))break;var s=this.parseProperty(e,t);this.checkPropClash(s,i),n.properties.push(s)}return this.finishNode(n,e?"ObjectPattern":"ObjectExpression")},Y.parseProperty=function(e,t){var n,r,i,s,o=this.startNode();return this.options.ecmaVersion>=6&&(o.method=!1,o.shorthand=!1,(e||t)&&(i=this.start,s=this.startLoc),e||(n=this.eat(L.star))),this.parsePropertyName(o),!e&&this.options.ecmaVersion>=8&&!n&&this.isAsyncProp(o)?(r=!0,this.parsePropertyName(o,t)):r=!1,this.parsePropertyValue(o,e,n,r,i,s,t),this.finishNode(o,"Property")},Y.parsePropertyValue=function(e,t,n,r,i,s,o){if((n||r)&&this.type===L.colon&&this.unexpected(),this.eat(L.colon))e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,o),e.kind="init";else if(this.options.ecmaVersion>=6&&this.type===L.parenL)t&&this.unexpected(),e.kind="init",e.method=!0,e.value=this.parseMethod(n,r);else if(t||!(this.options.ecmaVersion>=5)||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.type==L.comma||this.type==L.braceR)this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?(this.checkUnreserved(e.key),e.kind="init",t?e.value=this.parseMaybeDefault(i,s,e.key):this.type===L.eq&&o?(o.shorthandAssign<0&&(o.shorthandAssign=this.start),e.value=this.parseMaybeDefault(i,s,e.key)):e.value=e.key,e.shorthand=!0):this.unexpected();else{(n||r)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),e.value=this.parseMethod(!1);var a="get"===e.kind?0:1;if(e.value.params.length!==a){var u=e.value.start;"get"===e.kind?this.raiseRecoverable(u,"getter should have no params"):this.raiseRecoverable(u,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")}},Y.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(L.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(L.bracketR),e.key;e.computed=!1}return e.key=this.type===L.num||this.type===L.string?this.parseExprAtom():this.parseIdent(!0)},Y.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=!1,e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Y.parseMethod=function(e,t){var n=this.startNode(),r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos,a=this.inFunction;return this.initFunction(n),this.options.ecmaVersion>=6&&(n.generator=e),this.options.ecmaVersion>=8&&(n.async=!!t),this.inGenerator=n.generator,this.inAsync=n.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),this.expect(L.parenL),n.params=this.parseBindingList(L.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.inFunction=a,this.finishNode(n,"FunctionExpression")},Y.parseArrowExpression=function(e,t,n){var r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos,a=this.inFunction;return this.enterFunctionScope(),this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.inGenerator=!1,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.inFunction=a,this.finishNode(e,"ArrowFunctionExpression")},Y.parseFunctionBody=function(e,t){var n=t&&this.type!==L.braceL,r=this.strict,i=!1;if(n)e.body=this.parseMaybeAssign(),e.expression=!0,this.checkParams(e,!1);else{var s=this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params);r&&!s||(i=this.strictDirective(this.end))&&s&&this.raiseRecoverable(e.start,"Illegal 'use strict' directive in function with non-simple parameter list");var o=this.labels;this.labels=[],i&&(this.strict=!0),this.checkParams(e,!r&&!i&&!t&&this.isSimpleParamList(e.params)),e.body=this.parseBlock(!1),e.expression=!1,this.adaptDirectivePrologue(e.body.body),this.labels=o}this.exitFunctionScope(),this.strict&&e.id&&this.checkLVal(e.id,"none"),this.strict=r},Y.isSimpleParamList=function(e){for(var t=0,n=e;t0;)t[n]=arguments[n+1];for(var r=0,i=t;r=1;e--){var t=this.context[e];if("function"===t.token)return t.generator}return!1},ie.updateContext=function(e){var t,n=this.type;n.keyword&&e==L.dot?this.exprAllowed=!1:(t=n.updateContext)?t.call(this,e):this.exprAllowed=n.beforeExpr},L.parenR.updateContext=L.braceR.updateContext=function(){if(1!=this.context.length){var e=this.context.pop();e===re.b_stat&&"function"===this.curContext().token&&(e=this.context.pop()),this.exprAllowed=!e.isExpr}else this.exprAllowed=!0},L.braceL.updateContext=function(e){this.context.push(this.braceIsBlock(e)?re.b_stat:re.b_expr),this.exprAllowed=!0},L.dollarBraceL.updateContext=function(){this.context.push(re.b_tmpl),this.exprAllowed=!0},L.parenL.updateContext=function(e){var t=e===L._if||e===L._for||e===L._with||e===L._while;this.context.push(t?re.p_stat:re.p_expr),this.exprAllowed=!0},L.incDec.updateContext=function(){},L._function.updateContext=L._class.updateContext=function(e){e.beforeExpr&&e!==L.semi&&e!==L._else&&(e!==L.colon&&e!==L.braceL||this.curContext()!==re.b_stat)?this.context.push(re.f_expr):this.context.push(re.f_stat),this.exprAllowed=!1},L.backQuote.updateContext=function(){this.curContext()===re.q_tmpl?this.context.pop():this.context.push(re.q_tmpl),this.exprAllowed=!1},L.star.updateContext=function(e){if(e==L._function){var t=this.context.length-1;this.context[t]===re.f_expr?this.context[t]=re.f_expr_gen:this.context[t]=re.f_gen}this.exprAllowed=!0},L.name.updateContext=function(e){var t=!1;this.options.ecmaVersion>=6&&("of"==this.value&&!this.exprAllowed||"yield"==this.value&&this.inGeneratorContext())&&(t=!0),this.exprAllowed=t};var se=function(e){this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,e.options.locations&&(this.loc=new j(e,e.startLoc,e.endLoc)),e.options.ranges&&(this.range=[e.start,e.end])},oe=q.prototype,ae="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);oe.next=function(){this.options.onToken&&this.options.onToken(new se(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},oe.getToken=function(){return this.next(),new se(this)},"undefined"!=typeof Symbol&&(oe[Symbol.iterator]=function(){var e=this;return{next:function(){var t=e.getToken();return{done:t.type===L.eof,value:t}}}}),oe.curContext=function(){return this.context[this.context.length-1]},oe.nextToken=function(){var e=this.curContext();return e&&e.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(L.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},oe.readToken=function(e){return n(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},oe.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);if(e<=55295||e>=57344)return e;return(e<<10)+this.input.charCodeAt(this.pos+1)-56613888},oe.skipBlockComment=function(){var e=this.options.onComment&&this.curPosition(),t=this.pos,n=this.input.indexOf("*/",this.pos+=2);if(-1===n&&this.raise(this.pos-2,"Unterminated comment"),this.pos=n+2,this.options.locations){T.lastIndex=t;for(var r;(r=T.exec(this.input))&&r.index8&&e<14||e>=5760&&N.test(String.fromCharCode(e))))break e;++this.pos}}},oe.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},oe.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(L.ellipsis)):(++this.pos,this.finishToken(L.dot))},oe.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(L.assign,2):this.finishOp(L.slash,1)},oe.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?L.star:L.modulo;return this.options.ecmaVersion>=7&&42==e&&42===t&&(++n,r=L.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(L.assign,n+1):this.finishOp(r,n)},oe.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.finishOp(124===e?L.logicalOR:L.logicalAND,2):61===t?this.finishOp(L.assign,2):this.finishOp(124===e?L.bitwiseOR:L.bitwiseAND,1)},oe.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(L.assign,2):this.finishOp(L.bitwiseXOR,1)},oe.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45!=t||this.inModule||62!=this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!O.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(L.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===t?this.finishOp(L.assign,2):this.finishOp(L.plusMin,1)},oe.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(L.assign,n+1):this.finishOp(L.bitShift,n)):33!=t||60!=e||this.inModule||45!=this.input.charCodeAt(this.pos+2)||45!=this.input.charCodeAt(this.pos+3)?(61===t&&(n=2),this.finishOp(L.relational,n)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},oe.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(L.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(L.arrow)):this.finishOp(61===e?L.eq:L.prefix,1)},oe.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(L.parenL);case 41:return++this.pos,this.finishToken(L.parenR);case 59:return++this.pos,this.finishToken(L.semi);case 44:return++this.pos,this.finishToken(L.comma);case 91:return++this.pos,this.finishToken(L.bracketL);case 93:return++this.pos,this.finishToken(L.bracketR);case 123:return++this.pos,this.finishToken(L.braceL);case 125:return++this.pos,this.finishToken(L.braceR);case 58:return++this.pos,this.finishToken(L.colon);case 63:return++this.pos,this.finishToken(L.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(L.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(L.prefix,1)}this.raise(this.pos,"Unexpected character '"+d(e)+"'")},oe.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)};var ue=!!f("￿","u");oe.readRegexp=function(){for(var e,t,n=this,r=this.pos;;){n.pos>=n.input.length&&n.raise(r,"Unterminated regular expression");var i=n.input.charAt(n.pos);if(O.test(i)&&n.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++n.pos}var s=this.input.slice(r,this.pos);++this.pos;var o=this.readWord1(),a=s,u="";if(o){var c=/^[gim]*$/;this.options.ecmaVersion>=6&&(c=/^[gimuy]*$/),c.test(o)||this.raise(r,"Invalid regular expression flag"),o.indexOf("u")>=0&&(ue?u="u":(a=(a=a.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(e,t,i){return(t=Number("0x"+t))>1114111&&n.raise(r+i+3,"Code point out of bounds"),"x"})).replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),u=u.replace("u","")))}var l=null;return ae||(f(a,u,r,this),l=f(s,o)),this.finishToken(L.regexp,{pattern:s,flags:o,value:l})},oe.readInt=function(e,t){for(var n=this.pos,r=0,i=0,s=null==t?1/0:t;i=97?o-97+10:o>=65?o-65+10:o>=48&&o<=57?o-48:1/0)>=e)break;++this.pos,r=r*e+a}return this.pos===n||null!=t&&this.pos-n!==t?null:r},oe.readRadixNumber=function(e){this.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.start+2,"Expected number in radix "+e),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(L.num,t)},oe.readNumber=function(e){var t=this.pos,r=!1,i=48===this.input.charCodeAt(this.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number"),i&&this.pos==t+1&&(i=!1);var s=this.input.charCodeAt(this.pos);46!==s||i||(++this.pos,this.readInt(10),r=!0,s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||i||(43!==(s=this.input.charCodeAt(++this.pos))&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var o,a=this.input.slice(t,this.pos);return r?o=parseFloat(a):i&&1!==a.length?this.strict?this.raise(t,"Invalid number"):o=/[89]/.test(a)?parseInt(a,10):parseInt(a,8):o=parseInt(a,10),this.finishToken(L.num,o)},oe.readCodePoint=function(){var e;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var t=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.invalidStringToken(t,"Code point out of bounds")}else e=this.readHexChar(4);return e},oe.readString=function(e){for(var t="",n=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var r=this.input.charCodeAt(this.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.pos),t+=this.readEscapedChar(!1),n=this.pos):(o(r)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return t+=this.input.slice(n,this.pos++),this.finishToken(L.string,t)};var ce={};oe.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(e){if(e!==ce)throw e;this.readInvalidTemplateToken()}this.inTemplateElement=!1},oe.invalidStringToken=function(e,t){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw ce;this.raise(e,t)},oe.readTmplToken=function(){for(var e="",t=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var n=this.input.charCodeAt(this.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==L.template&&this.type!==L.invalidTemplate?(e+=this.input.slice(t,this.pos),this.finishToken(L.template,e)):36===n?(this.pos+=2,this.finishToken(L.dollarBraceL)):(++this.pos,this.finishToken(L.backQuote));if(92===n)e+=this.input.slice(t,this.pos),e+=this.readEscapedChar(!0),t=this.pos;else if(o(n)){switch(e+=this.input.slice(t,this.pos),++this.pos,n){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},oe.readInvalidTemplateToken=function(){for(;this.pos=48&&t<=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],r=parseInt(n,8);return r>255&&(n=n.slice(0,-1),r=parseInt(n,8)),"0"!==n&&(this.strict||e)&&this.invalidStringToken(this.pos-2,"Octal literal in strict mode"),this.pos+=n.length-1,String.fromCharCode(r)}return String.fromCharCode(t)}},oe.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.invalidStringToken(t,"Bad character escape sequence"),n},oe.readWord1=function(){this.containsEsc=!1;for(var e="",t=!0,i=this.pos,s=this.options.ecmaVersion>=6;this.pos=s)&&a[c](t,n,e),(null==r||t.start==r)&&(null==s||t.end==s)&&o(c,t))throw new i(t,n)}(n,u)}catch(e){if(e instanceof i)return e;throw e}},e.findNodeAround=function(n,r,s,o,a){s=t(s),o||(o=e.base);try{!function e(t,n,a){var u=a||t.type;if(!(t.start>r||t.end=r&&s(u,t))throw new i(t,n);o[u](t,n,e)}}(n,a)}catch(e){if(e instanceof i)return e;throw e}},e.findNodeBefore=function(n,r,s,o,a){s=t(s),o||(o=e.base);var u;return function e(t,n,a){if(!(t.start>r)){var c=a||t.type;t.end<=r&&(!u||u.node.end0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return o[e>>18&63]+o[e>>12&63]+o[e>>6&63]+o[63&e]}function s(e,t,n){for(var r,s=[],o=t;o0?c-4:c;var l=0;for(t=0;t>16&255,o[l++]=i>>8&255,o[l++]=255&i;return 2===s?(i=a[e.charCodeAt(t)]<<2|a[e.charCodeAt(t+1)]>>4,o[l++]=255&i):1===s&&(i=a[e.charCodeAt(t)]<<10|a[e.charCodeAt(t+1)]<<4|a[e.charCodeAt(t+2)]>>2,o[l++]=i>>8&255,o[l++]=255&i),o},n.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i="",a=[],u=0,c=n-r;uc?c:u+16383));return 1===r?(t=e[n-1],i+=o[t>>2],i+=o[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=o[t>>10],i+=o[t>>4&63],i+=o[t<<2&63],i+="="),a.push(i),a.join("")};for(var o=[],a=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=c.length;lB)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=i.prototype,t}function i(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return a(e)}return s(e,t,n)}function s(e,t,n){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return T(e)?function(e,t,n){if(t<0||e.byteLength=B)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+B.toString(16)+" bytes");return 0|e}function l(e,t){if(i.isBuffer(e))return e.length;if(N(e)||T(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return _(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return L(e).length;default:if(r)return _(e).length;t=(""+t).toLowerCase(),r=!0}}function p(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,n){var r=e.length;(!t||t<0)&&(t=0);(!n||n<0||n>r)&&(n=r);for(var i="",s=t;s2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,P(n)&&(n=s?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(s)return-1;n=e.length-1}else if(n<0){if(!s)return-1;n=0}if("string"==typeof t&&(t=i.from(t,r)),i.isBuffer(t))return 0===t.length?-1:d(e,t,n,r,s);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):d(e,[t],n,r,s);throw new TypeError("val must be string, number or Buffer")}function d(e,t,n,r,i){function s(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,u/=2,n/=2}var c;if(i){var l=-1;for(c=n;ca&&(n=a-u),c=n;c>=0;c--){for(var p=!0,h=0;hi&&(r=i):r=i;var s=t.length;if(s%2!=0)throw new TypeError("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;o>8,i=n%256,s.push(i),s.push(r);return s}(t,e.length-n),e,n,r)}function w(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:s>223?3:s>191?2:1;if(i+a<=n){var u,c,l,p;switch(a){case 1:s<128&&(o=s);break;case 2:128==(192&(u=e[i+1]))&&(p=(31&s)<<6|63&u)>127&&(o=p);break;case 3:u=e[i+1],c=e[i+2],128==(192&u)&&128==(192&c)&&(p=(15&s)<<12|(63&u)<<6|63&c)>2047&&(p<55296||p>57343)&&(o=p);break;case 4:u=e[i+1],c=e[i+2],l=e[i+3],128==(192&u)&&128==(192&c)&&128==(192&l)&&(p=(15&s)<<18|(63&u)<<12|(63&c)<<6|63&l)>65535&&p<1114112&&(o=p)}}null===o?(o=65533,a=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=a}return function(e){var t=e.length;if(t<=R)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rn)throw new RangeError("Trying to access beyond buffer length")}function S(e,t,n,r,s,o){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function k(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function A(e,t,n,r,i){return t=+t,n>>>=0,i||k(e,0,n,4),$.write(e,t,n,r,23,4),n+4}function C(e,t,n,r,i){return t=+t,n>>>=0,i||k(e,0,n,8),$.write(e,t,n,r,52,8),n+8}function _(e,t){t=t||1/0;for(var n,r=e.length,i=null,s=[],o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function L(e){return F.toByteArray(function(e){if((e=e.trim().replace(I,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function O(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function T(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function N(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function P(e){return e!=e}var F=e("base64-js"),$=e("ieee754");n.Buffer=i,n.SlowBuffer=function(e){return+e!=e&&(e=0),i.alloc(+e)},n.INSPECT_MAX_BYTES=50;var B=2147483647;n.kMaxLength=B,(i.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),i.poolSize=8192,i.from=function(e,t,n){return s(e,t,n)},i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,i.alloc=function(e,t,n){return function(e,t,n){return o(e),e<=0?r(e):void 0!==t?"string"==typeof n?r(e).fill(t,n):r(e).fill(t):r(e)}(e,t,n)},i.allocUnsafe=function(e){return a(e)},i.allocUnsafeSlow=function(e){return a(e)},i.isBuffer=function(e){return null!=e&&!0===e._isBuffer},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,s=0,o=Math.min(n,r);s0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},i.prototype.compare=function(e,t,n,r,s){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===s&&(s=this.length),t<0||n>e.length||r<0||s>this.length)throw new RangeError("out of range index");if(r>=s&&t>=n)return 0;if(r>=s)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,s>>>=0,this===e)return 0;for(var o=s-r,a=n-t,u=Math.min(o,a),c=this.slice(r,s),l=e.slice(t,n),p=0;p>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return y(this,e,t,n);case"utf8":case"utf-8":return m(this,e,t,n);case"ascii":return g(this,e,t,n);case"latin1":case"binary":return v(this,e,t,n);case"base64":return b(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var R=4096;i.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||E(e,t,this.length);for(var r=this[e],i=1,s=0;++s>>=0,t>>>=0,n||E(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},i.prototype.readUInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||E(e,t,this.length);for(var r=this[e],i=1,s=0;++s=i&&(r-=Math.pow(2,8*t)),r},i.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||E(e,t,this.length);for(var r=t,i=1,s=this[e+--r];r>0&&(i*=256);)s+=this[e+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},i.prototype.readInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){e>>>=0,t||E(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt16BE=function(e,t){e>>>=0,t||E(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return e>>>=0,t||E(e,4,this.length),$.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return e>>>=0,t||E(e,4,this.length),$.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return e>>>=0,t||E(e,8,this.length),$.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return e>>>=0,t||E(e,8,this.length),$.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){S(this,e,t,n,Math.pow(2,8*n)-1,0)}var i=1,s=0;for(this[t]=255&e;++s>>=0,n>>>=0,!r){S(this,e,t,n,Math.pow(2,8*n)-1,0)}var i=n-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+n},i.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,1,255,0),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},i.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);S(this,e,t,n,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+n},i.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);S(this,e,t,n,i-1,-i)}var s=n-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+n},i.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},i.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeFloatLE=function(e,t,n){return A(this,e,t,!0,n)},i.prototype.writeFloatBE=function(e,t,n){return A(this,e,t,!1,n)},i.prototype.writeDoubleLE=function(e,t,n){return C(this,e,t,!0,n)},i.prototype.writeDoubleBE=function(e,t,n){return C(this,e,t,!1,n)},i.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(s<1e3)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var o;if("number"==typeof e)for(o=t;o>1,l=-7,p=n?i-1:0,h=n?-1:1,f=e[t+p];for(p+=h,s=f&(1<<-l)-1,f>>=-l,l+=a;l>0;s=256*s+e[t+p],p+=h,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+e[t+p],p+=h,l-=8);if(0===s)s=1-c;else{if(s===u)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,r),s-=c}return(f?-1:1)*o*Math.pow(2,s-r)},n.write=function(e,t,n,r,i,s){var o,a,u,c=8*s-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,d=r?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+p>=1?h/u:h*Math.pow(2,1-p))*u>=2&&(o++,u/=2),o+p>=l?(a=0,o=l):o+p>=1?(a=(t*u-1)*Math.pow(2,i),o+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,i),o=0));i>=8;e[n+f]=255&a,f+=d,a/=256,i-=8);for(o=o<0;e[n+f]=255&o,f+=d,o/=256,c-=8);e[n+f-d]|=128*y}},{}],10:[function(e,t,n){(function(n){function r(){}function i(e){this.covers={},this._ident=i.prototype.version+"_"+Math.random(),this.setOptions(e||{})}var s=e("./lib/parser"),o=e("./lib/arboriculture"),a=e("./lib/output");i.prototype.smCache={},i.prototype.setOptions=function(e){return this.log=!1===e.log?r:e.log||this.log,this.options=function(e){var t={};return e.forEach(function(e){if(e&&"object"==typeof e)for(var n in e)t[n]=e[n]}),t}([this.options,e]),delete this.options.log,this},i.prototype.version=e("./package.json").version,i.prototype.isThenable=function(e){return e&&e instanceof Object&&"function"==typeof e.then},i.prototype.compile=function(e,t,n,s){"object"==typeof n&&void 0===s&&(s=n),s=s||{};for(var o in i.initialCodeGenOpts)o in s||(s[o]=i.initialCodeGenOpts[o]);var a=this.parse(e,t,null,s);return this.asynchronize(a,null,s,this.log||r),this.prettyPrint(a,s),a},i.prototype.parse=function(e,t,n,r){"object"==typeof n&&void 0===r&&(r=n);var i={origCode:e.toString(),filename:t};try{return i.ast=s.parse(i.origCode,r&&r.parser),r.babelTree&&s.treeWalker(i.ast,function(e,t,n){"Literal"===e.type?n[0].replace(o.babelLiteralNode(e.value)):"Property"===e.type&&("ClassBody"===n[0].parent.type?e.type="ClassProperty":e.type="ObjectProperty"),t()}),i}catch(e){if(e instanceof SyntaxError){var a=i.origCode.substr(e.pos-e.loc.column);a=a.split("\n")[0],e.message+=" "+t+" (nodent)\n"+a+"\n"+a.replace(/[\S ]/g,"-").substring(0,e.loc.column)+"^",e.stack=""}throw e}},i.prototype.asynchronize=o.asynchronize,i.prototype.printNode=o.printNode,i.prototype.prettyPrint=function(t,r){var i=t.filename?t.filename.split("/"):["anonymous"],s=i.pop(),o=a(t.ast,r&&r.sourcemap?{map:{startLine:r.mapStartLine||0,file:s+"(original)",sourceMapRoot:i.join("/"),sourceContent:t.origCode}}:null,t.origCode);if(r&&r.sourcemap)try{var u="",c=o.map.toJSON();if(c){var l=e("source-map").SourceMapConsumer;t.sourcemap=c,this.smCache[t.filename]={map:c,smc:new l(c)},u="\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+function(e){return(e instanceof n?e:new n(e.toString(),"binary")).toString("base64")}(JSON.stringify(c))+"\n"}t.code=o.code+u}catch(e){t.code=o}else t.code=o;return t},i.prototype.getDefaultCompileOptions=void 0,Object.defineProperty(i.prototype,"Promise",{get:function(){return initOpts.log("Warning: nodent.Promise is deprecated. Use nodent.Thenable instead"),Thenable},enumerable:!1,configurable:!1}),i.initialCodeGenOpts={noRuntime:!1,lazyThenables:!1,es6target:!1,noUseDirective:!1,wrapAwait:null,mapStartLine:0,sourcemap:!0,engine:!1,parser:{sourceType:"script"},$return:"$return",$error:"$error",$arguments:"$args",$asyncspawn:"$asyncspawn",$asyncbind:"$asyncbind",generatedSymbolPrefix:"$",$makeThenable:"$makeThenable"},t.exports=i}).call(this,e("buffer").Buffer)},{"./lib/arboriculture":11,"./lib/output":12,"./lib/parser":13,"./package.json":25,buffer:8,"source-map":24}],11:[function(e,t,n){"use strict";function r(e){if(!e)return"";if(Array.isArray(e))return e.map(r).join("|\n");try{return m(e)}catch(t){return t.message+": "+(e&&e.type)}}function i(e){if(Array.isArray(e))return e.map(function(e){return i(e)});var t={};return Object.keys(e).forEach(function(n){t[n]=e[n]}),t}function s(e,t){e!==t&&(e.__proto__=Object.getPrototypeOf(t),Object.keys(e).forEach(function(t){t in g||delete e[t]}),Object.keys(t).forEach(function(n){n in e||(e[n]=t[n])}))}function o(){}function a(e){return e?(b.node=e,b):{}}function u(e,t,n){if(!e)return null;if(t&&"object"==typeof t){var r=Object.keys(t);return u(e,function(e){return r.every(function(n){return e[n]==t[n]})})}var i,s={};if(Array.isArray(e)){for(var o=0;o0){if(!o)return t(e);delete e.async}return void(!o&&i?t():(e.type="ReturnStatement",e.$mapped=!0,e.argument={type:"CallExpression",callee:k(s,[n]).$error,arguments:[e.argument]}))}return"TryStatement"===e.type?(i++,t(e),void i--):a(e).isFunction?(r++,t(e),void r--):void t(e)}if(r>0){if(!a(e).isAsync)return t(e);delete e.async}return e.$mapped=!0,void(a(e.argument).isUnaryExpression&&"void"===e.argument.operator?e.argument=e.argument.argument:e.argument={type:"CallExpression",callee:k(s,[n]).$return,arguments:e.argument?[e.argument]:[]})},t)}function P(e,t){return Array.isArray(e)?e.map(function(e){return P(e,t)}):(y.treeWalker(e,function(e,t,n){if(t(),"ConditionalExpression"===e.type&&(c(e.alternate)||c(e.consequent))){h(E("condOp"));s(e,_(y.part("if ($0) return $1 ; return $2",[e.test,e.consequent,e.alternate]).body))}},t),e)}function F(e,t){return Array.isArray(e)?e.map(function(e){return F(e,t)}):(y.treeWalker(e,function(e,t,n){if(t(),"LogicalExpression"===e.type&&c(e.right)){var r,i=h(E("logical"+("&&"===e.operator?"And":"Or")));if("||"===e.operator)r="var $0; if (!($0 = $1)) {$0 = $2} return $0";else{if("&&"!==e.operator)throw new Error(v(e)+"Illegal logical operator: "+e.operator);r="var $0; if ($0 = $1) {$0 = $2} return $0"}s(e,_(y.part(r,[i,e.left,e.right]).body))}},t),e)}function $(e,t,n){if("SwitchCase"!==e.type&&a(e).isBlockStatement)for(var r=0;r { $$setMapped: while (q) { if (q.then) "+(1===i?" return void q.then($idTrampoline, $exit); ":" return q.then($idTrampoline, $exit); ")+" try { if (q.pop) if (q.length) return q.pop() ? $idContinuation.call(this) : q; else q = $idStep; else q = q.call(this) } catch (_exception) { return $exit(_exception); } } }))($idIter)":"($idTrampoline = (function (q) { $$setMapped: while (q) { if (q.then) "+(1===i?" return void q.then($idTrampoline, $exit); ":" return q.then($idTrampoline, $exit); ")+" try { if (q.pop) if (q.length) return q.pop() ? $idContinuation.call(this) : q; else q = $idStep; else q = q.call(this) } catch (_exception) { return $exit(_exception); } } }).bind(this))($idIter)",{setMapped:function(e){return e.$mapped=!0,e},idTrampoline:w,exit:P,idIter:E,idContinuation:A,idStep:S}).expr:y.part("(Function.$0.trampoline(this,$1,$2,$3,$5)($4))",[pe.asyncbind,A,S,P,E,b(1===i)]).expr,o.push({type:"ReturnStatement",argument:N}),o.push({$label:e.$label,type:"FunctionDeclaration",id:E,params:[],body:{type:"BlockStatement",body:d}}),f&&o.push({type:"FunctionDeclaration",id:S,params:[],body:{type:"BlockStatement",body:[f,L]}}),!l||"VariableDeclaration"!==l.type||"let"!==l.kind&&"const"!==l.kind?(o.push(v),t[0].replace(o.map(r))):("const"===l.kind&&(l.kind="let"),t[0].replace([{type:"BlockStatement",body:o.map(r)},r(v)]))}}function G(e){if(!a(e).isFunction)throw new Error("Cannot examine non-Function node types for async exits");return u(e.body,function(e){return"Identifier"===e.type&&(e.name===n.$return||e.name===n.$error)||I(e)&&a(e).isAsync},function(e){return!(a(e).isFunction&&(e.$wasAsync||a(e).isAsync))})}function J(t){return y.treeWalker(t,function(t,r,i){var s=x(t);if(r(),s&&a(s).isAsync){if("set"==t.kind){var o=new SyntaxError(v(s)+"method 'async set' cannot be invoked",e.filename,t.start);throw o.pos=t.start,o.loc=t.loc.start,o}s.async=!1;var u=w(s);G(s)||0!==s.body.body.length&&"ReturnStatement"===s.body.body[s.body.body.length-1].type||s.body.body.push({type:"ReturnStatement"});var c=m(S({type:"FunctionExpression",params:[pe.return,pe.error],body:J(N(s.body,i)),$wasAsync:!0},n),n.promises||n.generators||n.engine?null:b(!n.lazyThenables||0));n.promises?s.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:{type:"NewExpression",callee:h("Promise"),arguments:[c]}}]}:s.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:c}]},u&&D(s.body.body,[he])}})}function H(e){return y.treeWalker(e,function(e,t,r){if(t(),a(e).isAsync&&a(e).isFunction){var i;(i=x(r[0].parent))&&a(i).isAsync&&"get"===r[0].parent.kind&&X(r[0].parent.key),delete e.async;var s=w(e),o=S({type:"FunctionExpression",params:[pe.return,pe.error],$wasAsync:!0},n),u=[{self:o}].concat(r);return a(e.body).isBlockStatement?(G(e)||0!==e.body.body.length&&"ReturnStatement"===e.body.body[e.body.body.length-1].type||e.body.body.push({type:"ReturnStatement"}),o.body={type:"BlockStatement",body:e.body.body.map(function(e){return N(e,u)})}):(o.body={type:"BlockStatement",body:[N({type:"ReturnStatement",argument:e.body},u)]},e.expression=!1),o=m(o,n.promises||n.generators||n.engine?null:b(!n.lazyThenables||0)),n.promises&&(o={type:"NewExpression",callee:h("Promise"),arguments:[o]}),o={type:"BlockStatement",body:[{type:"ReturnStatement",loc:e.loc,argument:o}]},s&&D(o.body,[he]),void(e.body=o)}}),e}function Y(e){if(Array.isArray(e))return e.map(Y);var t=0;return y.treeWalker(e,function(e,n,r){if("ThrowStatement"!==e.type&&"ReturnStatement"!==e.type||e.$mapped){if(a(e).isFunction)return t++,n(e),void t--}else if(t>0&&a(e).isAsync)return delete e.async,e.argument={type:"CallExpression",callee:"ThrowStatement"===e.type?pe.error:pe.return,arguments:e.argument?[e.argument]:[]},void(e.type="ReturnStatement");n(e)})}function Z(e,t){if(n.noRuntime)throw new Error("Nodent: 'noRuntime' option only compatible with -promise and -engine modes");return y.part("{ return (function*($return,$error){ $:body }).$asyncspawn(Promise,this) }",{return:pe.return,error:pe.error,asyncspawn:pe.asyncspawn,body:Y(e).concat(t?[{type:"ReturnStatement",argument:pe.return}]:[])}).body[0]}function X(e){e.$asyncgetwarninig||(e.$asyncgetwarninig=!0,d(v(e)+"'async get "+r(e)+"(){...}' is non-standard. See https://github.com/MatAtBread/nodent#differences-from-the-es7-specification"))}function Q(e,t){function r(e,t){y.treeWalker(e,function(n,r,i){n!==e&&a(n).isFunction||(a(n).isAwait?t?(n.$hidden=!0,r()):(delete n.operator,n.delegate=!1,n.type="YieldExpression",r()):r())})}function o(e){var t=n.promises;n.promises=!0,A(e,!0),n.promises=t}function u(e){return"BlockStatement"!==e.body.type&&(e.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:e.body}]}),e}function c(e,n){n.$asyncexitwarninig||(n.$asyncexitwarninig=!0,d(v(e)+"'async "+{ReturnStatement:"return",ThrowStatement:"throw"}[e.type]+"' not possible in "+(t?"engine":"generator")+" mode. Using Promises for function at "+v(n)))}y.treeWalker(e,function(e,n,i){n();var l,p,h;if(a(e).isAsync&&a(e).isFunction){var f;(f=x(i[0].parent))&&a(f).isAsync&&"get"===i[0].parent.kind&&X(i[0].parent.key),(p=G(e))?(c(p,e.body),o(e)):t?"get"!==i[0].parent.kind&&r(e,!0):(delete(l=e).async,h=w(l),r(l,!1),(l=u(l)).body=Z(l.body.body,p),h&&D(l.body.body,[he]),l.id&&"ExpressionStatement"===i[0].parent.type?(l.type="FunctionDeclaration",i[1].replace(l)):i[0].replace(l))}else(l=x(e))&&a(l).isAsync&&((p=G(l))?(c(p,l),o(e)):t&&"get"!==e.kind||(t?o(e):(e.async=!1,h=w(l),r(l,!1),s(l,u(l)),l.body=Z(l.body.body,p)),h&&D(l.body.body,[he])))});var l=i(n);return n.engine=!1,n.generators=!1,ie(e),ne(e),j(e,l.engine),F(e),P(e),q(e,[M,W,B,R,$]),V(e,"warn"),n.engine=l.engine,n.generators=l.generators,e}function K(e,t,n){var r=[];return y.treeWalker(e,function(i,s,o){if(i===e)return s();t(i,o)?r.push([].concat(o)):n||a(i).isScope||s()}),r}function ee(e,t){var n=[],r={};if((e=e.filter(function(e){return"ExportNamedDeclaration"!==e[0].parent.type})).length){var s={};e.forEach(function(e){function t(e){e in s?r[e]=o.declarations[u]:s[e]=o.declarations[u]}for(var n=e[0],o=n.self,a=(o.kind,[]),u=0;u1?{type:"SequenceExpression",expressions:a}:a[0];"For"!==n.parent.type.slice(0,3)&&(p={type:"ExpressionStatement",expression:p}),n.replace(p)}});var o=Object.keys(s);o.length&&(o=o.map(function(e){return{type:"VariableDeclarator",id:h(e),loc:s[e].loc,start:s[e].start,end:s[e].end}}),n[0]&&"VariableDeclaration"===n[0].type?n[0].declarations=n[0].declarations.concat(o):n.unshift({type:"VariableDeclaration",kind:t,declarations:o}))}return{decls:n,duplicates:r}}function te(e){if(!e)return[];if(Array.isArray(e))return e.reduce(function(e,t){return e.concat(te(t.id))},[]);switch(e.type){case"Identifier":return[e.name];case"AssignmentPattern":return te(e.left);case"ArrayPattern":return e.elements.reduce(function(e,t){return e.concat(te(t))},[]);case"ObjectPattern":return e.properties.reduce(function(e,t){return e.concat(te(t))},[]);case"ObjectProperty":case"Property":return te(e.value);case"RestElement":case"RestProperty":return te(e.argument)}}function ne(e){function t(e){return u(e,function(e){return"AssignmentExpression"===e.type})}function n(e){return function(t,n){if("VariableDeclaration"===t.type&&(t.kind=t.kind||"var")&&e.indexOf(t.kind)>=0){var r=n[0];return("left"!=r.field||"ForInStatement"!==r.parent.type&&"ForOfStatement"!==r.parent.type)&&("init"!=r.field||"ForStatement"!==r.parent.type||"const"!==t.kind&&"let"!==t.kind)}}}function o(e,t){return!("FunctionDeclaration"!==e.type||!e.id)&&(a(e).isAsync||!e.$continuation)}var l={TemplateLiteral:function(e){return e.expressions},NewExpression:function(e){return e.arguments},CallExpression:function(e){return e.arguments},SequenceExpression:function(e){return e.expressions},ArrayExpression:function(e){return e.elements},ObjectExpression:function(e){return e.properties.map(function(e){return e.value})}};y.treeWalker(e,function(e,n,r){function o(e){h.length&&(e.argument={type:"SequenceExpression",expressions:h.map(function(e){var t=i(e);return s(e,e.left),t}).concat(e.argument)},h=[])}var u;if(n(),e.type in l&&!e.$hoisted){var p=l[e.type](e),h=[];for(u=0;u0;u--)if(e.declarations[u]&&e.declarations[u].init&&c(e.declarations[u].init)){var f={type:"VariableDeclaration",kind:e.kind,declarations:e.declarations.splice(u)},d=r[0];if(!("index"in d))throw new Error("VariableDeclaration not in a block");d.parent[d.field].splice(d.index+1,0,f)}}),function(e){function t(e){d(v(e)+"Possible assignment to 'const "+r(e)+"'")}function n(e){switch(e.type){case"Identifier":"const"===i[e.name]&&t(e);break;case"ArrayPattern":e.elements.forEach(function(e){"const"===i[e.name]&&t(e)});break;case"ObjectPattern":e.properties.forEach(function(e){"const"===i[e.key.name]&&t(e)})}}var i={};y.treeWalker(e,function(e,t,r){var s=a(e).isBlockStatement;if(s){i=Object.create(i);for(var o=0;o=0&&"ReturnStatement"===r[1].self.type){var s=e.$thisCallName,o=i(ce[s].def.body.body);ce[s].$inlined=!0,a(r[1].self).isJump||o.push({type:"ReturnStatement"}),r[1].replace(o)}});var n=Object.keys(ce).map(function(e){return ce[e].$inlined&&ce[e].def});y.treeWalker(e,function(e,t,r){t(),n.indexOf(e)>=0&&r[0].remove()})}if(!("Program"===e.type&&"module"===e.sourceType||u(e,function(e){return a(e).isES6},!0))){var r=oe(e);!function(e){y.treeWalker(e,function(e,t,n){if("Program"===e.type||"FunctionDeclaration"===e.type||"FunctionExpression"===e.type){var i=r;if(r=r||oe(e)){t();var s="Program"===e.type?e:e.body,o=K(s,function(e,t){if("FunctionDeclaration"===e.type)return t[0].parent!==s});o=o.map(function(e){return e[0].remove()}),[].push.apply(s.body,o)}else t();r=i}else t()})}(e)}return y.treeWalker(e,function(e,t,n){t(),Object.keys(e).filter(function(e){return"$"===e[0]}).forEach(function(t){delete e[t]})}),e}var ce={},le=1,pe={};Object.keys(n).filter(function(e){return"$"===e[0]}).forEach(function(e){pe[e.slice(1)]=h(n[e])});var he=y.part("var $0 = arguments",[pe.arguments]).body[0];return n.engine?(e.ast=re(e.ast,!0),e.ast=Q(e.ast,n.engine),e.ast=se(e.ast),ue(e.ast)):n.generators?(e.ast=re(e.ast),e.ast=Q(e.ast),e.ast=se(e.ast),ue(e.ast)):(e.ast=re(e.ast),A(e.ast)),n.babelTree&&y.treeWalker(e.ast,function(e,t,n){t(),"Literal"===e.type&&s(e,b(e.value))}),e}var y=e("./parser"),m=e("./output"),g={start:!0,end:!0,loc:!0,range:!0},v={getScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type?this.node.body.body:"Program"===this.node.type?this.node.body:null},isScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"Program"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type},isFunction:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type},isClass:function(){return"ClassDeclaration"===this.node.type||"ClassExpression"===this.node.type},isBlockStatement:function(){return"ClassBody"===this.node.type||"Program"===this.node.type||"BlockStatement"===this.node.type?this.node.body:"SwitchCase"===this.node.type&&this.node.consequent},isExpressionStatement:function(){return"ExpressionStatement"===this.node.type},isLiteral:function(){return"Literal"===this.node.type||"BooleanLiteral"===this.node.type||"RegExpLiteral"===this.node.type||"NumericLiteral"===this.node.type||"StringLiteral"===this.node.type||"NullLiteral"===this.node.type},isDirective:function(){return"ExpressionStatement"===this.node.type&&("StringLiteral"===this.node.expression.type||"Literal"===this.node.expression.type&&"string"==typeof this.node.expression.value)},isUnaryExpression:function(){return"UnaryExpression"===this.node.type},isAwait:function(){return"AwaitExpression"===this.node.type&&!this.node.$hidden},isAsync:function(){return this.node.async},isStatement:function(){return null!==this.node.type.match(/[a-zA-Z]+Declaration/)||null!==this.node.type.match(/[a-zA-Z]+Statement/)},isExpression:function(){return null!==this.node.type.match(/[a-zA-Z]+Expression/)},isLoop:function(){return"ForStatement"===this.node.type||"WhileStatement"===this.node.type||"DoWhileStatement"===this.node.type},isJump:function(){return"ReturnStatement"===this.node.type||"ThrowStatement"===this.node.type||"BreakStatement"===this.node.type||"ContinueStatement"===this.node.type},isES6:function(){switch(this.node.type){case"ExportNamedDeclaration":case"ExportSpecifier":case"ExportDefaultDeclaration":case"ExportAllDeclaration":case"ImportDeclaration":case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ArrowFunctionExpression":case"ForOfStatement":case"YieldExpression":case"Super":case"RestElement":case"RestProperty":case"SpreadElement":case"TemplateLiteral":case"ClassDeclaration":case"ClassExpression":return!0;case"VariableDeclaration":return this.node.kind&&"var"!==this.node.kind;case"FunctionDeclaration":case"FunctionExpression":return!!this.node.generator}}},b={};Object.keys(v).forEach(function(e){Object.defineProperty(b,e,{get:v[e]})}),t.exports={printNode:r,babelLiteralNode:p,asynchronize:function(e,t,n,r){try{return d(e,0,n,r)}catch(t){if(t instanceof SyntaxError){var i=e.origCode.substr(t.pos-t.loc.column);i=i.split("\n")[0],t.message+=" (nodent)\n"+i+"\n"+i.replace(/[\S ]/g,"-").substring(0,t.loc.column)+"^",t.stack=""}throw t}}}},{"./output":12,"./parser":13}],12:[function(e,t,n){"use strict";function r(e){if("NewExpression"===e.type&&e.arguments&&e.arguments.length)return 19;var t=h[e.type]||h[e.type+e.operator]||h[e.type+e.operator+(e.prefix?"prefix":"")];return void 0!==t?t:20}var i,s,o,a,u,c,l=e("source-map").SourceMapGenerator;if("".repeat)c=function(e,t){return t&&e?e.repeat(t):""};else{var p={};c=function(e,t){if(!t||!e)return"";var n=""+e+t;if(!p[n]){for(var r=[];t--;)r.push(e);p[n]=r.join("")}return p[n]}}var h={ExpressionStatement:-1,Identifier:21,Literal:21,BooleanLiteral:21,RegExpLiteral:21,NumericLiteral:21,StringLiteral:21,NullLiteral:21,ThisExpression:21,SuperExpression:21,ObjectExpression:21,ClassExpression:21,MemberExpression:19,CallExpression:18,NewExpression:18,ArrayExpression:17.5,FunctionExpression:17.5,FunctionDeclaration:17.5,ArrowFunctionExpression:17.5,"UpdateExpression++":17,"UpdateExpression--":17,"UpdateExpression++prefix":16,"UpdateExpression--prefix":16,UnaryExpression:16,AwaitExpression:16,"BinaryExpression**":15,"BinaryExpression*":15,"BinaryExpression/":15,"BinaryExpression%":15,"BinaryExpression+":14,"BinaryExpression-":14,"BinaryExpression<<":13,"BinaryExpression>>":13,"BinaryExpression>>>":13,"BinaryExpression<":12,"BinaryExpression<=":12,"BinaryExpression>":12,"BinaryExpression>=":12,BinaryExpressionin:12,BinaryExpressioninstanceof:12,"BinaryExpression==":11,"BinaryExpression===":11,"BinaryExpression!=":11,"BinaryExpression!==":11,"BinaryExpression&":10,"BinaryExpression^":9,"BinaryExpression|":8,"LogicalExpression&&":7,"LogicalExpression||":6,ConditionalExpression:5,AssignmentPattern:4,AssignmentExpression:4,yield:3,YieldExpression:3,SpreadElement:2,"comma-separated-list":1.5,SequenceExpression:1},f={type:"comma-separated-list"},d={out:function(e,t,n){var r=this[n||e.type];r?r.call(this,e,t):t.write(e,"/*"+e.type+"?*/ "+t.sourceAt(e.start,e.end))},expr:function(e,t,n,i){2===i||r(n)0)for(var r=n.length,i=0;i0){this.out(e[0],t,e[0].type);for(var r=1,i=e.length;r0){t.write(null,s);for(var a=0,u=n.length;a0){this.out(n[0],t,"VariableDeclarator");for(var i=1;i0){for(var s=0;s0)for(var r=0;r ")):(this.formatParameters(e.params,t),t.write(e,"=> ")),"ObjectExpression"===e.body.type||"SequenceExpression"===e.body.type?(t.write(null,"("),this.out(e.body,t,e.body.type),t.write(null,")")):this.out(e.body,t,e.body.type)},ThisExpression:function(e,t){t.write(e,"this")},Super:function(e,t){t.write(e,"super")},RestElement:s=function(e,t){t.write(e,"..."),this.out(e.argument,t,e.argument.type)},SpreadElement:s,YieldExpression:function(e,t){t.write(e,e.delegate?"yield*":"yield"),e.argument&&(t.write(null," "),this.expr(t,e,e.argument))},AwaitExpression:function(e,t){t.write(e,"await "),this.expr(t,e,e.argument)},TemplateLiteral:function(e,t){var n,r=e.quasis,i=e.expressions;t.write(e,"`");for(var s=0,o=i.length;s0)for(var n=e.elements,r=n.length,i=0;;){var s=n[i];if(s&&this.expr(t,f,s),((i+=1)=r)break;t.lineLength()>t.wrapColumn&&t.write(null,t.lineEnd,c(t.indent,t.indentLevel+1))}t.write(null,"]")},ArrayPattern:a,ObjectExpression:function(e,t){var n,r=c(t.indent,t.indentLevel++),i=t.lineEnd,s=r+t.indent;if(t.write(e,"{"),e.properties.length>0){t.write(null,i);for(var o=e.properties,a=o.length,u=0;n=o[u],t.write(null,s),this.out(n,t,"Property"),++ut.wrapColumn&&t.write(null,t.lineEnd,c(t.indent,t.indentLevel+1));t.write(null,i,r,"}")}else t.write(null,"}");t.indentLevel--},Property:function(e,t){e.method||"get"===e.kind||"set"===e.kind?this.MethodDefinition(e,t):(e.shorthand||(e.computed?(t.write(null,"["),this.out(e.key,t,e.key.type),t.write(null,"]")):this.out(e.key,t,e.key.type),t.write(null,": ")),this.expr(t,f,e.value))},ObjectPattern:function(e,t){if(t.write(e,"{"),e.properties.length>0)for(var n=e.properties,r=n.length,i=0;this.out(n[i],t,"Property"),++i0)for(var i=r.length,s=0;s1&&t.write(e," "),this.expr(t,e,e.argument,!0)):(this.expr(t,e,e.argument),t.write(e,e.operator))},UpdateExpression:function(e,t){e.prefix?(t.write(e,e.operator),this.out(e.argument,t,e.argument.type)):(this.out(e.argument,t,e.argument.type),t.write(e,e.operator))},BinaryExpression:o=function(e,t){var n=e.operator;"in"===n&&t.inForInit&&t.write(null,"("),this.expr(t,e,e.left),t.write(e," ",n," "),this.expr(t,e,e.right,"ArrowFunctionExpression"===e.right.type?2:0),"in"===n&&t.inForInit&&t.write(null,")")},LogicalExpression:o,AssignmentExpression:function(e,t){"ObjectPattern"===e.left.type&&t.write(null,"("),this.BinaryExpression(e,t),"ObjectPattern"===e.left.type&&t.write(null,")")},AssignmentPattern:function(e,t){this.expr(t,e,e.left),t.write(e," = "),this.expr(t,e,e.right)},ConditionalExpression:function(e,t){this.expr(t,e,e.test,!0),t.write(e," ? "),this.expr(t,e,e.consequent),t.write(null," : "),this.expr(t,e,e.alternate)},NewExpression:function(e,t){t.write(e,"new "),this.expr(t,e,e.callee,"CallExpression"===e.callee.type||"ObjectExpression"===e.callee.type?2:0),this.argumentList(e,t)},CallExpression:function(e,t){this.expr(t,e,e.callee,"ObjectExpression"===e.callee.type?2:0),this.argumentList(e,t)},MemberExpression:function(e,t){!("ObjectExpression"===e.object.type||e.object.type.match(/Literal$/)&&e.object.raw&&e.object.raw.match(/^[0-9]/))&&("ArrayExpression"===e.object.type||"CallExpression"===e.object.type||"NewExpression"===e.object.type||r(e)<=r(e.object))?this.out(e.object,t,e.object.type):(t.write(null,"("),this.out(e.object,t,e.object.type),t.write(null,")")),e.computed?(t.write(e,"["),this.out(e.property,t,e.property.type),t.write(null,"]")):(t.write(e,"."),this.out(e.property,t,e.property.type))},Identifier:function(e,t){t.write(e,e.name)},Literal:function(e,t){t.write(e,e.raw)},NullLiteral:function(e,t){t.write(e,"null")},BooleanLiteral:function(e,t){t.write(e,JSON.stringify(e.value))},StringLiteral:function(e,t){t.write(e,JSON.stringify(e.value))},RegExpLiteral:function(e,t){t.write(e,e.extra.raw||"/"+e.pattern+"/"+e.flags)},NumericLiteral:function(e,t){t.write(e,JSON.stringify(e.value))}};t.exports=function(e,t,n){var r="",i=[],s=(t=t||{}).map&&new l(t.map);s&&t.map.sourceContent&&s.setSourceContent(t.map.file,t.map.sourceContent);var o="",a=[],u=[],p={inForInit:0,lineLength:function(){return r.length},sourceAt:function(e,t){return n?n.substring(e,t):"/* Omitted Non-standard node */"},write:function(e){o=arguments[arguments.length-1];for(var n=1;n=0&&r({self:i,parent:e,field:u[c],index:!0}):l instanceof Object&&i===l&&r({self:i,parent:e,field:u[c]})}})},n),e}function s(t,n){var r=[],s={ecmaVersion:8,allowHashBang:!0,allowReturnOutsideFunction:!0,allowImportExportEverywhere:!0,locations:!0,onComment:r};if((!n||!n.noNodentExtensions||parseInt(o.version)<4)&&(c||(parseInt(o.version)<4&&console.warn("Nodent: Warning - noNodentExtensions option requires acorn >=v4.x. Extensions installed."),e("acorn-es7-plugin")(o),c=!0),s.plugins=s.plugins||{},s.plugins.asyncawait={asyncExits:!0,awaitAnywhere:!0}),n)for(var a in n)"noNodentExtensions"!==a&&(s[a]=n[a]);var u=o.parse(t,s);return i(u,function(e,t,n){for(t();r.length&&e.loc&&e.loc.start.line>=r[0].loc.start.line&&e.loc.end.line>=r[0].loc.end.line;)e.$comments=e.$comments||[],e.$comments.push(r.shift())}),u}var o=e("acorn"),a=e("acorn/dist/walk").make({AwaitExpression:function(e,t,n){n(e.argument,t,"Expression")},SwitchStatement:function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0;r=0)return t}else{var n=i.toSetString(e);if(s.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},r.prototype.at=function(e){if(e>=0&&e>>=5)>0&&(t|=32),n+=r.encode(t)}while(i>0);return n},n.decode=function(e,t,n){var i,s,o=e.length,a=0,u=0;do{if(t>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(s=r.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));i=!!(32&s),a+=(s&=31)<>1;return 1==(1&e)?-t:t}(a),n.rest=t}},{"./base64":16}],16:[function(e,t,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e0?t-u>1?r(u,t,i,s,o,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,i,s,o,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,i,s){if(0===t.length)return-1;var o=r(-1,t.length,e,t,i,s||n.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===i(t[o],t[o-1],!0);)--o;return o}},{}],18:[function(e,t,n){function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=e("./util");r.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},r.prototype.add=function(e){!function(e,t){var n=e.generatedLine,r=t.generatedLine,s=e.generatedColumn,o=t.generatedColumn;return r>n||r==n&&o>=s||i.compareByGeneratedPositionsInflated(e,t)<=0}(this._last,e)?(this._sorted=!1,this._array.push(e)):(this._last=e,this._array.push(e))},r.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=r},{"./util":23}],19:[function(e,t,n){function r(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function i(e,t,n,s){if(n=0){var s=this._originalMappings[i];if(void 0===e.column)for(var o=s.originalLine;s&&s.originalLine===o;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i];else for(var c=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==c;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i]}return r},n.SourceMapConsumer=r,(i.prototype=Object.create(r.prototype)).consumer=r,i.fromSourceMap=function(e){var t=Object.create(i.prototype),n=t._names=c.fromArray(e._names.toArray(),!0),r=t._sources=c.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var o=e._mappings.toArray().slice(),u=t.__generatedMappings=[],l=t.__originalMappings=[],h=0,f=o.length;h1&&(n.source=y+i[1],y+=i[1],n.originalLine=f+i[2],f=n.originalLine,n.originalLine+=1,n.originalColumn=d+i[3],d=n.originalColumn,i.length>4&&(n.name=m+i[4],m+=i[4])),E.push(n),"number"==typeof n.originalLine&&w.push(n)}p(E,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,p(w,a.compareByOriginalPositions),this.__originalMappings=w},i.prototype._findMapping=function(e,t,n,r,i,s){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,s)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var s=a.getArg(i,"source",null);null!==s&&(s=this._sources.at(s),null!=this.sourceRoot&&(s=a.join(this.sourceRoot,s)));var o=a.getArg(i,"name",null);return null!==o&&(o=this._names.at(o)),{source:s,line:a.getArg(i,"originalLine",null),column:a.getArg(i,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=a.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=a.getArg(e,"source");if(null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var n={source:t=this._sources.indexOf(t),originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",r.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===n.source)return{line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=i,(o.prototype=Object.create(r.prototype)).constructor=r,o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},r.prototype._serializeMappings=function(){for(var e,t,n,r,o=0,a=1,u=0,c=0,l=0,p=0,h="",f=this._mappings.toArray(),d=0,y=f.length;d0){if(!s.compareByGeneratedPositionsInflated(t,f[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-o),o=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=i.encode(r-p),p=r,e+=i.encode(t.originalLine-1-c),c=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=i.encode(n-l),l=n)),h+=e}return h},r.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var n=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=r},{"./array-set":14,"./base64-vlq":15,"./mapping-list":18,"./util":23}],22:[function(e,t,n){function r(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[a]=!0,null!=r&&this.add(r)}var i=e("./source-map-generator").SourceMapGenerator,s=e("./util"),o=/(\r?\n)/,a="$$$isSourceNode$$$";r.fromStringWithSourceMap=function(e,t,n){function i(e,t){if(null===e||void 0===e.source)a.add(t);else{var i=n?s.join(n,e.source):e.source;a.add(new r(e.originalLine,e.originalColumn,i,t,e.name))}}var a=new r,u=e.split(o),c=0,l=function(){function e(){return c=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},r.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0;l--)"."===(o=u[l])?u.splice(l,1):".."===o?c++:c>0&&(""===o?(u.splice(l+1,c),c=0):(u.splice(l,2),c--));return""===(t=u.join("/"))&&(t=a?"/":"."),s?(s.path=t,i(s)):t}function o(e){return e}function a(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function u(e,t){return e===t?0:e>t?1:-1}n.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var c=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,l=/^data:.+\,.+$/;n.urlParse=r,n.urlGenerate=i,n.normalize=s,n.join=function(e,t){""===e&&(e="."),""===t&&(t=".");var n=r(t),o=r(e);if(o&&(e=o.path||"/"),n&&!n.scheme)return o&&(n.scheme=o.scheme),i(n);if(n||t.match(l))return t;if(o&&!o.host&&!o.path)return o.host=t,i(o);var a="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=a,i(o)):a},n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(c)},n.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var p=!("__proto__"in Object.create(null));n.toSetString=p?o:function(e){return a(e)?"$"+e:e},n.fromSetString=p?o:function(e){return a(e)?e.slice(1):e},n.compareByOriginalPositions=function(e,t,n){var r=e.source-t.source;return 0!==r?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)||n?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!=(r=e.generatedLine-t.generatedLine)?r:e.name-t.name},n.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)||n?r:0!=(r=e.source-t.source)?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:e.name-t.name},n.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=u(e.source,t.source))?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:u(e.name,t.name)}},{}],24:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":20,"./lib/source-map-generator":21,"./lib/source-node":22}],25:[function(e,t,n){t.exports={_args:[[{raw:"nodent-compiler@>=3.1.3",scope:null,escapedName:"nodent-compiler",name:"nodent-compiler",rawSpec:">=3.1.3",spec:">=3.1.3",type:"range"},"/Users/evgenypoberezkin/Documents/JSON/ajv/node_modules/nodent"]],_from:"nodent-compiler@>=3.1.3",_id:"nodent-compiler@3.1.3",_inCache:!0,_location:"/nodent-compiler",_nodeVersion:"8.4.0",_npmOperationalInternal:{host:"s3://npm-registry-packages",tmp:"tmp/nodent-compiler-3.1.3.tgz_1504874988276_0.6329000329133123"},_npmUser:{name:"matatbread",email:"npm@mailed.me.uk"},_npmVersion:"5.3.0",_phantomChildren:{},_requested:{raw:"nodent-compiler@>=3.1.3",scope:null,escapedName:"nodent-compiler",name:"nodent-compiler",rawSpec:">=3.1.3",spec:">=3.1.3",type:"range"},_requiredBy:["/nodent"],_resolved:"https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.1.3.tgz",_shasum:"6f0f1f8098db251ec773742bb4f33cd0266434b2",_shrinkwrap:null,_spec:"nodent-compiler@>=3.1.3",_where:"/Users/evgenypoberezkin/Documents/JSON/ajv/node_modules/nodent",author:{name:"Mat At Bread",email:"nodent@mailed.me.uk"},bugs:{url:"https://github.com/MatAtBread/nodent/issues"},dependencies:{acorn:">=2.5.2","acorn-es7-plugin":">=1.1.6","source-map":"^0.5.6"},description:"NoDent - Asynchronous Javascript language extensions",devDependencies:{},directories:{},dist:{integrity:"sha512-pcUC9gIgXXI3mbGjESZfVZO4Vgarw63xYZFRdkqxCDnygvvpiAwzwvvJ7rWqskp72Nk3cxWZY/rYxUIkPT14lw==",shasum:"6f0f1f8098db251ec773742bb4f33cd0266434b2",tarball:"https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.1.3.tgz"},engines:"node >= 0.10.0",gitHead:"d72c5767ca302884c3215e6267d4910239add177",homepage:"https://github.com/MatAtBread/nodent-compiler#readme",keywords:["Javascript","ES7","async","await","language","extensions","Node","callback","generator","Promise","asynchronous"],license:"BSD-2-Clause",main:"compiler.js",maintainers:[{name:"matatbread",email:"npm@mailed.me.uk"}],name:"nodent-compiler",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+https://github.com/MatAtBread/nodent-compiler.git"},scripts:{test:"node tests/basic.js # Please install 'nodent' and test the compiler fully from there."},version:"3.1.3"}},{}],26:[function(e,t,n){"use strict";function r(e,t){if(Function.prototype.$asyncspawn||Object.defineProperty(Function.prototype,"$asyncspawn",{value:r,enumerable:!1,configurable:!0,writable:!0}),this instanceof Function){var n=this;return new e(function(e,r){function i(t,n){var o;try{if((o=t.call(s,n)).done){if(o.value!==e){if(o.value&&o.value===o.value.then)return o.value(e,r);e&&e(o.value),e=null}return}o.value.then?o.value.then(function(e){i(s.next,e)},function(e){i(s.throw,e)}):i(s.next,o.value)}catch(e){return r&&r(e),void(r=null)}}var s=n.call(t,e,r);i(s.next)})}}var i=function(e,t){for(var n=t.toString(),r="return "+n,i=n.match(/.*\(([^)]*)\)/)[1],s=/['"]!!!([^'"]*)['"]/g,o=[];;){var a=s.exec(r);if(!a)break;o.push(a)}return o.reverse().forEach(function(t){r=r.slice(0,t.index)+e[t[1]]+r.substr(t.index+t[0].length)}),r=r.replace(/\/\*[^*]*\*\//g," ").replace(/\s+/g," "),new Function(i,r)()}({zousan:e("./zousan").toString(),thenable:e("./thenableFactory").toString()},function e(t,n){function r(){return i.apply(t,arguments)}Function.prototype.$asyncbind||Object.defineProperty(Function.prototype,"$asyncbind",{value:e,enumerable:!1,configurable:!0,writable:!0}),e.trampoline||(e.trampoline=function(e,t,n,r,i){return function s(o){for(;o;){if(o.then)return o=o.then(s,r),i?void 0:o;try{if(o.pop){if(o.length)return o.pop()?t.call(e):o;o=n}else o=o.call(e)}catch(e){return r(e)}}}}),e.LazyThenable||(e.LazyThenable="!!!thenable"(),e.EagerThenable=e.Thenable=(e.EagerThenableFactory="!!!zousan")());var i=this;switch(n){case!0:return new e.Thenable(r);case 0:return new e.LazyThenable(r);case void 0:return r.then=r,r;default:return function(){try{return i.apply(t,arguments)}catch(e){return n(e)}}}});i(),r(),t.exports={$asyncbind:i,$asyncspawn:r}},{"./thenableFactory":27,"./zousan":28}],27:[function(e,t,n){t.exports=function(){function e(e){return e&&e instanceof Object&&"function"==typeof e.then}function t(n,r,i){try{var s=i?i(r):r;if(n===s)return n.reject(new TypeError("Promise resolution loop"));e(s)?s.then(function(e){t(n,e)},function(e){n.reject(e)}):n.resolve(s)}catch(e){n.reject(e)}}function n(){}function r(e){}function i(r,i){var s=new n;try{this._resolver(function(n){return e(n)?n.then(r,i):t(s,n,r)},function(e){t(s,e,i)})}catch(e){t(s,e,i)}return s}function s(e){this._resolver=e,this.then=i}return n.prototype={resolve:r,reject:r,then:function(e,t){this.resolve=e,this.reject=t}},s.resolve=function(e){return s.isThenable(e)?e:{then:function(t){return t(e)}}},s.isThenable=e,s}},{}],28:[function(e,t,n){(function(e){"use strict";t.exports=function(t){function n(e){if(e){var t=this;e(function(e){t.resolve(e)},function(e){t.reject(e)})}}function r(e,t){if("function"==typeof e.y)try{var n=e.y.call(void 0,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.resolve(t)}function i(e,t){if("function"==typeof e.n)try{var n=e.n.call(void 0,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.reject(t)}t=t||"object"==typeof e&&e.nextTick||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,0)};var s=function(){function e(){for(;n.length-r;){try{n[r]()}catch(e){}n[r++]=void 0,r===i&&(n.splice(0,i),r=0)}}var n=[],r=0,i=1024;return function(i){n.push(i),n.length-r==1&&t(e)}}();return n.prototype={resolve:function(e){if(void 0===this.state){if(e===this)return this.reject(new TypeError("Attempt to resolve promise with self"));var t=this;if(e&&("function"==typeof e||"object"==typeof e))try{var n=0,i=e.then;if("function"==typeof i)return void i.call(e,function(e){n++||t.resolve(e)},function(e){n++||t.reject(e)})}catch(e){return void(n||this.reject(e))}this.state=r,this.v=e,t.c&&s(function(){for(var n=0,i=t.c.length;n]*>)(.*)/i,/(.*)(<\/script>)(.*)/i],o=0,a=!0;t=t.split("\n");for(var u=0;u=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;s--){var o=s>=0?arguments[s]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+n||"."},n.normalize=function(e){var i=n.isAbsolute(e),s="/"===o(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!i).join("/"))||i||(e="."),e&&s&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),o=Math.min(i.length,s.length),a=o,u=0;u1)for(var n=1;n= 8.8",https:!0,_http_server:">= 0.11",_linklist:"< 8",module:!0,net:!0,os:!0,path:!0,perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,stream:!0,string_decoder:!0,sys:!0,timers:!0,tls:!0,tty:!0,url:!0,util:!0,v8:">= 1",vm:!0,zlib:!0}},{}],37:[function(e,t,n){(function(n){function r(e){if(!0===e)return!0;for(var t=e.split(" "),n=t[0],r=t[1].split("."),s=0;s<3;++s){var o=Number(i[s]||0),a=Number(r[s]||0);if(o!==a)return"<"===n?o="===n&&o>=a}return!1}var i=n.versions&&n.versions.node&&n.versions.node.split(".")||[],s=e("./core.json"),o={};for(var a in s)Object.prototype.hasOwnProperty.call(s,a)&&(o[a]=r(s[a]));t.exports=o}).call(this,e("_process"))},{"./core.json":36,_process:32}],38:[function(e,t,n){var r=e("path"),i=e("fs"),s=r.parse||e("path-parse");t.exports=function(e,t){var n=t&&t.moduleDirectory?[].concat(t.moduleDirectory):["node_modules"],o=r.resolve(e);if(t&&!1===t.preserveSymlinks)try{o=i.realpathSync(o)}catch(e){if("ENOENT"!==e.code)throw e}var a="/";/^([A-Za-z]:)/.test(o)?a="":/^\\\\/.test(o)&&(a="\\\\");for(var u=[o],c=s(o);c.dir!==u[u.length-1];)u.push(c.dir),c=s(c.dir);var l=u.reduce(function(e,t){return e.concat(n.map(function(e){return r.join(a,t,e)}))},[]);return t&&t.paths?l.concat(t.paths):l}},{fs:7,path:30,"path-parse":31}],39:[function(e,t,n){var r=e("./core"),i=e("fs"),s=e("path"),o=e("./caller.js"),a=e("./node-modules-paths.js");t.exports=function(e,t){function n(e){if(l(e))return e;for(var t=0;t"))}return Object.keys(hostOptions).forEach(function(k){"host"===parseOpts[k]&&(parseOpts[k]=function(){try{return eval(hostOptions[k]),!0}catch(e){return!1}}())}),parseOpts.promises||parseOpts.es7||parseOpts.generators||parseOpts.engine?((parseOpts.promises||parseOpts.es7)&&parseOpts.generators&&(log("No valid 'use nodent' directive, assumed -es7 mode"),parseOpts=optionSets.es7),(parseOpts.generators||parseOpts.engine)&&(parseOpts.promises=!0),parseOpts.promises&&(parseOpts.es7=!0),parseOpts):null}function stripBOM(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),"#!"===e.substring(0,2)&&(e="//"+e),e}function compileNodentedFile(e,t){return t=t||e.log,function(n,r,i){var s=stripBOM(fs.readFileSync(r,"utf8")),o=e.parse(s,r,i);i=i||parseCompilerOptions(o.ast,t,r),e.asynchronize(o,void 0,i,t),e.prettyPrint(o,i),n._compile(o.code,o.filename)}}function asyncify(e){return e=e||Thenable,function(t,n,r){if(Array.isArray(n)){var i=n;n=function(e,t){return i.indexOf(e)>=0}}else n=n||function(e,t){return!(e.match(/Sync$/)&&e.replace(/Sync$/,"")in t)};r||(r="");var s=Object.create(t);for(var o in s)!function(){var i=o;try{"function"!=typeof t[i]||s[i+r]&&s[i+r].isAsync||!n(i,s)||(s[i+r]=function(){var n=Array.prototype.slice.call(arguments);return new e(function(e,r){var s=function(t,n){if(t)return r(t);switch(arguments.length){case 0:return e();case 2:return e(n);default:return e(Array.prototype.slice.call(arguments,1))}};n.length>t[i].length?n.push(s):n[t[i].length-1]=s;t[i].apply(t,n)})},s[i+r].isAsync=!0)}catch(e){}}();return s.super=t,s}}function generateRequestHandler(e,t,n){var r={},i=this;t||(t=/\.njs$/),n?n.compiler||(n.compiler={}):n={compiler:{}};var s=copyObj([NodentCompiler.initialCodeGenOpts,n.compiler]);return function(o,a,u){function c(e){a.statusCode=500,a.write(e.toString()),a.end()}if(r[o.url])return a.setHeader("Content-Type",r[o.url].contentType),n.setHeaders&&n.setHeaders(a),a.write(r[o.url].output),void a.end();if(!(o.url.match(t)||n.htmlScriptRegex&&o.url.match(n.htmlScriptRegex)))return u&&u();var l=e+o.url;if(n.extensions&&!fs.existsSync(l))for(var p=0;p=0?this.covers[n]=require(e):this.covers[n]=require(__dirname+"/covers/"+e)),this.covers[n](this,t)}function prepareMappedStackTrace(e,t){return e+t.map(function(e){var t=e.getFileName();if(t&&NodentCompiler.prototype.smCache[t]){var n=NodentCompiler.prototype.smCache[t].smc.originalPositionFor({line:e.getLineNumber(),column:e.getColumnNumber()});if(n&&n.line){var r=e.toString();return"\n at "+r.substring(0,r.length-1)+" => …"+n.source+":"+n.line+":"+n.column+(e.getFunctionName()?")":"")}}return"\n at "+e}).join("")}function setGlobalEnvironment(e){var t={};t[defaultCodeGenOpts.$asyncbind]={value:$asyncbind,writable:!0,enumerable:!1,configurable:!0},t[defaultCodeGenOpts.$asyncspawn]={value:$asyncspawn,writable:!0,enumerable:!1,configurable:!0};try{Object.defineProperties(Function.prototype,t)}catch(t){e.log("Function prototypes already assigned: ",t.messsage)}defaultCodeGenOpts[defaultCodeGenOpts.$error]in global||(global[defaultCodeGenOpts[defaultCodeGenOpts.$error]]=globalErrorHandler),e.augmentObject&&Object.defineProperties(Object.prototype,{asyncify:{value:function(e,t,n){return asyncify(e)(this,t,n)},writable:!0,configurable:!0},isThenable:{value:function(){return Thenable.isThenable(this)},writable:!0,configurable:!0}}),Object[defaultCodeGenOpts.$makeThenable]=Thenable.resolve}function initialize(e){function t(n,r){if(!r.match(/nodent\/nodent\.js$/)){if(r.match(/node_modules\/nodent\/.*\.js$/))return stdJSLoader(n,r);for(var o=0;ot[n])return 1}return 0}(u.version,NodentCompiler.prototype.version)<0&&(u.originalNodentLoader=n.exports,n.exports=function(){var t=require.extensions[".js"],n=u.originalNodentLoader.apply(this,arguments);return u.jsCompiler=require.extensions[".js"],require.extensions[".js"]=t,setGlobalEnvironment(e),n},Object.keys(u.originalNodentLoader).forEach(function(e){n.exports[e]=u.originalNodentLoader[e]}),i.push(u),i=i.sort(function(e,t){return t.path.length-e.path.length})))}function n(t){if(Array.isArray(t))return t.forEach(n);if(require.extensions[t]){Object.keys(e).filter(function(t){return compiler[t]!=e[t]}).length&&e.log("File extension "+t+" already configured for async/await compilation.")}require.extensions[t]=compileNodentedFile(compiler,e.log)}if(e){for(var r in e)if("use"!==r&&!config.hasOwnProperty(r))throw new Error("NoDent: unknown option: "+r+"="+JSON.stringify(e[r]))}else e={};compiler?compiler.setOptions(e):(Object.keys(config).forEach(function(t){t in e||(e[t]=config[t])}),compiler=new NodentCompiler(e)),e.dontMapStackTraces||(Error.prepareStackTrace=prepareMappedStackTrace),setGlobalEnvironment(e);var i=[];if(!e.dontInstallRequireHook){if(!stdJSLoader){stdJSLoader=require.extensions[".js"];var s=compileNodentedFile(compiler,e.log);require.extensions[".js"]=t}e.extension&&n(e.extension)}return e.use&&(Array.isArray(e.use)?(e.log("Warning: nodent({use:[...]}) is deprecated. Use nodent.require(module,options)\n"+(new Error).stack.split("\n")[2]),e.use.length&&e.use.forEach(function(e){compiler[e]=compiler.require(e)})):(e.log("Warning: nodent({use:{...}}) is deprecated. Use nodent.require(module,options)\n"+(new Error).stack.split("\n")[2]),Object.keys(e.use).forEach(function(t){compiler[t]=compiler.require(t,e.use[t])}))),compiler}function runFromCLI(){function e(e,n){try{var s,o;if(r.fromast){if(e=JSON.parse(e),s={origCode:"",filename:t,ast:e},!(o=parseCompilerOptions(e,i.log))){var a=r.use?'"use nodent-'+r.use+'";':'"use nodent";';o=parseCompilerOptions(a,i.log),console.warn("/* "+t+": No 'use nodent*' directive, assumed "+a+" */")}}else(o=parseCompilerOptions(r.use?'"use nodent-'+r.use+'";':e,i.log))||(o=parseCompilerOptions('"use nodent";',i.log),r.dest||console.warn("/* "+t+": 'use nodent*' directive missing/ignored, assumed 'use nodent;' */")),s=i.parse(e,t,o);if(r.parseast||r.pretty||i.asynchronize(s,void 0,o,i.log),i.prettyPrint(s,o),r.out||r.pretty||r.dest){if(r.dest&&!n)throw new Error("Can't write unknown file to "+r.dest);var u="";r.runtime&&(u+="Function.prototype.$asyncbind = "+Function.prototype.$asyncbind.toString()+";\n",u+="global.$error = global.$error || "+global.$error.toString()+";\n"),u+=s.code,n&&r.dest?(fs.writeFileSync(r.dest+n,u),console.log("Compiled",r.dest+n)):console.log(u)}(r.minast||r.parseast)&&console.log(JSON.stringify(s.ast,function(e,t){return"$"===e[0]||e.match(/^(start|end|loc)$/)?void 0:t},2,null)),r.ast&&console.log(JSON.stringify(s.ast,function(e,t){return"$"===e[0]?void 0:t},0)),r.exec&&new Function(s.code)()}catch(e){console.error(e)}}var t,n=require("path"),r=(process.env.NODENT_OPTS&&JSON.parse(process.env.NODENT_OPTS),function(e){for(var t=[],n=e||2;n0",engine:"(async ()=>0)",noRuntime:"Promise"};NodentCompiler.prototype.Thenable=Thenable,NodentCompiler.prototype.EagerThenable=$asyncbind.EagerThenableFactory,NodentCompiler.prototype.asyncify=asyncify,NodentCompiler.prototype.require=requireCover,NodentCompiler.prototype.generateRequestHandler=generateRequestHandler,NodentCompiler.prototype.$asyncspawn=$asyncspawn,NodentCompiler.prototype.$asyncbind=$asyncbind,NodentCompiler.prototype.parseCompilerOptions=parseCompilerOptions,$asyncbind.call($asyncbind);var compiler;initialize.setDefaultCompileOptions=function(e,t){return e&&Object.keys(e).forEach(function(t){if(!(t in defaultCodeGenOpts))throw new Error("NoDent: unknown compiler option: "+t);defaultCodeGenOpts[t]=e[t]}),t&&Object.keys(t).forEach(function(e){if(!(e in t))throw new Error("NoDent: unknown configuration option: "+e);config[e]=t[e]}),initialize},initialize.setCompileOptions=function(e,t){return optionSet[e]=optionSet[e]||copyObj([defaultCodeGenOpts]),t&&Object.keys(t).forEach(function(n){if(!(n in defaultCodeGenOpts))throw new Error("NoDent: unknown compiler option: "+n);optionSet[e][n]=t[n]}),initialize},initialize.asyncify=asyncify,initialize.Thenable=$asyncbind.Thenable,initialize.EagerThenable=$asyncbind.EagerThenableFactory,module.exports=initialize,require.main===module&&process.argv.length>=3&&runFromCLI()}).call(this,require("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},"/node_modules/nodent")},{"./htmlScriptParser":29,_process:32,fs:7,"nodent-compiler":10,"nodent-runtime":26,path:30,resolve:33}]},{},[]); \ No newline at end of file +/* nodent 3.1.5: NoDent - Asynchronous Javascript language extensions */ +require=function e(t,n,r){function i(o,a){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!a&&u)return u(o,!0);if(s)return s(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return i(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var s="function"==typeof require&&require,o=0;o=t}function i(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(l,"$1 $3")),e.test(r)}function s(e,t,n,r){var i=new e.constructor(e.options,e.input,t);if(n)for(var s in n)i[s]=n[s];var o=e,a=i;return["inFunction","inAsyncFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in o&&(a[e]=o[e])}),r&&(i.options.preserveParens=!0),i.nextToken(),i}var o={},a=/^async[\t ]+(return|throw)/,u=/^async[\t ]+function/,c=/^\s*[():;]/,l=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g,p=/\s*(get|set)\s*\(/;t.exports=function(e,t){var n=function(){};e.extend("initialContext",function(r){return function(){return this.options.ecmaVersion<7&&(n=function(t){e.raise(t.start,"async/await keywords only available when ecmaVersion>=7")}),this.reservedWords=new RegExp(this.reservedWords.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrict=new RegExp(this.reservedWordsStrict.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrictBind=new RegExp(this.reservedWordsStrictBind.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.inAsyncFunction=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),r.apply(this,arguments)}}),e.extend("shouldParseExportStatement",function(e){return function(){return!("name"!==this.type.label||"async"!==this.value||!i(u,this))||e.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,o=this.startLoc;if("name"===this.type.label)if(i(u,this,!0)){var c=this.inAsyncFunction;try{return this.inAsyncFunction=!0,this.next(),(l=this.parseStatement(n,r)).async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}finally{this.inAsyncFunction=c}}else if("object"==typeof t&&t.asyncExits&&i(a,this)){this.next();var l;return(l=this.parseStatement(n,r)).async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(t){var n=e.apply(this,arguments);return this.inAsyncFunction&&"await"===n.name&&0===arguments.length&&this.raise(n.start,"'await' is reserved within async functions"),n}}),e.extend("parseExprAtom",function(e){return function(i){var a,u=this.start,l=this.startLoc,p=e.apply(this,arguments);if("Identifier"===p.type)if("async"!==p.name||r(this,p.end)){if("await"===p.name){var h=this.startNodeAt(p.start,p.loc&&p.loc.start);if(this.inAsyncFunction)return a=this.parseExprSubscripts(),h.operator="await",h.argument=a,h=this.finishNodeAt(h,"AwaitExpression",a.end,a.loc&&a.loc.end),n(h),h;if(this.input.slice(p.end).match(c))return t.awaitAnywhere||"module"!==this.options.sourceType?p:this.raise(p.start,"'await' is reserved within modules");if("object"==typeof t&&t.awaitAnywhere&&(u=this.start,(a=s(this,u-4).parseExprSubscripts()).end<=u))return a=s(this,u).parseExprSubscripts(),h.operator="await",h.argument=a,h=this.finishNodeAt(h,"AwaitExpression",a.end,a.loc&&a.loc.end),this.pos=a.end,this.end=a.end,this.endLoc=a.endLoc,this.next(),n(h),h;if(!t.awaitAnywhere&&"module"===this.options.sourceType)return this.raise(p.start,"'await' is reserved within modules")}}else{var f=this.inAsyncFunction;try{this.inAsyncFunction=!0;var d=this,y=!1,m={parseFunctionBody:function(e,t){try{var n=y;return y=!0,d.parseFunctionBody.apply(this,arguments)}finally{y=n}},raise:function(){try{return d.raise.apply(this,arguments)}catch(e){throw y?e:o}}};if("SequenceExpression"===(a=s(this,this.start,m,!0).parseExpression()).type&&(a=a.expressions[0]),"CallExpression"===a.type&&(a=a.callee),"FunctionExpression"===a.type||"FunctionDeclaration"===a.type||"ArrowFunctionExpression"===a.type)return"SequenceExpression"===(a=s(this,this.start,m).parseExpression()).type&&(a=a.expressions[0]),"CallExpression"===a.type&&(a=a.callee),a.async=!0,a.start=u,a.loc&&(a.loc.start=l),a.range&&(a.range[0]=u),this.pos=a.end,this.end=a.end,this.endLoc=a.endLoc,this.next(),n(a),a}catch(e){if(e!==o)throw e}finally{this.inAsyncFunction=f}}return p}}),e.extend("finishNodeAt",function(e){return function(t,n,r,i){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}}),e.extend("finishNode",function(e){return function(t,n){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}}),e.extend("parsePropertyName",function(e){return function(t){t.key&&t.key.name;var i=e.apply(this,arguments);return"Identifier"!==i.type||"async"!==i.name||r(this,i.end)||this.input.slice(i.end).match(c)||(p.test(this.input.slice(i.end))?(i=e.apply(this,arguments),t.__asyncValue=!0):(n(t),"set"===t.kind&&this.raise(i.start,"'set (value)' cannot be be async"),"Identifier"===(i=e.apply(this,arguments)).type&&"set"===i.name&&this.raise(i.start,"'set (value)' cannot be be async"),t.__asyncValue=!0)),i}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i;n.__asyncValue&&("constructor"===n.kind&&this.raise(n.start,"class constructor() cannot be be async"),i=this.inAsyncFunction,this.inAsyncFunction=!0);var s=e.apply(this,arguments);return this.inAsyncFunction=i,s}}),e.extend("parseMethod",function(e){return function(t){var n;this.__currentProperty&&this.__currentProperty.__asyncValue&&(n=this.inAsyncFunction,this.inAsyncFunction=!0);var r=e.apply(this,arguments);return this.inAsyncFunction=n,r}}),e.extend("parsePropertyValue",function(e){return function(t,n,r,i,s,o){var a=this.__currentProperty;this.__currentProperty=t;var u;t.__asyncValue&&(u=this.inAsyncFunction,this.inAsyncFunction=!0);var c=e.apply(this,arguments);return this.inAsyncFunction=u,this.__currentProperty=a,c}})}},{}],3:[function(e,t,n){function r(e,t,n){var r=new e.constructor(e.options,e.input,t);if(n)for(var i in n)r[i]=n[i];var s=e,o=r;return["inFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in s&&(o[e]=s[e])}),r.nextToken(),r}var i=/^async[\t ]+(return|throw)/,s=/^\s*[):;]/,o=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g;t.exports=function(e,t){t&&"object"==typeof t||(t={}),e.extend("parse",function(n){return function(){return this.inAsync=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),n.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,a=this.startLoc;if("name"===this.type.label&&t.asyncExits&&function(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(o,"$1 $3")),e.test(r)}(i,this)){this.next();var u=this.parseStatement(n,r);return u.async=!0,u.start=s,u.loc&&(u.loc.start=a),u.range&&(u.range[0]=s),u}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(n){return"module"===this.options.sourceType&&this.options.ecmaVersion>=8&&t.awaitAnywhere?e.call(this,!0):e.apply(this,arguments)}}),e.extend("parseExprAtom",function(e){var n={};return function(i){var s,o=this.start,a=(this.startLoc,e.apply(this,arguments));if("Identifier"===a.type&&"await"===a.name&&!this.inAsync&&t.awaitAnywhere){var u=this.startNodeAt(a.start,a.loc&&a.loc.start);o=this.start;var c={raise:function(){try{return pp.raise.apply(this,arguments)}catch(e){throw n}}};try{if((s=r(this,o-4,c).parseExprSubscripts()).end<=o)return s=r(this,o,c).parseExprSubscripts(),u.argument=s,u=this.finishNodeAt(u,"AwaitExpression",s.end,s.loc&&s.loc.end),this.pos=s.end,this.end=s.end,this.endLoc=s.endLoc,this.next(),u}catch(e){if(e===n)return a;throw e}}return a}});var n={undefined:!0,get:!0,set:!0,static:!0,async:!0,constructor:!0};e.extend("parsePropertyName",function(e){return function(t){var r=t.key&&t.key.name,i=e.apply(this,arguments);return"get"===this.value&&(t.__maybeStaticAsyncGetter=!0),n[this.value]?i:("Identifier"!==i.type||"async"!==i.name&&"async"!==r||function(e,t){return e.lineStart>=t}(this,i.end)||this.input.slice(i.end).match(s)?delete t.__maybeStaticAsyncGetter:"set"===t.kind||"set"===i.name?this.raise(i.start,"'set (value)' cannot be be async"):(this.__isAsyncProp=!0,"Identifier"===(i=e.apply(this,arguments)).type&&"set"===i.name&&this.raise(i.start,"'set (value)' cannot be be async")),i)}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i=e.apply(this,arguments);return n.__maybeStaticAsyncGetter&&(delete n.__maybeStaticAsyncGetter,"get"!==n.key.name&&(n.kind="get")),i}}),e.extend("parseFunctionBody",function(e){return function(t,n){var r=this.inAsync;this.__isAsyncProp&&(t.async=!0,this.inAsync=!0,delete this.__isAsyncProp);var i=e.apply(this,arguments);return this.inAsync=r,i}})}},{}],4:[function(e,t,n){!function(e,r){"object"==typeof n&&void 0!==t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.acorn=e.acorn||{})}(this,function(e){"use strict";function t(e,t){for(var n=65536,r=0;re)return!1;if((n+=t[r+1])>=e)return!0}}function n(e,n){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&x.test(String.fromCharCode(e)):!1!==n&&t(e,E)))}function r(e,n){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&w.test(String.fromCharCode(e)):!1!==n&&(t(e,E)||t(e,S)))))}function i(e,t){return new k(e,{beforeExpr:!0,binop:t})}function s(e,t){return void 0===t&&(t={}),t.keyword=e,_[e]=new k(e,t)}function o(e){return 10===e||13===e||8232===e||8233===e}function a(e,t){return $.call(e,t)}function u(e,t){for(var n=1,r=0;;){T.lastIndex=r;var i=T.exec(e);if(!(i&&i.index=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),R(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return R(t.onComment)&&(t.onComment=function(e,t){return function(n,r,i,s,o,a){var u={type:n?"Block":"Line",value:r,start:i,end:s};e.locations&&(u.loc=new j(this,o,a)),e.ranges&&(u.range=[i,s]),t.push(u)}}(t,t.onComment)),t}function l(e){return new RegExp("^(?:"+e.replace(/ /g,"|")+")$")}function p(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=-1}function h(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}function f(e,t,n,r){try{return new RegExp(e,t)}catch(e){if(void 0!==n)throw e instanceof SyntaxError&&r.raise(n,"Error parsing regular expression: "+e.message),e}}function d(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}var y={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},m="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",g={5:m,6:m+" const class extends export import super"},v="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",b="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",x=new RegExp("["+v+"]"),w=new RegExp("["+v+b+"]");v=b=null;var E=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],S=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],k=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null},A={beforeExpr:!0},C={startsExpr:!0},_={},L={num:new k("num",C),regexp:new k("regexp",C),string:new k("string",C),name:new k("name",C),eof:new k("eof"),bracketL:new k("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new k("]"),braceL:new k("{",{beforeExpr:!0,startsExpr:!0}),braceR:new k("}"),parenL:new k("(",{beforeExpr:!0,startsExpr:!0}),parenR:new k(")"),comma:new k(",",A),semi:new k(";",A),colon:new k(":",A),dot:new k("."),question:new k("?",A),arrow:new k("=>",A),template:new k("template"),invalidTemplate:new k("invalidTemplate"),ellipsis:new k("...",A),backQuote:new k("`",C),dollarBraceL:new k("${",{beforeExpr:!0,startsExpr:!0}),eq:new k("=",{beforeExpr:!0,isAssign:!0}),assign:new k("_=",{beforeExpr:!0,isAssign:!0}),incDec:new k("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new k("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:i("||",1),logicalAND:i("&&",2),bitwiseOR:i("|",3),bitwiseXOR:i("^",4),bitwiseAND:i("&",5),equality:i("==/!=/===/!==",6),relational:i("/<=/>=",7),bitShift:i("<>/>>>",8),plusMin:new k("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:i("%",10),star:i("*",10),slash:i("/",10),starstar:new k("**",{beforeExpr:!0}),_break:s("break"),_case:s("case",A),_catch:s("catch"),_continue:s("continue"),_debugger:s("debugger"),_default:s("default",A),_do:s("do",{isLoop:!0,beforeExpr:!0}),_else:s("else",A),_finally:s("finally"),_for:s("for",{isLoop:!0}),_function:s("function",C),_if:s("if"),_return:s("return",A),_switch:s("switch"),_throw:s("throw",A),_try:s("try"),_var:s("var"),_const:s("const"),_while:s("while",{isLoop:!0}),_with:s("with"),_new:s("new",{beforeExpr:!0,startsExpr:!0}),_this:s("this",C),_super:s("super",C),_class:s("class",C),_extends:s("extends",A),_export:s("export"),_import:s("import"),_null:s("null",C),_true:s("true",C),_false:s("false",C),_in:s("in",{beforeExpr:!0,binop:7}),_instanceof:s("instanceof",{beforeExpr:!0,binop:7}),_typeof:s("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:s("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:s("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},O=/\r\n?|\n|\u2028|\u2029/,T=new RegExp(O.source,"g"),N=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,P=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,F=Object.prototype,$=F.hasOwnProperty,B=F.toString,R=Array.isArray||function(e){return"[object Array]"===B.call(e)},I=function(e,t){this.line=e,this.column=t};I.prototype.offset=function(e){return new I(this.line,this.column+e)};var j=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)},D={ecmaVersion:7,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowHashBang:!1,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1,plugins:{}},M={},V=function(e,t,n){this.options=e=c(e),this.sourceFile=e.sourceFile,this.keywords=l(g[e.ecmaVersion>=6?6:5]);var r="";if(!e.allowReserved){for(var i=e.ecmaVersion;!(r=y[i]);i--);"module"==e.sourceType&&(r+=" await")}this.reservedWords=l(r);var s=(r?r+" ":"")+y.strict;this.reservedWordsStrict=l(s),this.reservedWordsStrictBind=l(s+" "+y.strictBind),this.input=String(t),this.containsEsc=!1,this.loadPlugins(e.plugins),n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(O).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=L.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===e.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterFunctionScope()};V.prototype.isKeyword=function(e){return this.keywords.test(e)},V.prototype.isReservedWord=function(e){return this.reservedWords.test(e)},V.prototype.extend=function(e,t){this[e]=t(this[e])},V.prototype.loadPlugins=function(e){for(var t in e){var n=M[t];if(!n)throw new Error("Plugin '"+t+"' not found");n(this,e[t])}},V.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)};var q=V.prototype,U=/^(?:'((?:\\.|[^'])*?)'|"((?:\\.|[^"])*?)"|;)/;q.strictDirective=function(e){for(;;){P.lastIndex=e,e+=P.exec(this.input)[0].length;var t=U.exec(this.input.slice(e));if(!t)return!1;if("use strict"==(t[1]||t[2]))return!0;e+=t[0].length}},q.eat=function(e){return this.type===e&&(this.next(),!0)},q.isContextual=function(e){return this.type===L.name&&this.value===e},q.eatContextual=function(e){return this.value===e&&this.eat(L.name)},q.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},q.canInsertSemicolon=function(){return this.type===L.eof||this.type===L.braceR||O.test(this.input.slice(this.lastTokEnd,this.start))},q.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},q.semicolon=function(){this.eat(L.semi)||this.insertSemicolon()||this.unexpected()},q.afterTrailingComma=function(e,t){if(this.type==e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},q.expect=function(e){this.eat(e)||this.unexpected()},q.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")},q.checkPatternErrors=function(e,t){if(e){e.trailingComma>-1&&this.raiseRecoverable(e.trailingComma,"Comma is not permitted after the rest element");var n=t?e.parenthesizedAssign:e.parenthesizedBind;n>-1&&this.raiseRecoverable(n,"Parenthesized pattern")}},q.checkExpressionErrors=function(e,t){var n=e?e.shorthandAssign:-1;if(!t)return n>=0;n>-1&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns")},q.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos=6&&(e.sourceType=this.options.sourceType),this.finishNode(e,"Program")};var W={kind:"loop"},G={kind:"switch"};z.isLet=function(){if(this.type!==L.name||this.options.ecmaVersion<6||"let"!=this.value)return!1;P.lastIndex=this.pos;var e=P.exec(this.input),t=this.pos+e[0].length,i=this.input.charCodeAt(t);if(91===i||123==i)return!0;if(n(i,!0)){for(var s=t+1;r(this.input.charCodeAt(s),!0);)++s;var o=this.input.slice(t,s);if(!this.isKeyword(o))return!0}return!1},z.isAsyncFunction=function(){if(this.type!==L.name||this.options.ecmaVersion<8||"async"!=this.value)return!1;P.lastIndex=this.pos;var e=P.exec(this.input),t=this.pos+e[0].length;return!(O.test(this.input.slice(this.pos,t))||"function"!==this.input.slice(t,t+8)||t+8!=this.input.length&&r(this.input.charAt(t+8)))},z.parseStatement=function(e,t,n){var r,i=this.type,s=this.startNode();switch(this.isLet()&&(i=L._var,r="let"),i){case L._break:case L._continue:return this.parseBreakContinueStatement(s,i.keyword);case L._debugger:return this.parseDebuggerStatement(s);case L._do:return this.parseDoStatement(s);case L._for:return this.parseForStatement(s);case L._function:return!e&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(s,!1);case L._class:return e||this.unexpected(),this.parseClass(s,!0);case L._if:return this.parseIfStatement(s);case L._return:return this.parseReturnStatement(s);case L._switch:return this.parseSwitchStatement(s);case L._throw:return this.parseThrowStatement(s);case L._try:return this.parseTryStatement(s);case L._const:case L._var:return r=r||this.value,e||"var"==r||this.unexpected(),this.parseVarStatement(s,r);case L._while:return this.parseWhileStatement(s);case L._with:return this.parseWithStatement(s);case L.braceL:return this.parseBlock();case L.semi:return this.parseEmptyStatement(s);case L._export:case L._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),i===L._import?this.parseImport(s):this.parseExport(s,n);default:if(this.isAsyncFunction()&&e)return this.next(),this.parseFunctionStatement(s,!0);var o=this.value,a=this.parseExpression();return i===L.name&&"Identifier"===a.type&&this.eat(L.colon)?this.parseLabeledStatement(s,o,a):this.parseExpressionStatement(s,a)}},z.parseBreakContinueStatement=function(e,t){var n="break"==t;this.next(),this.eat(L.semi)||this.insertSemicolon()?e.label=null:this.type!==L.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var r=0;r=6?this.eat(L.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},z.parseForStatement=function(e){if(this.next(),this.labels.push(W),this.enterLexicalScope(),this.expect(L.parenL),this.type===L.semi)return this.parseFor(e,null);var t=this.isLet();if(this.type===L._var||this.type===L._const||t){var n=this.startNode(),r=t?"let":this.value;return this.next(),this.parseVar(n,!0,r),this.finishNode(n,"VariableDeclaration"),!(this.type===L._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==n.declarations.length||"var"!==r&&n.declarations[0].init?this.parseFor(e,n):this.parseForIn(e,n)}var i=new p,s=this.parseExpression(!0,i);return this.type===L._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.toAssignable(s),this.checkLVal(s),this.checkPatternErrors(i,!0),this.parseForIn(e,s)):(this.checkExpressionErrors(i,!0),this.parseFor(e,s))},z.parseFunctionStatement=function(e,t){return this.next(),this.parseFunction(e,!0,!1,t)},z.isFunction=function(){return this.type===L._function||this.isAsyncFunction()},z.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!this.strict&&this.isFunction()),e.alternate=this.eat(L._else)?this.parseStatement(!this.strict&&this.isFunction()):null,this.finishNode(e,"IfStatement")},z.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(L.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},z.parseSwitchStatement=function(e){this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(L.braceL),this.labels.push(G),this.enterLexicalScope();for(var t,n=!1;this.type!=L.braceR;)if(this.type===L._case||this.type===L._default){var r=this.type===L._case;t&&this.finishNode(t,"SwitchCase"),e.cases.push(t=this.startNode()),t.consequent=[],this.next(),r?t.test=this.parseExpression():(n&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),n=!0,t.test=null),this.expect(L.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(!0));return this.exitLexicalScope(),t&&this.finishNode(t,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},z.parseThrowStatement=function(e){return this.next(),O.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var J=[];z.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===L._catch){var t=this.startNode();this.next(),this.expect(L.parenL),t.param=this.parseBindingAtom(),this.enterLexicalScope(),this.checkLVal(t.param,"let"),this.expect(L.parenR),t.body=this.parseBlock(!1),this.exitLexicalScope(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(L._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},z.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},z.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(W),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"WhileStatement")},z.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},z.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},z.parseLabeledStatement=function(e,t,n){for(var r=0,i=this.labels;r=0;o--){var a=this.labels[o];if(a.statementStart!=e.start)break;a.statementStart=this.start,a.kind=s}return this.labels.push({name:t,kind:s,statementStart:this.start}),e.body=this.parseStatement(!0),("ClassDeclaration"==e.body.type||"VariableDeclaration"==e.body.type&&"var"!=e.body.kind||"FunctionDeclaration"==e.body.type&&(this.strict||e.body.generator))&&this.raiseRecoverable(e.body.start,"Invalid labeled declaration"),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},z.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},z.parseBlock=function(e){void 0===e&&(e=!0);var t=this.startNode();for(t.body=[],this.expect(L.braceL),e&&this.enterLexicalScope();!this.eat(L.braceR);){var n=this.parseStatement(!0);t.body.push(n)}return e&&this.exitLexicalScope(),this.finishNode(t,"BlockStatement")},z.parseFor=function(e,t){return e.init=t,this.expect(L.semi),e.test=this.type===L.semi?null:this.parseExpression(),this.expect(L.semi),e.update=this.type===L.parenR?null:this.parseExpression(),this.expect(L.parenR),this.exitLexicalScope(),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"ForStatement")},z.parseForIn=function(e,t){var n=this.type===L._in?"ForInStatement":"ForOfStatement";return this.next(),e.left=t,e.right=this.parseExpression(),this.expect(L.parenR),this.exitLexicalScope(),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,n)},z.parseVar=function(e,t,n){for(e.declarations=[],e.kind=n;;){var r=this.startNode();if(this.parseVarId(r,n),this.eat(L.eq)?r.init=this.parseMaybeAssign(t):"const"!==n||this.type===L._in||this.options.ecmaVersion>=6&&this.isContextual("of")?"Identifier"==r.id.type||t&&(this.type===L._in||this.isContextual("of"))?r.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(r,"VariableDeclarator")),!this.eat(L.comma))break}return e},z.parseVarId=function(e,t){e.id=this.parseBindingAtom(t),this.checkLVal(e.id,t,!1)},z.parseFunction=function(e,t,n,r){this.initFunction(e),this.options.ecmaVersion>=6&&!r&&(e.generator=this.eat(L.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&&(e.id="nullableID"===t&&this.type!=L.name?null:this.parseIdent(),e.id&&this.checkLVal(e.id,"var"));var i=this.inGenerator,s=this.inAsync,o=this.yieldPos,a=this.awaitPos,u=this.inFunction;return this.inGenerator=e.generator,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),t||(e.id=this.type==L.name?this.parseIdent():null),this.parseFunctionParams(e),this.parseFunctionBody(e,n),this.inGenerator=i,this.inAsync=s,this.yieldPos=o,this.awaitPos=a,this.inFunction=u,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},z.parseFunctionParams=function(e){this.expect(L.parenL),e.params=this.parseBindingList(L.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},z.parseClass=function(e,t){this.next(),this.parseClassId(e,t),this.parseClassSuper(e);var n=this.startNode(),r=!1;for(n.body=[],this.expect(L.braceL);!this.eat(L.braceR);)if(!this.eat(L.semi)){var i=this.startNode(),s=this.eat(L.star),o=!1,a=this.type===L.name&&"static"===this.value;this.parsePropertyName(i),i.static=a&&this.type!==L.parenL,i.static&&(s&&this.unexpected(),s=this.eat(L.star),this.parsePropertyName(i)),this.options.ecmaVersion>=8&&!s&&!i.computed&&"Identifier"===i.key.type&&"async"===i.key.name&&this.type!==L.parenL&&!this.canInsertSemicolon()&&(o=!0,this.parsePropertyName(i)),i.kind="method";var u=!1;if(!i.computed){var c=i.key;s||o||"Identifier"!==c.type||this.type===L.parenL||"get"!==c.name&&"set"!==c.name||(u=!0,i.kind=c.name,c=this.parsePropertyName(i)),!i.static&&("Identifier"===c.type&&"constructor"===c.name||"Literal"===c.type&&"constructor"===c.value)&&(r&&this.raise(c.start,"Duplicate constructor in the same class"),u&&this.raise(c.start,"Constructor can't have get/set modifier"),s&&this.raise(c.start,"Constructor can't be a generator"),o&&this.raise(c.start,"Constructor can't be an async method"),i.kind="constructor",r=!0)}if(this.parseClassMethod(n,i,s,o),u){var l="get"===i.kind?0:1;if(i.value.params.length!==l){var p=i.value.start;"get"===i.kind?this.raiseRecoverable(p,"getter should have no params"):this.raiseRecoverable(p,"setter should have exactly one param")}else"set"===i.kind&&"RestElement"===i.value.params[0].type&&this.raiseRecoverable(i.value.params[0].start,"Setter cannot use rest params")}}return e.body=this.finishNode(n,"ClassBody"),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},z.parseClassMethod=function(e,t,n,r){t.value=this.parseMethod(n,r),e.body.push(this.finishNode(t,"MethodDefinition"))},z.parseClassId=function(e,t){e.id=this.type===L.name?this.parseIdent():!0===t?this.unexpected():null},z.parseClassSuper=function(e){e.superClass=this.eat(L._extends)?this.parseExprSubscripts():null},z.parseExport=function(e,t){if(this.next(),this.eat(L.star))return this.expectContextual("from"),e.source=this.type===L.string?this.parseExprAtom():this.unexpected(),this.semicolon(),this.finishNode(e,"ExportAllDeclaration");if(this.eat(L._default)){this.checkExport(t,"default",this.lastTokStart);var n;if(this.type===L._function||(n=this.isAsyncFunction())){var r=this.startNode();this.next(),n&&this.next(),e.declaration=this.parseFunction(r,"nullableID",!1,n)}else if(this.type===L._class){var i=this.startNode();e.declaration=this.parseClass(i,"nullableID")}else e.declaration=this.parseMaybeAssign(),this.semicolon();return this.finishNode(e,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())e.declaration=this.parseStatement(!0),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id.name,e.declaration.id.start),e.specifiers=[],e.source=null;else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))e.source=this.type===L.string?this.parseExprAtom():this.unexpected();else{for(var s=0,o=e.specifiers;s=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var n=0,r=e.properties;n=6&&(e.computed||e.method||e.shorthand))){var n,r=e.key;switch(r.type){case"Identifier":n=r.name;break;case"Literal":n=String(r.value);break;default:return}var i=e.kind;if(this.options.ecmaVersion>=6)"__proto__"===n&&"init"===i&&(t.proto&&this.raiseRecoverable(r.start,"Redefinition of __proto__ property"),t.proto=!0);else{var s=t[n="$"+n];if(s){("init"===i?this.strict&&s.init||s.get||s.set:s.init||s[i])&&this.raiseRecoverable(r.start,"Redefinition of property")}else s=t[n]={init:!1,get:!1,set:!1};s[i]=!0}}},Y.parseExpression=function(e,t){var n=this.start,r=this.startLoc,i=this.parseMaybeAssign(e,t);if(this.type===L.comma){var s=this.startNodeAt(n,r);for(s.expressions=[i];this.eat(L.comma);)s.expressions.push(this.parseMaybeAssign(e,t));return this.finishNode(s,"SequenceExpression")}return i},Y.parseMaybeAssign=function(e,t,n){if(this.inGenerator&&this.isContextual("yield"))return this.parseYield();var r=!1,i=-1,s=-1;t?(i=t.parenthesizedAssign,s=t.trailingComma,t.parenthesizedAssign=t.trailingComma=-1):(t=new p,r=!0);var o=this.start,a=this.startLoc;this.type!=L.parenL&&this.type!=L.name||(this.potentialArrowAt=this.start);var u=this.parseMaybeConditional(e,t);if(n&&(u=n.call(this,u,o,a)),this.type.isAssign){this.checkPatternErrors(t,!0),r||p.call(t);var c=this.startNodeAt(o,a);return c.operator=this.value,c.left=this.type===L.eq?this.toAssignable(u):u,t.shorthandAssign=-1,this.checkLVal(u),this.next(),c.right=this.parseMaybeAssign(e),this.finishNode(c,"AssignmentExpression")}return r&&this.checkExpressionErrors(t,!0),i>-1&&(t.parenthesizedAssign=i),s>-1&&(t.trailingComma=s),u},Y.parseMaybeConditional=function(e,t){var n=this.start,r=this.startLoc,i=this.parseExprOps(e,t);if(this.checkExpressionErrors(t))return i;if(this.eat(L.question)){var s=this.startNodeAt(n,r);return s.test=i,s.consequent=this.parseMaybeAssign(),this.expect(L.colon),s.alternate=this.parseMaybeAssign(e),this.finishNode(s,"ConditionalExpression")}return i},Y.parseExprOps=function(e,t){var n=this.start,r=this.startLoc,i=this.parseMaybeUnary(t,!1);return this.checkExpressionErrors(t)?i:i.start==n&&"ArrowFunctionExpression"===i.type?i:this.parseExprOp(i,n,r,-1,e)},Y.parseExprOp=function(e,t,n,r,i){var s=this.type.binop;if(null!=s&&(!i||this.type!==L._in)&&s>r){var o=this.type===L.logicalOR||this.type===L.logicalAND,a=this.value;this.next();var u=this.start,c=this.startLoc,l=this.parseExprOp(this.parseMaybeUnary(null,!1),u,c,s,i),p=this.buildBinary(t,n,e,l,a,o);return this.parseExprOp(p,t,n,r,i)}return e},Y.buildBinary=function(e,t,n,r,i,s){var o=this.startNodeAt(e,t);return o.left=n,o.operator=i,o.right=r,this.finishNode(o,s?"LogicalExpression":"BinaryExpression")},Y.parseMaybeUnary=function(e,t){var n,r=this.start,i=this.startLoc;if(this.inAsync&&this.isContextual("await"))n=this.parseAwait(),t=!0;else if(this.type.prefix){var s=this.startNode(),o=this.type===L.incDec;s.operator=this.value,s.prefix=!0,this.next(),s.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(e,!0),o?this.checkLVal(s.argument):this.strict&&"delete"===s.operator&&"Identifier"===s.argument.type?this.raiseRecoverable(s.start,"Deleting local variable in strict mode"):t=!0,n=this.finishNode(s,o?"UpdateExpression":"UnaryExpression")}else{if(n=this.parseExprSubscripts(e),this.checkExpressionErrors(e))return n;for(;this.type.postfix&&!this.canInsertSemicolon();){var a=this.startNodeAt(r,i);a.operator=this.value,a.prefix=!1,a.argument=n,this.checkLVal(n),this.next(),n=this.finishNode(a,"UpdateExpression")}}return!t&&this.eat(L.starstar)?this.buildBinary(r,i,n,this.parseMaybeUnary(null,!1),"**",!1):n},Y.parseExprSubscripts=function(e){var t=this.start,n=this.startLoc,r=this.parseExprAtom(e),i="ArrowFunctionExpression"===r.type&&")"!==this.input.slice(this.lastTokStart,this.lastTokEnd);if(this.checkExpressionErrors(e)||i)return r;var s=this.parseSubscripts(r,t,n);return e&&"MemberExpression"===s.type&&(e.parenthesizedAssign>=s.start&&(e.parenthesizedAssign=-1),e.parenthesizedBind>=s.start&&(e.parenthesizedBind=-1)),s},Y.parseSubscripts=function(e,t,n,r){for(var i=this.options.ecmaVersion>=8&&"Identifier"===e.type&&"async"===e.name&&this.lastTokEnd==e.end&&!this.canInsertSemicolon(),s=void 0;;)if((s=this.eat(L.bracketL))||this.eat(L.dot)){var o=this.startNodeAt(t,n);o.object=e,o.property=s?this.parseExpression():this.parseIdent(!0),o.computed=!!s,s&&this.expect(L.bracketR),e=this.finishNode(o,"MemberExpression")}else if(!r&&this.eat(L.parenL)){var a=new p,u=this.yieldPos,c=this.awaitPos;this.yieldPos=0,this.awaitPos=0;var l=this.parseExprList(L.parenR,this.options.ecmaVersion>=8,!1,a);if(i&&!this.canInsertSemicolon()&&this.eat(L.arrow))return this.checkPatternErrors(a,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=u,this.awaitPos=c,this.parseArrowExpression(this.startNodeAt(t,n),l,!0);this.checkExpressionErrors(a,!0),this.yieldPos=u||this.yieldPos,this.awaitPos=c||this.awaitPos;var h=this.startNodeAt(t,n);h.callee=e,h.arguments=l,e=this.finishNode(h,"CallExpression")}else{if(this.type!==L.backQuote)return e;var f=this.startNodeAt(t,n);f.tag=e,f.quasi=this.parseTemplate({isTagged:!0}),e=this.finishNode(f,"TaggedTemplateExpression")}},Y.parseExprAtom=function(e){var t,n=this.potentialArrowAt==this.start;switch(this.type){case L._super:return this.inFunction||this.raise(this.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.type!==L.dot&&this.type!==L.bracketL&&this.type!==L.parenL&&this.unexpected(),this.finishNode(t,"Super");case L._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case L.name:var r=this.start,i=this.startLoc,s=this.parseIdent(this.type!==L.name);if(this.options.ecmaVersion>=8&&"async"===s.name&&!this.canInsertSemicolon()&&this.eat(L._function))return this.parseFunction(this.startNodeAt(r,i),!1,!1,!0);if(n&&!this.canInsertSemicolon()){if(this.eat(L.arrow))return this.parseArrowExpression(this.startNodeAt(r,i),[s],!1);if(this.options.ecmaVersion>=8&&"async"===s.name&&this.type===L.name)return s=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(L.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(r,i),[s],!0)}return s;case L.regexp:var o=this.value;return t=this.parseLiteral(o.value),t.regex={pattern:o.pattern,flags:o.flags},t;case L.num:case L.string:return this.parseLiteral(this.value);case L._null:case L._true:case L._false:return t=this.startNode(),t.value=this.type===L._null?null:this.type===L._true,t.raw=this.type.keyword,this.next(),this.finishNode(t,"Literal");case L.parenL:var a=this.start,u=this.parseParenAndDistinguishExpression(n);return e&&(e.parenthesizedAssign<0&&!this.isSimpleAssignTarget(u)&&(e.parenthesizedAssign=a),e.parenthesizedBind<0&&(e.parenthesizedBind=a)),u;case L.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(L.bracketR,!0,!0,e),this.finishNode(t,"ArrayExpression");case L.braceL:return this.parseObj(!1,e);case L._function:return t=this.startNode(),this.next(),this.parseFunction(t,!1);case L._class:return this.parseClass(this.startNode(),!1);case L._new:return this.parseNew();case L.backQuote:return this.parseTemplate();default:this.unexpected()}},Y.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(t,"Literal")},Y.parseParenExpression=function(){this.expect(L.parenL);var e=this.parseExpression();return this.expect(L.parenR),e},Y.parseParenAndDistinguishExpression=function(e){var t,n=this.start,r=this.startLoc,i=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var s,o,a=this.start,u=this.startLoc,c=[],l=!0,h=!1,f=new p,d=this.yieldPos,y=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==L.parenR;){if(l?l=!1:this.expect(L.comma),i&&this.afterTrailingComma(L.parenR,!0)){h=!0;break}if(this.type===L.ellipsis){s=this.start,c.push(this.parseParenItem(this.parseRestBinding())),this.type===L.comma&&this.raise(this.start,"Comma is not permitted after the rest element");break}this.type!==L.parenL||o||(o=this.start),c.push(this.parseMaybeAssign(!1,f,this.parseParenItem))}var m=this.start,g=this.startLoc;if(this.expect(L.parenR),e&&!this.canInsertSemicolon()&&this.eat(L.arrow))return this.checkPatternErrors(f,!1),this.checkYieldAwaitInDefaultParams(),o&&this.unexpected(o),this.yieldPos=d,this.awaitPos=y,this.parseParenArrowList(n,r,c);c.length&&!h||this.unexpected(this.lastTokStart),s&&this.unexpected(s),this.checkExpressionErrors(f,!0),this.yieldPos=d||this.yieldPos,this.awaitPos=y||this.awaitPos,c.length>1?((t=this.startNodeAt(a,u)).expressions=c,this.finishNodeAt(t,"SequenceExpression",m,g)):t=c[0]}else t=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(n,r);return v.expression=t,this.finishNode(v,"ParenthesizedExpression")}return t},Y.parseParenItem=function(e){return e},Y.parseParenArrowList=function(e,t,n){return this.parseArrowExpression(this.startNodeAt(e,t),n)};var Q=[];Y.parseNew=function(){var e=this.startNode(),t=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(L.dot))return e.meta=t,e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(e.start,"new.target can only be used in functions"),this.finishNode(e,"MetaProperty");var n=this.start,r=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(),n,r,!0),this.eat(L.parenL)?e.arguments=this.parseExprList(L.parenR,this.options.ecmaVersion>=8,!1):e.arguments=Q,this.finishNode(e,"NewExpression")},Y.parseTemplateElement=function(e){var t=e.isTagged,n=this.startNode();return this.type===L.invalidTemplate?(t||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),n.value={raw:this.value,cooked:null}):n.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),n.tail=this.type===L.backQuote,this.finishNode(n,"TemplateElement")},Y.parseTemplate=function(e){void 0===e&&(e={});var t=e.isTagged;void 0===t&&(t=!1);var n=this.startNode();this.next(),n.expressions=[];var r=this.parseTemplateElement({isTagged:t});for(n.quasis=[r];!r.tail;)this.expect(L.dollarBraceL),n.expressions.push(this.parseExpression()),this.expect(L.braceR),n.quasis.push(r=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(n,"TemplateLiteral")},Y.isAsyncProp=function(e){return!e.computed&&"Identifier"===e.key.type&&"async"===e.key.name&&(this.type===L.name||this.type===L.num||this.type===L.string||this.type===L.bracketL||this.type.keyword)&&!O.test(this.input.slice(this.lastTokEnd,this.start))},Y.parseObj=function(e,t){var n=this.startNode(),r=!0,i={};for(n.properties=[],this.next();!this.eat(L.braceR);){if(r)r=!1;else if(this.expect(L.comma),this.afterTrailingComma(L.braceR))break;var s=this.parseProperty(e,t);this.checkPropClash(s,i),n.properties.push(s)}return this.finishNode(n,e?"ObjectPattern":"ObjectExpression")},Y.parseProperty=function(e,t){var n,r,i,s,o=this.startNode();return this.options.ecmaVersion>=6&&(o.method=!1,o.shorthand=!1,(e||t)&&(i=this.start,s=this.startLoc),e||(n=this.eat(L.star))),this.parsePropertyName(o),!e&&this.options.ecmaVersion>=8&&!n&&this.isAsyncProp(o)?(r=!0,this.parsePropertyName(o,t)):r=!1,this.parsePropertyValue(o,e,n,r,i,s,t),this.finishNode(o,"Property")},Y.parsePropertyValue=function(e,t,n,r,i,s,o){if((n||r)&&this.type===L.colon&&this.unexpected(),this.eat(L.colon))e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,o),e.kind="init";else if(this.options.ecmaVersion>=6&&this.type===L.parenL)t&&this.unexpected(),e.kind="init",e.method=!0,e.value=this.parseMethod(n,r);else if(t||!(this.options.ecmaVersion>=5)||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.type==L.comma||this.type==L.braceR)this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?(this.checkUnreserved(e.key),e.kind="init",t?e.value=this.parseMaybeDefault(i,s,e.key):this.type===L.eq&&o?(o.shorthandAssign<0&&(o.shorthandAssign=this.start),e.value=this.parseMaybeDefault(i,s,e.key)):e.value=e.key,e.shorthand=!0):this.unexpected();else{(n||r)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),e.value=this.parseMethod(!1);var a="get"===e.kind?0:1;if(e.value.params.length!==a){var u=e.value.start;"get"===e.kind?this.raiseRecoverable(u,"getter should have no params"):this.raiseRecoverable(u,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")}},Y.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(L.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(L.bracketR),e.key;e.computed=!1}return e.key=this.type===L.num||this.type===L.string?this.parseExprAtom():this.parseIdent(!0)},Y.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=!1,e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Y.parseMethod=function(e,t){var n=this.startNode(),r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos,a=this.inFunction;return this.initFunction(n),this.options.ecmaVersion>=6&&(n.generator=e),this.options.ecmaVersion>=8&&(n.async=!!t),this.inGenerator=n.generator,this.inAsync=n.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),this.expect(L.parenL),n.params=this.parseBindingList(L.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.inFunction=a,this.finishNode(n,"FunctionExpression")},Y.parseArrowExpression=function(e,t,n){var r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos,a=this.inFunction;return this.enterFunctionScope(),this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.inGenerator=!1,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.inFunction=a,this.finishNode(e,"ArrowFunctionExpression")},Y.parseFunctionBody=function(e,t){var n=t&&this.type!==L.braceL,r=this.strict,i=!1;if(n)e.body=this.parseMaybeAssign(),e.expression=!0,this.checkParams(e,!1);else{var s=this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params);r&&!s||(i=this.strictDirective(this.end))&&s&&this.raiseRecoverable(e.start,"Illegal 'use strict' directive in function with non-simple parameter list");var o=this.labels;this.labels=[],i&&(this.strict=!0),this.checkParams(e,!r&&!i&&!t&&this.isSimpleParamList(e.params)),e.body=this.parseBlock(!1),e.expression=!1,this.adaptDirectivePrologue(e.body.body),this.labels=o}this.exitFunctionScope(),this.strict&&e.id&&this.checkLVal(e.id,"none"),this.strict=r},Y.isSimpleParamList=function(e){for(var t=0,n=e;t0;)t[n]=arguments[n+1];for(var r=0,i=t;r=1;e--){var t=this.context[e];if("function"===t.token)return t.generator}return!1},ie.updateContext=function(e){var t,n=this.type;n.keyword&&e==L.dot?this.exprAllowed=!1:(t=n.updateContext)?t.call(this,e):this.exprAllowed=n.beforeExpr},L.parenR.updateContext=L.braceR.updateContext=function(){if(1!=this.context.length){var e=this.context.pop();e===re.b_stat&&"function"===this.curContext().token&&(e=this.context.pop()),this.exprAllowed=!e.isExpr}else this.exprAllowed=!0},L.braceL.updateContext=function(e){this.context.push(this.braceIsBlock(e)?re.b_stat:re.b_expr),this.exprAllowed=!0},L.dollarBraceL.updateContext=function(){this.context.push(re.b_tmpl),this.exprAllowed=!0},L.parenL.updateContext=function(e){var t=e===L._if||e===L._for||e===L._with||e===L._while;this.context.push(t?re.p_stat:re.p_expr),this.exprAllowed=!0},L.incDec.updateContext=function(){},L._function.updateContext=L._class.updateContext=function(e){e.beforeExpr&&e!==L.semi&&e!==L._else&&(e!==L.colon&&e!==L.braceL||this.curContext()!==re.b_stat)?this.context.push(re.f_expr):this.context.push(re.f_stat),this.exprAllowed=!1},L.backQuote.updateContext=function(){this.curContext()===re.q_tmpl?this.context.pop():this.context.push(re.q_tmpl),this.exprAllowed=!1},L.star.updateContext=function(e){if(e==L._function){var t=this.context.length-1;this.context[t]===re.f_expr?this.context[t]=re.f_expr_gen:this.context[t]=re.f_gen}this.exprAllowed=!0},L.name.updateContext=function(e){var t=!1;this.options.ecmaVersion>=6&&("of"==this.value&&!this.exprAllowed||"yield"==this.value&&this.inGeneratorContext())&&(t=!0),this.exprAllowed=t};var se=function(e){this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,e.options.locations&&(this.loc=new j(e,e.startLoc,e.endLoc)),e.options.ranges&&(this.range=[e.start,e.end])},oe=V.prototype,ae="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);oe.next=function(){this.options.onToken&&this.options.onToken(new se(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},oe.getToken=function(){return this.next(),new se(this)},"undefined"!=typeof Symbol&&(oe[Symbol.iterator]=function(){var e=this;return{next:function(){var t=e.getToken();return{done:t.type===L.eof,value:t}}}}),oe.curContext=function(){return this.context[this.context.length-1]},oe.nextToken=function(){var e=this.curContext();return e&&e.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(L.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},oe.readToken=function(e){return n(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},oe.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);if(e<=55295||e>=57344)return e;return(e<<10)+this.input.charCodeAt(this.pos+1)-56613888},oe.skipBlockComment=function(){var e=this.options.onComment&&this.curPosition(),t=this.pos,n=this.input.indexOf("*/",this.pos+=2);if(-1===n&&this.raise(this.pos-2,"Unterminated comment"),this.pos=n+2,this.options.locations){T.lastIndex=t;for(var r;(r=T.exec(this.input))&&r.index8&&e<14||e>=5760&&N.test(String.fromCharCode(e))))break e;++this.pos}}},oe.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},oe.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(L.ellipsis)):(++this.pos,this.finishToken(L.dot))},oe.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(L.assign,2):this.finishOp(L.slash,1)},oe.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?L.star:L.modulo;return this.options.ecmaVersion>=7&&42==e&&42===t&&(++n,r=L.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(L.assign,n+1):this.finishOp(r,n)},oe.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.finishOp(124===e?L.logicalOR:L.logicalAND,2):61===t?this.finishOp(L.assign,2):this.finishOp(124===e?L.bitwiseOR:L.bitwiseAND,1)},oe.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(L.assign,2):this.finishOp(L.bitwiseXOR,1)},oe.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45!=t||this.inModule||62!=this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!O.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(L.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===t?this.finishOp(L.assign,2):this.finishOp(L.plusMin,1)},oe.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(L.assign,n+1):this.finishOp(L.bitShift,n)):33!=t||60!=e||this.inModule||45!=this.input.charCodeAt(this.pos+2)||45!=this.input.charCodeAt(this.pos+3)?(61===t&&(n=2),this.finishOp(L.relational,n)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},oe.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(L.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(L.arrow)):this.finishOp(61===e?L.eq:L.prefix,1)},oe.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(L.parenL);case 41:return++this.pos,this.finishToken(L.parenR);case 59:return++this.pos,this.finishToken(L.semi);case 44:return++this.pos,this.finishToken(L.comma);case 91:return++this.pos,this.finishToken(L.bracketL);case 93:return++this.pos,this.finishToken(L.bracketR);case 123:return++this.pos,this.finishToken(L.braceL);case 125:return++this.pos,this.finishToken(L.braceR);case 58:return++this.pos,this.finishToken(L.colon);case 63:return++this.pos,this.finishToken(L.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(L.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(L.prefix,1)}this.raise(this.pos,"Unexpected character '"+d(e)+"'")},oe.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)};var ue=!!f("￿","u");oe.readRegexp=function(){for(var e,t,n=this,r=this.pos;;){n.pos>=n.input.length&&n.raise(r,"Unterminated regular expression");var i=n.input.charAt(n.pos);if(O.test(i)&&n.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++n.pos}var s=this.input.slice(r,this.pos);++this.pos;var o=this.readWord1(),a=s,u="";if(o){var c=/^[gim]*$/;this.options.ecmaVersion>=6&&(c=/^[gimuy]*$/),c.test(o)||this.raise(r,"Invalid regular expression flag"),o.indexOf("u")>=0&&(ue?u="u":(a=(a=a.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(e,t,i){return(t=Number("0x"+t))>1114111&&n.raise(r+i+3,"Code point out of bounds"),"x"})).replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),u=u.replace("u","")))}var l=null;return ae||(f(a,u,r,this),l=f(s,o)),this.finishToken(L.regexp,{pattern:s,flags:o,value:l})},oe.readInt=function(e,t){for(var n=this.pos,r=0,i=0,s=null==t?1/0:t;i=97?o-97+10:o>=65?o-65+10:o>=48&&o<=57?o-48:1/0)>=e)break;++this.pos,r=r*e+a}return this.pos===n||null!=t&&this.pos-n!==t?null:r},oe.readRadixNumber=function(e){this.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.start+2,"Expected number in radix "+e),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(L.num,t)},oe.readNumber=function(e){var t=this.pos,r=!1,i=48===this.input.charCodeAt(this.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number"),i&&this.pos==t+1&&(i=!1);var s=this.input.charCodeAt(this.pos);46!==s||i||(++this.pos,this.readInt(10),r=!0,s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||i||(43!==(s=this.input.charCodeAt(++this.pos))&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var o,a=this.input.slice(t,this.pos);return r?o=parseFloat(a):i&&1!==a.length?this.strict?this.raise(t,"Invalid number"):o=/[89]/.test(a)?parseInt(a,10):parseInt(a,8):o=parseInt(a,10),this.finishToken(L.num,o)},oe.readCodePoint=function(){var e;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var t=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.invalidStringToken(t,"Code point out of bounds")}else e=this.readHexChar(4);return e},oe.readString=function(e){for(var t="",n=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var r=this.input.charCodeAt(this.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.pos),t+=this.readEscapedChar(!1),n=this.pos):(o(r)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return t+=this.input.slice(n,this.pos++),this.finishToken(L.string,t)};var ce={};oe.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(e){if(e!==ce)throw e;this.readInvalidTemplateToken()}this.inTemplateElement=!1},oe.invalidStringToken=function(e,t){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw ce;this.raise(e,t)},oe.readTmplToken=function(){for(var e="",t=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var n=this.input.charCodeAt(this.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==L.template&&this.type!==L.invalidTemplate?(e+=this.input.slice(t,this.pos),this.finishToken(L.template,e)):36===n?(this.pos+=2,this.finishToken(L.dollarBraceL)):(++this.pos,this.finishToken(L.backQuote));if(92===n)e+=this.input.slice(t,this.pos),e+=this.readEscapedChar(!0),t=this.pos;else if(o(n)){switch(e+=this.input.slice(t,this.pos),++this.pos,n){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},oe.readInvalidTemplateToken=function(){for(;this.pos=48&&t<=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],r=parseInt(n,8);return r>255&&(n=n.slice(0,-1),r=parseInt(n,8)),"0"!==n&&(this.strict||e)&&this.invalidStringToken(this.pos-2,"Octal literal in strict mode"),this.pos+=n.length-1,String.fromCharCode(r)}return String.fromCharCode(t)}},oe.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.invalidStringToken(t,"Bad character escape sequence"),n},oe.readWord1=function(){this.containsEsc=!1;for(var e="",t=!0,i=this.pos,s=this.options.ecmaVersion>=6;this.pos=s)&&a[c](t,n,e),(null==r||t.start==r)&&(null==s||t.end==s)&&o(c,t))throw new i(t,n)}(n,u)}catch(e){if(e instanceof i)return e;throw e}},e.findNodeAround=function(n,r,s,o,a){s=t(s),o||(o=e.base);try{!function e(t,n,a){var u=a||t.type;if(!(t.start>r||t.end=r&&s(u,t))throw new i(t,n);o[u](t,n,e)}}(n,a)}catch(e){if(e instanceof i)return e;throw e}},e.findNodeBefore=function(n,r,s,o,a){s=t(s),o||(o=e.base);var u;return function e(t,n,a){if(!(t.start>r)){var c=a||t.type;t.end<=r&&(!u||u.node.end0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return o[e>>18&63]+o[e>>12&63]+o[e>>6&63]+o[63&e]}function s(e,t,n){for(var r,s=[],o=t;o0?c-4:c;var l=0;for(t=0;t>16&255,o[l++]=i>>8&255,o[l++]=255&i;return 2===s?(i=a[e.charCodeAt(t)]<<2|a[e.charCodeAt(t+1)]>>4,o[l++]=255&i):1===s&&(i=a[e.charCodeAt(t)]<<10|a[e.charCodeAt(t+1)]<<4|a[e.charCodeAt(t+2)]>>2,o[l++]=i>>8&255,o[l++]=255&i),o},n.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i="",a=[],u=0,c=n-r;uc?c:u+16383));return 1===r?(t=e[n-1],i+=o[t>>2],i+=o[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=o[t>>10],i+=o[t>>4&63],i+=o[t<<2&63],i+="="),a.push(i),a.join("")};for(var o=[],a=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=c.length;lB)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=i.prototype,t}function i(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return a(e)}return s(e,t,n)}function s(e,t,n){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return T(e)?function(e,t,n){if(t<0||e.byteLength=B)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+B.toString(16)+" bytes");return 0|e}function l(e,t){if(i.isBuffer(e))return e.length;if(N(e)||T(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return _(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return L(e).length;default:if(r)return _(e).length;t=(""+t).toLowerCase(),r=!0}}function p(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,n){var r=e.length;(!t||t<0)&&(t=0);(!n||n<0||n>r)&&(n=r);for(var i="",s=t;s2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,P(n)&&(n=s?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(s)return-1;n=e.length-1}else if(n<0){if(!s)return-1;n=0}if("string"==typeof t&&(t=i.from(t,r)),i.isBuffer(t))return 0===t.length?-1:d(e,t,n,r,s);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):d(e,[t],n,r,s);throw new TypeError("val must be string, number or Buffer")}function d(e,t,n,r,i){function s(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,u/=2,n/=2}var c;if(i){var l=-1;for(c=n;ca&&(n=a-u),c=n;c>=0;c--){for(var p=!0,h=0;hi&&(r=i):r=i;var s=t.length;if(s%2!=0)throw new TypeError("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;o>8,i=n%256,s.push(i),s.push(r);return s}(t,e.length-n),e,n,r)}function w(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:s>223?3:s>191?2:1;if(i+a<=n){var u,c,l,p;switch(a){case 1:s<128&&(o=s);break;case 2:128==(192&(u=e[i+1]))&&(p=(31&s)<<6|63&u)>127&&(o=p);break;case 3:u=e[i+1],c=e[i+2],128==(192&u)&&128==(192&c)&&(p=(15&s)<<12|(63&u)<<6|63&c)>2047&&(p<55296||p>57343)&&(o=p);break;case 4:u=e[i+1],c=e[i+2],l=e[i+3],128==(192&u)&&128==(192&c)&&128==(192&l)&&(p=(15&s)<<18|(63&u)<<12|(63&c)<<6|63&l)>65535&&p<1114112&&(o=p)}}null===o?(o=65533,a=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=a}return function(e){var t=e.length;if(t<=R)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rn)throw new RangeError("Trying to access beyond buffer length")}function S(e,t,n,r,s,o){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function k(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function A(e,t,n,r,i){return t=+t,n>>>=0,i||k(e,0,n,4),$.write(e,t,n,r,23,4),n+4}function C(e,t,n,r,i){return t=+t,n>>>=0,i||k(e,0,n,8),$.write(e,t,n,r,52,8),n+8}function _(e,t){t=t||1/0;for(var n,r=e.length,i=null,s=[],o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function L(e){return F.toByteArray(function(e){if((e=e.trim().replace(I,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function O(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function T(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function N(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function P(e){return e!=e}var F=e("base64-js"),$=e("ieee754");n.Buffer=i,n.SlowBuffer=function(e){return+e!=e&&(e=0),i.alloc(+e)},n.INSPECT_MAX_BYTES=50;var B=2147483647;n.kMaxLength=B,(i.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),i.poolSize=8192,i.from=function(e,t,n){return s(e,t,n)},i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,i.alloc=function(e,t,n){return function(e,t,n){return o(e),e<=0?r(e):void 0!==t?"string"==typeof n?r(e).fill(t,n):r(e).fill(t):r(e)}(e,t,n)},i.allocUnsafe=function(e){return a(e)},i.allocUnsafeSlow=function(e){return a(e)},i.isBuffer=function(e){return null!=e&&!0===e._isBuffer},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,s=0,o=Math.min(n,r);s0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},i.prototype.compare=function(e,t,n,r,s){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===s&&(s=this.length),t<0||n>e.length||r<0||s>this.length)throw new RangeError("out of range index");if(r>=s&&t>=n)return 0;if(r>=s)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,s>>>=0,this===e)return 0;for(var o=s-r,a=n-t,u=Math.min(o,a),c=this.slice(r,s),l=e.slice(t,n),p=0;p>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return y(this,e,t,n);case"utf8":case"utf-8":return m(this,e,t,n);case"ascii":return g(this,e,t,n);case"latin1":case"binary":return v(this,e,t,n);case"base64":return b(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var R=4096;i.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||E(e,t,this.length);for(var r=this[e],i=1,s=0;++s>>=0,t>>>=0,n||E(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},i.prototype.readUInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||E(e,t,this.length);for(var r=this[e],i=1,s=0;++s=i&&(r-=Math.pow(2,8*t)),r},i.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||E(e,t,this.length);for(var r=t,i=1,s=this[e+--r];r>0&&(i*=256);)s+=this[e+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},i.prototype.readInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){e>>>=0,t||E(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt16BE=function(e,t){e>>>=0,t||E(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return e>>>=0,t||E(e,4,this.length),$.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return e>>>=0,t||E(e,4,this.length),$.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return e>>>=0,t||E(e,8,this.length),$.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return e>>>=0,t||E(e,8,this.length),$.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){S(this,e,t,n,Math.pow(2,8*n)-1,0)}var i=1,s=0;for(this[t]=255&e;++s>>=0,n>>>=0,!r){S(this,e,t,n,Math.pow(2,8*n)-1,0)}var i=n-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+n},i.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,1,255,0),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},i.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);S(this,e,t,n,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+n},i.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);S(this,e,t,n,i-1,-i)}var s=n-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+n},i.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},i.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||S(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeFloatLE=function(e,t,n){return A(this,e,t,!0,n)},i.prototype.writeFloatBE=function(e,t,n){return A(this,e,t,!1,n)},i.prototype.writeDoubleLE=function(e,t,n){return C(this,e,t,!0,n)},i.prototype.writeDoubleBE=function(e,t,n){return C(this,e,t,!1,n)},i.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(s<1e3)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var o;if("number"==typeof e)for(o=t;o>1,l=-7,p=n?i-1:0,h=n?-1:1,f=e[t+p];for(p+=h,s=f&(1<<-l)-1,f>>=-l,l+=a;l>0;s=256*s+e[t+p],p+=h,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+e[t+p],p+=h,l-=8);if(0===s)s=1-c;else{if(s===u)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,r),s-=c}return(f?-1:1)*o*Math.pow(2,s-r)},n.write=function(e,t,n,r,i,s){var o,a,u,c=8*s-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,d=r?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+p>=1?h/u:h*Math.pow(2,1-p))*u>=2&&(o++,u/=2),o+p>=l?(a=0,o=l):o+p>=1?(a=(t*u-1)*Math.pow(2,i),o+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,i),o=0));i>=8;e[n+f]=255&a,f+=d,a/=256,i-=8);for(o=o<0;e[n+f]=255&o,f+=d,o/=256,c-=8);e[n+f-d]|=128*y}},{}],10:[function(e,t,n){(function(n){function r(){}function i(e){this.covers={},this._ident=i.prototype.version+"_"+Math.random(),this.setOptions(e||{})}var s=e("./lib/parser"),o=e("./lib/arboriculture"),a=e("./lib/output");i.prototype.smCache={},i.prototype.setOptions=function(e){return this.log=!1===e.log?r:e.log||this.log,this.options=function(e){var t={};return e.forEach(function(e){if(e&&"object"==typeof e)for(var n in e)t[n]=e[n]}),t}([this.options,e]),delete this.options.log,this},i.prototype.version=e("./package.json").version,i.prototype.isThenable=function(e){return e&&e instanceof Object&&"function"==typeof e.then},i.prototype.compile=function(e,t,n,s){"object"==typeof n&&void 0===s&&(s=n),s=s||{};for(var o in i.initialCodeGenOpts)o in s||(s[o]=i.initialCodeGenOpts[o]);var a=this.parse(e,t,null,s);return this.asynchronize(a,null,s,this.log||r),this.prettyPrint(a,s),a},i.prototype.parse=function(e,t,n,r){"object"==typeof n&&void 0===r&&(r=n);var i={origCode:e.toString(),filename:t};try{return i.ast=s.parse(i.origCode,r&&r.parser),r.babelTree&&s.treeWalker(i.ast,function(e,t,n){"Literal"===e.type?n[0].replace(o.babelLiteralNode(e.value)):"Property"===e.type&&("ClassBody"===n[0].parent.type?e.type="ClassProperty":e.type="ObjectProperty"),t()}),i}catch(e){if(e instanceof SyntaxError){var a=i.origCode.substr(e.pos-e.loc.column);a=a.split("\n")[0],e.message+=" "+t+" (nodent)\n"+a+"\n"+a.replace(/[\S ]/g,"-").substring(0,e.loc.column)+"^",e.stack=""}throw e}},i.prototype.asynchronize=o.asynchronize,i.prototype.printNode=o.printNode,i.prototype.prettyPrint=function(t,r){var i=t.filename?t.filename.split("/"):["anonymous"],s=i.pop(),o=a(t.ast,r&&r.sourcemap?{map:{startLine:r.mapStartLine||0,file:s+"(original)",sourceMapRoot:i.join("/"),sourceContent:t.origCode}}:null,t.origCode);if(r&&r.sourcemap)try{var u="",c=o.map.toJSON();if(c){var l=e("source-map").SourceMapConsumer;t.sourcemap=c,this.smCache[t.filename]={map:c,smc:new l(c)},u="\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+function(e){return(e instanceof n?e:new n(e.toString(),"binary")).toString("base64")}(JSON.stringify(c))+"\n"}t.code=o.code+u}catch(e){t.code=o}else t.code=o;return t},i.prototype.getDefaultCompileOptions=void 0,Object.defineProperty(i.prototype,"Promise",{get:function(){return initOpts.log("Warning: nodent.Promise is deprecated. Use nodent.Thenable instead"),Thenable},enumerable:!1,configurable:!1}),i.initialCodeGenOpts={noRuntime:!1,lazyThenables:!1,es6target:!1,noUseDirective:!1,wrapAwait:null,mapStartLine:0,sourcemap:!0,engine:!1,parser:{sourceType:"script"},$return:"$return",$error:"$error",$arguments:"$args",$asyncspawn:"$asyncspawn",$asyncbind:"$asyncbind",generatedSymbolPrefix:"$",$makeThenable:"$makeThenable"},t.exports=i}).call(this,e("buffer").Buffer)},{"./lib/arboriculture":11,"./lib/output":12,"./lib/parser":13,"./package.json":25,buffer:8,"source-map":24}],11:[function(e,t,n){"use strict";function r(e){if(!e)return"";if(Array.isArray(e))return e.map(r).join("|\n");try{return m(e)}catch(t){return t.message+": "+(e&&e.type)}}function i(e){if(Array.isArray(e))return e.map(function(e){return i(e)});var t={};return Object.keys(e).forEach(function(n){t[n]=e[n]}),t}function s(e,t){e!==t&&(e.__proto__=Object.getPrototypeOf(t),Object.keys(e).forEach(function(t){t in g||delete e[t]}),Object.keys(t).forEach(function(n){n in e||(e[n]=t[n])}))}function o(){}function a(e){return e?(b.node=e,b):{}}function u(e,t,n){if(!e)return null;if(t&&"object"==typeof t){var r=Object.keys(t);return u(e,function(e){return r.every(function(n){return e[n]==t[n]})})}var i,s={};if(Array.isArray(e)){for(var o=0;o0){if(!o)return t(e);delete e.async}return void(!o&&i?t():(e.type="ReturnStatement",e.$mapped=!0,e.argument={type:"CallExpression",callee:k(s,[n]).$error,arguments:[e.argument]}))}return"TryStatement"===e.type?(i++,t(e),void i--):a(e).isFunction?(r++,t(e),void r--):void t(e)}if(r>0){if(!a(e).isAsync)return t(e);delete e.async}return e.$mapped=!0,void(a(e.argument).isUnaryExpression&&"void"===e.argument.operator?e.argument=e.argument.argument:e.argument={type:"CallExpression",callee:k(s,[n]).$return,arguments:e.argument?[e.argument]:[]})},t)}function P(e,t){return Array.isArray(e)?e.map(function(e){return P(e,t)}):(y.treeWalker(e,function(e,t,n){if(t(),"ConditionalExpression"===e.type&&(c(e.alternate)||c(e.consequent))){h(E("condOp"));s(e,_(y.part("if ($0) return $1 ; return $2",[e.test,e.consequent,e.alternate]).body))}},t),e)}function F(e,t){return Array.isArray(e)?e.map(function(e){return F(e,t)}):(y.treeWalker(e,function(e,t,n){if(t(),"LogicalExpression"===e.type&&c(e.right)){var r,i=h(E("logical"+("&&"===e.operator?"And":"Or")));if("||"===e.operator)r="var $0; if (!($0 = $1)) {$0 = $2} return $0";else{if("&&"!==e.operator)throw new Error(v(e)+"Illegal logical operator: "+e.operator);r="var $0; if ($0 = $1) {$0 = $2} return $0"}s(e,_(y.part(r,[i,e.left,e.right]).body))}},t),e)}function $(e,t,n){if("SwitchCase"!==e.type&&a(e).isBlockStatement)for(var r=0;r { $$setMapped: while (q) { if (q.then) "+(1===i?" return void q.then($idTrampoline, $exit); ":" return q.then($idTrampoline, $exit); ")+" try { if (q.pop) if (q.length) return q.pop() ? $idContinuation.call(this) : q; else q = $idStep; else q = q.call(this) } catch (_exception) { return $exit(_exception); } } }))($idIter)":"($idTrampoline = (function (q) { $$setMapped: while (q) { if (q.then) "+(1===i?" return void q.then($idTrampoline, $exit); ":" return q.then($idTrampoline, $exit); ")+" try { if (q.pop) if (q.length) return q.pop() ? $idContinuation.call(this) : q; else q = $idStep; else q = q.call(this) } catch (_exception) { return $exit(_exception); } } }).bind(this))($idIter)",{setMapped:function(e){return e.$mapped=!0,e},idTrampoline:w,exit:P,idIter:E,idContinuation:A,idStep:S}).expr:y.part("(Function.$0.trampoline(this,$1,$2,$3,$5)($4))",[pe.asyncbind,A,S,P,E,b(1===i)]).expr,o.push({type:"ReturnStatement",argument:N}),o.push({$label:e.$label,type:"FunctionDeclaration",id:E,params:[],body:{type:"BlockStatement",body:d}}),f&&o.push({type:"FunctionDeclaration",id:S,params:[],body:{type:"BlockStatement",body:[f,L]}}),!l||"VariableDeclaration"!==l.type||"let"!==l.kind&&"const"!==l.kind?(o.push(v),t[0].replace(o.map(r))):("const"===l.kind&&(l.kind="let"),t[0].replace([{type:"BlockStatement",body:o.map(r)},r(v)]))}}function G(e){if(!a(e).isFunction)throw new Error("Cannot examine non-Function node types for async exits");return u(e.body,function(e){return"Identifier"===e.type&&(e.name===n.$return||e.name===n.$error)||I(e)&&a(e).isAsync},function(e){return!(a(e).isFunction&&(e.$wasAsync||a(e).isAsync))})}function J(t){return y.treeWalker(t,function(t,r,i){var s=x(t);if(r(),s&&a(s).isAsync){if("set"==t.kind){var o=new SyntaxError(v(s)+"method 'async set' cannot be invoked",e.filename,t.start);throw o.pos=t.start,o.loc=t.loc.start,o}s.async=!1;var u=w(s);G(s)||0!==s.body.body.length&&"ReturnStatement"===s.body.body[s.body.body.length-1].type||s.body.body.push({type:"ReturnStatement"});var c=m(S({type:"FunctionExpression",params:[pe.return,pe.error],body:J(N(s.body,i)),$wasAsync:!0},n),n.promises||n.generators||n.engine?null:b(!n.lazyThenables||0));n.promises?s.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:{type:"NewExpression",callee:h("Promise"),arguments:[c]}}]}:s.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:c}]},u&&D(s.body.body,[he])}})}function H(e){return y.treeWalker(e,function(e,t,r){if(t(),a(e).isAsync&&a(e).isFunction){var i;(i=x(r[0].parent))&&a(i).isAsync&&"get"===r[0].parent.kind&&X(r[0].parent.key),delete e.async;var s=w(e),o=S({type:"FunctionExpression",params:[pe.return,pe.error],$wasAsync:!0},n),u=[{self:o}].concat(r);return a(e.body).isBlockStatement?(G(e)||0!==e.body.body.length&&"ReturnStatement"===e.body.body[e.body.body.length-1].type||e.body.body.push({type:"ReturnStatement"}),o.body={type:"BlockStatement",body:e.body.body.map(function(e){return N(e,u)})}):(o.body={type:"BlockStatement",body:[N({type:"ReturnStatement",argument:e.body},u)]},e.expression=!1),o=m(o,n.promises||n.generators||n.engine?null:b(!n.lazyThenables||0)),n.promises&&(o={type:"NewExpression",callee:h("Promise"),arguments:[o]}),o={type:"BlockStatement",body:[{type:"ReturnStatement",loc:e.loc,argument:o}]},s&&D(o.body,[he]),void(e.body=o)}}),e}function Y(e){if(Array.isArray(e))return e.map(Y);var t=0;return y.treeWalker(e,function(e,n,r){if("ThrowStatement"!==e.type&&"ReturnStatement"!==e.type||e.$mapped){if(a(e).isFunction)return t++,n(e),void t--}else if(t>0&&a(e).isAsync)return delete e.async,e.argument={type:"CallExpression",callee:"ThrowStatement"===e.type?pe.error:pe.return,arguments:e.argument?[e.argument]:[]},void(e.type="ReturnStatement");n(e)})}function Q(e,t){if(n.noRuntime)throw new Error("Nodent: 'noRuntime' option only compatible with -promise and -engine modes");return y.part("{ return (function*($return,$error){ $:body }).$asyncspawn(Promise,this) }",{return:pe.return,error:pe.error,asyncspawn:pe.asyncspawn,body:Y(e).concat(t?[{type:"ReturnStatement",argument:pe.return}]:[])}).body[0]}function X(e){e.$asyncgetwarninig||(e.$asyncgetwarninig=!0,d(v(e)+"'async get "+r(e)+"(){...}' is non-standard. See https://github.com/MatAtBread/nodent#differences-from-the-es7-specification"))}function Z(e,t){function r(e,t){y.treeWalker(e,function(n,r,i){n!==e&&a(n).isFunction||(a(n).isAwait?t?(n.$hidden=!0,r()):(delete n.operator,n.delegate=!1,n.type="YieldExpression",r()):r())})}function o(e){var t=n.promises;n.promises=!0,A(e,!0),n.promises=t}function u(e){return"BlockStatement"!==e.body.type&&(e.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:e.body}]}),e}function c(e,n){n.$asyncexitwarninig||(n.$asyncexitwarninig=!0,d(v(e)+"'async "+{ReturnStatement:"return",ThrowStatement:"throw"}[e.type]+"' not possible in "+(t?"engine":"generator")+" mode. Using Promises for function at "+v(n)))}y.treeWalker(e,function(e,n,i){n();var l,p,h;if(a(e).isAsync&&a(e).isFunction){var f;(f=x(i[0].parent))&&a(f).isAsync&&"get"===i[0].parent.kind&&X(i[0].parent.key),(p=G(e))?(c(p,e.body),o(e)):t?"get"!==i[0].parent.kind&&r(e,!0):(delete(l=e).async,h=w(l),r(l,!1),(l=u(l)).body=Q(l.body.body,p),h&&D(l.body.body,[he]),l.id&&"ExpressionStatement"===i[0].parent.type?(l.type="FunctionDeclaration",i[1].replace(l)):i[0].replace(l))}else(l=x(e))&&a(l).isAsync&&((p=G(l))?(c(p,l),o(e)):t&&"get"!==e.kind||(t?o(e):(e.async=!1,h=w(l),r(l,!1),s(l,u(l)),l.body=Q(l.body.body,p)),h&&D(l.body.body,[he])))});var l=i(n);return n.engine=!1,n.generators=!1,ie(e),ne(e),j(e,l.engine),F(e),P(e),V(e,[M,W,B,R,$]),q(e,"warn"),n.engine=l.engine,n.generators=l.generators,e}function K(e,t,n){var r=[];return y.treeWalker(e,function(i,s,o){if(i===e)return s();t(i,o)?r.push([].concat(o)):n||a(i).isScope||s()}),r}function ee(e,t){var n=[],r={};if((e=e.filter(function(e){return"ExportNamedDeclaration"!==e[0].parent.type})).length){var s={};e.forEach(function(e){function t(e){e in s?r[e]=o.declarations[u]:s[e]=o.declarations[u]}for(var n=e[0],o=n.self,a=(o.kind,[]),u=0;u1?{type:"SequenceExpression",expressions:a}:a[0];"For"!==n.parent.type.slice(0,3)&&(p={type:"ExpressionStatement",expression:p}),n.replace(p)}});var o=Object.keys(s);o.length&&(o=o.map(function(e){return{type:"VariableDeclarator",id:h(e),loc:s[e].loc,start:s[e].start,end:s[e].end}}),n[0]&&"VariableDeclaration"===n[0].type?n[0].declarations=n[0].declarations.concat(o):n.unshift({type:"VariableDeclaration",kind:t,declarations:o}))}return{decls:n,duplicates:r}}function te(e){if(!e)return[];if(Array.isArray(e))return e.reduce(function(e,t){return e.concat(te(t.id))},[]);switch(e.type){case"Identifier":return[e.name];case"AssignmentPattern":return te(e.left);case"ArrayPattern":return e.elements.reduce(function(e,t){return e.concat(te(t))},[]);case"ObjectPattern":return e.properties.reduce(function(e,t){return e.concat(te(t))},[]);case"ObjectProperty":case"Property":return te(e.value);case"RestElement":case"RestProperty":return te(e.argument)}}function ne(e){function t(e){return u(e,function(e){return"AssignmentExpression"===e.type})}function n(e){return function(t,n){if("VariableDeclaration"===t.type&&(t.kind=t.kind||"var")&&e.indexOf(t.kind)>=0){var r=n[0];return("left"!=r.field||"ForInStatement"!==r.parent.type&&"ForOfStatement"!==r.parent.type)&&("init"!=r.field||"ForStatement"!==r.parent.type||"const"!==t.kind&&"let"!==t.kind)}}}function o(e,t){return!("FunctionDeclaration"!==e.type||!e.id)&&(a(e).isAsync||!e.$continuation)}var l={TemplateLiteral:function(e){return e.expressions},NewExpression:function(e){return e.arguments},CallExpression:function(e){return e.arguments},SequenceExpression:function(e){return e.expressions},ArrayExpression:function(e){return e.elements},ObjectExpression:function(e){return e.properties.map(function(e){return e.value})}};y.treeWalker(e,function(e,n,r){function o(e){h.length&&(e.argument={type:"SequenceExpression",expressions:h.map(function(e){var t=i(e);return s(e,e.left),t}).concat(e.argument)},h=[])}var u;if(n(),e.type in l&&!e.$hoisted){var p=l[e.type](e),h=[];for(u=0;u0;u--)if(e.declarations[u]&&e.declarations[u].init&&c(e.declarations[u].init)){var f={type:"VariableDeclaration",kind:e.kind,declarations:e.declarations.splice(u)},d=r[0];if(!("index"in d))throw new Error("VariableDeclaration not in a block");d.parent[d.field].splice(d.index+1,0,f)}}),function(e){function t(e){d(v(e)+"Possible assignment to 'const "+r(e)+"'")}function n(e){switch(e.type){case"Identifier":"const"===i[e.name]&&t(e);break;case"ArrayPattern":e.elements.forEach(function(e){"const"===i[e.name]&&t(e)});break;case"ObjectPattern":e.properties.forEach(function(e){"const"===i[e.key.name]&&t(e)})}}var i={};y.treeWalker(e,function(e,t,r){var s=a(e).isBlockStatement;if(s){i=Object.create(i);for(var o=0;o=0&&"ReturnStatement"===r[1].self.type){var s=e.$thisCallName,o=i(ce[s].def.body.body);ce[s].$inlined=!0,a(r[1].self).isJump||o.push({type:"ReturnStatement"}),r[1].replace(o)}});var n=Object.keys(ce).map(function(e){return ce[e].$inlined&&ce[e].def});y.treeWalker(e,function(e,t,r){t(),n.indexOf(e)>=0&&r[0].remove()})}if(!("Program"===e.type&&"module"===e.sourceType||u(e,function(e){return a(e).isES6},!0))){var r=oe(e);!function(e){y.treeWalker(e,function(e,t,n){if("Program"===e.type||"FunctionDeclaration"===e.type||"FunctionExpression"===e.type){var i=r;if(r=r||oe(e)){t();var s="Program"===e.type?e:e.body,o=K(s,function(e,t){if("FunctionDeclaration"===e.type)return t[0].parent!==s});o=o.map(function(e){return e[0].remove()}),[].push.apply(s.body,o)}else t();r=i}else t()})}(e)}return y.treeWalker(e,function(e,t,n){t(),Object.keys(e).filter(function(e){return"$"===e[0]}).forEach(function(t){delete e[t]})}),e}var ce={},le=1,pe={};Object.keys(n).filter(function(e){return"$"===e[0]}).forEach(function(e){pe[e.slice(1)]=h(n[e])});var he=y.part("var $0 = arguments",[pe.arguments]).body[0];return n.engine?(e.ast=re(e.ast,!0),e.ast=Z(e.ast,n.engine),e.ast=se(e.ast),ue(e.ast)):n.generators?(e.ast=re(e.ast),e.ast=Z(e.ast),e.ast=se(e.ast),ue(e.ast)):(e.ast=re(e.ast),A(e.ast)),n.babelTree&&y.treeWalker(e.ast,function(e,t,n){t(),"Literal"===e.type&&s(e,b(e.value))}),e}var y=e("./parser"),m=e("./output"),g={start:!0,end:!0,loc:!0,range:!0},v={getScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type?this.node.body.body:"Program"===this.node.type?this.node.body:null},isScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"Program"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type},isFunction:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type},isClass:function(){return"ClassDeclaration"===this.node.type||"ClassExpression"===this.node.type},isBlockStatement:function(){return"ClassBody"===this.node.type||"Program"===this.node.type||"BlockStatement"===this.node.type?this.node.body:"SwitchCase"===this.node.type&&this.node.consequent},isExpressionStatement:function(){return"ExpressionStatement"===this.node.type},isLiteral:function(){return"Literal"===this.node.type||"BooleanLiteral"===this.node.type||"RegExpLiteral"===this.node.type||"NumericLiteral"===this.node.type||"StringLiteral"===this.node.type||"NullLiteral"===this.node.type},isDirective:function(){return"ExpressionStatement"===this.node.type&&("StringLiteral"===this.node.expression.type||"Literal"===this.node.expression.type&&"string"==typeof this.node.expression.value)},isUnaryExpression:function(){return"UnaryExpression"===this.node.type},isAwait:function(){return"AwaitExpression"===this.node.type&&!this.node.$hidden},isAsync:function(){return this.node.async},isStatement:function(){return null!==this.node.type.match(/[a-zA-Z]+Declaration/)||null!==this.node.type.match(/[a-zA-Z]+Statement/)},isExpression:function(){return null!==this.node.type.match(/[a-zA-Z]+Expression/)},isLoop:function(){return"ForStatement"===this.node.type||"WhileStatement"===this.node.type||"DoWhileStatement"===this.node.type},isJump:function(){return"ReturnStatement"===this.node.type||"ThrowStatement"===this.node.type||"BreakStatement"===this.node.type||"ContinueStatement"===this.node.type},isES6:function(){switch(this.node.type){case"ExportNamedDeclaration":case"ExportSpecifier":case"ExportDefaultDeclaration":case"ExportAllDeclaration":case"ImportDeclaration":case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ArrowFunctionExpression":case"ForOfStatement":case"YieldExpression":case"Super":case"RestElement":case"RestProperty":case"SpreadElement":case"TemplateLiteral":case"ClassDeclaration":case"ClassExpression":return!0;case"VariableDeclaration":return this.node.kind&&"var"!==this.node.kind;case"FunctionDeclaration":case"FunctionExpression":return!!this.node.generator}}},b={};Object.keys(v).forEach(function(e){Object.defineProperty(b,e,{get:v[e]})}),t.exports={printNode:r,babelLiteralNode:p,asynchronize:function(e,t,n,r){try{return d(e,0,n,r)}catch(t){if(t instanceof SyntaxError){var i=e.origCode.substr(t.pos-t.loc.column);i=i.split("\n")[0],t.message+=" (nodent)\n"+i+"\n"+i.replace(/[\S ]/g,"-").substring(0,t.loc.column)+"^",t.stack=""}throw t}}}},{"./output":12,"./parser":13}],12:[function(e,t,n){"use strict";function r(e){if("NewExpression"===e.type&&e.arguments&&e.arguments.length)return 19;var t=h[e.type]||h[e.type+e.operator]||h[e.type+e.operator+(e.prefix?"prefix":"")];return void 0!==t?t:20}var i,s,o,a,u,c,l=e("source-map").SourceMapGenerator;if("".repeat)c=function(e,t){return t&&e?e.repeat(t):""};else{var p={};c=function(e,t){if(!t||!e)return"";var n=""+e+t;if(!p[n]){for(var r=[];t--;)r.push(e);p[n]=r.join("")}return p[n]}}var h={ExpressionStatement:-1,Identifier:21,Literal:21,BooleanLiteral:21,RegExpLiteral:21,NumericLiteral:21,StringLiteral:21,NullLiteral:21,ThisExpression:21,SuperExpression:21,ObjectExpression:21,ClassExpression:21,MemberExpression:19,CallExpression:18,NewExpression:18,ArrayExpression:17.5,FunctionExpression:17.5,FunctionDeclaration:17.5,ArrowFunctionExpression:17.5,"UpdateExpression++":17,"UpdateExpression--":17,"UpdateExpression++prefix":16,"UpdateExpression--prefix":16,UnaryExpression:16,AwaitExpression:16,"BinaryExpression**":15,"BinaryExpression*":15,"BinaryExpression/":15,"BinaryExpression%":15,"BinaryExpression+":14,"BinaryExpression-":14,"BinaryExpression<<":13,"BinaryExpression>>":13,"BinaryExpression>>>":13,"BinaryExpression<":12,"BinaryExpression<=":12,"BinaryExpression>":12,"BinaryExpression>=":12,BinaryExpressionin:12,BinaryExpressioninstanceof:12,"BinaryExpression==":11,"BinaryExpression===":11,"BinaryExpression!=":11,"BinaryExpression!==":11,"BinaryExpression&":10,"BinaryExpression^":9,"BinaryExpression|":8,"LogicalExpression&&":7,"LogicalExpression||":6,ConditionalExpression:5,AssignmentPattern:4,AssignmentExpression:4,yield:3,YieldExpression:3,SpreadElement:2,"comma-separated-list":1.5,SequenceExpression:1},f={type:"comma-separated-list"},d={out:function(e,t,n){var r=this[n||e.type];r?r.call(this,e,t):t.write(e,"/*"+e.type+"?*/ "+t.sourceAt(e.start,e.end))},expr:function(e,t,n,i){2===i||r(n)0)for(var r=n.length,i=0;i0){this.out(e[0],t,e[0].type);for(var r=1,i=e.length;r0){t.write(null,s);for(var a=0,u=n.length;a0){this.out(n[0],t,"VariableDeclarator");for(var i=1;i0){for(var s=0;s0)for(var r=0;r ")):(this.formatParameters(e.params,t),t.write(e,"=> ")),"ObjectExpression"===e.body.type||"SequenceExpression"===e.body.type?(t.write(null,"("),this.out(e.body,t,e.body.type),t.write(null,")")):this.out(e.body,t,e.body.type)},ThisExpression:function(e,t){t.write(e,"this")},Super:function(e,t){t.write(e,"super")},RestElement:s=function(e,t){t.write(e,"..."),this.out(e.argument,t,e.argument.type)},SpreadElement:s,YieldExpression:function(e,t){t.write(e,e.delegate?"yield*":"yield"),e.argument&&(t.write(null," "),this.expr(t,e,e.argument))},AwaitExpression:function(e,t){t.write(e,"await "),this.expr(t,e,e.argument)},TemplateLiteral:function(e,t){var n,r=e.quasis,i=e.expressions;t.write(e,"`");for(var s=0,o=i.length;s0)for(var n=e.elements,r=n.length,i=0;;){var s=n[i];if(s&&this.expr(t,f,s),((i+=1)=r)break;t.lineLength()>t.wrapColumn&&t.write(null,t.lineEnd,c(t.indent,t.indentLevel+1))}t.write(null,"]")},ArrayPattern:a,ObjectExpression:function(e,t){var n,r=c(t.indent,t.indentLevel++),i=t.lineEnd,s=r+t.indent;if(t.write(e,"{"),e.properties.length>0){t.write(null,i);for(var o=e.properties,a=o.length,u=0;n=o[u],t.write(null,s),this.out(n,t,"Property"),++ut.wrapColumn&&t.write(null,t.lineEnd,c(t.indent,t.indentLevel+1));t.write(null,i,r,"}")}else t.write(null,"}");t.indentLevel--},Property:function(e,t){e.method||"get"===e.kind||"set"===e.kind?this.MethodDefinition(e,t):(e.shorthand||(e.computed?(t.write(null,"["),this.out(e.key,t,e.key.type),t.write(null,"]")):this.out(e.key,t,e.key.type),t.write(null,": ")),this.expr(t,f,e.value))},ObjectPattern:function(e,t){if(t.write(e,"{"),e.properties.length>0)for(var n=e.properties,r=n.length,i=0;this.out(n[i],t,"Property"),++i0)for(var i=r.length,s=0;s1&&t.write(e," "),this.expr(t,e,e.argument,!0)):(this.expr(t,e,e.argument),t.write(e,e.operator))},UpdateExpression:function(e,t){e.prefix?(t.write(e,e.operator),this.out(e.argument,t,e.argument.type)):(this.out(e.argument,t,e.argument.type),t.write(e,e.operator))},BinaryExpression:o=function(e,t){var n=e.operator;"in"===n&&t.inForInit&&t.write(null,"("),this.expr(t,e,e.left),t.write(e," ",n," "),this.expr(t,e,e.right,"ArrowFunctionExpression"===e.right.type?2:0),"in"===n&&t.inForInit&&t.write(null,")")},LogicalExpression:o,AssignmentExpression:function(e,t){"ObjectPattern"===e.left.type&&t.write(null,"("),this.BinaryExpression(e,t),"ObjectPattern"===e.left.type&&t.write(null,")")},AssignmentPattern:function(e,t){this.expr(t,e,e.left),t.write(e," = "),this.expr(t,e,e.right)},ConditionalExpression:function(e,t){this.expr(t,e,e.test,!0),t.write(e," ? "),this.expr(t,e,e.consequent),t.write(null," : "),this.expr(t,e,e.alternate)},NewExpression:function(e,t){t.write(e,"new "),this.expr(t,e,e.callee,"CallExpression"===e.callee.type||"ObjectExpression"===e.callee.type?2:0),this.argumentList(e,t)},CallExpression:function(e,t){this.expr(t,e,e.callee,"ObjectExpression"===e.callee.type?2:0),this.argumentList(e,t)},MemberExpression:function(e,t){!("ObjectExpression"===e.object.type||e.object.type.match(/Literal$/)&&e.object.raw&&e.object.raw.match(/^[0-9]/))&&("ArrayExpression"===e.object.type||"CallExpression"===e.object.type||"NewExpression"===e.object.type||r(e)<=r(e.object))?this.out(e.object,t,e.object.type):(t.write(null,"("),this.out(e.object,t,e.object.type),t.write(null,")")),e.computed?(t.write(e,"["),this.out(e.property,t,e.property.type),t.write(null,"]")):(t.write(e,"."),this.out(e.property,t,e.property.type))},Identifier:function(e,t){t.write(e,e.name)},Literal:function(e,t){t.write(e,e.raw)},NullLiteral:function(e,t){t.write(e,"null")},BooleanLiteral:function(e,t){t.write(e,JSON.stringify(e.value))},StringLiteral:function(e,t){t.write(e,JSON.stringify(e.value))},RegExpLiteral:function(e,t){t.write(e,e.extra.raw||"/"+e.pattern+"/"+e.flags)},NumericLiteral:function(e,t){t.write(e,JSON.stringify(e.value))}};t.exports=function(e,t,n){var r="",i=[],s=(t=t||{}).map&&new l(t.map);s&&t.map.sourceContent&&s.setSourceContent(t.map.file,t.map.sourceContent);var o="",a=[],u=[],p={inForInit:0,lineLength:function(){return r.length},sourceAt:function(e,t){return n?n.substring(e,t):"/* Omitted Non-standard node */"},write:function(e){o=arguments[arguments.length-1];for(var n=1;n=0&&r({self:i,parent:e,field:u[c],index:!0}):l instanceof Object&&i===l&&r({self:i,parent:e,field:u[c]})}})},n),e}function s(t,n){var r=[],s={ecmaVersion:8,allowHashBang:!0,allowReturnOutsideFunction:!0,allowImportExportEverywhere:!0,locations:!0,onComment:r};if((!n||!n.noNodentExtensions||parseInt(o.version)<4)&&(c||(parseInt(o.version)<4&&console.warn("Nodent: Warning - noNodentExtensions option requires acorn >=v4.x. Extensions installed."),e("acorn-es7-plugin")(o),c=!0),s.plugins=s.plugins||{},s.plugins.asyncawait={asyncExits:!0,awaitAnywhere:!0}),n)for(var a in n)"noNodentExtensions"!==a&&(s[a]=n[a]);var u=o.parse(t,s);return i(u,function(e,t,n){for(t();r.length&&e.loc&&e.loc.start.line>=r[0].loc.start.line&&e.loc.end.line>=r[0].loc.end.line;)e.$comments=e.$comments||[],e.$comments.push(r.shift())}),u}var o=e("acorn"),a=e("acorn/dist/walk").make({AwaitExpression:function(e,t,n){n(e.argument,t,"Expression")},SwitchStatement:function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0;r=0)return t}else{var n=i.toSetString(e);if(s.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},r.prototype.at=function(e){if(e>=0&&e>>=5)>0&&(t|=32),n+=r.encode(t)}while(i>0);return n},n.decode=function(e,t,n){var i,s,o=e.length,a=0,u=0;do{if(t>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(s=r.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));i=!!(32&s),a+=(s&=31)<>1;return 1==(1&e)?-t:t}(a),n.rest=t}},{"./base64":16}],16:[function(e,t,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e0?t-u>1?r(u,t,i,s,o,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,i,s,o,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,i,s){if(0===t.length)return-1;var o=r(-1,t.length,e,t,i,s||n.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===i(t[o],t[o-1],!0);)--o;return o}},{}],18:[function(e,t,n){function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=e("./util");r.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},r.prototype.add=function(e){!function(e,t){var n=e.generatedLine,r=t.generatedLine,s=e.generatedColumn,o=t.generatedColumn;return r>n||r==n&&o>=s||i.compareByGeneratedPositionsInflated(e,t)<=0}(this._last,e)?(this._sorted=!1,this._array.push(e)):(this._last=e,this._array.push(e))},r.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=r},{"./util":23}],19:[function(e,t,n){function r(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function i(e,t,n,s){if(n=0){var s=this._originalMappings[i];if(void 0===e.column)for(var o=s.originalLine;s&&s.originalLine===o;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i];else for(var c=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==c;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i]}return r},n.SourceMapConsumer=r,(i.prototype=Object.create(r.prototype)).consumer=r,i.fromSourceMap=function(e){var t=Object.create(i.prototype),n=t._names=c.fromArray(e._names.toArray(),!0),r=t._sources=c.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var o=e._mappings.toArray().slice(),u=t.__generatedMappings=[],l=t.__originalMappings=[],h=0,f=o.length;h1&&(n.source=y+i[1],y+=i[1],n.originalLine=f+i[2],f=n.originalLine,n.originalLine+=1,n.originalColumn=d+i[3],d=n.originalColumn,i.length>4&&(n.name=m+i[4],m+=i[4])),E.push(n),"number"==typeof n.originalLine&&w.push(n)}p(E,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,p(w,a.compareByOriginalPositions),this.__originalMappings=w},i.prototype._findMapping=function(e,t,n,r,i,s){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,s)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var s=a.getArg(i,"source",null);null!==s&&(s=this._sources.at(s),null!=this.sourceRoot&&(s=a.join(this.sourceRoot,s)));var o=a.getArg(i,"name",null);return null!==o&&(o=this._names.at(o)),{source:s,line:a.getArg(i,"originalLine",null),column:a.getArg(i,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=a.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=a.getArg(e,"source");if(null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var n={source:t=this._sources.indexOf(t),originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",r.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===n.source)return{line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=i,(o.prototype=Object.create(r.prototype)).constructor=r,o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},r.prototype._serializeMappings=function(){for(var e,t,n,r,o=0,a=1,u=0,c=0,l=0,p=0,h="",f=this._mappings.toArray(),d=0,y=f.length;d0){if(!s.compareByGeneratedPositionsInflated(t,f[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-o),o=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=i.encode(r-p),p=r,e+=i.encode(t.originalLine-1-c),c=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=i.encode(n-l),l=n)),h+=e}return h},r.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var n=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=r},{"./array-set":14,"./base64-vlq":15,"./mapping-list":18,"./util":23}],22:[function(e,t,n){function r(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[a]=!0,null!=r&&this.add(r)}var i=e("./source-map-generator").SourceMapGenerator,s=e("./util"),o=/(\r?\n)/,a="$$$isSourceNode$$$";r.fromStringWithSourceMap=function(e,t,n){function i(e,t){if(null===e||void 0===e.source)a.add(t);else{var i=n?s.join(n,e.source):e.source;a.add(new r(e.originalLine,e.originalColumn,i,t,e.name))}}var a=new r,u=e.split(o),c=0,l=function(){function e(){return c=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},r.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0;l--)"."===(o=u[l])?u.splice(l,1):".."===o?c++:c>0&&(""===o?(u.splice(l+1,c),c=0):(u.splice(l,2),c--));return""===(t=u.join("/"))&&(t=a?"/":"."),s?(s.path=t,i(s)):t}function o(e){return e}function a(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function u(e,t){return e===t?0:e>t?1:-1}n.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var c=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,l=/^data:.+\,.+$/;n.urlParse=r,n.urlGenerate=i,n.normalize=s,n.join=function(e,t){""===e&&(e="."),""===t&&(t=".");var n=r(t),o=r(e);if(o&&(e=o.path||"/"),n&&!n.scheme)return o&&(n.scheme=o.scheme),i(n);if(n||t.match(l))return t;if(o&&!o.host&&!o.path)return o.host=t,i(o);var a="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=a,i(o)):a},n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(c)},n.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var p=!("__proto__"in Object.create(null));n.toSetString=p?o:function(e){return a(e)?"$"+e:e},n.fromSetString=p?o:function(e){return a(e)?e.slice(1):e},n.compareByOriginalPositions=function(e,t,n){var r=e.source-t.source;return 0!==r?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)||n?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!=(r=e.generatedLine-t.generatedLine)?r:e.name-t.name},n.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)||n?r:0!=(r=e.source-t.source)?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:e.name-t.name},n.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=u(e.source,t.source))?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:u(e.name,t.name)}},{}],24:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":20,"./lib/source-map-generator":21,"./lib/source-node":22}],25:[function(e,t,n){t.exports={_args:[[{raw:"nodent-compiler@>=3.1.5",scope:null,escapedName:"nodent-compiler",name:"nodent-compiler",rawSpec:">=3.1.5",spec:">=3.1.5",type:"range"},"/Users/evgenypoberezkin/Documents/JSON/ajv/node_modules/nodent"]],_from:"nodent-compiler@>=3.1.5",_id:"nodent-compiler@3.1.5",_inCache:!0,_location:"/nodent-compiler",_nodeVersion:"8.9.1",_npmOperationalInternal:{host:"s3://npm-registry-packages",tmp:"tmp/nodent-compiler-3.1.5.tgz_1511792299537_0.15715787676163018"},_npmUser:{name:"matatbread",email:"npm@mailed.me.uk"},_npmVersion:"5.5.1",_phantomChildren:{},_requested:{raw:"nodent-compiler@>=3.1.5",scope:null,escapedName:"nodent-compiler",name:"nodent-compiler",rawSpec:">=3.1.5",spec:">=3.1.5",type:"range"},_requiredBy:["/nodent"],_resolved:"https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.1.5.tgz",_shasum:"8c09289eacf7256bda89c2b88941681d5cccf80c",_shrinkwrap:null,_spec:"nodent-compiler@>=3.1.5",_where:"/Users/evgenypoberezkin/Documents/JSON/ajv/node_modules/nodent",author:{name:"Mat At Bread",email:"nodent@mailed.me.uk"},bugs:{url:"https://github.com/MatAtBread/nodent/issues"},dependencies:{acorn:">=2.5.2","acorn-es7-plugin":">=1.1.6","source-map":"^0.5.6"},description:"NoDent - Asynchronous Javascript language extensions",devDependencies:{},directories:{},dist:{integrity:"sha512-Istg796un2lALiy/eFNnLbAEMovQqrtpVqXVY8PKs6ycsyBbK480D55misJBQ1QxvstcJ7Hk9xbSVkV8lIi+tg==",shasum:"8c09289eacf7256bda89c2b88941681d5cccf80c",tarball:"https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.1.5.tgz"},engines:"node >= 0.10.0",gitHead:"93054f019902e2b107e7be681836273f35a02614",homepage:"https://github.com/MatAtBread/nodent-compiler#readme",keywords:["Javascript","ES7","async","await","language","extensions","Node","callback","generator","Promise","asynchronous"],license:"BSD-2-Clause",main:"compiler.js",maintainers:[{name:"matatbread",email:"npm@mailed.me.uk"}],name:"nodent-compiler",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+https://github.com/MatAtBread/nodent-compiler.git"},scripts:{test:"node tests/basic.js # Please install 'nodent' and test the compiler fully from there."},version:"3.1.5"}},{}],26:[function(e,t,n){"use strict";function r(e,t){if(Function.prototype.$asyncspawn||Object.defineProperty(Function.prototype,"$asyncspawn",{value:r,enumerable:!1,configurable:!0,writable:!0}),this instanceof Function){var n=this;return new e(function(e,r){function i(t,n){var o;try{if((o=t.call(s,n)).done){if(o.value!==e){if(o.value&&o.value===o.value.then)return o.value(e,r);e&&e(o.value),e=null}return}o.value.then?o.value.then(function(e){i(s.next,e)},function(e){i(s.throw,e)}):i(s.next,o.value)}catch(e){return r&&r(e),void(r=null)}}var s=n.call(t,e,r);i(s.next)})}}var i=function(e,t){for(var n=t.toString(),r="return "+n,i=n.match(/.*\(([^)]*)\)/)[1],s=/['"]!!!([^'"]*)['"]/g,o=[];;){var a=s.exec(r);if(!a)break;o.push(a)}return o.reverse().forEach(function(t){r=r.slice(0,t.index)+e[t[1]]+r.substr(t.index+t[0].length)}),r=r.replace(/\/\*[^*]*\*\//g," ").replace(/\s+/g," "),new Function(i,r)()}({zousan:e("./zousan").toString(),thenable:e("./thenableFactory").toString()},function e(t,n){function r(){return i.apply(t,arguments)}Function.prototype.$asyncbind||Object.defineProperty(Function.prototype,"$asyncbind",{value:e,enumerable:!1,configurable:!0,writable:!0}),e.trampoline||(e.trampoline=function(e,t,n,r,i){return function s(o){for(;o;){if(o.then)return o=o.then(s,r),i?void 0:o;try{if(o.pop){if(o.length)return o.pop()?t.call(e):o;o=n}else o=o.call(e)}catch(e){return r(e)}}}}),e.LazyThenable||(e.LazyThenable="!!!thenable"(),e.EagerThenable=e.Thenable=(e.EagerThenableFactory="!!!zousan")());var i=this;switch(n){case!0:return new e.Thenable(r);case 0:return new e.LazyThenable(r);case void 0:return r.then=r,r;default:return function(){try{return i.apply(t,arguments)}catch(e){return n(e)}}}});i(),r(),t.exports={$asyncbind:i,$asyncspawn:r}},{"./thenableFactory":27,"./zousan":28}],27:[function(e,t,n){t.exports=function(){function e(e){return e&&e instanceof Object&&"function"==typeof e.then}function t(n,r,i){try{var s=i?i(r):r;if(n===s)return n.reject(new TypeError("Promise resolution loop"));e(s)?s.then(function(e){t(n,e)},function(e){n.reject(e)}):n.resolve(s)}catch(e){n.reject(e)}}function n(){}function r(e){}function i(r,i){var s=new n;try{this._resolver(function(n){return e(n)?n.then(r,i):t(s,n,r)},function(e){t(s,e,i)})}catch(e){t(s,e,i)}return s}function s(e){this._resolver=e,this.then=i}return n.prototype={resolve:r,reject:r,then:function(e,t){this.resolve=e,this.reject=t}},s.resolve=function(e){return s.isThenable(e)?e:{then:function(t){return t(e)}}},s.isThenable=e,s}},{}],28:[function(e,t,n){(function(e){"use strict";t.exports=function(t){function n(e){if(e){var t=this;e(function(e){t.resolve(e)},function(e){t.reject(e)})}}function r(e,t){if("function"==typeof e.y)try{var n=e.y.call(void 0,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.resolve(t)}function i(e,t){if("function"==typeof e.n)try{var n=e.n.call(void 0,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.reject(t)}t=t||"object"==typeof e&&e.nextTick||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,0)};var s=function(){function e(){for(;n.length-r;){try{n[r]()}catch(e){}n[r++]=void 0,r===i&&(n.splice(0,i),r=0)}}var n=[],r=0,i=1024;return function(i){n.push(i),n.length-r==1&&t(e)}}();return n.prototype={resolve:function(e){if(void 0===this.state){if(e===this)return this.reject(new TypeError("Attempt to resolve promise with self"));var t=this;if(e&&("function"==typeof e||"object"==typeof e))try{var n=0,i=e.then;if("function"==typeof i)return void i.call(e,function(e){n++||t.resolve(e)},function(e){n++||t.reject(e)})}catch(e){return void(n||this.reject(e))}this.state=r,this.v=e,t.c&&s(function(){for(var n=0,i=t.c.length;n]*>)(.*)/i,/(.*)(<\/script>)(.*)/i],o=0,a=!0;t=t.split("\n");for(var u=0;u=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;s--){var o=s>=0?arguments[s]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+n||"."},n.normalize=function(e){var i=n.isAbsolute(e),s="/"===o(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!i).join("/"))||i||(e="."),e&&s&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),o=Math.min(i.length,s.length),a=o,u=0;u1)for(var n=1;n= 8.8",https:!0,_http_server:">= 0.11",_linklist:"< 8",module:!0,net:!0,os:!0,path:!0,perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,stream:!0,string_decoder:!0,sys:!0,timers:!0,tls:!0,tty:!0,url:!0,util:!0,v8:">= 1",vm:!0,zlib:!0}},{}],37:[function(e,t,n){(function(n){function r(e){if(!0===e)return!0;for(var t=e.split(" "),n=t[0],r=t[1].split("."),s=0;s<3;++s){var o=Number(i[s]||0),a=Number(r[s]||0);if(o!==a)return"<"===n?o="===n&&o>=a}return!1}var i=n.versions&&n.versions.node&&n.versions.node.split(".")||[],s=e("./core.json"),o={};for(var a in s)Object.prototype.hasOwnProperty.call(s,a)&&(o[a]=r(s[a]));t.exports=o}).call(this,e("_process"))},{"./core.json":36,_process:32}],38:[function(e,t,n){var r=e("path"),i=e("fs"),s=r.parse||e("path-parse");t.exports=function(e,t){var n=t&&t.moduleDirectory?[].concat(t.moduleDirectory):["node_modules"],o=r.resolve(e);if(t&&!1===t.preserveSymlinks)try{o=i.realpathSync(o)}catch(e){if("ENOENT"!==e.code)throw e}var a="/";/^([A-Za-z]:)/.test(o)?a="":/^\\\\/.test(o)&&(a="\\\\");for(var u=[o],c=s(o);c.dir!==u[u.length-1];)u.push(c.dir),c=s(c.dir);var l=u.reduce(function(e,t){return e.concat(n.map(function(e){return r.join(a,t,e)}))},[]);return t&&t.paths?l.concat(t.paths):l}},{fs:7,path:30,"path-parse":31}],39:[function(e,t,n){var r=e("./core"),i=e("fs"),s=e("path"),o=e("./caller.js"),a=e("./node-modules-paths.js");t.exports=function(e,t){function n(e){if(l(e))return e;for(var t=0;t"))}return Object.keys(hostOptions).forEach(function(k){"host"===parseOpts[k]&&(parseOpts[k]=function(){try{return eval(hostOptions[k]),!0}catch(e){return!1}}())}),parseOpts.promises||parseOpts.es7||parseOpts.generators||parseOpts.engine?((parseOpts.promises||parseOpts.es7)&&parseOpts.generators&&(log("No valid 'use nodent' directive, assumed -es7 mode"),parseOpts=optionSets.es7),(parseOpts.generators||parseOpts.engine)&&(parseOpts.promises=!0),parseOpts.promises&&(parseOpts.es7=!0),parseOpts):null}function stripBOM(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),"#!"===e.substring(0,2)&&(e="//"+e),e}function compileNodentedFile(e,t){return t=t||e.log,function(n,r,i){var s=stripBOM(fs.readFileSync(r,"utf8")),o=e.parse(s,r,i);i=i||parseCompilerOptions(o.ast,t,r),e.asynchronize(o,void 0,i,t),e.prettyPrint(o,i),n._compile(o.code,o.filename)}}function asyncify(e){return e=e||Thenable,function(t,n,r){if(Array.isArray(n)){var i=n;n=function(e,t){return i.indexOf(e)>=0}}else n=n||function(e,t){return!(e.match(/Sync$/)&&e.replace(/Sync$/,"")in t)};r||(r="");var s=Object.create(t);for(var o in s)!function(){var i=o;try{"function"!=typeof t[i]||s[i+r]&&s[i+r].isAsync||!n(i,s)||(s[i+r]=function(){var n=Array.prototype.slice.call(arguments);return new e(function(e,r){var s=function(t,n){if(t)return r(t);switch(arguments.length){case 0:return e();case 2:return e(n);default:return e(Array.prototype.slice.call(arguments,1))}};n.length>t[i].length?n.push(s):n[t[i].length-1]=s;t[i].apply(t,n)})},s[i+r].isAsync=!0)}catch(e){}}();return s.super=t,s}}function generateRequestHandler(e,t,n){var r={},i=this;t||(t=/\.njs$/),n?n.compiler||(n.compiler={}):n={compiler:{}};var s=copyObj([NodentCompiler.initialCodeGenOpts,n.compiler]);return function(o,a,u){function c(e){a.statusCode=500,a.write(e.toString()),a.end()}if(r[o.url])return a.setHeader("Content-Type",r[o.url].contentType),n.setHeaders&&n.setHeaders(a),a.write(r[o.url].output),void a.end();if(!(o.url.match(t)||n.htmlScriptRegex&&o.url.match(n.htmlScriptRegex)))return u&&u();var l=e+o.url;if(n.extensions&&!fs.existsSync(l))for(var p=0;p=0?this.covers[n]=require(e):this.covers[n]=require(__dirname+"/covers/"+e)),this.covers[n](this,t)}function prepareMappedStackTrace(e,t){return e+t.map(function(e){var t=e.getFileName();if(t&&NodentCompiler.prototype.smCache[t]){var n=NodentCompiler.prototype.smCache[t].smc.originalPositionFor({line:e.getLineNumber(),column:e.getColumnNumber()});if(n&&n.line){var r=e.toString();return"\n at "+r.substring(0,r.length-1)+" => …"+n.source+":"+n.line+":"+n.column+(e.getFunctionName()?")":"")}}return"\n at "+e}).join("")}function setGlobalEnvironment(e){var t={};t[defaultCodeGenOpts.$asyncbind]={value:$asyncbind,writable:!0,enumerable:!1,configurable:!0},t[defaultCodeGenOpts.$asyncspawn]={value:$asyncspawn,writable:!0,enumerable:!1,configurable:!0};try{Object.defineProperties(Function.prototype,t)}catch(t){e.log("Function prototypes already assigned: ",t.messsage)}defaultCodeGenOpts[defaultCodeGenOpts.$error]in global||(global[defaultCodeGenOpts[defaultCodeGenOpts.$error]]=globalErrorHandler),e.augmentObject&&Object.defineProperties(Object.prototype,{asyncify:{value:function(e,t,n){return asyncify(e)(this,t,n)},writable:!0,configurable:!0},isThenable:{value:function(){return Thenable.isThenable(this)},writable:!0,configurable:!0}}),Object[defaultCodeGenOpts.$makeThenable]=Thenable.resolve}function initialize(e){function t(n,r){if(!r.match(/nodent\/nodent\.js$/)){if(r.match(/node_modules\/nodent\/.*\.js$/))return stdJSLoader(n,r);for(var o=0;ot[n])return 1}return 0}(u.version,NodentCompiler.prototype.version)<0&&(u.originalNodentLoader=n.exports,n.exports=function(){var t=require.extensions[".js"],n=u.originalNodentLoader.apply(this,arguments);return u.jsCompiler=require.extensions[".js"],require.extensions[".js"]=t,setGlobalEnvironment(e),n},Object.keys(u.originalNodentLoader).forEach(function(e){n.exports[e]=u.originalNodentLoader[e]}),i.push(u),i=i.sort(function(e,t){return t.path.length-e.path.length})))}function n(t){if(Array.isArray(t))return t.forEach(n);if(require.extensions[t]){Object.keys(e).filter(function(t){return compiler[t]!=e[t]}).length&&e.log("File extension "+t+" already configured for async/await compilation.")}require.extensions[t]=compileNodentedFile(compiler,e.log)}if(e){for(var r in e)if("use"!==r&&!config.hasOwnProperty(r))throw new Error("NoDent: unknown option: "+r+"="+JSON.stringify(e[r]))}else e={};compiler?compiler.setOptions(e):(Object.keys(config).forEach(function(t){t in e||(e[t]=config[t])}),compiler=new NodentCompiler(e)),e.dontMapStackTraces||(Error.prepareStackTrace=prepareMappedStackTrace),setGlobalEnvironment(e);var i=[];if(!e.dontInstallRequireHook){if(!stdJSLoader){stdJSLoader=require.extensions[".js"];var s=compileNodentedFile(compiler,e.log);require.extensions[".js"]=t}e.extension&&n(e.extension)}return e.use&&(Array.isArray(e.use)?(e.log("Warning: nodent({use:[...]}) is deprecated. Use nodent.require(module,options)\n"+(new Error).stack.split("\n")[2]),e.use.length&&e.use.forEach(function(e){compiler[e]=compiler.require(e)})):(e.log("Warning: nodent({use:{...}}) is deprecated. Use nodent.require(module,options)\n"+(new Error).stack.split("\n")[2]),Object.keys(e.use).forEach(function(t){compiler[t]=compiler.require(t,e.use[t])}))),compiler}function runFromCLI(){function e(e,n){try{var s,o;if(r.fromast){if(e=JSON.parse(e),s={origCode:"",filename:t,ast:e},!(o=parseCompilerOptions(e,i.log))){var a=r.use?'"use nodent-'+r.use+'";':'"use nodent";';o=parseCompilerOptions(a,i.log),console.warn("/* "+t+": No 'use nodent*' directive, assumed "+a+" */")}}else(o=parseCompilerOptions(r.use?'"use nodent-'+r.use+'";':e,i.log))||(o=parseCompilerOptions('"use nodent";',i.log),r.dest||console.warn("/* "+t+": 'use nodent*' directive missing/ignored, assumed 'use nodent;' */")),s=i.parse(e,t,o);if(r.parseast||r.pretty||i.asynchronize(s,void 0,o,i.log),i.prettyPrint(s,o),r.out||r.pretty||r.dest){if(r.dest&&!n)throw new Error("Can't write unknown file to "+r.dest);var u="";r.runtime&&(u+="Function.prototype.$asyncbind = "+Function.prototype.$asyncbind.toString()+";\n",u+="global.$error = global.$error || "+global.$error.toString()+";\n"),u+=s.code,n&&r.dest?(fs.writeFileSync(r.dest+n,u),console.log("Compiled",r.dest+n)):console.log(u)}(r.minast||r.parseast)&&console.log(JSON.stringify(s.ast,function(e,t){return"$"===e[0]||e.match(/^(start|end|loc)$/)?void 0:t},2,null)),r.ast&&console.log(JSON.stringify(s.ast,function(e,t){return"$"===e[0]?void 0:t},0)),r.exec&&new Function(s.code)()}catch(e){console.error(e)}}var t,n=require("path"),r=(process.env.NODENT_OPTS&&JSON.parse(process.env.NODENT_OPTS),function(e){for(var t=[],n=e||2;n0",engine:"(async ()=>0)",noRuntime:"Promise"};NodentCompiler.prototype.Thenable=Thenable,NodentCompiler.prototype.EagerThenable=$asyncbind.EagerThenableFactory,NodentCompiler.prototype.asyncify=asyncify,NodentCompiler.prototype.require=requireCover,NodentCompiler.prototype.generateRequestHandler=generateRequestHandler,NodentCompiler.prototype.$asyncspawn=$asyncspawn,NodentCompiler.prototype.$asyncbind=$asyncbind,NodentCompiler.prototype.parseCompilerOptions=parseCompilerOptions,$asyncbind.call($asyncbind);var compiler;initialize.setDefaultCompileOptions=function(e,t){return e&&Object.keys(e).forEach(function(t){if(!(t in defaultCodeGenOpts))throw new Error("NoDent: unknown compiler option: "+t);defaultCodeGenOpts[t]=e[t]}),t&&Object.keys(t).forEach(function(e){if(!(e in t))throw new Error("NoDent: unknown configuration option: "+e);config[e]=t[e]}),initialize},initialize.setCompileOptions=function(e,t){return optionSet[e]=optionSet[e]||copyObj([defaultCodeGenOpts]),t&&Object.keys(t).forEach(function(n){if(!(n in defaultCodeGenOpts))throw new Error("NoDent: unknown compiler option: "+n);optionSet[e][n]=t[n]}),initialize},initialize.asyncify=asyncify,initialize.Thenable=$asyncbind.Thenable,initialize.EagerThenable=$asyncbind.EagerThenableFactory,module.exports=initialize,require.main===module&&process.argv.length>=3&&runFromCLI()}).call(this,require("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},"/node_modules/nodent")},{"./htmlScriptParser":29,_process:32,fs:7,"nodent-compiler":10,"nodent-runtime":26,path:30,resolve:33}]},{},[]); \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/ajv/dist/regenerator.min.js b/tools/node_modules/eslint/node_modules/ajv/dist/regenerator.min.js index 0b05fb9cf684d8..ef3b8bed543ce8 100644 --- a/tools/node_modules/eslint/node_modules/ajv/dist/regenerator.min.js +++ b/tools/node_modules/eslint/node_modules/ajv/dist/regenerator.min.js @@ -1,2 +1,2 @@ -/* regenerator 0.10.0: Source transformer enabling ECMAScript 6 generator functions (yield) in JavaScript-of-today (ES5) */ -require=function e(t,r,n){function i(a,o){if(!r[a]){if(!t[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=r[a]={exports:{}};t[a][0].call(c.exports,function(e){var r=t[a][1][e];return i(r||e)},c,c.exports,e,t,r,n)}return r[a].exports}for(var s="function"==typeof require&&require,a=0;a=0;o--)if(u[o]!==l[o])return!1;for(o=u.length-1;o>=0;o--)if(a=u[o],!h(e[a],t[a],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function f(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function d(e,t,r){h(e,t,!0)&&c(e,t,r,"notDeepStrictEqual",d)}function m(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function y(e,t,r,n){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&c(i,r,"Missing expected exception"+n);var s="string"==typeof n,a=!e&&g.isError(i),o=!e&&i&&!r;if((a&&s&&m(i,r)||o)&&c(i,r,"Got unwanted exception"+n),e&&i&&r&&!m(i,r)||!e&&i)throw i}var g=e("util/"),b=Object.prototype.hasOwnProperty,v=Array.prototype.slice,x="foo"===function(){}.name,E=t.exports=p,A=/\s*function\s+([^\(\s]*)\s*/;E.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return u(l(e.actual),128)+" "+e.operator+" "+u(l(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||c;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=o(t),s=n.indexOf("\n"+i);if(s>=0){var a=n.indexOf("\n",s+1);n=n.substring(a+1)}this.stack=n}}},g.inherits(E.AssertionError,Error),E.fail=c,E.ok=p,E.equal=function(e,t,r){e!=t&&c(e,t,r,"==",E.equal)},E.notEqual=function(e,t,r){e==t&&c(e,t,r,"!=",E.notEqual)},E.deepEqual=function(e,t,r){h(e,t,!1)||c(e,t,r,"deepEqual",E.deepEqual)},E.deepStrictEqual=function(e,t,r){h(e,t,!0)||c(e,t,r,"deepStrictEqual",E.deepStrictEqual)},E.notDeepEqual=function(e,t,r){h(e,t,!1)&&c(e,t,r,"notDeepEqual",E.notDeepEqual)},E.notDeepStrictEqual=d,E.strictEqual=function(e,t,r){e!==t&&c(e,t,r,"===",E.strictEqual)},E.notStrictEqual=function(e,t,r){e===t&&c(e,t,r,"!==",E.notStrictEqual)},E.throws=function(e,t,r){y(!0,e,t,r)},E.doesNotThrow=function(e,t,r){y(!1,e,t,r)},E.ifError=function(e){if(e)throw e};var D=Object.keys||function(e){var t=[];for(var r in e)b.call(e,r)&&t.push(r);return t}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":613}],2:[function(e,t,r){t.exports=function(t){t.use(e("./es7"));var r=t.use(e("../lib/types")),n=t.use(e("../lib/shared")).defaults,i=r.Type.def,s=r.Type.or;i("Noop").bases("Node").build(),i("DoExpression").bases("Expression").build("body").field("body",[i("Statement")]),i("Super").bases("Expression").build(),i("BindExpression").bases("Expression").build("object","callee").field("object",s(i("Expression"),null)).field("callee",i("Expression")),i("Decorator").bases("Node").build("expression").field("expression",i("Expression")),i("Property").field("decorators",s([i("Decorator")],null),n.null),i("MethodDefinition").field("decorators",s([i("Decorator")],null),n.null),i("MetaProperty").bases("Expression").build("meta","property").field("meta",i("Identifier")).field("property",i("Identifier")),i("ParenthesizedExpression").bases("Expression").build("expression").field("expression",i("Expression")),i("ImportSpecifier").bases("ModuleSpecifier").build("imported","local").field("imported",i("Identifier")),i("ImportDefaultSpecifier").bases("ModuleSpecifier").build("local"),i("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("local"),i("ExportDefaultDeclaration").bases("Declaration").build("declaration").field("declaration",s(i("Declaration"),i("Expression"))),i("ExportNamedDeclaration").bases("Declaration").build("declaration","specifiers","source").field("declaration",s(i("Declaration"),null)).field("specifiers",[i("ExportSpecifier")],n.emptyArray).field("source",s(i("Literal"),null),n.null),i("ExportSpecifier").bases("ModuleSpecifier").build("local","exported").field("exported",i("Identifier")),i("ExportNamespaceSpecifier").bases("Specifier").build("exported").field("exported",i("Identifier")),i("ExportDefaultSpecifier").bases("Specifier").build("exported").field("exported",i("Identifier")),i("ExportAllDeclaration").bases("Declaration").build("exported","source").field("exported",s(i("Identifier"),null)).field("source",i("Literal")),i("CommentBlock").bases("Comment").build("value","leading","trailing"),i("CommentLine").bases("Comment").build("value","leading","trailing")}},{"../lib/shared":18,"../lib/types":19,"./es7":7}],3:[function(e,t,r){t.exports=function(t){t.use(e("./babel")),t.use(e("./flow"));var r=t.use(e("../lib/types")),n=t.use(e("../lib/shared")).defaults,i=r.Type.def,s=r.Type.or;i("Directive").bases("Node").build("value").field("value",i("DirectiveLiteral")),i("DirectiveLiteral").bases("Node","Expression").build("value").field("value",String,n["use strict"]),i("BlockStatement").bases("Statement").build("body").field("body",[i("Statement")]).field("directives",[i("Directive")],n.emptyArray),i("Program").bases("Node").build("body").field("body",[i("Statement")]).field("directives",[i("Directive")],n.emptyArray),i("StringLiteral").bases("Literal").build("value").field("value",String),i("NumericLiteral").bases("Literal").build("value").field("value",Number),i("NullLiteral").bases("Literal").build(),i("BooleanLiteral").bases("Literal").build("value").field("value",Boolean),i("RegExpLiteral").bases("Literal").build("pattern","flags").field("pattern",String).field("flags",String);var a=s(i("Property"),i("ObjectMethod"),i("ObjectProperty"),i("SpreadProperty"));i("ObjectExpression").bases("Expression").build("properties").field("properties",[a]),i("ObjectMethod").bases("Node","Function").build("kind","key","params","body","computed").field("kind",s("method","get","set")).field("key",s(i("Literal"),i("Identifier"),i("Expression"))).field("params",[i("Pattern")]).field("body",i("BlockStatement")).field("computed",Boolean,n.false).field("generator",Boolean,n.false).field("async",Boolean,n.false).field("decorators",s([i("Decorator")],null),n.null),i("ObjectProperty").bases("Node").build("key","value").field("key",s(i("Literal"),i("Identifier"),i("Expression"))).field("value",s(i("Expression"),i("Pattern"))).field("computed",Boolean,n.false);var o=s(i("MethodDefinition"),i("VariableDeclarator"),i("ClassPropertyDefinition"),i("ClassProperty"),i("ClassMethod"));i("ClassBody").bases("Declaration").build("body").field("body",[o]),i("ClassMethod").bases("Declaration","Function").build("kind","key","params","body","computed","static").field("kind",s("get","set","method","constructor")).field("key",s(i("Literal"),i("Identifier"),i("Expression"))).field("params",[i("Pattern")]).field("body",i("BlockStatement")).field("computed",Boolean,n.false).field("static",Boolean,n.false).field("generator",Boolean,n.false).field("async",Boolean,n.false).field("decorators",s([i("Decorator")],null),n.null);var u=s(i("Property"),i("PropertyPattern"),i("SpreadPropertyPattern"),i("SpreadProperty"),i("ObjectProperty"),i("RestProperty"));i("ObjectPattern").bases("Pattern").build("properties").field("properties",[u]).field("decorators",s([i("Decorator")],null),n.null),i("SpreadProperty").bases("Node").build("argument").field("argument",i("Expression")),i("RestProperty").bases("Node").build("argument").field("argument",i("Expression")),i("ForAwaitStatement").bases("Statement").build("left","right","body").field("left",s(i("VariableDeclaration"),i("Expression"))).field("right",i("Expression")).field("body",i("Statement")),i("Import").bases("Expression").build()}},{"../lib/shared":18,"../lib/types":19,"./babel":2,"./flow":9}],4:[function(e,t,r){t.exports=function(t){var r=t.use(e("../lib/types")).Type,n=r.def,i=r.or,s=t.use(e("../lib/shared")),a=s.defaults,o=s.geq;n("Printable").field("loc",i(n("SourceLocation"),null),a.null,!0),n("Node").bases("Printable").field("type",String).field("comments",i([n("Comment")],null),a.null,!0),n("SourceLocation").build("start","end","source").field("start",n("Position")).field("end",n("Position")).field("source",i(String,null),a.null),n("Position").build("line","column").field("line",o(1)).field("column",o(0)),n("File").bases("Node").build("program","name").field("program",n("Program")).field("name",i(String,null),a.null),n("Program").bases("Node").build("body").field("body",[n("Statement")]),n("Function").bases("Node").field("id",i(n("Identifier"),null),a.null).field("params",[n("Pattern")]).field("body",n("BlockStatement")),n("Statement").bases("Node"),n("EmptyStatement").bases("Statement").build(),n("BlockStatement").bases("Statement").build("body").field("body",[n("Statement")]),n("ExpressionStatement").bases("Statement").build("expression").field("expression",n("Expression")),n("IfStatement").bases("Statement").build("test","consequent","alternate").field("test",n("Expression")).field("consequent",n("Statement")).field("alternate",i(n("Statement"),null),a.null),n("LabeledStatement").bases("Statement").build("label","body").field("label",n("Identifier")).field("body",n("Statement")),n("BreakStatement").bases("Statement").build("label").field("label",i(n("Identifier"),null),a.null),n("ContinueStatement").bases("Statement").build("label").field("label",i(n("Identifier"),null),a.null),n("WithStatement").bases("Statement").build("object","body").field("object",n("Expression")).field("body",n("Statement")),n("SwitchStatement").bases("Statement").build("discriminant","cases","lexical").field("discriminant",n("Expression")).field("cases",[n("SwitchCase")]).field("lexical",Boolean,a.false),n("ReturnStatement").bases("Statement").build("argument").field("argument",i(n("Expression"),null)),n("ThrowStatement").bases("Statement").build("argument").field("argument",n("Expression")),n("TryStatement").bases("Statement").build("block","handler","finalizer").field("block",n("BlockStatement")).field("handler",i(n("CatchClause"),null),function(){return this.handlers&&this.handlers[0]||null}).field("handlers",[n("CatchClause")],function(){return this.handler?[this.handler]:[]},!0).field("guardedHandlers",[n("CatchClause")],a.emptyArray).field("finalizer",i(n("BlockStatement"),null),a.null),n("CatchClause").bases("Node").build("param","guard","body").field("param",n("Pattern")).field("guard",i(n("Expression"),null),a.null).field("body",n("BlockStatement")),n("WhileStatement").bases("Statement").build("test","body").field("test",n("Expression")).field("body",n("Statement")),n("DoWhileStatement").bases("Statement").build("body","test").field("body",n("Statement")).field("test",n("Expression")),n("ForStatement").bases("Statement").build("init","test","update","body").field("init",i(n("VariableDeclaration"),n("Expression"),null)).field("test",i(n("Expression"),null)).field("update",i(n("Expression"),null)).field("body",n("Statement")),n("ForInStatement").bases("Statement").build("left","right","body").field("left",i(n("VariableDeclaration"),n("Expression"))).field("right",n("Expression")).field("body",n("Statement")),n("DebuggerStatement").bases("Statement").build(),n("Declaration").bases("Statement"),n("FunctionDeclaration").bases("Function","Declaration").build("id","params","body").field("id",n("Identifier")),n("FunctionExpression").bases("Function","Expression").build("id","params","body"),n("VariableDeclaration").bases("Declaration").build("kind","declarations").field("kind",i("var","let","const")).field("declarations",[n("VariableDeclarator")]),n("VariableDeclarator").bases("Node").build("id","init").field("id",n("Pattern")).field("init",i(n("Expression"),null)),n("Expression").bases("Node","Pattern"),n("ThisExpression").bases("Expression").build(),n("ArrayExpression").bases("Expression").build("elements").field("elements",[i(n("Expression"),null)]),n("ObjectExpression").bases("Expression").build("properties").field("properties",[n("Property")]),n("Property").bases("Node").build("kind","key","value").field("kind",i("init","get","set")).field("key",i(n("Literal"),n("Identifier"))).field("value",n("Expression")),n("SequenceExpression").bases("Expression").build("expressions").field("expressions",[n("Expression")]);var u=i("-","+","!","~","typeof","void","delete");n("UnaryExpression").bases("Expression").build("operator","argument","prefix").field("operator",u).field("argument",n("Expression")).field("prefix",Boolean,a.true);var l=i("==","!=","===","!==","<","<=",">",">=","<<",">>",">>>","+","-","*","/","%","&","|","^","in","instanceof","..");n("BinaryExpression").bases("Expression").build("operator","left","right").field("operator",l).field("left",n("Expression")).field("right",n("Expression"));var c=i("=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=");n("AssignmentExpression").bases("Expression").build("operator","left","right").field("operator",c).field("left",n("Pattern")).field("right",n("Expression"));var p=i("++","--");n("UpdateExpression").bases("Expression").build("operator","argument","prefix").field("operator",p).field("argument",n("Expression")).field("prefix",Boolean);var h=i("||","&&");n("LogicalExpression").bases("Expression").build("operator","left","right").field("operator",h).field("left",n("Expression")).field("right",n("Expression")),n("ConditionalExpression").bases("Expression").build("test","consequent","alternate").field("test",n("Expression")).field("consequent",n("Expression")).field("alternate",n("Expression")),n("NewExpression").bases("Expression").build("callee","arguments").field("callee",n("Expression")).field("arguments",[n("Expression")]),n("CallExpression").bases("Expression").build("callee","arguments").field("callee",n("Expression")).field("arguments",[n("Expression")]),n("MemberExpression").bases("Expression").build("object","property","computed").field("object",n("Expression")).field("property",i(n("Identifier"),n("Expression"))).field("computed",Boolean,function(){var e=this.property.type;return"Literal"===e||"MemberExpression"===e||"BinaryExpression"===e}),n("Pattern").bases("Node"),n("SwitchCase").bases("Node").build("test","consequent").field("test",i(n("Expression"),null)).field("consequent",[n("Statement")]),n("Identifier").bases("Node","Expression","Pattern").build("name").field("name",String),n("Literal").bases("Node","Expression").build("value").field("value",i(String,Boolean,null,Number,RegExp)).field("regex",i({pattern:String,flags:String},null),function(){if(this.value instanceof RegExp){var e="";return this.value.ignoreCase&&(e+="i"),this.value.multiline&&(e+="m"),this.value.global&&(e+="g"),{pattern:this.value.source,flags:e}}return null}),n("Comment").bases("Printable").field("value",String).field("leading",Boolean,a.true).field("trailing",Boolean,a.false)}},{"../lib/shared":18,"../lib/types":19}],5:[function(e,t,r){t.exports=function(t){t.use(e("./core"));var r=t.use(e("../lib/types")),n=r.Type.def,i=r.Type.or;n("XMLDefaultDeclaration").bases("Declaration").field("namespace",n("Expression")),n("XMLAnyName").bases("Expression"),n("XMLQualifiedIdentifier").bases("Expression").field("left",i(n("Identifier"),n("XMLAnyName"))).field("right",i(n("Identifier"),n("Expression"))).field("computed",Boolean),n("XMLFunctionQualifiedIdentifier").bases("Expression").field("right",i(n("Identifier"),n("Expression"))).field("computed",Boolean),n("XMLAttributeSelector").bases("Expression").field("attribute",n("Expression")),n("XMLFilterExpression").bases("Expression").field("left",n("Expression")).field("right",n("Expression")),n("XMLElement").bases("XML","Expression").field("contents",[n("XML")]),n("XMLList").bases("XML","Expression").field("contents",[n("XML")]),n("XML").bases("Node"),n("XMLEscape").bases("XML").field("expression",n("Expression")),n("XMLText").bases("XML").field("text",String),n("XMLStartTag").bases("XML").field("contents",[n("XML")]),n("XMLEndTag").bases("XML").field("contents",[n("XML")]),n("XMLPointTag").bases("XML").field("contents",[n("XML")]),n("XMLName").bases("XML").field("contents",i(String,[n("XML")])),n("XMLAttribute").bases("XML").field("value",String),n("XMLCdata").bases("XML").field("contents",String),n("XMLComment").bases("XML").field("contents",String),n("XMLProcessingInstruction").bases("XML").field("target",String).field("contents",i(String,null))}},{"../lib/types":19,"./core":4}],6:[function(e,t,r){t.exports=function(t){t.use(e("./core"));var r=t.use(e("../lib/types")),n=r.Type.def,i=r.Type.or,s=t.use(e("../lib/shared")).defaults;n("Function").field("generator",Boolean,s.false).field("expression",Boolean,s.false).field("defaults",[i(n("Expression"),null)],s.emptyArray).field("rest",i(n("Identifier"),null),s.null),n("RestElement").bases("Pattern").build("argument").field("argument",n("Pattern")),n("SpreadElementPattern").bases("Pattern").build("argument").field("argument",n("Pattern")),n("FunctionDeclaration").build("id","params","body","generator","expression"),n("FunctionExpression").build("id","params","body","generator","expression"),n("ArrowFunctionExpression").bases("Function","Expression").build("params","body","expression").field("id",null,s.null).field("body",i(n("BlockStatement"),n("Expression"))).field("generator",!1,s.false),n("YieldExpression").bases("Expression").build("argument","delegate").field("argument",i(n("Expression"),null)).field("delegate",Boolean,s.false),n("GeneratorExpression").bases("Expression").build("body","blocks","filter").field("body",n("Expression")).field("blocks",[n("ComprehensionBlock")]).field("filter",i(n("Expression"),null)),n("ComprehensionExpression").bases("Expression").build("body","blocks","filter").field("body",n("Expression")).field("blocks",[n("ComprehensionBlock")]).field("filter",i(n("Expression"),null)),n("ComprehensionBlock").bases("Node").build("left","right","each").field("left",n("Pattern")).field("right",n("Expression")).field("each",Boolean),n("Property").field("key",i(n("Literal"),n("Identifier"),n("Expression"))).field("value",i(n("Expression"),n("Pattern"))).field("method",Boolean,s.false).field("shorthand",Boolean,s.false).field("computed",Boolean,s.false),n("PropertyPattern").bases("Pattern").build("key","pattern").field("key",i(n("Literal"),n("Identifier"),n("Expression"))).field("pattern",n("Pattern")).field("computed",Boolean,s.false),n("ObjectPattern").bases("Pattern").build("properties").field("properties",[i(n("PropertyPattern"),n("Property"))]),n("ArrayPattern").bases("Pattern").build("elements").field("elements",[i(n("Pattern"),null)]),n("MethodDefinition").bases("Declaration").build("kind","key","value","static").field("kind",i("constructor","method","get","set")).field("key",i(n("Literal"),n("Identifier"),n("Expression"))).field("value",n("Function")).field("computed",Boolean,s.false).field("static",Boolean,s.false),n("SpreadElement").bases("Node").build("argument").field("argument",n("Expression")),n("ArrayExpression").field("elements",[i(n("Expression"),n("SpreadElement"),n("RestElement"),null)]),n("NewExpression").field("arguments",[i(n("Expression"),n("SpreadElement"))]),n("CallExpression").field("arguments",[i(n("Expression"),n("SpreadElement"))]),n("AssignmentPattern").bases("Pattern").build("left","right").field("left",n("Pattern")).field("right",n("Expression"));var a=i(n("MethodDefinition"),n("VariableDeclarator"),n("ClassPropertyDefinition"),n("ClassProperty"));n("ClassProperty").bases("Declaration").build("key").field("key",i(n("Literal"),n("Identifier"),n("Expression"))).field("computed",Boolean,s.false),n("ClassPropertyDefinition").bases("Declaration").build("definition").field("definition",a),n("ClassBody").bases("Declaration").build("body").field("body",[a]),n("ClassDeclaration").bases("Declaration").build("id","body","superClass").field("id",i(n("Identifier"),null)).field("body",n("ClassBody")).field("superClass",i(n("Expression"),null),s.null),n("ClassExpression").bases("Expression").build("id","body","superClass").field("id",i(n("Identifier"),null),s.null).field("body",n("ClassBody")).field("superClass",i(n("Expression"),null),s.null).field("implements",[n("ClassImplements")],s.emptyArray),n("ClassImplements").bases("Node").build("id").field("id",n("Identifier")).field("superClass",i(n("Expression"),null),s.null),n("Specifier").bases("Node"),n("ModuleSpecifier").bases("Specifier").field("local",i(n("Identifier"),null),s.null).field("id",i(n("Identifier"),null),s.null).field("name",i(n("Identifier"),null),s.null),n("TaggedTemplateExpression").bases("Expression").build("tag","quasi").field("tag",n("Expression")).field("quasi",n("TemplateLiteral")),n("TemplateLiteral").bases("Expression").build("quasis","expressions").field("quasis",[n("TemplateElement")]).field("expressions",[n("Expression")]),n("TemplateElement").bases("Node").build("value","tail").field("value",{cooked:String,raw:String}).field("tail",Boolean)}},{"../lib/shared":18,"../lib/types":19,"./core":4}],7:[function(e,t,r){t.exports=function(t){t.use(e("./es6"));var r=t.use(e("../lib/types")),n=r.Type.def,i=r.Type.or,s=(r.builtInTypes,t.use(e("../lib/shared")).defaults);n("Function").field("async",Boolean,s.false),n("SpreadProperty").bases("Node").build("argument").field("argument",n("Expression")),n("ObjectExpression").field("properties",[i(n("Property"),n("SpreadProperty"))]),n("SpreadPropertyPattern").bases("Pattern").build("argument").field("argument",n("Pattern")),n("ObjectPattern").field("properties",[i(n("Property"),n("PropertyPattern"),n("SpreadPropertyPattern"))]),n("AwaitExpression").bases("Expression").build("argument","all").field("argument",i(n("Expression"),null)).field("all",Boolean,s.false)}},{"../lib/shared":18,"../lib/types":19,"./es6":6}],8:[function(e,t,r){t.exports=function(t){t.use(e("./es7"));var r=t.use(e("../lib/types")),n=t.use(e("../lib/shared")).defaults,i=r.Type.def,s=r.Type.or;i("VariableDeclaration").field("declarations",[s(i("VariableDeclarator"),i("Identifier"))]),i("Property").field("value",s(i("Expression"),i("Pattern"))),i("ArrayPattern").field("elements",[s(i("Pattern"),i("SpreadElement"),null)]),i("ObjectPattern").field("properties",[s(i("Property"),i("PropertyPattern"),i("SpreadPropertyPattern"),i("SpreadProperty"))]),i("ExportSpecifier").bases("ModuleSpecifier").build("id","name"),i("ExportBatchSpecifier").bases("Specifier").build(),i("ImportSpecifier").bases("ModuleSpecifier").build("id","name"),i("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("id"),i("ImportDefaultSpecifier").bases("ModuleSpecifier").build("id"),i("ExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",s(i("Declaration"),i("Expression"),null)).field("specifiers",[s(i("ExportSpecifier"),i("ExportBatchSpecifier"))],n.emptyArray).field("source",s(i("Literal"),null),n.null),i("ImportDeclaration").bases("Declaration").build("specifiers","source","importKind").field("specifiers",[s(i("ImportSpecifier"),i("ImportNamespaceSpecifier"),i("ImportDefaultSpecifier"))],n.emptyArray).field("source",i("Literal")).field("importKind",s("value","type"),function(){return"value"}),i("Block").bases("Comment").build("value","leading","trailing"),i("Line").bases("Comment").build("value","leading","trailing")}},{"../lib/shared":18,"../lib/types":19,"./es7":7}],9:[function(e,t,r){t.exports=function(t){t.use(e("./es7"));var r=t.use(e("../lib/types")),n=r.Type.def,i=r.Type.or,s=t.use(e("../lib/shared")).defaults;n("Type").bases("Node"),n("AnyTypeAnnotation").bases("Type").build(),n("EmptyTypeAnnotation").bases("Type").build(),n("MixedTypeAnnotation").bases("Type").build(),n("VoidTypeAnnotation").bases("Type").build(),n("NumberTypeAnnotation").bases("Type").build(),n("NumberLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Number).field("raw",String),n("NumericLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Number).field("raw",String),n("StringTypeAnnotation").bases("Type").build(),n("StringLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",String).field("raw",String),n("BooleanTypeAnnotation").bases("Type").build(),n("BooleanLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Boolean).field("raw",String),n("TypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation",n("Type")),n("NullableTypeAnnotation").bases("Type").build("typeAnnotation").field("typeAnnotation",n("Type")),n("NullLiteralTypeAnnotation").bases("Type").build(),n("NullTypeAnnotation").bases("Type").build(),n("ThisTypeAnnotation").bases("Type").build(),n("ExistsTypeAnnotation").bases("Type").build(),n("ExistentialTypeParam").bases("Type").build(),n("FunctionTypeAnnotation").bases("Type").build("params","returnType","rest","typeParameters").field("params",[n("FunctionTypeParam")]).field("returnType",n("Type")).field("rest",i(n("FunctionTypeParam"),null)).field("typeParameters",i(n("TypeParameterDeclaration"),null)),n("FunctionTypeParam").bases("Node").build("name","typeAnnotation","optional").field("name",n("Identifier")).field("typeAnnotation",n("Type")).field("optional",Boolean),n("ArrayTypeAnnotation").bases("Type").build("elementType").field("elementType",n("Type")),n("ObjectTypeAnnotation").bases("Type").build("properties","indexers","callProperties").field("properties",[n("ObjectTypeProperty")]).field("indexers",[n("ObjectTypeIndexer")],s.emptyArray).field("callProperties",[n("ObjectTypeCallProperty")],s.emptyArray).field("exact",Boolean,s.false),n("ObjectTypeProperty").bases("Node").build("key","value","optional").field("key",i(n("Literal"),n("Identifier"))).field("value",n("Type")).field("optional",Boolean).field("variance",i("plus","minus",null),s.null),n("ObjectTypeIndexer").bases("Node").build("id","key","value").field("id",n("Identifier")).field("key",n("Type")).field("value",n("Type")).field("variance",i("plus","minus",null),s.null),n("ObjectTypeCallProperty").bases("Node").build("value").field("value",n("FunctionTypeAnnotation")).field("static",Boolean,s.false),n("QualifiedTypeIdentifier").bases("Node").build("qualification","id").field("qualification",i(n("Identifier"),n("QualifiedTypeIdentifier"))).field("id",n("Identifier")),n("GenericTypeAnnotation").bases("Type").build("id","typeParameters").field("id",i(n("Identifier"),n("QualifiedTypeIdentifier"))).field("typeParameters",i(n("TypeParameterInstantiation"),null)),n("MemberTypeAnnotation").bases("Type").build("object","property").field("object",n("Identifier")).field("property",i(n("MemberTypeAnnotation"),n("GenericTypeAnnotation"))),n("UnionTypeAnnotation").bases("Type").build("types").field("types",[n("Type")]),n("IntersectionTypeAnnotation").bases("Type").build("types").field("types",[n("Type")]),n("TypeofTypeAnnotation").bases("Type").build("argument").field("argument",n("Type")),n("Identifier").field("typeAnnotation",i(n("TypeAnnotation"),null),s.null),n("TypeParameterDeclaration").bases("Node").build("params").field("params",[n("TypeParameter")]),n("TypeParameterInstantiation").bases("Node").build("params").field("params",[n("Type")]),n("TypeParameter").bases("Type").build("name","variance","bound").field("name",String).field("variance",i("plus","minus",null),s.null).field("bound",i(n("TypeAnnotation"),null),s.null),n("Function").field("returnType",i(n("TypeAnnotation"),null),s.null).field("typeParameters",i(n("TypeParameterDeclaration"),null),s.null),n("ClassProperty").build("key","value","typeAnnotation","static").field("value",i(n("Expression"),null)).field("typeAnnotation",i(n("TypeAnnotation"),null)).field("static",Boolean,s.false).field("variance",i("plus","minus",null),s.null),n("ClassImplements").field("typeParameters",i(n("TypeParameterInstantiation"),null),s.null),n("InterfaceDeclaration").bases("Declaration").build("id","body","extends").field("id",n("Identifier")).field("typeParameters",i(n("TypeParameterDeclaration"),null),s.null).field("body",n("ObjectTypeAnnotation")).field("extends",[n("InterfaceExtends")]),n("DeclareInterface").bases("InterfaceDeclaration").build("id","body","extends"),n("InterfaceExtends").bases("Node").build("id").field("id",n("Identifier")).field("typeParameters",i(n("TypeParameterInstantiation"),null)),n("TypeAlias").bases("Declaration").build("id","typeParameters","right").field("id",n("Identifier")).field("typeParameters",i(n("TypeParameterDeclaration"),null)).field("right",n("Type")),n("DeclareTypeAlias").bases("TypeAlias").build("id","typeParameters","right"),n("TypeCastExpression").bases("Expression").build("expression","typeAnnotation").field("expression",n("Expression")).field("typeAnnotation",n("TypeAnnotation")),n("TupleTypeAnnotation").bases("Type").build("types").field("types",[n("Type")]),n("DeclareVariable").bases("Statement").build("id").field("id",n("Identifier")),n("DeclareFunction").bases("Statement").build("id").field("id",n("Identifier")),n("DeclareClass").bases("InterfaceDeclaration").build("id"),n("DeclareModule").bases("Statement").build("id","body").field("id",i(n("Identifier"),n("Literal"))).field("body",n("BlockStatement")),n("DeclareModuleExports").bases("Statement").build("typeAnnotation").field("typeAnnotation",n("Type")),n("DeclareExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",i(n("DeclareVariable"),n("DeclareFunction"),n("DeclareClass"),n("Type"),null)).field("specifiers",[i(n("ExportSpecifier"),n("ExportBatchSpecifier"))],s.emptyArray).field("source",i(n("Literal"),null),s.null),n("DeclareExportAllDeclaration").bases("Declaration").build("source").field("source",i(n("Literal"),null),s.null)}},{"../lib/shared":18,"../lib/types":19,"./es7":7}],10:[function(e,t,r){t.exports=function(t){t.use(e("./es7"));var r=t.use(e("../lib/types")),n=r.Type.def,i=r.Type.or,s=t.use(e("../lib/shared")).defaults;n("JSXAttribute").bases("Node").build("name","value").field("name",i(n("JSXIdentifier"),n("JSXNamespacedName"))).field("value",i(n("Literal"),n("JSXExpressionContainer"),null),s.null),n("JSXIdentifier").bases("Identifier").build("name").field("name",String),n("JSXNamespacedName").bases("Node").build("namespace","name").field("namespace",n("JSXIdentifier")).field("name",n("JSXIdentifier")),n("JSXMemberExpression").bases("MemberExpression").build("object","property").field("object",i(n("JSXIdentifier"),n("JSXMemberExpression"))).field("property",n("JSXIdentifier")).field("computed",Boolean,s.false);var a=i(n("JSXIdentifier"),n("JSXNamespacedName"),n("JSXMemberExpression"));n("JSXSpreadAttribute").bases("Node").build("argument").field("argument",n("Expression"));var o=[i(n("JSXAttribute"),n("JSXSpreadAttribute"))];n("JSXExpressionContainer").bases("Expression").build("expression").field("expression",n("Expression")),n("JSXElement").bases("Expression").build("openingElement","closingElement","children").field("openingElement",n("JSXOpeningElement")).field("closingElement",i(n("JSXClosingElement"),null),s.null).field("children",[i(n("JSXElement"),n("JSXExpressionContainer"),n("JSXText"),n("Literal"))],s.emptyArray).field("name",a,function(){return this.openingElement.name},!0).field("selfClosing",Boolean,function(){return this.openingElement.selfClosing},!0).field("attributes",o,function(){return this.openingElement.attributes},!0),n("JSXOpeningElement").bases("Node").build("name","attributes","selfClosing").field("name",a).field("attributes",o,s.emptyArray).field("selfClosing",Boolean,s.false),n("JSXClosingElement").bases("Node").build("name").field("name",a),n("JSXText").bases("Literal").build("value").field("value",String),n("JSXEmptyExpression").bases("Expression").build()}},{"../lib/shared":18,"../lib/types":19,"./es7":7}],11:[function(e,t,r){t.exports=function(t){t.use(e("./core"));var r=t.use(e("../lib/types")),n=r.Type.def,i=r.Type.or,s=t.use(e("../lib/shared")),a=s.geq,o=s.defaults;n("Function").field("body",i(n("BlockStatement"),n("Expression"))),n("ForInStatement").build("left","right","body","each").field("each",Boolean,o.false),n("ForOfStatement").bases("Statement").build("left","right","body").field("left",i(n("VariableDeclaration"),n("Expression"))).field("right",n("Expression")).field("body",n("Statement")),n("LetStatement").bases("Statement").build("head","body").field("head",[n("VariableDeclarator")]).field("body",n("Statement")),n("LetExpression").bases("Expression").build("head","body").field("head",[n("VariableDeclarator")]).field("body",n("Expression")),n("GraphExpression").bases("Expression").build("index","expression").field("index",a(0)).field("expression",n("Literal")),n("GraphIndexExpression").bases("Expression").build("index").field("index",a(0))}},{"../lib/shared":18,"../lib/types":19,"./core":4}],12:[function(e,t,r){t.exports=function(t){function r(e){var t=n.indexOf(e);return-1===t&&(t=n.length,n.push(e),i[t]=e(s)),i[t]}var n=[],i=[],s={};s.use=r;var a=r(e("./lib/types"));t.forEach(r),a.finalize();var o={Type:a.Type,builtInTypes:a.builtInTypes,namedTypes:a.namedTypes,builders:a.builders,defineMethod:a.defineMethod,getFieldNames:a.getFieldNames,getFieldValue:a.getFieldValue,eachField:a.eachField,someField:a.someField,getSupertypeNames:a.getSupertypeNames,astNodesAreEquivalent:r(e("./lib/equiv")),finalize:a.finalize,Path:r(e("./lib/path")),NodePath:r(e("./lib/node-path")),PathVisitor:r(e("./lib/path-visitor")),use:r};return o.visit=o.PathVisitor.visit,o}},{"./lib/equiv":13,"./lib/node-path":14,"./lib/path":16,"./lib/path-visitor":15,"./lib/types":19}],13:[function(e,t,r){t.exports=function(t){function r(e,t,r){return u.check(r)?r.length=0:r=null,i(e,t,r)}function n(e){return/[_$a-z][_$a-z0-9]*/i.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function i(e,t,r){return e===t||(u.check(e)?function(e,t,r){u.assert(e);var n=e.length;if(!u.check(t)||t.length!==n)return r&&r.push("length"),!1;for(var s=0;su)return!0;if(s===u&&"right"===this.name){if(r.right!==t)throw new Error("Nodes must be equal");return!0}default:return!1}case"SequenceExpression":switch(r.type){case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==this.name;default:return!0}case"YieldExpression":switch(r.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1}case"Literal":return"MemberExpression"===r.type&&l.check(t.value)&&"object"===this.name&&r.object===t;case"AssignmentExpression":case"ConditionalExpression":switch(r.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===this.name&&r.callee===t;case"ConditionalExpression":return"test"===this.name&&r.test===t;case"MemberExpression":return"object"===this.name&&r.object===t;default:return!1}default:if("NewExpression"===r.type&&"callee"===this.name&&r.callee===t)return i(t)}return!(!0===e||this.canBeFirstInStatement()||!this.firstInStatement())};var d={};return[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]].forEach(function(e,t){e.forEach(function(e){d[e]=t})}),f.canBeFirstInStatement=function(){var e=this.node;return!o.FunctionExpression.check(e)&&!o.ObjectExpression.check(e)},f.firstInStatement=function(){return function(e){for(var t,r;e.parent;e=e.parent){if(t=e.node,r=e.parent.node,o.BlockStatement.check(r)&&"body"===e.parent.name&&0===e.name){if(r.body[0]!==t)throw new Error("Nodes must be equal");return!0}if(o.ExpressionStatement.check(r)&&"expression"===e.name){if(r.expression!==t)throw new Error("Nodes must be equal");return!0}if(o.SequenceExpression.check(r)&&"expressions"===e.parent.name&&0===e.name){if(r.expressions[0]!==t)throw new Error("Nodes must be equal")}else if(o.CallExpression.check(r)&&"callee"===e.name){if(r.callee!==t)throw new Error("Nodes must be equal")}else if(o.MemberExpression.check(r)&&"object"===e.name){if(r.object!==t)throw new Error("Nodes must be equal")}else if(o.ConditionalExpression.check(r)&&"test"===e.name){if(r.test!==t)throw new Error("Nodes must be equal")}else if(n(r)&&"left"===e.name){if(r.left!==t)throw new Error("Nodes must be equal")}else{if(!o.UnaryExpression.check(r)||r.prefix||"argument"!==e.name)return!1;if(r.argument!==t)throw new Error("Nodes must be equal")}}return!0}(this)},r}},{"./path":16,"./scope":17,"./types":19}],15:[function(e,t,r){var n=Object.prototype.hasOwnProperty;t.exports=function(t){function r(){if(!(this instanceof r))throw new Error("PathVisitor constructor cannot be invoked without 'new'");this._reusableContextStack=[],this._methodNameTable=function(e){r=Object.create(null);for(var t in e)/^visit[A-Z]/.test(t)&&(r[t.slice("visit".length)]=!0);for(var r,n=a.computeSupertypeLookupTable(r),i=Object.create(null),s=(r=Object.keys(n)).length,o=0;o=0&&(s[e.name=a]=e)}else i[e.name]=e.value,s[e.name]=e;if(i[e.name]!==e.value)throw new Error("");if(e.parentPath.get(e.name)!==e)throw new Error("")}(this),l.check(i)){for(var u=i.length,c=o(this.parentPath,a-1,this.name+1),p=[this.name,1],h=0;h=e},a+" >= "+e)},r.defaults={null:function(){return null},emptyArray:function(){return[]},false:function(){return!1},true:function(){return!0},undefined:function(){}};var o=i.or(s.string,s.number,s.boolean,s.null,s.undefined);return r.isPrimitive=new i(function(e){if(null===e)return!0;var t=typeof e;return!("object"===t||"function"===t)},o.toString()),r}},{"../lib/types":19}],19:[function(e,t,r){var n=Array.prototype,i=n.slice,s=(n.map,n.forEach,Object.prototype),a=s.toString,o=a.call(function(){}),u=a.call(""),l=s.hasOwnProperty;t.exports=function(){function e(t,r){var n=this;if(!(n instanceof e))throw new Error("Type constructor cannot be invoked without 'new'");if(a.call(t)!==o)throw new Error(t+" is not a function");var i=a.call(r);if(i!==o&&i!==u)throw new Error(r+" is neither a function nor a string");Object.defineProperties(n,{name:{value:r},check:{value:function(e,r){var i=t.call(n,e,r);return!i&&r&&a.call(r)===o&&r(n,e),i}}})}function t(e){return C.check(e)?"{"+Object.keys(e).map(function(t){return t+": "+e[t]}).join(", ")+"}":D.check(e)?"["+e.map(t).join(", ")+"]":JSON.stringify(e)}function r(t,r){var n=a.call(t),i=new e(function(e){return a.call(e)===n},r);return x[r]=i,t&&"function"==typeof t.constructor&&(b.push(t.constructor),v.push(i)),i}function n(t,r){if(t instanceof e)return t;if(t instanceof c)return t.type;if(D.check(t))return e.fromArray(t);if(C.check(t))return e.fromObject(t);if(A.check(t)){var n=b.indexOf(t);return n>=0?v[n]:new e(t,r)}return new e(function(e){return e===t},_.check(r)?function(){return t+""}:r)}function s(e,t,r,i){if(!(this instanceof s))throw new Error("Field constructor cannot be invoked without 'new'");E.assert(e);var a={name:{value:e},type:{value:t=n(t)},hidden:{value:!!i}};A.check(r)&&(a.defaultFn={value:r}),Object.defineProperties(this,a)}function c(t){var r=this;if(!(r instanceof c))throw new Error("Def constructor cannot be invoked without 'new'");Object.defineProperties(r,{typeName:{value:t},baseNames:{value:[]},ownFields:{value:Object.create(null)},allSupertypes:{value:Object.create(null)},supertypeList:{value:[]},allFields:{value:Object.create(null)},fieldNames:{value:[]},type:{value:new e(function(e,t){return r.check(e,t)},t)}})}function p(e){return e.replace(/^[A-Z]+/,function(e){var t=e.length;switch(t){case 0:return"";case 1:return e.toLowerCase();default:return e.slice(0,t-1).toLowerCase()+e.charAt(t-1)}})}function h(e){return(e=p(e)).replace(/(Expression)?$/,"Statement")}function f(e){var t=c.fromValue(e);if(t)return t.fieldNames.slice(0);if("type"in e)throw new Error("did not recognize object of type "+JSON.stringify(e.type));return Object.keys(e)}function d(e,t){var r=c.fromValue(e);if(r){var n=r.allFields[t];if(n)return n.getValue(e)}return e&&e[t]}function m(e,t){return Object.keys(t).forEach(function(r){e[r]=t[r]}),e}var y={},g=e.prototype;y.Type=e,g.assert=function(e,r){if(!this.check(e,r)){var n=t(e);throw new Error(n+" does not match type "+this)}return!0},g.toString=function(){var e=this.name;return E.check(e)?e:A.check(e)?e.call(this)+"":e+" type"};var b=[],v=[],x={};y.builtInTypes=x;var E=r("truthy","string"),A=r(function(){},"function"),D=r([],"array"),C=r({},"object"),S=(r(/./,"RegExp"),r(new Date,"Date"),r(3,"number")),_=(r(!0,"boolean"),r(null,"null"),r(void 0,"undefined"));e.or=function(){for(var t=[],r=arguments.length,i=0;i=0&&function(e){var t=h(e);if(!T[t]){var r=T[p(e)];r&&(T[t]=function(){return T.expressionStatement(r.apply(T,arguments))})}}(e.typeName)}},y.finalize=function(){Object.keys(k).forEach(function(e){k[e].finalize()})},y}},{}],20:[function(e,t,r){t.exports=e("./fork")([e("./def/core"),e("./def/es6"),e("./def/es7"),e("./def/mozilla"),e("./def/e4x"),e("./def/jsx"),e("./def/flow"),e("./def/esprima"),e("./def/babel"),e("./def/babel6")])},{"./def/babel":2,"./def/babel6":3,"./def/core":4,"./def/e4x":5,"./def/es6":6,"./def/es7":7,"./def/esprima":8,"./def/flow":9,"./def/jsx":10,"./def/mozilla":11,"./fork":12}],21:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){return t.replace(a.default,function(){for(var t=arguments.length,r=Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:{};r=Math.max(r,0);var s=n.highlightCode&&u.default.supportsColor||n.forceColor,a=u.default;n.forceColor&&(a=new u.default.constructor({enabled:!0}));var o=function(e,t){return s?e(t):t},c=function(e){return{keyword:e.cyan,capitalized:e.yellow,jsx_tag:e.yellow,punctuator:e.yellow,number:e.magenta,string:e.green,regex:e.magenta,comment:e.grey,invalid:e.white.bgRed.bold,gutter:e.grey,marker:e.red.bold}}(a);s&&(e=i(c,e));var p=n.linesAbove||2,h=n.linesBelow||3,f=e.split(l),d=Math.max(t-(p+1),0),m=Math.min(f.length,t+h);t||r||(d=0,m=f.length);var y=String(m).length,g=f.slice(d,m).map(function(e,n){var i=d+1+n,s=" "+(" "+i).slice(-y)+" | ";if(i===t){var a="";if(r){var u=e.slice(0,r-1).replace(/[^\t]/g," ");a=["\n ",o(c.gutter,s.replace(/\d/g," ")),u,o(c.marker,"^")].join("")}return[o(c.marker,">"),o(c.gutter,s),e,a].join("")}return" "+o(c.gutter,s)+e}).join("\n");return s?a.reset(g):g};var s=e("js-tokens"),a=n(s),o=n(e("esutils")),u=n(e("chalk")),l=/\r\n|[\n\r\u2028\u2029]/,c=/^[a-z][\w-]*$/i,p=/^[()\[\]{}]$/;t.exports=r.default},{chalk:24,esutils:28,"js-tokens":322}],22:[function(e,t,r){"use strict";t.exports=function(){return/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g}},{}],23:[function(e,t,r){"use strict";Object.defineProperty(t,"exports",{enumerable:!0,get:function(){var e={modifiers:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},colors:{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]},bgColors:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49]}};return e.colors.grey=e.colors.gray,Object.keys(e).forEach(function(t){var r=e[t];Object.keys(r).forEach(function(t){var n=r[t];e[t]=r[t]={open:"["+n[0]+"m",close:"["+n[1]+"m"}}),Object.defineProperty(e,t,{value:r,enumerable:!1})}),e}})},{}],24:[function(e,t,r){(function(r){"use strict";function n(e){this.enabled=e&&void 0!==e.enabled?e.enabled:l}function i(e){var t=function(){return function(){var e=arguments,t=e.length,r=0!==t&&String(arguments[0]);if(t>1)for(var n=1;n=97&&o<=122||o>=65&&o<=90||36===o||95===o;for(a=new Array(128),o=0;o<128;++o)a[o]=o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||36===o||95===o;t.exports={isDecimalDigit:function(e){return 48<=e&&e<=57},isHexDigit:function(e){return 48<=e&&e<=57||97<=e&&e<=102||65<=e&&e<=70},isOctalDigit:function(e){return e>=48&&e<=55},isWhiteSpace:function(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&i.indexOf(e)>=0},isLineTerminator:function(e){return 10===e||13===e||8232===e||8233===e},isIdentifierStartES5:function(t){return t<128?s[t]:n.NonAsciiIdentifierStart.test(e(t))},isIdentifierPartES5:function(t){return t<128?a[t]:n.NonAsciiIdentifierPart.test(e(t))},isIdentifierStartES6:function(t){return t<128?s[t]:r.NonAsciiIdentifierStart.test(e(t))},isIdentifierPartES6:function(t){return t<128?a[t]:r.NonAsciiIdentifierPart.test(e(t))}}}()},{}],27:[function(e,t,r){!function(){"use strict";function r(e,t){return!(!t&&"yield"===e)&&n(e,t)}function n(e,t){if(t&&function(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function i(e,t){return"null"===e||"true"===e||"false"===e||r(e,t)}function s(e,t){return"null"===e||"true"===e||"false"===e||n(e,t)}function a(e){var t,r,n;if(0===e.length)return!1;if(n=e.charCodeAt(0),!l.isIdentifierStartES5(n))return!1;for(t=1,r=e.length;t=r)return!1;if(!(56320<=(i=e.charCodeAt(t))&&i<=57343))return!1;n=o(n,i)}if(!s(n))return!1;s=l.isIdentifierPartES6}return!0}var l=e("./code");t.exports={isKeywordES5:r,isKeywordES6:n,isReservedWordES5:i,isReservedWordES6:s,isRestrictedWord:function(e){return"eval"===e||"arguments"===e},isIdentifierNameES5:a,isIdentifierNameES6:u,isIdentifierES5:function(e,t){return a(e)&&!i(e,t)},isIdentifierES6:function(e,t){return u(e)&&!s(e,t)}}}()},{"./code":26}],28:[function(e,t,r){!function(){"use strict";r.ast=e("./ast"),r.code=e("./code"),r.keyword=e("./keyword")}()},{"./ast":25,"./code":26,"./keyword":27}],29:[function(e,t,r){"use strict";var n=e("ansi-regex")();t.exports=function(e){return"string"==typeof e?e.replace(n,""):e}},{"ansi-regex":22}],30:[function(e,t,r){(function(e){"use strict";var r=e.argv,n=r.indexOf("--"),i=function(e){e="--"+e;var t=r.indexOf(e);return-1!==t&&(-1===n||t1&&void 0!==arguments[1]?arguments[1]:{};return t.filename=e,x(h.default.readFileSync(e,"utf8"),t)};var h=i(e("fs")),f=n(e("../util")),d=n(e("babel-messages")),m=n(e("babel-types")),y=i(e("babel-traverse")),g=i(e("../transformation/file/options/option-manager")),b=i(e("../transformation/pipeline"));r.util=f,r.messages=d,r.types=m,r.traverse=y.default,r.OptionManager=g.default,r.Pipeline=b.default;var v=new b.default,x=(r.analyse=v.analyse.bind(v),r.transform=v.transform.bind(v));r.transformFromAst=v.transformFromAst.bind(v)},{"../../package":73,"../helpers/resolve-plugin":38,"../helpers/resolve-preset":39,"../tools/build-external-helpers":42,"../transformation/file":43,"../transformation/file/options/config":47,"../transformation/file/options/option-manager":49,"../transformation/pipeline":54,"../util":57,"babel-messages":110,"babel-template":139,"babel-traverse":143,"babel-types":178,fs:191}],33:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e){return["babel-plugin-"+e,e]},t.exports=r.default},{}],34:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e){var t=["babel-preset-"+e,e],r=e.match(/^(@[^/]+)\/(.+)$/);if(r){var n=r[1],i=r[2];t.push(n+"/babel-preset-"+i)}return t},t.exports=r.default},{}],35:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/get-iterator"));r.default=function(e,t){if(e&&t)return(0,s.default)(e,t,function(e,t){if(t&&Array.isArray(e)){for(var r=t.slice(0),n=e,s=Array.isArray(n),a=0,n=s?n:(0,i.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var u=o;r.indexOf(u)<0&&r.push(u)}return r}})};var s=n(e("lodash/mergeWith"));t.exports=r.default},{"babel-runtime/core-js/get-iterator":120,"lodash/mergeWith":527}],36:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e,t,r){if(e){if("Program"===e.type)return n.file(e,t||[],r||[]);if("File"===e.type)return e}throw new Error("Not a valid ast?")};var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));t.exports=r.default},{"babel-types":178}],37:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e,t){return e.reduce(function(e,r){return e||(0,n.default)(r,t)},null)};var n=function(e){return e&&e.__esModule?e:{default:e}}(e("./resolve"));t.exports=r.default},{"./resolve":40}],38:[function(e,t,r){(function(n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0,r.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.cwd();return(0,s.default)((0,a.default)(e),t)};var s=i(e("./resolve-from-possible-names")),a=i(e("./get-possible-plugin-names"));t.exports=r.default}).call(this,e("_process"))},{"./get-possible-plugin-names":33,"./resolve-from-possible-names":37,_process:550}],39:[function(e,t,r){(function(n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0,r.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.cwd();return(0,s.default)((0,a.default)(e),t)};var s=i(e("./resolve-from-possible-names")),a=i(e("./get-possible-preset-names"));t.exports=r.default}).call(this,e("_process"))},{"./get-possible-preset-names":34,"./resolve-from-possible-names":37,_process:550}],40:[function(e,t,r){(function(n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var s=i(e("babel-runtime/helpers/typeof"));r.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.cwd();if("object"===(void 0===a.default?"undefined":(0,s.default)(a.default)))return null;var r=u[t];if(!r){r=new a.default;var i=o.default.join(t,".babelrc");r.id=i,r.filename=i,r.paths=a.default._nodeModulePaths(t),u[t]=r}try{return a.default._resolveFilename(e,r)}catch(e){return null}};var a=i(e("module")),o=i(e("path")),u={};t.exports=r.default}).call(this,e("_process"))},{_process:550,"babel-runtime/helpers/typeof":138,module:191,path:546}],41:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/map")),s=n(e("babel-runtime/helpers/classCallCheck")),a=n(e("babel-runtime/helpers/possibleConstructorReturn")),o=n(e("babel-runtime/helpers/inherits")),u=function(e){function t(){(0,s.default)(this,t);var r=(0,a.default)(this,e.call(this));return r.dynamicData={},r}return(0,o.default)(t,e),t.prototype.setDynamic=function(e,t){this.dynamicData[e]=t},t.prototype.get=function(t){if(this.has(t))return e.prototype.get.call(this,t);if(Object.prototype.hasOwnProperty.call(this.dynamicData,t)){var r=this.dynamicData[t]();return this.set(t,r),r}},t}(i.default);r.default=u,t.exports=r.default},{"babel-runtime/core-js/map":122,"babel-runtime/helpers/classCallCheck":134,"babel-runtime/helpers/inherits":135,"babel-runtime/helpers/possibleConstructorReturn":137}],42:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e,t){var r=[],n=h.functionExpression(null,[h.identifier("global")],h.blockStatement(r)),i=h.program([h.expressionStatement(h.callExpression(n,[u.get("selfGlobal")]))]);return r.push(h.variableDeclaration("var",[h.variableDeclarator(e,h.assignmentExpression("=",h.memberExpression(h.identifier("global"),e),h.objectExpression([])))])),t(r),i}function a(e,t){var r=[];return r.push(h.variableDeclaration("var",[h.variableDeclarator(e,h.identifier("global"))])),t(r),h.program([f({FACTORY_PARAMETERS:h.identifier("global"),BROWSER_ARGUMENTS:h.assignmentExpression("=",h.memberExpression(h.identifier("root"),e),h.objectExpression([])),COMMON_ARGUMENTS:h.identifier("exports"),AMD_ARGUMENTS:h.arrayExpression([h.stringLiteral("exports")]),FACTORY_BODY:r,UMD_ROOT:h.identifier("this")})])}function o(e,t){var r=[];return r.push(h.variableDeclaration("var",[h.variableDeclarator(e,h.objectExpression([]))])),t(r),r.push(h.expressionStatement(e)),h.program(r)}r.__esModule=!0,r.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"global",r=h.identifier("babelHelpers"),n=void 0,i={global:s,umd:a,var:o}[t];if(!i)throw new Error(c.get("unsupportedOutputType",t));return n=i(r,function(t){return function(e,t,r){u.list.forEach(function(n){if(!(r&&r.indexOf(n)<0)){var i=h.identifier(n);e.push(h.expressionStatement(h.assignmentExpression("=",h.memberExpression(t,i),u.get(n))))}})}(t,r,e)}),(0,l.default)(n).code};var u=i(e("babel-helpers")),l=n(e("babel-generator")),c=i(e("babel-messages")),p=n(e("babel-template")),h=i(e("babel-types")),f=(0,p.default)('\n (function (root, factory) {\n if (typeof define === "function" && define.amd) {\n define(AMD_ARGUMENTS, factory);\n } else if (typeof exports === "object") {\n factory(COMMON_ARGUMENTS);\n } else {\n factory(BROWSER_ARGUMENTS);\n }\n })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n FACTORY_BODY\n });\n');t.exports=r.default},{"babel-generator":85,"babel-helpers":109,"babel-messages":110,"babel-template":139,"babel-types":178}],43:[function(e,t,r){(function(t){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0,r.File=void 0;var s=i(e("babel-runtime/core-js/get-iterator")),a=i(e("babel-runtime/core-js/object/create")),o=i(e("babel-runtime/core-js/object/assign")),u=i(e("babel-runtime/helpers/classCallCheck")),l=i(e("babel-runtime/helpers/possibleConstructorReturn")),c=i(e("babel-runtime/helpers/inherits")),p=i(e("babel-helpers")),h=n(e("./metadata")),f=i(e("convert-source-map")),d=i(e("./options/option-manager")),m=i(e("../plugin-pass")),y=e("babel-traverse"),g=i(y),b=i(e("source-map")),v=i(e("babel-generator")),x=i(e("babel-code-frame")),E=i(e("lodash/defaults")),A=i(e("./logger")),D=i(e("../../store")),C=e("babylon"),S=n(e("../../util")),_=i(e("path")),w=n(e("babel-types")),k=i(e("../../helpers/resolve")),F=i(e("../internal-plugins/block-hoist")),T=i(e("../internal-plugins/shadow-functions")),P=/^#!.*/,B=[[F.default],[T.default]],O={enter:function(e,t){var r=e.node.loc;r&&(t.loc=r,e.stop())}},j=function(r){function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];(0,u.default)(this,n);var i=(0,l.default)(this,r.call(this));return i.pipeline=t,i.log=new A.default(i,e.filename||"unknown"),i.opts=i.initOptions(e),i.parserOpts={sourceType:i.opts.sourceType,sourceFileName:i.opts.filename,plugins:[]},i.pluginVisitors=[],i.pluginPasses=[],i.buildPluginsForOptions(i.opts),i.opts.passPerPreset&&(i.perPresetOpts=[],i.opts.presets.forEach(function(e){var t=(0,o.default)((0,a.default)(i.opts),e);i.perPresetOpts.push(t),i.buildPluginsForOptions(t)})),i.metadata={usedHelpers:[],marked:[],modules:{imports:[],exports:{exported:[],specifiers:[]}}},i.dynamicImportTypes={},i.dynamicImportIds={},i.dynamicImports=[],i.declarations={},i.usedHelpers={},i.path=null,i.ast={},i.code="",i.shebang="",i.hub=new y.Hub(i),i}return(0,c.default)(n,r),n.prototype.getMetadata=function(){for(var e=!1,t=this.ast.program.body,r=Array.isArray(t),n=0,t=r?t:(0,s.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var a=i;if(w.isModuleDeclaration(a)){e=!0;break}}e&&this.path.traverse(h,this)},n.prototype.initOptions=function(e){(e=new d.default(this.log,this.pipeline).init(e)).inputSourceMap&&(e.sourceMaps=!0),e.moduleId&&(e.moduleIds=!0),e.basename=_.default.basename(e.filename,_.default.extname(e.filename)),e.ignore=S.arrayify(e.ignore,S.regexify),e.only&&(e.only=S.arrayify(e.only,S.regexify)),(0,E.default)(e,{moduleRoot:e.sourceRoot}),(0,E.default)(e,{sourceRoot:e.moduleRoot}),(0,E.default)(e,{filenameRelative:e.filename});var t=_.default.basename(e.filenameRelative);return(0,E.default)(e,{sourceFileName:t,sourceMapTarget:t}),e},n.prototype.buildPluginsForOptions=function(e){if(Array.isArray(e.plugins)){for(var t=[],r=[],n=e.plugins.concat(B),i=Array.isArray(n),a=0,n=i?n:(0,s.default)(n);;){var o;if(i){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var u=o,l=u[0],c=u[1];t.push(l.visitor),r.push(new m.default(this,l,c)),l.manipulateOptions&&l.manipulateOptions(e,this.parserOpts,this)}this.pluginVisitors.push(t),this.pluginPasses.push(r)}},n.prototype.getModuleName=function(){var e=this.opts;if(!e.moduleIds)return null;if(null!=e.moduleId&&!e.getModuleId)return e.moduleId;var t=e.filenameRelative,r="";if(null!=e.moduleRoot&&(r=e.moduleRoot+"/"),!e.filenameRelative)return r+e.filename.replace(/^\//,"");if(null!=e.sourceRoot){var n=new RegExp("^"+e.sourceRoot+"/?");t=t.replace(n,"")}return t=t.replace(/\.(\w*?)$/,""),r+=t,r=r.replace(/\\/g,"/"),e.getModuleId?e.getModuleId(r)||r:r},n.prototype.resolveModuleSource=function(e){var t=this.opts.resolveModuleSource;return t&&(e=t(e,this.opts.filename)),e},n.prototype.addImport=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,n=e+":"+t,i=this.dynamicImportIds[n];if(!i){e=this.resolveModuleSource(e),i=this.dynamicImportIds[n]=this.scope.generateUidIdentifier(r);var s=[];"*"===t?s.push(w.importNamespaceSpecifier(i)):"default"===t?s.push(w.importDefaultSpecifier(i)):s.push(w.importSpecifier(i,w.identifier(t)));var a=w.importDeclaration(s,w.stringLiteral(e));a._blockHoist=3,this.path.unshiftContainer("body",a)}return i},n.prototype.addHelper=function(e){var t=this.declarations[e];if(t)return t;this.usedHelpers[e]||(this.metadata.usedHelpers.push(e),this.usedHelpers[e]=!0);var r=this.get("helperGenerator"),n=this.get("helpersNamespace");if(r){var i=r(e);if(i)return i}else if(n)return w.memberExpression(n,w.identifier(e));var s=(0,p.default)(e),a=this.declarations[e]=this.scope.generateUidIdentifier(e);return w.isFunctionExpression(s)&&!s.id?(s.body._compact=!0,s._generated=!0,s.id=a,s.type="FunctionDeclaration",this.path.unshiftContainer("body",s)):(s._compact=!0,this.scope.push({id:a,init:s,unique:!0})),a},n.prototype.addTemplateObject=function(e,t,r){var n=r.elements.map(function(e){return e.value}),i=e+"_"+r.elements.length+"_"+n.join(","),s=this.declarations[i];if(s)return s;var a=this.declarations[i]=this.scope.generateUidIdentifier("templateObject"),o=this.addHelper(e),u=w.callExpression(o,[t,r]);return u._compact=!0,this.scope.push({id:a,init:u,_blockHoist:1.9}),a},n.prototype.buildCodeFrameError=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SyntaxError,n=e&&(e.loc||e._loc),i=new r(t);return n?i.loc=n.start:((0,g.default)(e,O,this.scope,i),i.message+=" (This is an error on an internal node. Probably an internal error",i.loc&&(i.message+=". Location has been estimated."),i.message+=")"),i},n.prototype.mergeSourceMap=function(e){var t=this.opts.inputSourceMap;if(t){var r=new b.default.SourceMapConsumer(t),n=new b.default.SourceMapConsumer(e),i=new b.default.SourceMapGenerator({file:r.file,sourceRoot:r.sourceRoot}),s=n.sources[0];r.eachMapping(function(e){var t=n.generatedPositionFor({line:e.generatedLine,column:e.generatedColumn,source:s});null!=t.column&&i.addMapping({source:e.source,original:null==e.source?null:{line:e.originalLine,column:e.originalColumn},generated:t})});var a=i.toJSON();return t.mappings=a.mappings,t}return e},n.prototype.parse=function(r){var n=C.parse,i=this.opts.parserOpts;if(i&&(i=(0,o.default)({},this.parserOpts,i)).parser){if("string"==typeof i.parser){var s=_.default.dirname(this.opts.filename)||t.cwd(),a=(0,k.default)(i.parser,s);if(!a)throw new Error("Couldn't find parser "+i.parser+' with "parse" method relative to directory '+s);n=e(a).parse}else n=i.parser;i.parser={parse:function(e){return(0,C.parse)(e,i)}}}this.log.debug("Parse start");var u=n(r,i||this.parserOpts);return this.log.debug("Parse stop"),u},n.prototype._addAst=function(e){this.path=y.NodePath.get({hub:this.hub,parentPath:null,parent:e,container:e,key:"program"}).setContext(),this.scope=this.path.scope,this.ast=e,this.getMetadata()},n.prototype.addAst=function(e){this.log.debug("Start set AST"),this._addAst(e),this.log.debug("End set AST")},n.prototype.transform=function(){for(var e=0;e=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}var o=a,u=o.plugin[e];u&&u.call(o,this)}},n.prototype.parseInputSourceMap=function(e){var t=this.opts;if(!1!==t.inputSourceMap){var r=f.default.fromSource(e);r&&(t.inputSourceMap=r.toObject(),e=f.default.removeComments(e))}return e},n.prototype.parseShebang=function(){var e=P.exec(this.code);e&&(this.shebang=e[0],this.code=this.code.replace(P,""))},n.prototype.makeResult=function(e){var t=e.code,r=e.map,n=e.ast,i=e.ignored,s={metadata:null,options:this.opts,ignored:!!i,code:null,ast:null,map:r||null};return this.opts.code&&(s.code=t),this.opts.ast&&(s.ast=n),this.opts.metadata&&(s.metadata=this.metadata),s},n.prototype.generate=function(){var r=this.opts,n=this.ast,i={ast:n};if(!r.code)return this.makeResult(i);var s=v.default;if(r.generatorOpts.generator&&"string"==typeof(s=r.generatorOpts.generator)){var a=_.default.dirname(this.opts.filename)||t.cwd(),u=(0,k.default)(s,a);if(!u)throw new Error("Couldn't find generator "+s+' with "print" method relative to directory '+a);s=e(u).print}this.log.debug("Generation start");var l=s(n,r.generatorOpts?(0,o.default)(r,r.generatorOpts):r,this.code);return i.code=l.code,i.map=l.map,this.log.debug("Generation end"),this.shebang&&(i.code=this.shebang+"\n"+i.code),i.map&&(i.map=this.mergeSourceMap(i.map)),"inline"!==r.sourceMaps&&"both"!==r.sourceMaps||(i.code+="\n"+f.default.fromObject(i.map).toComment()),"inline"===r.sourceMaps&&(i.map=null),this.makeResult(i)},n}(D.default);r.default=j,r.File=j}).call(this,e("_process"))},{"../../helpers/resolve":40,"../../store":41,"../../util":57,"../internal-plugins/block-hoist":52,"../internal-plugins/shadow-functions":53,"../plugin-pass":55,"./logger":44,"./metadata":45,"./options/option-manager":49,_process:550,"babel-code-frame":21,"babel-generator":85,"babel-helpers":109,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/object/assign":124,"babel-runtime/core-js/object/create":125,"babel-runtime/helpers/classCallCheck":134,"babel-runtime/helpers/inherits":135,"babel-runtime/helpers/possibleConstructorReturn":137,"babel-traverse":143,"babel-types":178,babylon:186,"convert-source-map":58,"lodash/defaults":495,path:546,"source-map":72}],44:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/helpers/classCallCheck")),s=n(e("debug/node")),a=(0,s.default)("babel:verbose"),o=(0,s.default)("babel"),u=[],l=function(){function e(t,r){(0,i.default)(this,e),this.filename=r,this.file=t}return e.prototype._buildMessage=function(e){var t="[BABEL] "+this.filename;return e&&(t+=": "+e),t},e.prototype.warn=function(e){console.warn(this._buildMessage(e))},e.prototype.error=function(e){throw new(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Error)(this._buildMessage(e))},e.prototype.deprecate=function(e){this.file.opts&&this.file.opts.suppressDeprecationMessages||(e=this._buildMessage(e),u.indexOf(e)>=0||(u.push(e),console.error(e)))},e.prototype.verbose=function(e){a.enabled&&a(this._buildMessage(e))},e.prototype.debug=function(e){o.enabled&&o(this._buildMessage(e))},e.prototype.deopt=function(e,t){this.debug(t)},e}();r.default=l,t.exports=r.default},{"babel-runtime/helpers/classCallCheck":134,"debug/node":59}],45:[function(e,t,r){"use strict";r.__esModule=!0,r.ImportDeclaration=r.ModuleDeclaration=void 0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/get-iterator"));r.ExportDeclaration=function(e,t){var r=e.node,s=r.source?r.source.value:null,a=t.metadata.modules.exports,o=e.get("declaration");if(o.isStatement()){var u=o.getBindingIdentifiers();for(var l in u)a.exported.push(l),a.specifiers.push({kind:"local",local:l,exported:e.isExportDefaultDeclaration()?"default":l})}if(e.isExportNamedDeclaration()&&r.specifiers)for(var c=r.specifiers,p=Array.isArray(c),h=0,c=p?c:(0,n.default)(c);;){var f;if(p){if(h>=c.length)break;f=c[h++]}else{if((h=c.next()).done)break;f=h.value}var d=f,m=d.exported.name;a.exported.push(m),i.isExportDefaultSpecifier(d)&&a.specifiers.push({kind:"external",local:m,exported:m,source:s}),i.isExportNamespaceSpecifier(d)&&a.specifiers.push({kind:"external-namespace",exported:m,source:s});var y=d.local;y&&(s&&a.specifiers.push({kind:"external",local:y.name,exported:m,source:s}),s||a.specifiers.push({kind:"local",local:y.name,exported:m}))}e.isExportAllDeclaration()&&a.specifiers.push({kind:"external-all",source:s})},r.Scope=function(e){e.skip()};var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));r.ModuleDeclaration={enter:function(e,t){var r=e.node;r.source&&(r.source.value=t.resolveModuleSource(r.source.value))}},r.ImportDeclaration={exit:function(e,t){var r=e.node,i=[],s=[];t.metadata.modules.imports.push({source:r.source.value,imported:s,specifiers:i});for(var a=e.get("specifiers"),o=Array.isArray(a),u=0,a=o?a:(0,n.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if((u=a.next()).done)break;l=u.value}var c=l,p=c.node.local.name;if(c.isImportDefaultSpecifier()&&(s.push("default"),i.push({kind:"named",imported:"default",local:p})),c.isImportSpecifier()){var h=c.node.imported.name;s.push(h),i.push({kind:"named",imported:h,local:p})}c.isImportNamespaceSpecifier()&&(s.push("*"),i.push({kind:"namespace",local:p}))}}}},{"babel-runtime/core-js/get-iterator":120,"babel-types":178}],46:[function(e,t,r){(function(n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function s(e){var t=f[e];return null==t?f[e]=h.default.existsSync(e):t}r.__esModule=!0;var a=i(e("babel-runtime/core-js/object/assign")),o=i(e("babel-runtime/helpers/classCallCheck"));r.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],r=e.filename,n=new m(t);return!1!==e.babelrc&&n.findConfigs(r),n.mergeConfig({options:e,alias:"base",dirname:r&&p.default.dirname(r)}),n.configs};var u=i(e("../../../helpers/resolve")),l=i(e("json5")),c=i(e("path-is-absolute")),p=i(e("path")),h=i(e("fs")),f={},d={},m=function(){function e(t){(0,o.default)(this,e),this.resolvedConfigs=[],this.configs=[],this.log=t}return e.prototype.findConfigs=function(e){if(e){(0,c.default)(e)||(e=p.default.join(n.cwd(),e));for(var t=!1,r=!1;e!==(e=p.default.dirname(e));){if(!t){var i=p.default.join(e,".babelrc");s(i)&&(this.addConfig(i),t=!0);var a=p.default.join(e,"package.json");!t&&s(a)&&(t=this.addConfig(a,"babel",JSON))}if(!r){var o=p.default.join(e,".babelignore");s(o)&&(this.addIgnoreConfig(o),r=!0)}if(r&&t)return}}},e.prototype.addIgnoreConfig=function(e){var t=h.default.readFileSync(e,"utf8").split("\n");(t=t.map(function(e){return e.replace(/#(.*?)$/,"").trim()}).filter(function(e){return!!e})).length&&this.mergeConfig({options:{ignore:t},alias:e,dirname:p.default.dirname(e)})},e.prototype.addConfig=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.default;if(this.resolvedConfigs.indexOf(e)>=0)return!1;this.resolvedConfigs.push(e);var n=h.default.readFileSync(e,"utf8"),i=void 0;try{i=d[n]=d[n]||r.parse(n),t&&(i=i[t])}catch(t){throw t.message=e+": Error while parsing JSON - "+t.message,t}return this.mergeConfig({options:i,alias:e,dirname:p.default.dirname(e)}),!!i},e.prototype.mergeConfig=function(e){var t=e.options,r=e.alias,i=e.loc,s=e.dirname;if(!t)return!1;if(t=(0,a.default)({},t),s=s||n.cwd(),i=i||r,t.extends){var o=(0,u.default)(t.extends,s);o?this.addConfig(o):this.log&&this.log.error("Couldn't resolve extends clause of "+t.extends+" in "+r),delete t.extends}this.configs.push({options:t,alias:r,loc:i,dirname:s});var l=void 0,c=n.env.BABEL_ENV||n.env.NODE_ENV||"development";t.env&&(l=t.env[c],delete t.env),this.mergeConfig({options:l,alias:r+".env."+c,dirname:s})},e}();t.exports=r.default}).call(this,e("_process"))},{"../../../helpers/resolve":40,_process:550,"babel-runtime/core-js/object/assign":124,"babel-runtime/helpers/classCallCheck":134,fs:191,json5:324,path:546,"path-is-absolute":547}],47:[function(e,t,r){"use strict";t.exports={filename:{type:"filename",description:"filename to use when reading from stdin - this will be used in source-maps, errors etc",default:"unknown",shorthand:"f"},filenameRelative:{hidden:!0,type:"string"},inputSourceMap:{hidden:!0},env:{hidden:!0,default:{}},mode:{description:"",hidden:!0},retainLines:{type:"boolean",default:!1,description:"retain line numbers - will result in really ugly code"},highlightCode:{description:"enable/disable ANSI syntax highlighting of code frames (on by default)",type:"boolean",default:!0},suppressDeprecationMessages:{type:"boolean",default:!1,hidden:!0},presets:{type:"list",description:"",default:[]},plugins:{type:"list",default:[],description:""},ignore:{type:"list",description:"list of glob paths to **not** compile",default:[]},only:{type:"list",description:"list of glob paths to **only** compile"},code:{hidden:!0,default:!0,type:"boolean"},metadata:{hidden:!0,default:!0,type:"boolean"},ast:{hidden:!0,default:!0,type:"boolean"},extends:{type:"string",hidden:!0},comments:{type:"boolean",default:!0,description:"write comments to generated output (true by default)"},shouldPrintComment:{hidden:!0,description:"optional callback to control whether a comment should be inserted, when this is used the comments option is ignored"},wrapPluginVisitorMethod:{hidden:!0,description:"optional callback to wrap all visitor methods"},compact:{type:"booleanString",default:"auto",description:"do not include superfluous whitespace characters and line terminators [true|false|auto]"},minified:{type:"boolean",default:!1,description:"save as much bytes when printing [true|false]"},sourceMap:{alias:"sourceMaps",hidden:!0},sourceMaps:{type:"booleanString",description:"[true|false|inline]",default:!1,shorthand:"s"},sourceMapTarget:{type:"string",description:"set `file` on returned source map"},sourceFileName:{type:"string",description:"set `sources[0]` on returned source map"},sourceRoot:{type:"filename",description:"the root from which all sources are relative"},babelrc:{description:"Whether or not to look up .babelrc and .babelignore files",type:"boolean",default:!0},sourceType:{description:"",default:"module"},auxiliaryCommentBefore:{type:"string",description:"print a comment before any injected non-user code"},auxiliaryCommentAfter:{type:"string",description:"print a comment after any injected non-user code"},resolveModuleSource:{hidden:!0},getModuleId:{hidden:!0},moduleRoot:{type:"filename",description:"optional prefix for the AMD module formatter that will be prepend to the filename on module definitions"},moduleIds:{type:"boolean",default:!1,shorthand:"M",description:"insert an explicit id for modules"},moduleId:{description:"specify a custom name for module ids",type:"string"},passPerPreset:{description:"Whether to spawn a traversal pass per a preset. By default all presets are merged.",type:"boolean",default:!1,hidden:!0},parserOpts:{description:"Options to pass into the parser, or to change parsers (parserOpts.parser)",default:!1},generatorOpts:{description:"Options to pass into the generator, or to change generators (generatorOpts.generator)",default:!1}}},{}],48:[function(e,t,r){"use strict";r.__esModule=!0,r.config=void 0,r.normaliseOptions=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in e){var r=e[t];if(null!=r){var s=i.default[t];if(s&&s.alias&&(s=i.default[s.alias]),s){var a=n[s.type];a&&(r=a(r)),e[t]=r}}}return e};var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("./parsers")),i=function(e){return e&&e.__esModule?e:{default:e}}(e("./config"));r.config=i.default},{"./config":47,"./parsers":50}],49:[function(e,t,r){(function(n){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var a=s(e("babel-runtime/helpers/objectWithoutProperties")),o=s(e("babel-runtime/core-js/json/stringify")),u=s(e("babel-runtime/core-js/object/assign")),l=s(e("babel-runtime/core-js/get-iterator")),c=s(e("babel-runtime/helpers/typeof")),p=s(e("babel-runtime/helpers/classCallCheck")),h=i(e("../../../api/node")),f=s(e("../../plugin")),d=i(e("babel-messages")),m=e("./index"),y=s(e("../../../helpers/resolve-plugin")),g=s(e("../../../helpers/resolve-preset")),b=s(e("lodash/cloneDeepWith")),v=s(e("lodash/clone")),x=s(e("../../../helpers/merge")),E=s(e("./config")),A=s(e("./removed")),D=s(e("./build-config-chain")),C=s(e("path")),S=function(){function t(e){(0,p.default)(this,t),this.resolvedConfigs=[],this.options=t.createBareOptions(),this.log=e}return t.memoisePluginContainer=function(e,r,n,i){for(var s=t.memoisedPlugins,a=Array.isArray(s),o=0,s=a?s:(0,l.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if((o=s.next()).done)break;u=o.value}var p=u;if(p.container===e)return p.plugin}var m=void 0;if("object"===(void 0===(m="function"==typeof e?e(h):e)?"undefined":(0,c.default)(m))){var y=new f.default(m,i);return t.memoisedPlugins.push({container:e,plugin:y}),y}throw new TypeError(d.get("pluginNotObject",r,n,void 0===m?"undefined":(0,c.default)(m))+r+n)},t.createBareOptions=function(){var e={};for(var t in E.default){var r=E.default[t];e[t]=(0,v.default)(r.default)}return e},t.normalisePlugin=function(e,r,n,i){if(!((e=e.__esModule?e.default:e)instanceof f.default)){if("function"!=typeof e&&"object"!==(void 0===e?"undefined":(0,c.default)(e)))throw new TypeError(d.get("pluginNotFunction",r,n,void 0===e?"undefined":(0,c.default)(e)));e=t.memoisePluginContainer(e,r,n,i)}return e.init(r,n),e},t.normalisePlugins=function(r,n,i){return i.map(function(i,s){var a=void 0,o=void 0;if(!i)throw new TypeError("Falsy value found in plugins");Array.isArray(i)?(a=i[0],o=i[1]):a=i;var u="string"==typeof a?a:r+"$"+s;if("string"==typeof a){var l=(0,y.default)(a,n);if(!l)throw new ReferenceError(d.get("pluginUnknown",a,r,s,n));a=e(l)}return a=t.normalisePlugin(a,r,s,u),[a,o]})},t.prototype.mergeOptions=function(e){var r=this,i=e.options,s=e.extending,a=e.alias,o=e.loc,l=e.dirname;if(a=a||"foreign",i){("object"!==(void 0===i?"undefined":(0,c.default)(i))||Array.isArray(i))&&this.log.error("Invalid options type for "+a,TypeError);var p=(0,b.default)(i,function(e){if(e instanceof f.default)return e});l=l||n.cwd(),o=o||a;for(var h in p){if(!E.default[h]&&this.log)if(A.default[h])this.log.error("Using removed Babel 5 option: "+a+"."+h+" - "+A.default[h].message,ReferenceError);else{var d="Unknown option: "+a+"."+h+". Check out http://babeljs.io/docs/usage/options/ for more information about options.";this.log.error(d+"\n\nA common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:\n\nInvalid:\n `{ presets: [{option: value}] }`\nValid:\n `{ presets: [['presetName', {option: value}]] }`\n\nFor more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options.",ReferenceError)}}(0,m.normaliseOptions)(p),p.plugins&&(p.plugins=t.normalisePlugins(o,l,p.plugins)),p.presets&&(p.passPerPreset?p.presets=this.resolvePresets(p.presets,l,function(e,t){r.mergeOptions({options:e,extending:e,alias:t,loc:t,dirname:l})}):(this.mergePresets(p.presets,l),delete p.presets)),i===s?(0,u.default)(s,p):(0,x.default)(s||this.options,p)}},t.prototype.mergePresets=function(e,t){var r=this;this.resolvePresets(e,t,function(e,t){r.mergeOptions({options:e,alias:t,loc:t,dirname:C.default.dirname(t||"")})})},t.prototype.resolvePresets=function(t,r,n){return t.map(function(t){var i=void 0;if(Array.isArray(t)){if(t.length>2)throw new Error("Unexpected extra options "+(0,o.default)(t.slice(2))+" passed to preset.");var s=t;t=s[0],i=s[1]}var u=void 0;try{if("string"==typeof t){if(!(u=(0,g.default)(t,r)))throw new Error("Couldn't find preset "+(0,o.default)(t)+" relative to directory "+(0,o.default)(r));t=e(u)}if("object"===(void 0===t?"undefined":(0,c.default)(t))&&t.__esModule)if(t.default)t=t.default;else{var l=t;l.__esModule;t=(0,a.default)(l,["__esModule"])}if("object"===(void 0===t?"undefined":(0,c.default)(t))&&t.buildPreset&&(t=t.buildPreset),"function"!=typeof t&&void 0!==i)throw new Error("Options "+(0,o.default)(i)+" passed to "+(u||"a preset")+" which does not accept options.");if("function"==typeof t&&(t=t(h,i,{dirname:r})),"object"!==(void 0===t?"undefined":(0,c.default)(t)))throw new Error("Unsupported preset format: "+t+".");n&&n(t,u)}catch(e){throw u&&(e.message+=" (While processing preset: "+(0,o.default)(u)+")"),e}return t})},t.prototype.normaliseOptions=function(){var e=this.options;for(var t in E.default){var r=E.default[t],n=e[t];!n&&r.optional||(r.alias?e[r.alias]=e[r.alias]||n:e[t]=n)}},t.prototype.init=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,D.default)(e,this.log),r=Array.isArray(t),n=0,t=r?t:(0,l.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i;this.mergeOptions(s)}return this.normaliseOptions(e),this.options},t}();r.default=S,S.memoisedPlugins=[],t.exports=r.default}).call(this,e("_process"))},{"../../../api/node":32,"../../../helpers/merge":35,"../../../helpers/resolve-plugin":38,"../../../helpers/resolve-preset":39,"../../plugin":56,"./build-config-chain":46,"./config":47,"./index":48,"./removed":51,_process:550,"babel-messages":110,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/json/stringify":121,"babel-runtime/core-js/object/assign":124,"babel-runtime/helpers/classCallCheck":134,"babel-runtime/helpers/objectWithoutProperties":136,"babel-runtime/helpers/typeof":138,"lodash/clone":491,"lodash/cloneDeepWith":493,path:546}],50:[function(e,t,r){"use strict";r.__esModule=!0,r.filename=void 0,r.boolean=function(e){return!!e},r.booleanString=function(e){return i.booleanify(e)},r.list=function(e){return i.list(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(e("slash")),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("../../../util"));r.filename=n.default},{"../../../util":57,slash:603}],51:[function(e,t,r){"use strict";t.exports={auxiliaryComment:{message:"Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"},blacklist:{message:"Put the specific transforms you want in the `plugins` option"},breakConfig:{message:"This is not a necessary option in Babel 6"},experimental:{message:"Put the specific transforms you want in the `plugins` option"},externalHelpers:{message:"Use the `external-helpers` plugin instead. Check out http://babeljs.io/docs/plugins/external-helpers/"},extra:{message:""},jsxPragma:{message:"use the `pragma` option in the `react-jsx` plugin . Check out http://babeljs.io/docs/plugins/transform-react-jsx/"},loose:{message:"Specify the `loose` option for the relevant plugin you are using or use a preset that sets the option."},metadataUsedHelpers:{message:"Not required anymore as this is enabled by default"},modules:{message:"Use the corresponding module transform plugin in the `plugins` option. Check out http://babeljs.io/docs/plugins/#modules"},nonStandard:{message:"Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"},optional:{message:"Put the specific transforms you want in the `plugins` option"},sourceMapName:{message:"Use the `sourceMapTarget` option"},stage:{message:"Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"},whitelist:{message:"Put the specific transforms you want in the `plugins` option"}}},{}],52:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("../plugin")),s=n(e("lodash/sortBy"));r.default=new i.default({name:"internal.blockHoist",visitor:{Block:{exit:function(e){for(var t=e.node,r=!1,n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return t.code=!1,t.mode="lint",this.transform(e,t)},e.prototype.pretransform=function(e,t){var r=new o.default(t,this);return r.wrap(e,function(){return r.addCode(e),r.parseCode(e),r})},e.prototype.transform=function(e,t){var r=new o.default(t,this);return r.wrap(e,function(){return r.addCode(e),r.parseCode(e),r.transform()})},e.prototype.analyse=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments[2];return t.code=!1,r&&(t.plugins=t.plugins||[],t.plugins.push(new a.default({visitor:r}))),this.transform(e,t).metadata},e.prototype.transformFromAst=function(e,t,r){e=(0,s.default)(e);var n=new o.default(r,this);return n.wrap(t,function(){return n.addCode(t),n.addAst(e),n.transform()})},e}();r.default=u,t.exports=r.default},{"../helpers/normalize-ast":36,"./file":43,"./plugin":56,"babel-runtime/helpers/classCallCheck":134}],55:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/helpers/classCallCheck")),s=n(e("babel-runtime/helpers/possibleConstructorReturn")),a=n(e("babel-runtime/helpers/inherits")),o=n(e("../store")),u=(n(e("./file")),function(e){function t(r,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,i.default)(this,t);var o=(0,s.default)(this,e.call(this));return o.plugin=n,o.key=n.key,o.file=r,o.opts=a,o}return(0,a.default)(t,e),t.prototype.addHelper=function(){var e;return(e=this.file).addHelper.apply(e,arguments)},t.prototype.addImport=function(){var e;return(e=this.file).addImport.apply(e,arguments)},t.prototype.getModuleName=function(){var e;return(e=this.file).getModuleName.apply(e,arguments)},t.prototype.buildCodeFrameError=function(){var e;return(e=this.file).buildCodeFrameError.apply(e,arguments)},t}(o.default));r.default=u,t.exports=r.default},{"../store":41,"./file":43,"babel-runtime/helpers/classCallCheck":134,"babel-runtime/helpers/inherits":135,"babel-runtime/helpers/possibleConstructorReturn":137}],56:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/get-iterator")),s=n(e("babel-runtime/helpers/classCallCheck")),a=n(e("babel-runtime/helpers/possibleConstructorReturn")),o=n(e("babel-runtime/helpers/inherits")),u=n(e("./file/options/option-manager")),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-messages")),c=n(e("../store")),p=n(e("babel-traverse")),h=n(e("lodash/assign")),f=n(e("lodash/clone")),d=["enter","exit"],m=function(e){function t(r,n){(0,s.default)(this,t);var i=(0,a.default)(this,e.call(this));return i.initialized=!1,i.raw=(0,h.default)({},r),i.key=i.take("name")||n,i.manipulateOptions=i.take("manipulateOptions"),i.post=i.take("post"),i.pre=i.take("pre"),i.visitor=i.normaliseVisitor((0,f.default)(i.take("visitor"))||{}),i}return(0,o.default)(t,e),t.prototype.take=function(e){var t=this.raw[e];return delete this.raw[e],t},t.prototype.chain=function(e,t){if(!e[t])return this[t];if(!this[t])return e[t];var r=[e[t],this[t]];return function(){for(var e=void 0,t=arguments.length,n=Array(t),s=0;s=a.length)break;l=a[u++]}else{if((u=a.next()).done)break;l=u.value}if(l){var c=l.apply(this,n);null!=c&&(e=c)}}return e}},t.prototype.maybeInherit=function(e){var t=this.take("inherits");t&&(t=u.default.normalisePlugin(t,e,"inherits"),this.manipulateOptions=this.chain(t,"manipulateOptions"),this.post=this.chain(t,"post"),this.pre=this.chain(t,"pre"),this.visitor=p.default.visitors.merge([t.visitor,this.visitor]))},t.prototype.init=function(e,t){if(!this.initialized){this.initialized=!0,this.maybeInherit(e);for(var r in this.raw)throw new Error(l.get("pluginInvalidProperty",e,t,r))}},t.prototype.normaliseVisitor=function(e){for(var t=d,r=Array.isArray(t),n=0,t=r?t:(0,i.default)(t);;){var s;if(r){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}if(e[s])throw new Error("Plugins aren't allowed to specify catch-all enter/exit handlers. Please target individual nodes.")}return p.default.explode(e),e},t}(c.default);r.default=m,t.exports=r.default},{"../store":41,"./file/options/option-manager":49,"babel-messages":110,"babel-runtime/core-js/get-iterator":120,"babel-runtime/helpers/classCallCheck":134,"babel-runtime/helpers/inherits":135,"babel-runtime/helpers/possibleConstructorReturn":137,"babel-traverse":143,"lodash/assign":488,"lodash/clone":491}],57:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var r=t||i.EXTENSIONS,n=m.default.extname(e);return(0,f.default)(r,n)}function s(e){return e?Array.isArray(e)?e:"string"==typeof e?e.split(","):[e]:[]}function a(e,t){return e?"boolean"==typeof e?a([e],t):"string"==typeof e?a(s(e),t):Array.isArray(e)?(t&&(e=e.map(t)),e):[e]:[]}function o(e,t){return"function"==typeof e?e(t):e.test(t)}r.__esModule=!0,r.inspect=r.inherits=void 0;var u=n(e("babel-runtime/core-js/get-iterator")),l=e("util");Object.defineProperty(r,"inherits",{enumerable:!0,get:function(){return l.inherits}}),Object.defineProperty(r,"inspect",{enumerable:!0,get:function(){return l.inspect}}),r.canCompile=i,r.list=s,r.regexify=function(e){if(!e)return new RegExp(/.^/);if(Array.isArray(e)&&(e=new RegExp(e.map(c.default).join("|"),"i")),"string"==typeof e){e=(0,y.default)(e),((0,p.default)(e,"./")||(0,p.default)(e,"*/"))&&(e=e.slice(2)),(0,p.default)(e,"**/")&&(e=e.slice(3));var t=h.default.makeRe(e,{nocase:!0});return new RegExp(t.source.slice(1,-1),"i")}if((0,d.default)(e))return e;throw new TypeError("illegal type for regexify")},r.arrayify=a,r.booleanify=function(e){return"true"===e||1==e||!("false"===e||0==e||!e)&&e},r.shouldIgnore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments[2];if(e=e.replace(/\\/g,"/"),r){for(var n=r,i=Array.isArray(n),s=0,n=i?n:(0,u.default)(n);;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}if(o(a,e))return!1}return!0}if(t.length)for(var l=t,c=Array.isArray(l),p=0,l=c?l:(0,u.default)(l);;){var h;if(c){if(p>=l.length)break;h=l[p++]}else{if((p=l.next()).done)break;h=p.value}if(o(h,e))return!0}return!1};var c=n(e("lodash/escapeRegExp")),p=n(e("lodash/startsWith")),h=n(e("minimatch")),f=n(e("lodash/includes")),d=n(e("lodash/isRegExp")),m=n(e("path")),y=n(e("slash"));i.EXTENSIONS=[".js",".jsx",".es6",".es"]},{"babel-runtime/core-js/get-iterator":120,"lodash/escapeRegExp":497,"lodash/includes":507,"lodash/isRegExp":519,"lodash/startsWith":532,minimatch:542,path:546,slash:603,util:613}],58:[function(e,t,r){(function(t){"use strict";function n(e,n){(n=n||{}).isFileComment&&(e=function(e,t){var n=r.mapFileCommentRegex.exec(e),a=n[1]||n[2],o=s.resolve(t,a);try{return i.readFileSync(o,"utf8")}catch(e){throw new Error("An error occurred while trying to read the map file at "+o+"\n"+e)}}(e,n.commentFileDir)),n.hasComment&&(e=function(e){return e.split(",").pop()}(e)),n.isEncoded&&(e=function(e){return new t(e,"base64").toString()}(e)),(n.isJSON||n.isEncoded)&&(e=JSON.parse(e)),this.sourcemap=e}var i=e("fs"),s=e("path");Object.defineProperty(r,"commentRegex",{get:function(){return/^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/gm}}),Object.defineProperty(r,"mapFileCommentRegex",{get:function(){return/(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/gm}}),n.prototype.toJSON=function(e){return JSON.stringify(this.sourcemap,null,e)},n.prototype.toBase64=function(){var e=this.toJSON();return new t(e).toString("base64")},n.prototype.toComment=function(e){var t="sourceMappingURL=data:application/json;charset=utf-8;base64,"+this.toBase64();return e&&e.multiline?"/*# "+t+" */":"//# "+t},n.prototype.toObject=function(){return JSON.parse(this.toJSON())},n.prototype.addProperty=function(e,t){if(this.sourcemap.hasOwnProperty(e))throw new Error("property %s already exists on the sourcemap, use set property instead");return this.setProperty(e,t)},n.prototype.setProperty=function(e,t){return this.sourcemap[e]=t,this},n.prototype.getProperty=function(e){return this.sourcemap[e]},r.fromObject=function(e){return new n(e)},r.fromJSON=function(e){return new n(e,{isJSON:!0})},r.fromBase64=function(e){return new n(e,{isEncoded:!0})},r.fromComment=function(e){return e=e.replace(/^\/\*/g,"//").replace(/\*\/$/g,""),new n(e,{isEncoded:!0,hasComment:!0})},r.fromMapFileComment=function(e,t){return new n(e,{commentFileDir:t,isFileComment:!0,isJSON:!0})},r.fromSource=function(e){var t=e.match(r.commentRegex);return t?r.fromComment(t.pop()):null},r.fromMapFileSource=function(e,t){var n=e.match(r.mapFileCommentRegex);return n?r.fromMapFileComment(n.pop(),t):null},r.removeComments=function(e){return e.replace(r.commentRegex,"")},r.removeMapFileComments=function(e){return e.replace(r.mapFileCommentRegex,"")},r.generateMapFileComment=function(e,t){var r="sourceMappingURL="+e;return t&&t.multiline?"/*# "+r+" */":"//# "+r}}).call(this,e("buffer").Buffer)},{buffer:192,fs:191,path:546}],59:[function(e,t,r){t.exports=e("./src/node")},{"./src/node":61}],60:[function(e,t,r){function n(e){function t(){if(t.enabled){var e=t,n=+new Date,s=n-(i||n);e.diff=s,e.prev=i,e.curr=n,i=n;for(var a=new Array(arguments.length),o=0;o=0)return t}else{var r=i.toSetString(e);if(s.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},n.prototype.at=function(e){if(e>=0&&e>>=5)>0&&(t|=32),r+=n.encode(t)}while(i>0);return r},r.decode=function(e,t,r){var i,s,a=e.length,o=0,u=0;do{if(t>=a)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(s=n.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));i=!!(32&s),o+=(s&=31)<>1;return 1==(1&e)?-t:t}(o),r.rest=t}},{"./base64":64}],64:[function(e,t,r){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");r.encode=function(e){if(0<=e&&e0?t-u>1?n(u,t,i,s,a,o):o==r.LEAST_UPPER_BOUND?t1?n(e,u,i,s,a,o):o==r.LEAST_UPPER_BOUND?u:e<0?-1:e}r.GREATEST_LOWER_BOUND=1,r.LEAST_UPPER_BOUND=2,r.search=function(e,t,i,s){if(0===t.length)return-1;var a=n(-1,t.length,e,t,i,s||r.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===i(t[a],t[a-1],!0);)--a;return a}},{}],66:[function(e,t,r){function n(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=e("./util");n.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},n.prototype.add=function(e){!function(e,t){var r=e.generatedLine,n=t.generatedLine,s=e.generatedColumn,a=t.generatedColumn;return n>r||n==r&&a>=s||i.compareByGeneratedPositionsInflated(e,t)<=0}(this._last,e)?(this._sorted=!1,this._array.push(e)):(this._last=e,this._array.push(e))},n.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},r.MappingList=n},{"./util":71}],67:[function(e,t,r){function n(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function i(e,t,r,s){if(r=0){var s=this._originalMappings[i];if(void 0===e.column)for(var a=s.originalLine;s&&s.originalLine===a;)n.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i];else for(var l=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==l;)n.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i]}return n},r.SourceMapConsumer=n,(i.prototype=Object.create(n.prototype)).consumer=n,i.fromSourceMap=function(e){var t=Object.create(i.prototype),r=t._names=l.fromArray(e._names.toArray(),!0),n=t._sources=l.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var a=e._mappings.toArray().slice(),u=t.__generatedMappings=[],c=t.__originalMappings=[],h=0,f=a.length;h1&&(r.source=m+i[1],m+=i[1],r.originalLine=f+i[2],f=r.originalLine,r.originalLine+=1,r.originalColumn=d+i[3],d=r.originalColumn,i.length>4&&(r.name=y+i[4],y+=i[4])),A.push(r),"number"==typeof r.originalLine&&E.push(r)}p(A,o.compareByGeneratedPositionsDeflated),this.__generatedMappings=A,p(E,o.compareByOriginalPositions),this.__originalMappings=E},i.prototype._findMapping=function(e,t,r,n,i,s){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return u.search(e,t,i,s)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[r];if(i.generatedLine===t.generatedLine){var s=o.getArg(i,"source",null);null!==s&&(s=this._sources.at(s),null!=this.sourceRoot&&(s=o.join(this.sourceRoot,s)));var a=o.getArg(i,"name",null);return null!==a&&(a=this._names.at(a)),{source:s,line:o.getArg(i,"originalLine",null),column:o.getArg(i,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=o.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=o.urlParse(this.sourceRoot))){var n=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(n))return this.sourcesContent[this._sources.indexOf(n)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=o.getArg(e,"source");if(null!=this.sourceRoot&&(t=o.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var r={source:t=this._sources.indexOf(t),originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")},i=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",n.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===r.source)return{line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},r.BasicSourceMapConsumer=i,(a.prototype=Object.create(n.prototype)).constructor=n,a.prototype._version=3,Object.defineProperty(a.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},n.prototype._serializeMappings=function(){for(var e,t,r,n,a=0,o=1,u=0,l=0,c=0,p=0,h="",f=this._mappings.toArray(),d=0,m=f.length;d0){if(!s.compareByGeneratedPositionsInflated(t,f[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(n=this._sources.indexOf(t.source),e+=i.encode(n-p),p=n,e+=i.encode(t.originalLine-1-l),l=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=i.encode(r-c),c=r)),h+=e}return h},n.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var r=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},n.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},n.prototype.toString=function(){return JSON.stringify(this.toJSON())},r.SourceMapGenerator=n},{"./array-set":62,"./base64-vlq":63,"./mapping-list":66,"./util":71}],70:[function(e,t,r){function n(e,t,r,n,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==i?null:i,this[o]=!0,null!=n&&this.add(n)}var i=e("./source-map-generator").SourceMapGenerator,s=e("./util"),a=/(\r?\n)/,o="$$$isSourceNode$$$";n.fromStringWithSourceMap=function(e,t,r){function i(e,t){if(null===e||void 0===e.source)o.add(t);else{var i=r?s.join(r,e.source):e.source;o.add(new n(e.originalLine,e.originalColumn,i,t,e.name))}}var o=new n,u=e.split(a),l=0,c=function(){function e(){return l=0;t--)this.prepend(e[t]);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},n.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r0){for(t=[],r=0;r=0;c--)"."===(a=u[c])?u.splice(c,1):".."===a?l++:l>0&&(""===a?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return""===(t=u.join("/"))&&(t=o?"/":"."),s?(s.path=t,i(s)):t}function a(e){return e}function o(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function u(e,t){return e===t?0:e>t?1:-1}r.getArg=function(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('"'+t+'" is a required argument.')};var l=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,c=/^data:.+\,.+$/;r.urlParse=n,r.urlGenerate=i,r.normalize=s,r.join=function(e,t){""===e&&(e="."),""===t&&(t=".");var r=n(t),a=n(e);if(a&&(e=a.path||"/"),r&&!r.scheme)return a&&(r.scheme=a.scheme),i(r);if(r||t.match(c))return t;if(a&&!a.host&&!a.path)return a.host=t,i(a);var o="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return a?(a.path=o,i(a)):o},r.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(l)},r.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var p=!("__proto__"in Object.create(null));r.toSetString=p?a:function(e){return o(e)?"$"+e:e},r.fromSetString=p?a:function(e){return o(e)?e.slice(1):e},r.compareByOriginalPositions=function(e,t,r){var n=e.source-t.source;return 0!==n?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)||r?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!=(n=e.generatedLine-t.generatedLine)?n:e.name-t.name},r.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)||r?n:0!=(n=e.source-t.source)?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:e.name-t.name},r.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=u(e.source,t.source))?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:u(e.name,t.name)}},{}],72:[function(e,t,r){r.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,r.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,r.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":68,"./lib/source-map-generator":69,"./lib/source-node":70}],73:[function(e,t,r){t.exports={_args:[[{raw:"babel-core@^6.18.2",scope:null,escapedName:"babel-core",name:"babel-core",rawSpec:"^6.18.2",spec:">=6.18.2 <7.0.0",type:"range"},"/Users/evgenypoberezkin/Documents/JSON/ajv/node_modules/regenerator"]],_from:"babel-core@>=6.18.2 <7.0.0",_id:"babel-core@6.26.0",_inCache:!0,_location:"/babel-core",_nodeVersion:"6.9.0",_npmOperationalInternal:{host:"s3://npm-registry-packages",tmp:"tmp/babel-core-6.26.0.tgz_1502898861183_0.43529116874560714"},_npmUser:{name:"hzoo",email:"hi@henryzoo.com"},_npmVersion:"4.6.1",_phantomChildren:{ms:"2.0.0"},_requested:{raw:"babel-core@^6.18.2",scope:null,escapedName:"babel-core",name:"babel-core",rawSpec:"^6.18.2",spec:">=6.18.2 <7.0.0",type:"range"},_requiredBy:["/babel-register","/regenerator"],_resolved:"https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",_shasum:"af32f78b31a6fcef119c87b0fd8d9753f03a0bb8",_shrinkwrap:null,_spec:"babel-core@^6.18.2",_where:"/Users/evgenypoberezkin/Documents/JSON/ajv/node_modules/regenerator",author:{name:"Sebastian McKenzie",email:"sebmck@gmail.com"},dependencies:{"babel-code-frame":"^6.26.0","babel-generator":"^6.26.0","babel-helpers":"^6.24.1","babel-messages":"^6.23.0","babel-register":"^6.26.0","babel-runtime":"^6.26.0","babel-template":"^6.26.0","babel-traverse":"^6.26.0","babel-types":"^6.26.0",babylon:"^6.18.0","convert-source-map":"^1.5.0",debug:"^2.6.8",json5:"^0.5.1",lodash:"^4.17.4",minimatch:"^3.0.4","path-is-absolute":"^1.0.1",private:"^0.1.7",slash:"^1.0.0","source-map":"^0.5.6"},description:"Babel compiler core.",devDependencies:{"babel-helper-fixtures":"^6.26.0","babel-helper-transform-fixture-test-runner":"^6.26.0","babel-polyfill":"^6.26.0"},directories:{},dist:{shasum:"af32f78b31a6fcef119c87b0fd8d9753f03a0bb8",tarball:"https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz"},homepage:"https://babeljs.io/",keywords:["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core","compiler"],license:"MIT",maintainers:[{name:"thejameskyle",email:"me@thejameskyle.com"},{name:"sebmck",email:"sebmck@gmail.com"},{name:"danez",email:"daniel@tschinder.de"},{name:"hzoo",email:"hi@henryzoo.com"},{name:"loganfsmyth",email:"loganfsmyth@gmail.com"}],name:"babel-core",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"https://github.com/babel/babel/tree/master/packages/babel-core"},scripts:{bench:"make bench",test:"make test"},version:"6.26.0"}},{}],74:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/helpers/classCallCheck")),s=n(e("trim-right")),a=/^[ \t]+$/,o=function(){function e(t){(0,i.default)(this,e),this._map=null,this._buf=[],this._last="",this._queue=[],this._position={line:1,column:0},this._sourcePosition={identifierName:null,line:null,column:null,filename:null},this._map=t}return e.prototype.get=function(){this._flush();var e=this._map,t={code:(0,s.default)(this._buf.join("")),map:null,rawMappings:e&&e.getRawMappings()};return e&&Object.defineProperty(t,"map",{configurable:!0,enumerable:!0,get:function(){return this.map=e.get()},set:function(e){Object.defineProperty(this,"map",{value:e,writable:!0})}}),t},e.prototype.append=function(e){this._flush();var t=this._sourcePosition,r=t.line,n=t.column,i=t.filename,s=t.identifierName;this._append(e,r,n,s,i)},e.prototype.queue=function(e){if("\n"===e)for(;this._queue.length>0&&a.test(this._queue[0][0]);)this._queue.shift();var t=this._sourcePosition,r=t.line,n=t.column,i=t.filename,s=t.identifierName;this._queue.unshift([e,r,n,s,i])},e.prototype._flush=function(){for(var e=void 0;e=this._queue.pop();)this._append.apply(this,e)},e.prototype._append=function(e,t,r,n,i){this._map&&"\n"!==e[0]&&this._map.mark(this._position.line,this._position.column,t,r,n,i),this._buf.push(e),this._last=e[e.length-1];for(var s=0;s0&&"\n"===this._queue[0][0]&&this._queue.shift()},e.prototype.removeLastSemicolon=function(){this._queue.length>0&&";"===this._queue[0][0]&&this._queue.shift()},e.prototype.endsWith=function(e){if(1===e.length){var t=void 0;if(this._queue.length>0){var r=this._queue[0][0];t=r[r.length-1]}else t=this._last;return t===e}var n=this._last+this._queue.reduce(function(e,t){return t[0]+e},"");return e.length<=n.length&&n.slice(-e.length)===e},e.prototype.hasContent=function(){return this._queue.length>0||!!this._last},e.prototype.source=function(e,t){if(!e||t){var r=t?t[e]:null;this._sourcePosition.identifierName=t&&t.identifierName||null,this._sourcePosition.line=r?r.line:null,this._sourcePosition.column=r?r.column:null,this._sourcePosition.filename=t&&t.filename||null}},e.prototype.withSource=function(e,t,r){if(!this._map)return r();var n=this._sourcePosition.line,i=this._sourcePosition.column,s=this._sourcePosition.filename,a=this._sourcePosition.identifierName;this.source(e,t),r(),this._sourcePosition.line=n,this._sourcePosition.column=i,this._sourcePosition.filename=s,this._sourcePosition.identifierName=a},e.prototype.getCurrentColumn=function(){var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=e.lastIndexOf("\n");return-1===t?this._position.column+e.length:e.length-1-t},e.prototype.getCurrentLine=function(){for(var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=0,r=0;r")}function a(){this.space(),this.token("|"),this.space()}r.__esModule=!0,r.TypeParameterDeclaration=r.StringLiteralTypeAnnotation=r.NumericLiteralTypeAnnotation=r.GenericTypeAnnotation=r.ClassImplements=void 0,r.AnyTypeAnnotation=function(){this.word("any")},r.ArrayTypeAnnotation=function(e){this.print(e.elementType,e),this.token("["),this.token("]")},r.BooleanTypeAnnotation=function(){this.word("boolean")},r.BooleanLiteralTypeAnnotation=function(e){this.word(e.value?"true":"false")},r.NullLiteralTypeAnnotation=function(){this.word("null")},r.DeclareClass=function(e,t){u.isDeclareExportDeclaration(t)||(this.word("declare"),this.space()),this.word("class"),this.space(),this._interfaceish(e)},r.DeclareFunction=function(e,t){u.isDeclareExportDeclaration(t)||(this.word("declare"),this.space()),this.word("function"),this.space(),this.print(e.id,e),this.print(e.id.typeAnnotation.typeAnnotation,e),this.semicolon()},r.DeclareInterface=function(e){this.word("declare"),this.space(),this.InterfaceDeclaration(e)},r.DeclareModule=function(e){this.word("declare"),this.space(),this.word("module"),this.space(),this.print(e.id,e),this.space(),this.print(e.body,e)},r.DeclareModuleExports=function(e){this.word("declare"),this.space(),this.word("module"),this.token("."),this.word("exports"),this.print(e.typeAnnotation,e)},r.DeclareTypeAlias=function(e){this.word("declare"),this.space(),this.TypeAlias(e)},r.DeclareOpaqueType=function(e,t){u.isDeclareExportDeclaration(t)||(this.word("declare"),this.space()),this.OpaqueType(e)},r.DeclareVariable=function(e,t){u.isDeclareExportDeclaration(t)||(this.word("declare"),this.space()),this.word("var"),this.space(),this.print(e.id,e),this.print(e.id.typeAnnotation,e),this.semicolon()},r.DeclareExportDeclaration=function(e){this.word("declare"),this.space(),this.word("export"),this.space(),e.default&&(this.word("default"),this.space()),function(e){if(e.declaration){var t=e.declaration;this.print(t,e),u.isStatement(t)||this.semicolon()}else this.token("{"),e.specifiers.length&&(this.space(),this.printList(e.specifiers,e),this.space()),this.token("}"),e.source&&(this.space(),this.word("from"),this.space(),this.print(e.source,e)),this.semicolon()}.apply(this,arguments)},r.ExistentialTypeParam=function(){this.token("*")},r.FunctionTypeAnnotation=function(e,t){this.print(e.typeParameters,e),this.token("("),this.printList(e.params,e),e.rest&&(e.params.length&&(this.token(","),this.space()),this.token("..."),this.print(e.rest,e)),this.token(")"),"ObjectTypeCallProperty"===t.type||"DeclareFunction"===t.type?this.token(":"):(this.space(),this.token("=>")),this.space(),this.print(e.returnType,e)},r.FunctionTypeParam=function(e){this.print(e.name,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.typeAnnotation,e)},r.InterfaceExtends=n,r._interfaceish=function(e){this.print(e.id,e),this.print(e.typeParameters,e),e.extends.length&&(this.space(),this.word("extends"),this.space(),this.printList(e.extends,e)),e.mixins&&e.mixins.length&&(this.space(),this.word("mixins"),this.space(),this.printList(e.mixins,e)),this.space(),this.print(e.body,e)},r._variance=function(e){"plus"===e.variance?this.token("+"):"minus"===e.variance&&this.token("-")},r.InterfaceDeclaration=function(e){this.word("interface"),this.space(),this._interfaceish(e)},r.IntersectionTypeAnnotation=function(e){this.printJoin(e.types,e,{separator:i})},r.MixedTypeAnnotation=function(){this.word("mixed")},r.EmptyTypeAnnotation=function(){this.word("empty")},r.NullableTypeAnnotation=function(e){this.token("?"),this.print(e.typeAnnotation,e)};var o=e("./types");Object.defineProperty(r,"NumericLiteralTypeAnnotation",{enumerable:!0,get:function(){return o.NumericLiteral}}),Object.defineProperty(r,"StringLiteralTypeAnnotation",{enumerable:!0,get:function(){return o.StringLiteral}}),r.NumberTypeAnnotation=function(){this.word("number")},r.StringTypeAnnotation=function(){this.word("string")},r.ThisTypeAnnotation=function(){this.word("this")},r.TupleTypeAnnotation=function(e){this.token("["),this.printList(e.types,e),this.token("]")},r.TypeofTypeAnnotation=function(e){this.word("typeof"),this.space(),this.print(e.argument,e)},r.TypeAlias=function(e){this.word("type"),this.space(),this.print(e.id,e),this.print(e.typeParameters,e),this.space(),this.token("="),this.space(),this.print(e.right,e),this.semicolon()},r.OpaqueType=function(e){this.word("opaque"),this.space(),this.word("type"),this.space(),this.print(e.id,e),this.print(e.typeParameters,e),e.supertype&&(this.token(":"),this.space(),this.print(e.supertype,e)),e.impltype&&(this.space(),this.token("="),this.space(),this.print(e.impltype,e)),this.semicolon()},r.TypeAnnotation=function(e){this.token(":"),this.space(),e.optional&&this.token("?"),this.print(e.typeAnnotation,e)},r.TypeParameter=function(e){this._variance(e),this.word(e.name),e.bound&&this.print(e.bound,e),e.default&&(this.space(),this.token("="),this.space(),this.print(e.default,e))},r.TypeParameterInstantiation=s,r.ObjectTypeAnnotation=function(e){var t=this;e.exact?this.token("{|"):this.token("{");var r=e.properties.concat(e.callProperties,e.indexers);r.length&&(this.space(),this.printJoin(r,e,{addNewlines:function(e){if(e&&!r[0])return 1},indent:!0,statement:!0,iterator:function(){1!==r.length&&(t.format.flowCommaSeparator?t.token(","):t.semicolon(),t.space())}}),this.space()),e.exact?this.token("|}"):this.token("}")},r.ObjectTypeCallProperty=function(e){e.static&&(this.word("static"),this.space()),this.print(e.value,e)},r.ObjectTypeIndexer=function(e){e.static&&(this.word("static"),this.space()),this._variance(e),this.token("["),this.print(e.id,e),this.token(":"),this.space(),this.print(e.key,e),this.token("]"),this.token(":"),this.space(),this.print(e.value,e)},r.ObjectTypeProperty=function(e){e.static&&(this.word("static"),this.space()),this._variance(e),this.print(e.key,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.value,e)},r.ObjectTypeSpreadProperty=function(e){this.token("..."),this.print(e.argument,e)},r.QualifiedTypeIdentifier=function(e){this.print(e.qualification,e),this.token("."),this.print(e.id,e)},r.UnionTypeAnnotation=function(e){this.printJoin(e.types,e,{separator:a})},r.TypeCastExpression=function(e){this.token("("),this.print(e.expression,e),this.print(e.typeAnnotation,e),this.token(")")},r.VoidTypeAnnotation=function(){this.word("void")};var u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));r.ClassImplements=n,r.GenericTypeAnnotation=n,r.TypeParameterDeclaration=s},{"./types":84,"babel-types":178}],79:[function(e,t,r){"use strict";function n(){this.space()}r.__esModule=!0;var i=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/get-iterator"));r.JSXAttribute=function(e){this.print(e.name,e),e.value&&(this.token("="),this.print(e.value,e))},r.JSXIdentifier=function(e){this.word(e.name)},r.JSXNamespacedName=function(e){this.print(e.namespace,e),this.token(":"),this.print(e.name,e)},r.JSXMemberExpression=function(e){this.print(e.object,e),this.token("."),this.print(e.property,e)},r.JSXSpreadAttribute=function(e){this.token("{"),this.token("..."),this.print(e.argument,e),this.token("}")},r.JSXExpressionContainer=function(e){this.token("{"),this.print(e.expression,e),this.token("}")},r.JSXSpreadChild=function(e){this.token("{"),this.token("..."),this.print(e.expression,e),this.token("}")},r.JSXText=function(e){this.token(e.value)},r.JSXElement=function(e){var t=e.openingElement;if(this.print(t,e),!t.selfClosing){this.indent();for(var r=e.children,n=Array.isArray(r),s=0,r=n?r:(0,i.default)(r);;){var a;if(n){if(s>=r.length)break;a=r[s++]}else{if((s=r.next()).done)break;a=s.value}var o=a;this.print(o,e)}this.dedent(),this.print(e.closingElement,e)}},r.JSXOpeningElement=function(e){this.token("<"),this.print(e.name,e),e.attributes.length>0&&(this.space(),this.printJoin(e.attributes,e,{separator:n})),e.selfClosing?(this.space(),this.token("/>")):this.token(">")},r.JSXClosingElement=function(e){this.token("")},r.JSXEmptyExpression=function(){}},{"babel-runtime/core-js/get-iterator":120}],80:[function(e,t,r){"use strict";function n(e){e.async&&(this.word("async"),this.space()),this.word("function"),e.generator&&this.token("*"),e.id?(this.space(),this.print(e.id,e)):this.space(),this._params(e),this.space(),this.print(e.body,e)}r.__esModule=!0,r.FunctionDeclaration=void 0,r._params=function(e){var t=this;this.print(e.typeParameters,e),this.token("("),this.printList(e.params,e,{iterator:function(e){e.optional&&t.token("?"),t.print(e.typeAnnotation,e)}}),this.token(")"),e.returnType&&this.print(e.returnType,e)},r._method=function(e){var t=e.kind,r=e.key;"method"!==t&&"init"!==t||e.generator&&this.token("*"),"get"!==t&&"set"!==t||(this.word(t),this.space()),e.async&&(this.word("async"),this.space()),e.computed?(this.token("["),this.print(r,e),this.token("]")):this.print(r,e),this._params(e),this.space(),this.print(e.body,e)},r.FunctionExpression=n,r.ArrowFunctionExpression=function(e){e.async&&(this.word("async"),this.space());var t=e.params[0];1===e.params.length&&i.isIdentifier(t)&&!function(e,t){return e.typeParameters||e.returnType||t.typeAnnotation||t.optional||t.trailingComments}(e,t)?this.print(t,e):this._params(e),this.space(),this.token("=>"),this.space(),this.print(e.body,e)};var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));r.FunctionDeclaration=n},{"babel-types":178}],81:[function(e,t,r){"use strict";function n(e){if(e.declaration){var t=e.declaration;this.print(t,e),i.isStatement(t)||this.semicolon()}else{"type"===e.exportKind&&(this.word("type"),this.space());for(var r=e.specifiers.slice(0),n=!1;;){var s=r[0];if(!i.isExportDefaultSpecifier(s)&&!i.isExportNamespaceSpecifier(s))break;n=!0,this.print(r.shift(),e),r.length&&(this.token(","),this.space())}(r.length||!r.length&&!n)&&(this.token("{"),r.length&&(this.space(),this.printList(r,e),this.space()),this.token("}")),e.source&&(this.space(),this.word("from"),this.space(),this.print(e.source,e)),this.semicolon()}}r.__esModule=!0,r.ImportSpecifier=function(e){"type"!==e.importKind&&"typeof"!==e.importKind||(this.word(e.importKind),this.space()),this.print(e.imported,e),e.local&&e.local.name!==e.imported.name&&(this.space(),this.word("as"),this.space(),this.print(e.local,e))},r.ImportDefaultSpecifier=function(e){this.print(e.local,e)},r.ExportDefaultSpecifier=function(e){this.print(e.exported,e)},r.ExportSpecifier=function(e){this.print(e.local,e),e.exported&&e.local.name!==e.exported.name&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e))},r.ExportNamespaceSpecifier=function(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.exported,e)},r.ExportAllDeclaration=function(e){this.word("export"),this.space(),this.token("*"),this.space(),this.word("from"),this.space(),this.print(e.source,e),this.semicolon()},r.ExportNamedDeclaration=function(){this.word("export"),this.space(),n.apply(this,arguments)},r.ExportDefaultDeclaration=function(){this.word("export"),this.space(),this.word("default"),this.space(),n.apply(this,arguments)},r.ImportDeclaration=function(e){this.word("import"),this.space(),"type"!==e.importKind&&"typeof"!==e.importKind||(this.word(e.importKind),this.space());var t=e.specifiers.slice(0);if(t&&t.length){for(;;){var r=t[0];if(!i.isImportDefaultSpecifier(r)&&!i.isImportNamespaceSpecifier(r))break;this.print(t.shift(),e),t.length&&(this.token(","),this.space())}t.length&&(this.token("{"),this.space(),this.printList(t,e),this.space(),this.token("}")),this.space(),this.word("from"),this.space()}this.print(e.source,e),this.semicolon()},r.ImportNamespaceSpecifier=function(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.local,e)};var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"))},{"babel-types":178}],82:[function(e,t,r){"use strict";function n(e){return a.isStatement(e.body)?n(e.body):e}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"label";return function(r){this.word(e);var n=r[t];if(n){this.space();var i=this.startTerminatorless();this.print(n,r),this.endTerminatorless(i)}this.semicolon()}}r.__esModule=!0,r.ThrowStatement=r.BreakStatement=r.ReturnStatement=r.ContinueStatement=r.ForAwaitStatement=r.ForOfStatement=r.ForInStatement=void 0;var s=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/get-iterator"));r.WithStatement=function(e){this.word("with"),this.space(),this.token("("),this.print(e.object,e),this.token(")"),this.printBlock(e)},r.IfStatement=function(e){this.word("if"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.space();var t=e.alternate&&a.isIfStatement(n(e.consequent));t&&(this.token("{"),this.newline(),this.indent()),this.printAndIndentOnComments(e.consequent,e),t&&(this.dedent(),this.newline(),this.token("}")),e.alternate&&(this.endsWith("}")&&this.space(),this.word("else"),this.space(),this.printAndIndentOnComments(e.alternate,e))},r.ForStatement=function(e){this.word("for"),this.space(),this.token("("),this.inForStatementInitCounter++,this.print(e.init,e),this.inForStatementInitCounter--,this.token(";"),e.test&&(this.space(),this.print(e.test,e)),this.token(";"),e.update&&(this.space(),this.print(e.update,e)),this.token(")"),this.printBlock(e)},r.WhileStatement=function(e){this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.printBlock(e)},r.DoWhileStatement=function(e){this.word("do"),this.space(),this.print(e.body,e),this.space(),this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.semicolon()},r.LabeledStatement=function(e){this.print(e.label,e),this.token(":"),this.space(),this.print(e.body,e)},r.TryStatement=function(e){this.word("try"),this.space(),this.print(e.block,e),this.space(),e.handlers?this.print(e.handlers[0],e):this.print(e.handler,e),e.finalizer&&(this.space(),this.word("finally"),this.space(),this.print(e.finalizer,e))},r.CatchClause=function(e){this.word("catch"),this.space(),this.token("("),this.print(e.param,e),this.token(")"),this.space(),this.print(e.body,e)},r.SwitchStatement=function(e){this.word("switch"),this.space(),this.token("("),this.print(e.discriminant,e),this.token(")"),this.space(),this.token("{"),this.printSequence(e.cases,e,{indent:!0,addNewlines:function(t,r){if(!t&&e.cases[e.cases.length-1]===r)return-1}}),this.token("}")},r.SwitchCase=function(e){e.test?(this.word("case"),this.space(),this.print(e.test,e),this.token(":")):(this.word("default"),this.token(":")),e.consequent.length&&(this.newline(),this.printSequence(e.consequent,e,{indent:!0}))},r.DebuggerStatement=function(){this.word("debugger"),this.semicolon()},r.VariableDeclaration=function(e,t){this.word(e.kind),this.space();var r=!1;if(!a.isFor(t))for(var n=e.declarations,i=Array.isArray(n),o=0,n=i?n:(0,s.default)(n);;){var u;if(i){if(o>=n.length)break;u=n[o++]}else{if((o=n.next()).done)break;u=o.value}u.init&&(r=!0)}var l=void 0;r&&(l="const"===e.kind?function(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<6;e++)this.space(!0)}:function(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<4;e++)this.space(!0)}),this.printList(e.declarations,e,{separator:l}),(!a.isFor(t)||t.left!==e&&t.init!==e)&&this.semicolon()},r.VariableDeclarator=function(e){this.print(e.id,e),this.print(e.id.typeAnnotation,e),e.init&&(this.space(),this.token("="),this.space(),this.print(e.init,e))};var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types")),o=function(e){return function(t){this.word("for"),this.space(),"await"===e&&(this.word("await"),this.space()),this.token("("),this.print(t.left,t),this.space(),this.word("await"===e?"of":e),this.space(),this.print(t.right,t),this.token(")"),this.printBlock(t)}};r.ForInStatement=o("in"),r.ForOfStatement=o("of"),r.ForAwaitStatement=o("await"),r.ContinueStatement=i("continue"),r.ReturnStatement=i("return","argument"),r.BreakStatement=i("break"),r.ThrowStatement=i("throw","argument")},{"babel-runtime/core-js/get-iterator":120,"babel-types":178}],83:[function(e,t,r){"use strict";r.__esModule=!0,r.TaggedTemplateExpression=function(e){this.print(e.tag,e),this.print(e.quasi,e)},r.TemplateElement=function(e,t){var r=t.quasis[0]===e,n=t.quasis[t.quasis.length-1]===e,i=(r?"`":"}")+e.value.raw+(n?"`":"${");this.token(i)},r.TemplateLiteral=function(e){for(var t=e.quasis,r=0;r0&&this.space(),this.print(i,e),n1&&void 0!==arguments[1]?arguments[1]:{},a=arguments[2];(0,i.default)(this,t);var c=r.tokens||[],p=function(e,t,r){var n=" ";if(e&&"string"==typeof e){var i=(0,o.default)(e).indent;i&&" "!==i&&(n=i)}var s={auxiliaryCommentBefore:t.auxiliaryCommentBefore,auxiliaryCommentAfter:t.auxiliaryCommentAfter,shouldPrintComment:t.shouldPrintComment,retainLines:t.retainLines,retainFunctionParens:t.retainFunctionParens,comments:null==t.comments||t.comments,compact:t.compact,minified:t.minified,concise:t.concise,quotes:t.quotes||function(e,t){if(!e)return"double";for(var r={single:0,double:0},n=0,i=0;i=3))break}return r.single>r.double?"single":"double"}(e,r),jsonCompatibleStrings:t.jsonCompatibleStrings,indent:{adjustMultilineComment:!0,style:n,base:0},flowCommaSeparator:t.flowCommaSeparator};return s.minified?(s.compact=!0,s.shouldPrintComment=s.shouldPrintComment||function(){return s.comments}):s.shouldPrintComment=s.shouldPrintComment||function(e){return s.comments||e.indexOf("@license")>=0||e.indexOf("@preserve")>=0},"auto"===s.compact&&(s.compact=e.length>5e5,s.compact&&console.error("[BABEL] "+l.get("codeGeneratorDeopt",t.filename,"500KB"))),s.compact&&(s.indent.adjustMultilineComment=!1),s}(a,n,c),h=n.sourceMaps?new u.default(n,a):null,f=(0,s.default)(this,e.call(this,p,h,c));return f.ast=r,f}return(0,a.default)(t,e),t.prototype.generate=function(){return e.prototype.generate.call(this,this.ast)},t}(n(e("./printer")).default);r.CodeGenerator=function(){function e(t,r,n){(0,i.default)(this,e),this._generator=new c(t,r,n)}return e.prototype.generate=function(){return this._generator.generate()},e}()},{"./printer":89,"./source-map":90,"babel-messages":110,"babel-runtime/helpers/classCallCheck":134,"babel-runtime/helpers/inherits":135,"babel-runtime/helpers/possibleConstructorReturn":137,"detect-indent":309}],86:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function s(e){function t(e,t){var n=r[e];r[e]=n?function(e,r,i){var s=n(e,r,i);return null==s?t(e,r,i):s}:t}for(var r={},n=(0,c.default)(e),i=Array.isArray(n),s=0,n=i?n:(0,l.default)(n);;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}var o=a,u=f.FLIPPED_ALIAS_KEYS[o];if(u)for(var p=u,h=Array.isArray(p),d=0,p=h?p:(0,l.default)(p);;){var m;if(h){if(d>=p.length)break;m=p[d++]}else{if((d=p.next()).done)break;m=d.value}t(m,e[o])}else t(o,e[o])}return r}function a(e,t,r,n){var i=e[t.type];return i?i(t,r,n):null}function o(e){return!!f.isCallExpression(e)||!!f.isMemberExpression(e)&&(o(e.object)||!e.computed&&o(e.property))}function u(e,t,r){if(!e)return 0;f.isExpressionStatement(e)&&(e=e.expression);var n=a(m,e,t);if(!n){var i=a(y,e,t);if(i)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:{},r=t.considerArrow,n=void 0!==r&&r,i=t.considerDefaultExports,s=void 0!==i&&i,a=e.length-1,o=e[a],l=e[--a];a>0;){if(u.isExpressionStatement(l,{expression:o})||u.isTaggedTemplateExpression(l)||s&&u.isExportDefaultDeclaration(l,{declaration:o})||n&&u.isArrowFunctionExpression(l,{body:o}))return!0;if(!(u.isCallExpression(l,{callee:o})||u.isSequenceExpression(l)&&l.expressions[0]===o||u.isMemberExpression(l,{object:o})||u.isConditional(l,{test:o})||u.isBinary(l,{left:o})||u.isAssignmentExpression(l,{left:o})))return!1;o=l,l=e[--a]}return!1}r.__esModule=!0,r.AwaitExpression=r.FunctionTypeAnnotation=void 0,r.NullableTypeAnnotation=n,r.UpdateExpression=function(e,t){return u.isMemberExpression(t)&&t.object===e},r.ObjectExpression=function(e,t,r){return o(r,{considerArrow:!0})},r.DoExpression=function(e,t,r){return o(r)},r.Binary=function(e,t){if((u.isCallExpression(t)||u.isNewExpression(t))&&t.callee===e||u.isUnaryLike(t)||u.isMemberExpression(t)&&t.object===e||u.isAwaitExpression(t))return!0;if(u.isBinary(t)){var r=t.operator,n=l[r],i=e.operator,s=l[i];if(n===s&&t.right===e&&!u.isLogicalExpression(t)||n>s)return!0}return!1},r.BinaryExpression=function(e,t){return"in"===e.operator&&(u.isVariableDeclarator(t)||u.isFor(t))},r.SequenceExpression=function(e,t){return!(u.isForStatement(t)||u.isThrowStatement(t)||u.isReturnStatement(t)||u.isIfStatement(t)&&t.test===e||u.isWhileStatement(t)&&t.test===e||u.isForInStatement(t)&&t.right===e||u.isSwitchStatement(t)&&t.discriminant===e||u.isExpressionStatement(t)&&t.expression===e)},r.YieldExpression=i,r.ClassExpression=function(e,t,r){return o(r,{considerDefaultExports:!0})},r.UnaryLike=s,r.FunctionExpression=function(e,t,r){return o(r,{considerDefaultExports:!0})},r.ArrowFunctionExpression=function(e,t){return!!(u.isExportDeclaration(t)||u.isBinaryExpression(t)||u.isLogicalExpression(t)||u.isUnaryExpression(t)||u.isTaggedTemplateExpression(t))||s(e,t)},r.ConditionalExpression=a,r.AssignmentExpression=function(e){return!!u.isObjectPattern(e.left)||a.apply(void 0,arguments)};var u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types")),l={"||":0,"&&":1,"|":2,"^":3,"&":4,"==":5,"===":5,"!=":5,"!==":5,"<":6,">":6,"<=":6,">=":6,in:6,instanceof:6,">>":7,"<<":7,">>>":7,"+":8,"-":8,"*":9,"/":9,"%":9,"**":10};r.FunctionTypeAnnotation=n,r.AwaitExpression=i},{"babel-types":178}],88:[function(e,t,r){"use strict";function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.isMemberExpression(e)?(n(e.object,t),e.computed&&n(e.property,t)):o.isBinary(e)||o.isAssignmentExpression(e)?(n(e.left,t),n(e.right,t)):o.isCallExpression(e)?(t.hasCall=!0,n(e.callee,t)):o.isFunction(e)?t.hasFunction=!0:o.isIdentifier(e)&&(t.hasHelper=t.hasHelper||i(e.callee)),t}function i(e){return o.isMemberExpression(e)?i(e.object)||i(e.property):o.isIdentifier(e)?"require"===e.name||"_"===e.name[0]:o.isCallExpression(e)?i(e.callee):!(!o.isBinary(e)&&!o.isAssignmentExpression(e))&&(o.isIdentifier(e.left)&&i(e.left)||i(e.right))}function s(e){return o.isLiteral(e)||o.isObjectExpression(e)||o.isArrayExpression(e)||o.isIdentifier(e)||o.isMemberExpression(e)}var a=function(e){return e&&e.__esModule?e:{default:e}}(e("lodash/map")),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));r.nodes={AssignmentExpression:function(e){var t=n(e.right);if(t.hasCall&&t.hasHelper||t.hasFunction)return{before:t.hasFunction,after:!0}},SwitchCase:function(e,t){return{before:e.consequent.length||t.cases[0]===e}},LogicalExpression:function(e){if(o.isFunction(e.left)||o.isFunction(e.right))return{after:!0}},Literal:function(e){if("use strict"===e.value)return{after:!0}},CallExpression:function(e){if(o.isFunction(e.callee)||i(e))return{before:!0,after:!0}},VariableDeclaration:function(e){for(var t=0;t0?new g.default(n):null}return e.prototype.generate=function(e){return this.print(e),this._maybeAddAuxComment(),this._buf.get()},e.prototype.indent=function(){this.format.compact||this.format.concise||this._indent++},e.prototype.dedent=function(){this.format.compact||this.format.concise||this._indent--},e.prototype.semicolon=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._maybeAddAuxComment(),this._append(";",!e)},e.prototype.rightBrace=function(){this.format.minified&&this._buf.removeLastSemicolon(),this.token("}")},e.prototype.space=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.format.compact||(this._buf.hasContent()&&!this.endsWith(" ")&&!this.endsWith("\n")||e)&&this._space()},e.prototype.word=function(e){this._endsWithWord&&this._space(),this._maybeAddAuxComment(),this._append(e),this._endsWithWord=!0},e.prototype.number=function(e){this.word(e),this._endsWithInteger=(0,f.default)(+e)&&!E.test(e)&&!v.test(e)&&!x.test(e)&&"."!==e[e.length-1]},e.prototype.token=function(e){("--"===e&&this.endsWith("!")||"+"===e[0]&&this.endsWith("+")||"-"===e[0]&&this.endsWith("-")||"."===e[0]&&this._endsWithInteger)&&this._space(),this._maybeAddAuxComment(),this._append(e)},e.prototype.newline=function(e){if(!this.format.retainLines&&!this.format.compact)if(this.format.concise)this.space();else if(!(this.endsWith("\n\n")||("number"!=typeof e&&(e=1),e=Math.min(2,e),(this.endsWith("{\n")||this.endsWith(":\n"))&&e--,e<=0)))for(var t=0;t1&&void 0!==arguments[1]&&arguments[1];this._maybeAddParen(e),this._maybeIndent(e),t?this._buf.queue(e):this._buf.append(e),this._endsWithWord=!1,this._endsWithInteger=!1},e.prototype._maybeIndent=function(e){this._indent&&this.endsWith("\n")&&"\n"!==e[0]&&this._buf.queue(this._getIndent())},e.prototype._maybeAddParen=function(e){var t=this._parenPushNewlineState;if(t){this._parenPushNewlineState=null;var r=void 0;for(r=0;r2&&void 0!==arguments[2]?arguments[2]:{};if(e&&e.length){r.indent&&this.indent();for(var n={addNewlines:r.addNewlines},i=0;i1&&void 0!==arguments[1])||arguments[1];e.innerComments&&(t&&this.indent(),this._printComments(e.innerComments),t&&this.dedent())},e.prototype.printSequence=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.statement=!0,this.printJoin(e,t,r)},e.prototype.printList=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return null==r.separator&&(r.separator=s),this.printJoin(e,t,r)},e.prototype._printNewline=function(e,t,r,n){var i=this;if(!this.format.retainLines&&!this.format.compact)if(this.format.concise)this.space();else{var s=0;if(null!=t.start&&!t._ignoreUserWhitespace&&this._whitespace)if(e){var a=t.leadingComments,o=a&&(0,p.default)(a,function(e){return!!e.loc&&i.format.shouldPrintComment(e.value)});s=this._whitespace.getNewlinesBefore(o||t)}else{var u=t.trailingComments,l=u&&(0,h.default)(u,function(e){return!!e.loc&&i.format.shouldPrintComment(e.value)});s=this._whitespace.getNewlinesAfter(l||t)}else{e||s++,n.addNewlines&&(s+=n.addNewlines(e,t)||0);var c=y.needsWhitespaceAfter;e&&(c=y.needsWhitespaceBefore),c(t,r)&&s++,this._buf.hasContent()||(s=0)}this.newline(s)}},e.prototype._getComments=function(e,t){return t&&(e?t.leadingComments:t.trailingComments)||[]},e.prototype._printComment=function(e){var t=this;if(this.format.shouldPrintComment(e.value)&&!e.ignore&&!this._printedComments.has(e)){if(this._printedComments.add(e),null!=e.start){if(this._printedCommentStarts[e.start])return;this._printedCommentStarts[e.start]=!0}this.newline(this._whitespace?this._whitespace.getNewlinesBefore(e):0),this.endsWith("[")||this.endsWith("{")||this.space();var r="CommentLine"===e.type?"//"+e.value+"\n":"/*"+e.value+"*/";if("CommentBlock"===e.type&&this.format.indent.adjustMultilineComment){var n=e.loc&&e.loc.start.column;if(n){var i=new RegExp("\\n\\s{1,"+n+"}","g");r=r.replace(i,"\n")}var s=Math.max(this._getIndent().length,this._buf.getCurrentColumn());r=r.replace(/\n(?!$)/g,"\n"+(0,d.default)(" ",s))}this.withSource("start",e.loc,function(){t._append(r)}),this.newline((this._whitespace?this._whitespace.getNewlinesAfter(e):0)+("CommentLine"===e.type?-1:0))}},e.prototype._printComments=function(e){if(e&&e.length)for(var t=e,r=Array.isArray(t),n=0,t=r?t:(0,o.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i;this._printComment(s)}},e}();r.default=A;for(var D=[e("./generators/template-literals"),e("./generators/expressions"),e("./generators/statements"),e("./generators/classes"),e("./generators/methods"),e("./generators/modules"),e("./generators/types"),e("./generators/flow"),e("./generators/base"),e("./generators/jsx")],C=0;C=0){for(;i&&e.start===n[i-1].start;)--i;t=n[i-1],r=n[i]}return this._getNewlinesBetween(t,r)},e.prototype.getNewlinesAfter=function(e){var t=void 0,r=void 0,n=this.tokens,i=this._findToken(function(t){return t.end-e.end},0,n.length);if(i>=0){for(;i&&e.end===n[i-1].end;)--i;t=n[i],","===(r=n[i+1]).type.label&&(r=n[i+2])}return r&&"eof"===r.type.label?1:this._getNewlinesBetween(t,r)},e.prototype._getNewlinesBetween=function(e,t){if(!t||!t.loc)return 0;for(var r=e?e.loc.end.line:1,n=t.loc.start.line,i=0,s=r;s=r)return-1;var n=t+r>>>1,i=e(this.tokens[n]);return i<0?this._findToken(e,n+1,r):i>0?this._findToken(e,t,n):0===i?n:-1},e}();r.default=i,t.exports=r.default},{"babel-runtime/helpers/classCallCheck":134}],92:[function(e,t,r){arguments[4][62][0].apply(r,arguments)},{"./util":101,dup:62}],93:[function(e,t,r){arguments[4][63][0].apply(r,arguments)},{"./base64":94,dup:63}],94:[function(e,t,r){arguments[4][64][0].apply(r,arguments)},{dup:64}],95:[function(e,t,r){arguments[4][65][0].apply(r,arguments)},{dup:65}],96:[function(e,t,r){arguments[4][66][0].apply(r,arguments)},{"./util":101,dup:66}],97:[function(e,t,r){arguments[4][67][0].apply(r,arguments)},{dup:67}],98:[function(e,t,r){arguments[4][68][0].apply(r,arguments)},{"./array-set":92,"./base64-vlq":93,"./binary-search":95,"./quick-sort":97,"./util":101,dup:68}],99:[function(e,t,r){arguments[4][69][0].apply(r,arguments)},{"./array-set":92,"./base64-vlq":93,"./mapping-list":96,"./util":101,dup:69}],100:[function(e,t,r){arguments[4][70][0].apply(r,arguments)},{"./source-map-generator":99,"./util":101,dup:70}],101:[function(e,t,r){arguments[4][71][0].apply(r,arguments)},{dup:71}],102:[function(e,t,r){arguments[4][72][0].apply(r,arguments)},{"./lib/source-map-consumer":98,"./lib/source-map-generator":99,"./lib/source-node":100,dup:72}],103:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=u.objectExpression([]);return(0,s.default)(e).forEach(function(r){var n=e[r],i=u.objectExpression([]),a=u.objectProperty(n._key,i,n._computed);(0,s.default)(n).forEach(function(e){var t=n[e];if("_"!==e[0]){var r=t;(u.isClassMethod(t)||u.isClassProperty(t))&&(t=t.value);var s=u.objectProperty(u.identifier(e),t);u.inheritsComments(s,r),u.removeComments(r),i.properties.push(s)}}),t.properties.push(a)}),t}r.__esModule=!0;var s=n(e("babel-runtime/core-js/object/keys"));r.push=function(e,t,r,n,i){var s=u.toKeyAlias(t),l={};if((0,o.default)(e,s)&&(l=e[s]),e[s]=l,l._inherits=l._inherits||[],l._inherits.push(t),l._key=t.key,t.computed&&(l._computed=!0),t.decorators){var c=l.decorators=l.decorators||u.arrayExpression([]);c.elements=c.elements.concat(t.decorators.map(function(e){return e.expression}).reverse())}if(l.value||l.initializer)throw n.buildCodeFrameError(t,"Key conflict with sibling node");var p=void 0,h=void 0;(u.isObjectProperty(t)||u.isObjectMethod(t)||u.isClassMethod(t))&&(p=u.toComputedKey(t,t.key)),u.isObjectProperty(t)||u.isClassProperty(t)?h=t.value:(u.isObjectMethod(t)||u.isClassMethod(t))&&((h=u.functionExpression(null,t.params,t.body,t.generator,t.async)).returnType=t.returnType);var f=function(e){return!u.isClassMethod(e)&&!u.isObjectMethod(e)||"get"!==e.kind&&"set"!==e.kind?"value":e.kind}(t);return r&&"value"===f||(r=f),i&&u.isStringLiteral(p)&&("value"===r||"initializer"===r)&&u.isFunctionExpression(h)&&(h=(0,a.default)({id:p,node:h,scope:i})),h&&(u.inheritsComments(h,t),l[r]=h),l},r.hasComputed=function(e){for(var t in e)if(e[t]._computed)return!0;return!1},r.toComputedObjectFromClass=function(e){for(var t=u.arrayExpression([]),r=0;r1&&void 0!==arguments[1]&&arguments[1];(0,o.default)(this,e),this.forceSuperMemoisation=t.forceSuperMemoisation,this.methodPath=t.methodPath,this.methodNode=t.methodNode,this.superRef=t.superRef,this.isStatic=t.isStatic,this.hasSuper=!1,this.inClass=r,this.isLoose=t.isLoose,this.scope=this.methodPath.scope,this.file=t.file,this.opts=t,this.bareSupers=[],this.returns=[],this.thises=[]}return e.prototype.getObjectRef=function(){return this.opts.objectRef||this.opts.getObjectRef()},e.prototype.setSuperProperty=function(e,t,r){return p.callExpression(this.file.addHelper("set"),[a(this.getObjectRef(),this.isStatic),r?e:p.stringLiteral(e.name),t,p.thisExpression()])},e.prototype.getSuperProperty=function(e,t){return p.callExpression(this.file.addHelper("get"),[a(this.getObjectRef(),this.isStatic),t?e:p.stringLiteral(e.name),p.thisExpression()])},e.prototype.replace=function(){this.methodPath.traverse(f,this)},e.prototype.getLooseSuperProperty=function(e,t){var r=this.methodNode,n=this.superRef||p.identifier("Function");return t.property===e?void 0:p.isCallExpression(t,{callee:e})?void 0:p.isMemberExpression(t)&&!r.static?p.memberExpression(n,p.identifier("prototype")):n},e.prototype.looseHandle=function(e){var t=e.node;if(e.isSuper())return this.getLooseSuperProperty(t,e.parent);if(e.isCallExpression()){var r=t.callee;if(!p.isMemberExpression(r))return;if(!p.isSuper(r.object))return;return p.appendToMemberExpression(r,p.identifier("call")),t.arguments.unshift(p.thisExpression()),!0}},e.prototype.specHandleAssignmentExpression=function(e,t,r){return"="===r.operator?this.setSuperProperty(r.left.property,r.right,r.left.computed):(e=e||t.scope.generateUidIdentifier("ref"),[p.variableDeclaration("var",[p.variableDeclarator(e,r.left)]),p.expressionStatement(p.assignmentExpression("=",r.left,p.binaryExpression(r.operator[0],e,r.right)))])},e.prototype.specHandle=function(e){var t=void 0,r=void 0,n=void 0,i=e.parent,a=e.node;if(function(e,t){return!!p.isSuper(e)&&!p.isMemberExpression(t,{computed:!1})&&!p.isCallExpression(t,{callee:e})}(a,i))throw e.buildCodeFrameError(c.get("classesIllegalBareSuper"));if(p.isCallExpression(a)){var o=a.callee;if(p.isSuper(o))return;s(o)&&(t=o.property,r=o.computed,n=a.arguments)}else if(p.isMemberExpression(a)&&p.isSuper(a.object))t=a.property,r=a.computed;else{if(p.isUpdateExpression(a)&&s(a.argument)){var u=p.binaryExpression(a.operator[0],a.argument,p.numericLiteral(1));if(a.prefix)return this.specHandleAssignmentExpression(null,e,u);var l=e.scope.generateUidIdentifier("ref");return this.specHandleAssignmentExpression(l,e,u).concat(p.expressionStatement(l))}if(p.isAssignmentExpression(a)&&s(a.left))return this.specHandleAssignmentExpression(null,e,a)}if(t){var h=this.getSuperProperty(t,r);return n?this.optimiseCall(h,n):h}},e.prototype.optimiseCall=function(e,t){var r=p.thisExpression();return r[h]=!0,(0,l.default)(e,r,t)},e}();r.default=d,t.exports=r.default},{"babel-helper-optimise-call-expression":106,"babel-messages":110,"babel-runtime/core-js/symbol":129,"babel-runtime/helpers/classCallCheck":134,"babel-types":178}],108:[function(e,t,r){"use strict";r.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-template")),i={};r.default=i,i.typeof=(0,n.default)('\n (typeof Symbol === "function" && typeof Symbol.iterator === "symbol")\n ? function (obj) { return typeof obj; }\n : function (obj) {\n return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype\n ? "symbol"\n : typeof obj;\n };\n'),i.jsx=(0,n.default)('\n (function () {\n var REACT_ELEMENT_TYPE = (typeof Symbol === "function" && Symbol.for && Symbol.for("react.element")) || 0xeac7;\n\n return function createRawReactElement (type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n // If we\'re going to assign props.children, we create a new object now\n // to avoid mutating defaultProps.\n props = {};\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : \'\' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n };\n\n })()\n'),i.asyncIterator=(0,n.default)('\n (function (iterable) {\n if (typeof Symbol === "function") {\n if (Symbol.asyncIterator) {\n var method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n if (Symbol.iterator) {\n return iterable[Symbol.iterator]();\n }\n }\n throw new TypeError("Object is not async iterable");\n })\n'),i.asyncGenerator=(0,n.default)('\n (function () {\n function AwaitValue(value) {\n this.value = value;\n }\n\n function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg)\n var value = result.value;\n if (value instanceof AwaitValue) {\n Promise.resolve(value.value).then(\n function (arg) { resume("next", arg); },\n function (arg) { resume("throw", arg); });\n } else {\n settle(result.done ? "return" : "normal", result.value);\n }\n } catch (err) {\n settle("throw", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case "return":\n front.resolve({ value: value, done: true });\n break;\n case "throw":\n front.reject(value);\n break;\n default:\n front.resolve({ value: value, done: false });\n break;\n }\n\n front = front.next;\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n // Hide "return" method if generator return is not supported\n if (typeof gen.return !== "function") {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === "function" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; };\n }\n\n AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); };\n AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); };\n AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); };\n\n return {\n wrap: function (fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function (value) {\n return new AwaitValue(value);\n }\n };\n\n })()\n'),i.asyncGeneratorDelegate=(0,n.default)('\n (function (inner, awaitWrap) {\n var iter = {}, waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) { resolve(inner[key](value)); });\n return { done: false, value: awaitWrap(value) };\n };\n\n if (typeof Symbol === "function" && Symbol.iterator) {\n iter[Symbol.iterator] = function () { return this; };\n }\n\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n return pump("next", value);\n };\n\n if (typeof inner.throw === "function") {\n iter.throw = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n return pump("throw", value);\n };\n }\n\n if (typeof inner.return === "function") {\n iter.return = function (value) {\n return pump("return", value);\n };\n }\n\n return iter;\n })\n'),i.asyncToGenerator=(0,n.default)('\n (function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n step("next", value);\n }, function (err) {\n step("throw", err);\n });\n }\n }\n\n return step("next");\n });\n };\n })\n'),i.classCallCheck=(0,n.default)('\n (function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n });\n'),i.createClass=(0,n.default)('\n (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i ++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n })()\n'),i.defineEnumerableProperties=(0,n.default)('\n (function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ("value" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n return obj;\n })\n'),i.defaults=(0,n.default)("\n (function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n })\n"),i.defineProperty=(0,n.default)("\n (function (obj, key, value) {\n // Shortcircuit the slow defineProperty path when possible.\n // We are trying to avoid issues where setters defined on the\n // prototype cause side effects under the fast path of simple\n // assignment. By checking for existence of the property with\n // the in operator, we can optimize most of this overhead away.\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n });\n"),i.extends=(0,n.default)("\n Object.assign || (function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n })\n"),i.get=(0,n.default)('\n (function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n });\n'),i.inherits=(0,n.default)('\n (function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n })\n'),i.instanceof=(0,n.default)('\n (function (left, right) {\n if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n });\n'),i.interopRequireDefault=(0,n.default)("\n (function (obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n })\n"),i.interopRequireWildcard=(0,n.default)("\n (function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n })\n"),i.newArrowCheck=(0,n.default)('\n (function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError("Cannot instantiate an arrow function");\n }\n });\n'),i.objectDestructuringEmpty=(0,n.default)('\n (function (obj) {\n if (obj == null) throw new TypeError("Cannot destructure undefined");\n });\n'),i.objectWithoutProperties=(0,n.default)("\n (function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n })\n"),i.possibleConstructorReturn=(0,n.default)('\n (function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n return call && (typeof call === "object" || typeof call === "function") ? call : self;\n });\n'),i.selfGlobal=(0,n.default)('\n typeof global === "undefined" ? self : global\n'),i.set=(0,n.default)('\n (function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if ("value" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n });\n'),i.slicedToArray=(0,n.default)('\n (function () {\n // Broken out into a separate function to avoid deoptimizations due to the try/catch for the\n // array iterator case.\n function sliceIterator(arr, i) {\n // this is an expanded form of `for...of` that properly supports abrupt completions of\n // iterators etc. variable names have been minimised to reduce the size of this massive\n // helper. sometimes spec compliancy is annoying :(\n //\n // _n = _iteratorNormalCompletion\n // _d = _didIteratorError\n // _e = _iteratorError\n // _i = _iterator\n // _s = _step\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i["return"]) _i["return"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError("Invalid attempt to destructure non-iterable instance");\n }\n };\n })();\n'),i.slicedToArrayLoose=(0,n.default)('\n (function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n if (i && _arr.length === i) break;\n }\n return _arr;\n } else {\n throw new TypeError("Invalid attempt to destructure non-iterable instance");\n }\n });\n'),i.taggedTemplateLiteral=(0,n.default)("\n (function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: { value: Object.freeze(raw) }\n }));\n });\n"),i.taggedTemplateLiteralLoose=(0,n.default)("\n (function (strings, raw) {\n strings.raw = raw;\n return strings;\n });\n"),i.temporalRef=(0,n.default)('\n (function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + " is not defined - temporal dead zone");\n } else {\n return val;\n }\n })\n'),i.temporalUndefined=(0,n.default)("\n ({})\n"),i.toArray=(0,n.default)("\n (function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n });\n"),i.toConsumableArray=(0,n.default)("\n (function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n } else {\n return Array.from(arr);\n }\n });\n"),t.exports=r.default},{"babel-template":139}],109:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=a.default[e];if(!t)throw new ReferenceError("Unknown helper "+e);return t().expression}r.__esModule=!0,r.list=void 0;var s=n(e("babel-runtime/core-js/object/keys"));r.get=i;var a=n(e("./helpers"));r.list=(0,s.default)(a.default).map(function(e){return e.replace(/^_/,"")}).filter(function(e){return"__esModule"!==e});r.default=i},{"./helpers":108,"babel-runtime/core-js/object/keys":127}],110:[function(e,t,r){"use strict";function n(e){return e.map(function(e){if(null!=e&&e.inspect)return e.inspect();try{return(0,i.default)(e)||e+""}catch(t){return s.inspect(e)}})}r.__esModule=!0,r.MESSAGES=void 0;var i=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/json/stringify"));r.get=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),s=1;s4&&void 0!==arguments[4]&&arguments[4];if(t||(t=e.node),!h.isFor(r))for(var s=0;s0&&e.traverse(g,t),e.skip()}},p.visitor]),g=c.default.visitors.merge([{ReferencedIdentifier:function(e,t){var r=t.letReferences[e.node.name];if(r){var n=e.scope.getBindingIdentifier(e.node.name);n&&n!==r||(t.closurify=!0)}}},p.visitor]),b={enter:function(e,t){var r=e.node;e.parent;if(e.isForStatement()){if(a(r.init)){var n=t.pushDeclar(r.init);1===n.length?r.init=n[0]:r.init=h.sequenceExpression(n)}}else if(e.isFor())a(r.left)&&(t.pushDeclar(r.left),r.left=r.left.declarations[0].id);else if(a(r))e.replaceWithMultiple(t.pushDeclar(r).map(function(e){return h.expressionStatement(e)}));else if(e.isFunction())return e.skip()}},v={LabeledStatement:function(e,t){var r=e.node;t.innerLabels.push(r.label.name)}},x={enter:function(e,t){if(e.isAssignmentExpression()||e.isUpdateExpression()){var r=e.getBindingIdentifiers();for(var n in r)t.outsideReferences[n]===e.scope.getBindingIdentifier(n)&&(t.reassignments[n]=!0)}}},E={Loop:function(e,t){var r=t.ignoreLabeless;t.ignoreLabeless=!0,e.traverse(E,t),t.ignoreLabeless=r,e.skip()},Function:function(e){e.skip()},SwitchCase:function(e,t){var r=t.inSwitchCase;t.inSwitchCase=!0,e.traverse(E,t),t.inSwitchCase=r,e.skip()},"BreakStatement|ContinueStatement|ReturnStatement":function(e,t){var r=e.node,n=e.parent,i=e.scope;if(!r[this.LOOP_IGNORE]){var s=void 0,a=function(e){return h.isBreakStatement(e)?"break":h.isContinueStatement(e)?"continue":void 0}(r);if(a){if(r.label){if(t.innerLabels.indexOf(r.label.name)>=0)return;a=a+"|"+r.label.name}else{if(t.ignoreLabeless)return;if(t.inSwitchCase)return;if(h.isBreakStatement(r)&&h.isSwitchCase(n))return}t.hasBreakContinue=!0,t.map[a]=r,s=h.stringLiteral(a)}e.isReturnStatement()&&(t.hasReturn=!0,s=h.objectExpression([h.objectProperty(h.identifier("v"),r.argument||i.buildUndefinedNode())])),s&&((s=h.returnStatement(s))[this.LOOP_IGNORE]=!0,e.skip(),e.replaceWith(h.inherits(s,r)))}}},A=function(){function e(t,r,n,i,s){(0,l.default)(this,e),this.parent=n,this.scope=i,this.file=s,this.blockPath=r,this.block=r.node,this.outsideLetReferences=(0,u.default)(null),this.hasLetReferences=!1,this.letReferences=(0,u.default)(null),this.body=[],t&&(this.loopParent=t.parent,this.loopLabel=h.isLabeledStatement(this.loopParent)&&this.loopParent.label,this.loopPath=t,this.loop=t.node)}return e.prototype.run=function(){var e=this.block;if(!e._letDone){e._letDone=!0;var t=this.getLetReferences();if(h.isFunction(this.parent)||h.isProgram(this.block))this.updateScopeInfo();else if(this.hasLetReferences)return t?this.wrapClosure():this.remap(),this.updateScopeInfo(t),this.loopLabel&&!h.isLabeledStatement(this.loopParent)?h.labeledStatement(this.loopLabel,this.loop):void 0}},e.prototype.updateScopeInfo=function(e){var t=this.scope,r=t.getFunctionParent(),n=this.letReferences;for(var i in n){var s=n[i],a=t.getBinding(s.name);a&&("let"!==a.kind&&"const"!==a.kind||(a.kind="var",e?t.removeBinding(s.name):t.moveBindingTo(s.name,r)))}},e.prototype.remap=function(){var e=this.letReferences,t=this.scope;for(var r in e){var n=e[r];(t.parentHasBinding(r)||t.hasGlobal(r))&&(t.hasOwnBinding(r)&&t.rename(n.name),this.blockPath.scope.hasOwnBinding(r)&&this.blockPath.scope.rename(n.name))}},e.prototype.wrapClosure=function(){if(this.file.opts.throwIfClosureRequired)throw this.blockPath.buildCodeFrameError("Compiling let/const in this block would add a closure (throwIfClosureRequired).");var e=this.block,t=this.outsideLetReferences;if(this.loop)for(var r in t){var n=t[r];(this.scope.hasGlobal(n.name)||this.scope.parentHasBinding(n.name))&&(delete t[n.name],delete this.letReferences[n.name],this.scope.rename(n.name),this.letReferences[n.name]=n,t[n.name]=n)}this.has=this.checkLoop(),this.hoistVarDeclarations();var i=(0,f.default)(t),s=(0,f.default)(t),a=this.blockPath.isSwitchStatement(),o=h.functionExpression(null,i,h.blockStatement(a?[e]:e.body));o.shadow=!0,this.addContinuations(o);var u=o;this.loop&&(u=this.scope.generateUidIdentifier("loop"),this.loopPath.insertBefore(h.variableDeclaration("var",[h.variableDeclarator(u,o)])));var l=h.callExpression(u,s),p=this.scope.generateUidIdentifier("ret");c.default.hasType(o.body,this.scope,"YieldExpression",h.FUNCTION_TYPES)&&(o.generator=!0,l=h.yieldExpression(l,!0));c.default.hasType(o.body,this.scope,"AwaitExpression",h.FUNCTION_TYPES)&&(o.async=!0,l=h.awaitExpression(l)),this.buildClosure(p,l),a?this.blockPath.replaceWithMultiple(this.body):e.body=this.body},e.prototype.buildClosure=function(e,t){var r=this.has;r.hasReturn||r.hasBreakContinue?this.buildHas(e,t):this.body.push(h.expressionStatement(t))},e.prototype.addContinuations=function(e){var t={reassignments:{},outsideReferences:this.outsideLetReferences};this.scope.traverse(e,x,t);for(var r=0;r2&&void 0!==arguments[2]?arguments[2]:"value",n=arguments[3],i=void 0;e.static?(this.hasStaticDescriptors=!0,i=this.staticMutatorMap):(this.hasInstanceDescriptors=!0,i=this.instanceMutatorMap);var s=c.push(i,e,r,this.file,n);return t&&(s.enumerable=h.booleanLiteral(!0)),s},e.prototype.constructorMeMaybe=function(){for(var e=!1,t=this.path.get("body.body"),r=Array.isArray(t),n=0,t=r?t:(0,s.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}if(e=i.equals("kind","constructor"))break}if(!e){var a=void 0,o=void 0;if(this.isDerived){var u=f().expression;a=u.params,o=u.body}else a=[],o=h.blockStatement([]);this.path.get("body").unshiftContainer("body",h.classMethod("constructor",h.identifier("constructor"),a,o))}},e.prototype.buildBody=function(){if(this.constructorMeMaybe(),this.pushBody(),this.verifyConstructor(),this.userConstructor){var e=this.constructorBody;e.body=e.body.concat(this.userConstructor.body.body),h.inherits(this.constructor,this.userConstructor),h.inherits(e,this.userConstructor.body)}this.pushDescriptors()},e.prototype.pushBody=function(){for(var e=this.path.get("body.body"),t=Array.isArray(e),r=0,e=t?e:(0,s.default)(e);;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}var i=n,a=i.node;if(i.isClassProperty())throw i.buildCodeFrameError("Missing class properties transform.");if(a.decorators)throw i.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");if(h.isClassMethod(a)){var o="constructor"===a.kind;if(o&&(i.traverse(m,this),!this.hasBareSuper&&this.isDerived))throw i.buildCodeFrameError("missing super() call in constructor");var l=new u.default({forceSuperMemoisation:o,methodPath:i,methodNode:a,objectRef:this.classRef,superRef:this.superName,isStatic:a.static,isLoose:this.isLoose,scope:this.scope,file:this.file},!0);l.replace(),o?this.pushConstructor(l,a,i):this.pushMethod(a,i)}}},e.prototype.clearDescriptors=function(){this.hasInstanceDescriptors=!1,this.hasStaticDescriptors=!1,this.instanceMutatorMap={},this.staticMutatorMap={}},e.prototype.pushDescriptors=function(){this.pushInherits();var e=this.body,t=void 0,r=void 0;if(this.hasInstanceDescriptors&&(t=c.toClassObject(this.instanceMutatorMap)),this.hasStaticDescriptors&&(r=c.toClassObject(this.staticMutatorMap)),t||r){t&&(t=c.toComputedObjectFromClass(t)),r&&(r=c.toComputedObjectFromClass(r));var n=h.nullLiteral(),i=[this.classRef,n,n,n,n];t&&(i[1]=t),r&&(i[2]=r),this.instanceInitializersId&&(i[3]=this.instanceInitializersId,e.unshift(this.buildObjectAssignment(this.instanceInitializersId))),this.staticInitializersId&&(i[4]=this.staticInitializersId,e.unshift(this.buildObjectAssignment(this.staticInitializersId)));for(var s=0,a=0;a=o.length)break;c=o[l++]}else{if((l=o.next()).done)break;c=l.value}var p=c;this.wrapSuperCall(p,i,a,r),n&&p.find(function(e){return e===t||(e.isLoop()||e.isConditional()?(n=!1,!0):void 0)})}for(var f=this.superThises,d=Array.isArray(f),m=0,f=d?f:(0,s.default)(f);;){var g;if(d){if(m>=f.length)break;g=f[m++]}else{if((m=f.next()).done)break;g=m.value}g.replaceWith(a)}var b=function(t){return h.callExpression(e.file.addHelper("possibleConstructorReturn"),[a].concat(t||[]))},v=r.get("body");v.length&&!v.pop().isReturnStatement()&&r.pushContainer("body",h.returnStatement(n?a:b()));for(var x=this.superReturns,E=Array.isArray(x),A=0,x=E?x:(0,s.default)(x);;){var D;if(E){if(A>=x.length)break;D=x[A++]}else{if((A=x.next()).done)break;D=A.value}var C=D;if(C.node.argument){var S=C.scope.generateDeclaredUidIdentifier("ret");C.get("argument").replaceWithMultiple([h.assignmentExpression("=",S,C.node.argument),b(S)])}else C.get("argument").replaceWith(b())}}},e.prototype.pushMethod=function(e,t){var r=t?t.scope:this.scope;"method"===e.kind&&this._processMethod(e,r)||this.pushToMap(e,!1,null,r)},e.prototype._processMethod=function(){return!1},e.prototype.pushConstructor=function(e,t,r){this.bareSupers=e.bareSupers,this.superReturns=e.returns,r.scope.hasOwnBinding(this.classRef.name)&&r.scope.rename(this.classRef.name);var n=this.constructor;this.userConstructorPath=r,this.userConstructor=t,this.hasConstructor=!0,h.inheritsComments(n,t),n._ignoreUserWhitespace=!0,n.params=t.params,h.inherits(n.body,t.body),n.body.directives=t.body.directives,this._pushConstructor()},e.prototype._pushConstructor=function(){this.pushedConstructor||(this.pushedConstructor=!0,(this.hasInstanceDescriptors||this.hasStaticDescriptors)&&this.pushDescriptors(),this.body.push(this.constructor),this.pushInherits())},e.prototype.pushInherits=function(){this.isDerived&&!this.pushedInherits&&(this.pushedInherits=!0,this.body.unshift(h.expressionStatement(h.callExpression(this.file.addHelper("inherits"),[this.classRef,this.superName]))))},e}();r.default=g,t.exports=r.default},{"babel-helper-define-map":103,"babel-helper-optimise-call-expression":106,"babel-helper-replace-supers":107,"babel-runtime/core-js/get-iterator":120,"babel-runtime/helpers/classCallCheck":134,"babel-template":139,"babel-traverse":143,"babel-types":178}],119:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e){function t(e){var t=e.node,r=e.scope,n=[],i=t.right;if(!a.isIdentifier(i)||!r.hasBinding(i.name)){var s=r.generateUidIdentifier("arr");n.push(a.variableDeclaration("var",[a.variableDeclarator(s,i)])),i=s}var u=r.generateUidIdentifier("i"),l=o({BODY:t.body,KEY:u,ARR:i});a.inherits(l,t),a.ensureBlock(l);var c=a.memberExpression(i,u,!0),p=t.left;return a.isVariableDeclaration(p)?(p.declarations[0].init=c,l.body.body.unshift(p)):l.body.body.unshift(a.expressionStatement(a.assignmentExpression("=",p,c))),e.parentPath.isLabeledStatement()&&(l=a.labeledStatement(e.parentPath.node.label,l)),n.push(l),n}function r(e,t){var r=e.node,n=e.scope,s=e.parent,o=r.left,l=void 0,c=void 0;if(a.isIdentifier(o)||a.isPattern(o)||a.isMemberExpression(o))c=o;else{if(!a.isVariableDeclaration(o))throw t.buildCodeFrameError(o,i.get("unknownForHead",o.type));c=n.generateUidIdentifier("ref"),l=a.variableDeclaration(o.kind,[a.variableDeclarator(o.declarations[0].id,c)])}var p=n.generateUidIdentifier("iterator"),h=n.generateUidIdentifier("isArray"),f=u({LOOP_OBJECT:p,IS_ARRAY:h,OBJECT:r.right,INDEX:n.generateUidIdentifier("i"),ID:c});l||f.body.body.shift();var d=a.isLabeledStatement(s),m=void 0;return d&&(m=a.labeledStatement(s.label,f)),{replaceParent:d,declar:l,node:m||f,loop:f}}function n(e,t){var r=e.node,n=e.scope,s=e.parent,o=r.left,u=void 0,c=n.generateUidIdentifier("step"),p=a.memberExpression(c,a.identifier("value"));if(a.isIdentifier(o)||a.isPattern(o)||a.isMemberExpression(o))u=a.expressionStatement(a.assignmentExpression("=",o,p));else{if(!a.isVariableDeclaration(o))throw t.buildCodeFrameError(o,i.get("unknownForHead",o.type));u=a.variableDeclaration(o.kind,[a.variableDeclarator(o.declarations[0].id,p)])}var h=n.generateUidIdentifier("iterator"),f=l({ITERATOR_HAD_ERROR_KEY:n.generateUidIdentifier("didIteratorError"),ITERATOR_COMPLETION:n.generateUidIdentifier("iteratorNormalCompletion"),ITERATOR_ERROR_KEY:n.generateUidIdentifier("iteratorError"),ITERATOR_KEY:h,STEP_KEY:c,OBJECT:r.right,BODY:null}),d=a.isLabeledStatement(s),m=f[3].block.body,y=m[0];return d&&(m[0]=a.labeledStatement(s.label,y)),{replaceParent:d,declar:u,loop:y,node:f}}var i=e.messages,s=e.template,a=e.types,o=s("\n for (var KEY = 0; KEY < ARR.length; KEY++) BODY;\n "),u=s("\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n var ID;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n "),l=s("\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {\n }\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n ");return{visitor:{ForOfStatement:function(e,i){if(e.get("right").isArrayExpression())return e.parentPath.isLabeledStatement()?e.parentPath.replaceWithMultiple(t(e)):e.replaceWithMultiple(t(e));var s=n;i.opts.loose&&(s=r);var o=e.node,u=s(e,i),l=u.declar,c=u.loop,p=c.body;e.ensureBlock(),l&&p.body.push(l),p.body=p.body.concat(o.body.body),a.inherits(c,o),a.inherits(c.body,o.body),u.replaceParent?(e.parentPath.replaceWithMultiple(u.node),e.remove()):e.replaceWithMultiple(u.node)}}}},t.exports=r.default},{}],120:[function(e,t,r){t.exports={default:e("core-js/library/fn/get-iterator"),__esModule:!0}},{"core-js/library/fn/get-iterator":194}],121:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:!0}},{"core-js/library/fn/json/stringify":195}],122:[function(e,t,r){t.exports={default:e("core-js/library/fn/map"),__esModule:!0}},{"core-js/library/fn/map":196}],123:[function(e,t,r){t.exports={default:e("core-js/library/fn/number/max-safe-integer"),__esModule:!0}},{"core-js/library/fn/number/max-safe-integer":197}],124:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/assign"),__esModule:!0}},{"core-js/library/fn/object/assign":198}],125:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/create"),__esModule:!0}},{"core-js/library/fn/object/create":199}],126:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/get-own-property-symbols"),__esModule:!0}},{"core-js/library/fn/object/get-own-property-symbols":200}],127:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/keys"),__esModule:!0}},{"core-js/library/fn/object/keys":201}],128:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/set-prototype-of"),__esModule:!0}},{"core-js/library/fn/object/set-prototype-of":202}],129:[function(e,t,r){t.exports={default:e("core-js/library/fn/symbol"),__esModule:!0}},{"core-js/library/fn/symbol":204}],130:[function(e,t,r){t.exports={default:e("core-js/library/fn/symbol/for"),__esModule:!0}},{"core-js/library/fn/symbol/for":203}],131:[function(e,t,r){t.exports={default:e("core-js/library/fn/symbol/iterator"),__esModule:!0}},{"core-js/library/fn/symbol/iterator":205}],132:[function(e,t,r){t.exports={default:e("core-js/library/fn/weak-map"),__esModule:!0}},{"core-js/library/fn/weak-map":206}],133:[function(e,t,r){t.exports={default:e("core-js/library/fn/weak-set"),__esModule:!0}},{"core-js/library/fn/weak-set":207}],134:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},{}],135:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("../core-js/object/set-prototype-of")),s=n(e("../core-js/object/create")),a=n(e("../helpers/typeof"));r.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,a.default)(t)));e.prototype=(0,s.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(i.default?(0,i.default)(e,t):e.__proto__=t)}},{"../core-js/object/create":125,"../core-js/object/set-prototype-of":128,"../helpers/typeof":138}],136:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}},{}],137:[function(e,t,r){"use strict";r.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("../helpers/typeof"));r.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,n.default)(t))&&"function"!=typeof t?e:t}},{"../helpers/typeof":138}],138:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("../core-js/symbol/iterator")),s=n(e("../core-js/symbol")),a="function"==typeof s.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":typeof e};r.default="function"==typeof s.default&&"symbol"===a(i.default)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":void 0===e?"undefined":a(e)}},{"../core-js/symbol":129,"../core-js/symbol/iterator":131}],139:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var s=i(e("babel-runtime/core-js/symbol"));r.default=function(e,t){var r=void 0;try{throw new Error}catch(e){e.stack&&(r=e.stack.split("\n").slice(1).join("\n"))}t=(0,o.default)({allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,preserveComments:!1},t);var n=function(){var i=void 0;try{i=c.parse(e,t),i=l.default.removeProperties(i,{preserveComments:t.preserveComments}),l.default.cheap(i,function(e){e[h]=!0})}catch(e){throw e.stack=e.stack+"from\n"+r,e}return n=function(){return i},i};return function(){for(var e=arguments.length,t=Array(e),r=0;r1?r.body:r.body[0]}(n(),t)}};var a=i(e("lodash/cloneDeep")),o=i(e("lodash/assign")),u=i(e("lodash/has")),l=i(e("babel-traverse")),c=n(e("babylon")),p=n(e("babel-types")),h="_fromTemplate",f=(0,s.default)(),d={noScope:!0,enter:function(e,t){var r=e.node;if(r[f])return e.skip();p.isExpressionStatement(r)&&(r=r.expression);var n=void 0;if(p.isIdentifier(r)&&r[h])if((0,u.default)(t[0],r.name))n=t[0][r.name];else if("$"===r.name[0]){var i=+r.name.slice(1);t[i]&&(n=t[i])}null===n&&e.remove(),n&&(n[f]=!0,e.replaceInline(n))},exit:function(e){var t=e.node;t.loc||l.default.clearNode(t)}};t.exports=r.default},{"babel-runtime/core-js/symbol":129,"babel-traverse":143,"babel-types":178,babylon:186,"lodash/assign":488,"lodash/cloneDeep":492,"lodash/has":504}],140:[function(e,t,r){"use strict";function n(){r.path=a=new s.default}function i(){r.scope=o=new s.default}r.__esModule=!0,r.scope=r.path=void 0;var s=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/weak-map"));r.clear=function(){n(),i()},r.clearPath=n,r.clearScope=i;var a=r.path=new s.default,o=r.scope=new s.default},{"babel-runtime/core-js/weak-map":132}],141:[function(e,t,r){(function(n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var s=i(e("babel-runtime/core-js/get-iterator")),a=i(e("babel-runtime/helpers/classCallCheck")),o=i(e("./path")),u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types")),l="test"===n.env.NODE_ENV,c=function(){function e(t,r,n,i){(0,a.default)(this,e),this.queue=null,this.parentPath=i,this.scope=t,this.state=n,this.opts=r}return e.prototype.shouldVisit=function(e){var t=this.opts;if(t.enter||t.exit)return!0;if(t[e.type])return!0;var r=u.VISITOR_KEYS[e.type];if(!r||!r.length)return!1;for(var n=r,i=Array.isArray(n),a=0,n=i?n:(0,s.default)(n);;){var o;if(i){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}if(e[o])return!0}return!1},e.prototype.create=function(e,t,r,n){return o.default.get({parentPath:this.parentPath,parent:e,container:t,key:r,listKey:n})},e.prototype.maybeQueue=function(e,t){if(this.trap)throw new Error("Infinite cycle detected");this.queue&&(t?this.queue.push(e):this.priorityQueue.push(e))},e.prototype.visitMultiple=function(e,t,r){if(0===e.length)return!1;for(var n=[],i=0;i=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var u=o;if(u.resync(),0!==u.contexts.length&&u.contexts[u.contexts.length-1]===this||u.pushContext(this),null!==u.key&&(l&&e.length>=1e4&&(this.trap=!0),!(t.indexOf(u.node)>=0))){if(t.push(u.node),u.visit()){r=!0;break}if(this.priorityQueue.length&&(r=this.visitQueue(this.priorityQueue),this.priorityQueue=[],this.queue=e,r))break}}for(var c=e,p=Array.isArray(c),h=0,c=p?c:(0,s.default)(c);;){var f;if(p){if(h>=c.length)break;f=c[h++]}else{if((h=c.next()).done)break;f=h.value}f.popContext()}return this.queue=null,r},e.prototype.visit=function(e,t){var r=e[t];return!!r&&(Array.isArray(r)?this.visitMultiple(r,e,t):this.visitSingle(e,t))},e}();r.default=c,t.exports=r.default}).call(this,e("_process"))},{"./path":150,_process:550,"babel-runtime/core-js/get-iterator":120,"babel-runtime/helpers/classCallCheck":134,"babel-types":178}],142:[function(e,t,r){"use strict";r.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/helpers/classCallCheck"));r.default=function e(t,r){(0,n.default)(this,e),this.file=t,this.options=r},t.exports=r.default},{"babel-runtime/helpers/classCallCheck":134}],143:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t,r,n,i){if(e){if(t||(t={}),!t.noScope&&!r&&"Program"!==e.type&&"File"!==e.type)throw new Error(f.get("traverseNeedsParent",e.type));h.explode(t),s.node(e,t,r,n,i)}}function a(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}r.__esModule=!0,r.visitors=r.Hub=r.Scope=r.NodePath=void 0;var o=i(e("babel-runtime/core-js/get-iterator")),u=e("./path");Object.defineProperty(r,"NodePath",{enumerable:!0,get:function(){return i(u).default}});var l=e("./scope");Object.defineProperty(r,"Scope",{enumerable:!0,get:function(){return i(l).default}});var c=e("./hub");Object.defineProperty(r,"Hub",{enumerable:!0,get:function(){return i(c).default}}),r.default=s;var p=i(e("./context")),h=n(e("./visitors")),f=n(e("babel-messages")),d=i(e("lodash/includes")),m=n(e("babel-types")),y=n(e("./cache"));r.visitors=h,s.visitors=h,s.verify=h.verify,s.explode=h.explode,s.NodePath=e("./path"),s.Scope=e("./scope"),s.Hub=e("./hub"),s.cheap=function(e,t){return m.traverseFast(e,t)},s.node=function(e,t,r,n,i,s){var a=m.VISITOR_KEYS[e.type];if(a)for(var u=new p.default(r,t,n,i),l=a,c=Array.isArray(l),h=0,l=c?l:(0,o.default)(l);;){var f;if(c){if(h>=l.length)break;f=l[h++]}else{if((h=l.next()).done)break;f=h.value}var d=f;if((!s||!s[d])&&u.visit(e,d))return}},s.clearNode=function(e,t){m.removeProperties(e,t),y.path.delete(e)},s.removeProperties=function(e,t){return m.traverseFast(e,s.clearNode,t),e},s.hasType=function(e,t,r,n){if((0,d.default)(n,e.type))return!1;if(e.type===r)return!0;var i={has:!1,type:r};return s(e,{blacklist:n,enter:a},t,i),i.has},(s.clearCache=function(){y.clear()}).clearPath=y.clearPath,s.clearCache.clearScope=y.clearScope,s.copyCache=function(e,t){y.path.has(e)&&y.path.set(t,y.path.get(e))}},{"./cache":140,"./context":141,"./hub":142,"./path":150,"./scope":162,"./visitors":164,"babel-messages":110,"babel-runtime/core-js/get-iterator":120,"babel-types":178,"lodash/includes":507}],144:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/get-iterator"));r.findParent=function(e){for(var t=this;t=t.parentPath;)if(e(t))return t;return null},r.find=function(e){var t=this;do{if(e(t))return t}while(t=t.parentPath);return null},r.getFunctionParent=function(){return this.findParent(function(e){return e.isFunction()||e.isProgram()})},r.getStatementParent=function(){var e=this;do{if(Array.isArray(e.container))return e}while(e=e.parentPath)},r.getEarliestCommonAncestorFrom=function(e){return this.getDeepestCommonAncestorFrom(e,function(e,t,r){for(var n=void 0,a=s.VISITOR_KEYS[e.type],o=r,u=Array.isArray(o),l=0,o=u?o:(0,i.default)(o);;){var c;if(u){if(l>=o.length)break;c=o[l++]}else{if((l=o.next()).done)break;c=l.value}var p=c[t+1];n?p.listKey&&n.listKey===p.listKey&&p.keya.indexOf(p.parentKey)&&(n=p):n=p}return n})},r.getDeepestCommonAncestorFrom=function(e,t){var r=this;if(!e.length)return this;if(1===e.length)return e[0];var n=1/0,s=void 0,a=void 0,o=e.map(function(e){var t=[];do{t.unshift(e)}while((e=e.parentPath)&&e!==r);return t.length=p.length)break;d=p[f++]}else{if((f=p.next()).done)break;d=f.value}if(d[l]!==c)break e}s=l,a=c}if(a)return t?t(a,s,o):a;throw new Error("Couldn't find intersection")},r.getAncestry=function(){var e=this,t=[];do{t.push(e)}while(e=e.parentPath);return t},r.isAncestor=function(e){return e.isDescendant(this)},r.isDescendant=function(e){return!!this.findParent(function(t){return t===e})},r.inType=function(){for(var e=this;e;){for(var t=arguments,r=Array.isArray(t),n=0,t=r?t:(0,i.default)(t);;){var s;if(r){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}var a=s;if(e.node.type===a)return!0}e=e.parentPath}return!1},r.inShadow=function(e){var t=this.isFunction()?this:this.findParent(function(e){return e.isFunction()});if(t){if(t.isFunctionExpression()||t.isFunctionDeclaration()){var r=t.node.shadow;if(r&&(!e||!1!==r[e]))return t}else if(t.isArrowFunctionExpression())return t;return null}};var s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));n(e("./index"))},{"./index":150,"babel-runtime/core-js/get-iterator":120,"babel-types":178}],145:[function(e,t,r){"use strict";r.__esModule=!0,r.shareCommentsWithSiblings=function(){if("string"!=typeof this.key){var e=this.node;if(e){var t=e.trailingComments,r=e.leadingComments;if(t||r){var n=this.getSibling(this.key-1),i=this.getSibling(this.key+1);n.node||(n=i),i.node||(i=n),n.addComments("trailing",r),i.addComments("leading",t)}}}},r.addComment=function(e,t,r){this.addComments(e,[{type:r?"CommentLine":"CommentBlock",value:t}])},r.addComments=function(e,t){if(t){var r=this.node;if(r){var n=e+"Comments";r[n]?r[n]=r[n].concat(t):r[n]=t}}}},{}],146:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/get-iterator"));r.call=function(e){var t=this.opts;return this.debug(function(){return e}),!(!this.node||!this._call(t[e]))||!!this.node&&this._call(t[this.node.type]&&t[this.node.type][e])},r._call=function(e){if(!e)return!1;for(var t=e,r=Array.isArray(t),n=0,t=r?t:(0,i.default)(t);;){var s;if(r){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}var a=s;if(a){var o=this.node;if(!o)return!0;if(a.call(this.state,this,this.state))throw new Error("Unexpected return value from visitor method "+a);if(this.node!==o)return!0;if(this.shouldStop||this.shouldSkip||this.removed)return!0}}return!1},r.isBlacklisted=function(){var e=this.opts.blacklist;return e&&e.indexOf(this.node.type)>-1},r.visit=function(){return!!this.node&&!this.isBlacklisted()&&(!this.opts.shouldSkip||!this.opts.shouldSkip(this))&&(this.call("enter")||this.shouldSkip?(this.debug(function(){return"Skip..."}),this.shouldStop):(this.debug(function(){return"Recursing into..."}),s.default.node(this.node,this.opts,this.scope,this.state,this,this.skipKeys),this.call("exit"),this.shouldStop))},r.skip=function(){this.shouldSkip=!0},r.skipKey=function(e){this.skipKeys[e]=!0},r.stop=function(){this.shouldStop=!0,this.shouldSkip=!0},r.setScope=function(){if(!this.opts||!this.opts.noScope){var e=this.context&&this.context.scope;if(!e)for(var t=this.parentPath;t&&!e;){if(t.opts&&t.opts.noScope)return;e=t.scope,t=t.parentPath}this.scope=this.getScope(e),this.scope&&this.scope.init()}},r.setContext=function(e){return this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.skipKeys={},e&&(this.context=e,this.state=e.state,this.opts=e.opts),this.setScope(),this},r.resync=function(){this.removed||(this._resyncParent(),this._resyncList(),this._resyncKey())},r._resyncParent=function(){this.parentPath&&(this.parent=this.parentPath.node)},r._resyncKey=function(){if(this.container&&this.node!==this.container[this.key]){if(Array.isArray(this.container)){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:this;if(!e.removed)for(var t=this.contexts,r=Array.isArray(t),n=0,t=r?t:(0,i.default)(t);;){var s;if(r){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}s.maybeQueue(e)}},r._getQueueContexts=function(){for(var e=this,t=this.contexts;!t.length;)t=(e=e.parentPath).contexts;return t};var s=n(e("../index"))},{"../index":143,"babel-runtime/core-js/get-iterator":120}],147:[function(e,t,r){"use strict";r.__esModule=!0,r.toComputedKey=function(){var e=this.node,t=void 0;if(this.isMemberExpression())t=e.property;else{if(!this.isProperty()&&!this.isMethod())throw new ReferenceError("todo");t=e.key}return e.computed||n.isIdentifier(t)&&(t=n.stringLiteral(t.name)),t},r.ensureBlock=function(){return n.ensureBlock(this.node)},r.arrowFunctionToShadowed=function(){if(this.isArrowFunctionExpression()){this.ensureBlock();var e=this.node;e.expression=!1,e.type="FunctionExpression",e.shadow=e.shadow||!0}};var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"))},{"babel-types":178}],148:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/helpers/typeof")),s=n(e("babel-runtime/core-js/get-iterator")),a=n(e("babel-runtime/core-js/map"));r.evaluateTruthy=function(){var e=this.evaluate();if(e.confident)return!!e.value},r.evaluate=function(){function e(e){n&&(l=e,n=!1)}function r(a){var l=a.node;if(c.has(l)){var p=c.get(l);return p.resolved?p.value:void e(a)}var h={resolved:!1};c.set(l,h);var f=function(a){if(n){var l=a.node;if(a.isSequenceExpression()){var c=a.get("expressions");return r(c[c.length-1])}if(a.isStringLiteral()||a.isNumericLiteral()||a.isBooleanLiteral())return l.value;if(a.isNullLiteral())return null;if(a.isTemplateLiteral()){for(var p="",h=0,f=a.get("expressions"),d=l.quasis,m=Array.isArray(d),y=0,d=m?d:(0,s.default)(d);;){var g;if(m){if(y>=d.length)break;g=d[y++]}else{if((y=d.next()).done)break;g=y.value}if(!n)break;p+=g.value.cooked;var b=f[h++];b&&(p+=String(r(b)))}if(!n)return;return p}if(a.isConditionalExpression()){var v=r(a.get("test"));if(!n)return;return r(v?a.get("consequent"):a.get("alternate"))}if(a.isExpressionWrapper())return r(a.get("expression"));if(a.isMemberExpression()&&!a.parentPath.isCallExpression({callee:l})){var x=a.get("property"),E=a.get("object");if(E.isLiteral()&&x.isIdentifier()){var A=E.node.value,D=void 0===A?"undefined":(0,i.default)(A);if("number"===D||"string"===D)return A[x.node.name]}}if(a.isReferencedIdentifier()){var C=a.scope.getBinding(l.name);if(C&&C.constantViolations.length>0)return e(C.path);if(C&&a.node.start=F.length)break;B=F[P++]}else{if((P=F.next()).done)break;B=P.value}var O=B;if(!(O=O.evaluate()).confident)return e(O);k.push(O.value)}return k}if(a.isObjectExpression()){for(var j={},N=a.get("properties"),I=Array.isArray(N),L=0,N=I?N:(0,s.default)(N);;){var M;if(I){if(L>=N.length)break;M=N[L++]}else{if((L=N.next()).done)break;M=L.value}var R=M;if(R.isObjectMethod()||R.isSpreadProperty())return e(R);var V=R.get("key"),U=V;if(R.node.computed){if(!(U=U.evaluate()).confident)return e(V);U=U.value}else U=U.isIdentifier()?U.node.name:U.node.value;var q=R.get("value"),G=q.evaluate();if(!G.confident)return e(q);G=G.value,j[U]=G}return j}if(a.isLogicalExpression()){var X=n,W=r(a.get("left")),J=n;n=X;var K=r(a.get("right")),z=n;switch(n=J&&z,l.operator){case"||":if(W&&J)return n=!0,W;if(!n)return;return W||K;case"&&":if((!W&&J||!K&&z)&&(n=!0),!n)return;return W&&K}}if(a.isBinaryExpression()){var Y=r(a.get("left"));if(!n)return;var H=r(a.get("right"));if(!n)return;switch(l.operator){case"-":return Y-H;case"+":return Y+H;case"/":return Y/H;case"*":return Y*H;case"%":return Y%H;case"**":return Math.pow(Y,H);case"<":return Y":return Y>H;case"<=":return Y<=H;case">=":return Y>=H;case"==":return Y==H;case"!=":return Y!=H;case"===":return Y===H;case"!==":return Y!==H;case"|":return Y|H;case"&":return Y&H;case"^":return Y^H;case"<<":return Y<>":return Y>>H;case">>>":return Y>>>H}}if(a.isCallExpression()){var $=a.get("callee"),Q=void 0,Z=void 0;if($.isIdentifier()&&!a.scope.getBinding($.node.name,!0)&&o.indexOf($.node.name)>=0&&(Z=t[l.callee.name]),$.isMemberExpression()){var ee=$.get("object"),te=$.get("property");if(ee.isIdentifier()&&te.isIdentifier()&&o.indexOf(ee.node.name)>=0&&u.indexOf(te.node.name)<0&&(Q=t[ee.node.name],Z=Q[te.node.name]),ee.isLiteral()&&te.isIdentifier()){var re=(0,i.default)(ee.node.value);"string"!==re&&"number"!==re||(Q=ee.node.value,Z=Q[te.node.name])}}if(Z){var ne=a.get("arguments").map(r);if(!n)return;return Z.apply(Q,ne)}}e(a)}}(a);return n&&(h.resolved=!0,h.value=f),f}var n=!0,l=void 0,c=new a.default,p=r(this);return n||(p=void 0),{confident:n,deopt:l,value:p}};var o=["String","Number","Math"],u=["random"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/map":122,"babel-runtime/helpers/typeof":138}],149:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/object/create")),s=n(e("babel-runtime/core-js/get-iterator"));r.getStatementParent=function(){var e=this;do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement())break;e=e.parentPath}while(e);if(e&&(e.isProgram()||e.isFile()))throw new Error("File/Program node, we can't possibly find a statement parent to this");return e},r.getOpposite=function(){return"left"===this.key?this.getSibling("right"):"right"===this.key?this.getSibling("left"):void 0},r.getCompletionRecords=function(){var e=[],t=function(t){t&&(e=e.concat(t.getCompletionRecords()))};if(this.isIfStatement())t(this.get("consequent")),t(this.get("alternate"));else if(this.isDoExpression()||this.isFor()||this.isWhile())t(this.get("body"));else if(this.isProgram()||this.isBlockStatement())t(this.get("body").pop());else{if(this.isFunction())return this.get("body").getCompletionRecords();this.isTryStatement()?(t(this.get("block")),t(this.get("handler")),t(this.get("finalizer"))):e.push(this)}return e},r.getSibling=function(e){return a.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:e})},r.getPrevSibling=function(){return this.getSibling(this.key-1)},r.getNextSibling=function(){return this.getSibling(this.key+1)},r.getAllNextSiblings=function(){for(var e=this.key,t=this.getSibling(++e),r=[];t.node;)r.push(t),t=this.getSibling(++e);return r},r.getAllPrevSiblings=function(){for(var e=this.key,t=this.getSibling(--e),r=[];t.node;)r.push(t),t=this.getSibling(--e);return r},r.get=function(e,t){!0===t&&(t=this.context);var r=e.split(".");return 1===r.length?this._getKey(e,t):this._getPattern(r,t)},r._getKey=function(e,t){var r=this,n=this.node,i=n[e];return Array.isArray(i)?i.map(function(s,o){return a.default.get({listKey:e,parentPath:r,parent:n,container:i,key:o}).setContext(t)}):a.default.get({parentPath:this,parent:n,container:n,key:e}).setContext(t)},r._getPattern=function(e,t){for(var r=this,n=e,i=Array.isArray(n),a=0,n=i?n:(0,s.default)(n);;){var o;if(i){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var u=o;r="."===u?r.parentPath:Array.isArray(r)?r[u]:r.get(u,t)}return r},r.getBindingIdentifiers=function(e){return o.getBindingIdentifiers(this.node,e)},r.getOuterBindingIdentifiers=function(e){return o.getOuterBindingIdentifiers(this.node,e)},r.getBindingIdentifierPaths=function(){for(var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=[].concat(this),n=(0,i.default)(null);r.length;){var s=r.shift();if(s&&s.node){var a=o.getBindingIdentifiers.keys[s.node.type];if(s.isIdentifier())e?(n[s.node.name]=n[s.node.name]||[]).push(s):n[s.node.name]=s;else if(s.isExportDeclaration()){var u=s.get("declaration");u.isDeclaration()&&r.push(u)}else{if(t){if(s.isFunctionDeclaration()){r.push(s.get("id"));continue}if(s.isFunctionExpression())continue}if(a)for(var l=0;l1&&void 0!==arguments[1]?arguments[1]:SyntaxError;return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,c.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){f.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var r=t.key;t.inList&&(r=t.listKey+"["+r+"]"),e.unshift(r)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){m.enabled&&m(this.getPathLocation()+" "+this.type+": "+e())},e}();r.default=y,(0,p.default)(y.prototype,e("./ancestry")),(0,p.default)(y.prototype,e("./inference")),(0,p.default)(y.prototype,e("./replacement")),(0,p.default)(y.prototype,e("./evaluation")),(0,p.default)(y.prototype,e("./conversion")),(0,p.default)(y.prototype,e("./introspection")),(0,p.default)(y.prototype,e("./context")),(0,p.default)(y.prototype,e("./removal")),(0,p.default)(y.prototype,e("./modification")),(0,p.default)(y.prototype,e("./family")),(0,p.default)(y.prototype,e("./comments"));for(var g=function(){if(v){if(x>=b.length)return"break";E=b[x++]}else{if((x=b.next()).done)return"break";E=x.value}var e=E,t="is"+e;y.prototype[t]=function(e){return f[t](this.node,e)},y.prototype["assert"+e]=function(r){if(!this[t](r))throw new TypeError("Expected node path of type "+e)}},b=f.TYPES,v=Array.isArray(b),x=0,b=v?b:(0,s.default)(b);;){var E;if("break"===g())break}var A=function(e){if("_"===e[0])return"continue";f.TYPES.indexOf(e)<0&&f.TYPES.push(e);var t=o[e];y.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var D in o){A(D)}t.exports=r.default},{"../cache":140,"../index":143,"../scope":162,"./ancestry":144,"./comments":145,"./context":146,"./conversion":147,"./evaluation":148,"./family":149,"./inference":151,"./introspection":154,"./lib/virtual-types":157,"./modification":158,"./removal":159,"./replacement":160,"babel-runtime/core-js/get-iterator":120,"babel-runtime/helpers/classCallCheck":134,"babel-types":178,debug:165,invariant:318,"lodash/assign":488}],151:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e,t,r){if("string"===e)return o.isStringTypeAnnotation(t);if("number"===e)return o.isNumberTypeAnnotation(t);if("boolean"===e)return o.isBooleanTypeAnnotation(t);if("any"===e)return o.isAnyTypeAnnotation(t);if("mixed"===e)return o.isMixedTypeAnnotation(t);if("empty"===e)return o.isEmptyTypeAnnotation(t);if("void"===e)return o.isVoidTypeAnnotation(t);if(r)return!1;throw new Error("Unknown base type "+e)}r.__esModule=!0;var s=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/get-iterator"));r.getTypeAnnotation=function(){if(this.typeAnnotation)return this.typeAnnotation;var e=this._getTypeAnnotation()||o.anyTypeAnnotation();return o.isTypeAnnotation(e)&&(e=e.typeAnnotation),this.typeAnnotation=e},r._getTypeAnnotation=function(){var e=this.node;if(e){if(e.typeAnnotation)return e.typeAnnotation;var t=a[e.type];return t?t.call(this,e):(t=a[this.parentPath.type])&&t.validParent?this.parentPath.getTypeAnnotation():void 0}if("init"===this.key&&this.parentPath.isVariableDeclarator()){var r=this.parentPath.parentPath,n=r.parentPath;return"left"===r.key&&n.isForInStatement()?o.stringTypeAnnotation():"left"===r.key&&n.isForOfStatement()?o.anyTypeAnnotation():o.voidTypeAnnotation()}},r.isBaseType=function(e,t){return i(e,this.getTypeAnnotation(),t)},r.couldBeBaseType=function(e){var t=this.getTypeAnnotation();if(o.isAnyTypeAnnotation(t))return!0;if(o.isUnionTypeAnnotation(t)){for(var r=t.types,n=Array.isArray(r),a=0,r=n?r:(0,s.default)(r);;){var u;if(n){if(a>=r.length)break;u=r[a++]}else{if((a=r.next()).done)break;u=a.value}var l=u;if(o.isAnyTypeAnnotation(l)||i(e,l,!0))return!0}return!1}return i(e,t,!0)},r.baseTypeStrictlyMatches=function(e){var t=this.getTypeAnnotation();if(e=e.getTypeAnnotation(),!o.isAnyTypeAnnotation(t)&&o.isFlowBaseAnnotation(t))return e.type===t.type},r.isGenericType=function(e){var t=this.getTypeAnnotation();return o.isGenericTypeAnnotation(t)&&o.isIdentifier(t.id,{name:e})};var a=n(e("./inferers")),o=n(e("babel-types"))},{"./inferers":153,"babel-runtime/core-js/get-iterator":120,"babel-types":178}],152:[function(e,t,r){"use strict";function n(e,t,r){var n=e.constantViolations.slice();return n.unshift(e.path),n.filter(function(e){var n=(e=e.resolve())._guessExecutionStatusRelativeTo(t);return r&&"function"===n&&r.push(e),"before"===n})}function i(e,t){var r=t.node.operator,n=t.get("right").resolve(),i=t.get("left").resolve(),s=void 0;if(i.isIdentifier({name:e})?s=n:n.isIdentifier({name:e})&&(s=i),s)return"==="===r?s.getTypeAnnotation():o.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(r)>=0?o.numberTypeAnnotation():void 0;if("==="===r){var a=void 0,u=void 0;if(i.isUnaryExpression({operator:"typeof"})?(a=i,u=n):n.isUnaryExpression({operator:"typeof"})&&(a=n,u=i),(u||a)&&(u=u.resolve()).isLiteral()){if("string"==typeof u.node.value&&a.get("argument").isIdentifier({name:e}))return o.createTypeAnnotationBasedOnTypeof(u.node.value)}}}function s(e,t){var r=function(e){for(var t=void 0;t=e.parentPath;){if(t.isIfStatement()||t.isConditionalExpression())return"test"===e.key?void 0:t;e=t}}(e);if(r){var n=[r.get("test")],a=[];do{var u=n.shift().resolve();if(u.isLogicalExpression()&&(n.push(u.get("left")),n.push(u.get("right"))),u.isBinaryExpression()){var l=i(t,u);l&&a.push(l)}}while(n.length);return a.length?{typeAnnotation:o.createUnionTypeAnnotation(a),ifStatement:r}:s(r,t)}}r.__esModule=!0;var a=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/get-iterator"));r.default=function(e){if(this.isReferenced()){var t=this.scope.getBinding(e.name);return t?t.identifier.typeAnnotation?t.identifier.typeAnnotation:function(e,t){var r=e.scope.getBinding(t),i=[];e.typeAnnotation=o.unionTypeAnnotation(i);var u=[],l=n(r,e,u),c=s(e,t);if(c){var p=n(r,c.ifStatement);l=l.filter(function(e){return p.indexOf(e)<0}),i.push(c.typeAnnotation)}if(l.length)for(var h=l=l.concat(u),f=Array.isArray(h),d=0,h=f?h:(0,a.default)(h);;){var m;if(f){if(d>=h.length)break;m=h[d++]}else{if((d=h.next()).done)break;m=d.value}var y=m;i.push(y.getTypeAnnotation())}if(i.length)return o.createUnionTypeAnnotation(i)}(this,e.name):"undefined"===e.name?o.voidTypeAnnotation():"NaN"===e.name||"Infinity"===e.name?o.numberTypeAnnotation():void e.name}};var o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));t.exports=r.default},{"babel-runtime/core-js/get-iterator":120,"babel-types":178}],153:[function(e,t,r){"use strict";function n(e){return e.typeAnnotation}function i(){return l.genericTypeAnnotation(l.identifier("Array"))}function s(){return i()}function a(){return l.genericTypeAnnotation(l.identifier("Function"))}function o(e){if((e=e.resolve()).isFunction()){if(e.is("async"))return e.is("generator")?l.genericTypeAnnotation(l.identifier("AsyncIterator")):l.genericTypeAnnotation(l.identifier("Promise"));if(e.node.returnType)return e.node.returnType}}r.__esModule=!0,r.ClassDeclaration=r.ClassExpression=r.FunctionDeclaration=r.ArrowFunctionExpression=r.FunctionExpression=r.Identifier=void 0;var u=e("./inferer-reference");Object.defineProperty(r,"Identifier",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(u).default}}),r.VariableDeclarator=function(){return this.get("id").isIdentifier()?this.get("init").getTypeAnnotation():void 0},r.TypeCastExpression=n,r.NewExpression=function(e){if(this.get("callee").isIdentifier())return l.genericTypeAnnotation(e.callee)},r.TemplateLiteral=function(){return l.stringTypeAnnotation()},r.UnaryExpression=function(e){var t=e.operator;return"void"===t?l.voidTypeAnnotation():l.NUMBER_UNARY_OPERATORS.indexOf(t)>=0?l.numberTypeAnnotation():l.STRING_UNARY_OPERATORS.indexOf(t)>=0?l.stringTypeAnnotation():l.BOOLEAN_UNARY_OPERATORS.indexOf(t)>=0?l.booleanTypeAnnotation():void 0},r.BinaryExpression=function(e){var t=e.operator;if(l.NUMBER_BINARY_OPERATORS.indexOf(t)>=0)return l.numberTypeAnnotation();if(l.BOOLEAN_BINARY_OPERATORS.indexOf(t)>=0)return l.booleanTypeAnnotation();if("+"===t){var r=this.get("right"),n=this.get("left");return n.isBaseType("number")&&r.isBaseType("number")?l.numberTypeAnnotation():n.isBaseType("string")||r.isBaseType("string")?l.stringTypeAnnotation():l.unionTypeAnnotation([l.stringTypeAnnotation(),l.numberTypeAnnotation()])}},r.LogicalExpression=function(){return l.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(),this.get("right").getTypeAnnotation()])},r.ConditionalExpression=function(){return l.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(),this.get("alternate").getTypeAnnotation()])},r.SequenceExpression=function(){return this.get("expressions").pop().getTypeAnnotation()},r.AssignmentExpression=function(){return this.get("right").getTypeAnnotation()},r.UpdateExpression=function(e){var t=e.operator;if("++"===t||"--"===t)return l.numberTypeAnnotation()},r.StringLiteral=function(){return l.stringTypeAnnotation()},r.NumericLiteral=function(){return l.numberTypeAnnotation()},r.BooleanLiteral=function(){return l.booleanTypeAnnotation()},r.NullLiteral=function(){return l.nullLiteralTypeAnnotation()},r.RegExpLiteral=function(){return l.genericTypeAnnotation(l.identifier("RegExp"))},r.ObjectExpression=function(){return l.genericTypeAnnotation(l.identifier("Object"))},r.ArrayExpression=i,r.RestElement=s,r.CallExpression=function(){return o(this.get("callee"))},r.TaggedTemplateExpression=function(){return o(this.get("tag"))};var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));n.validParent=!0,s.validParent=!0,r.FunctionExpression=a,r.ArrowFunctionExpression=a,r.FunctionDeclaration=a,r.ClassExpression=a,r.ClassDeclaration=a},{"./inferer-reference":152,"babel-types":178}],154:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}r.__esModule=!0,r.is=void 0;var s=n(e("babel-runtime/core-js/get-iterator"));r.matchesPattern=function(e,t){function r(e){var t=n[s];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var n=e.split("."),i=[this.node],s=0;i.length;){var a=i.shift();if(t&&s===n.length)return!0;if(o.isIdentifier(a)){if(!r(a.name))return!1}else if(o.isLiteral(a)){if(!r(a.value))return!1}else{if(o.isMemberExpression(a)){if(a.computed&&!o.isLiteral(a.property))return!1;i.unshift(a.property),i.unshift(a.object);continue}if(!o.isThisExpression(a))return!1;if(!r("this"))return!1}if(++s>n.length)return!1}return s===n.length},r.has=i,r.isStatic=function(){return this.scope.isStatic(this.node)},r.isnt=function(e){return!this.has(e)},r.equals=function(e,t){return this.node[e]===t},r.isNodeType=function(e){return o.isType(this.type,e)},r.canHaveVariableDeclarationOrExpression=function(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()},r.canSwapBetweenExpressionAndStatement=function(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?o.isBlockStatement(e):!!this.isBlockStatement()&&o.isExpression(e))},r.isCompletionRecord=function(e){var t=this,r=!0;do{var n=t.container;if(t.isFunction()&&!r)return!!e;if(r=!1,Array.isArray(n)&&t.key!==n.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0},r.isStatementOrBlock=function(){return!this.parentPath.isLabeledStatement()&&!o.isBlockStatement(this.container)&&(0,a.default)(o.STATEMENT_OR_BLOCK_KEYS,this.key)},r.referencesImport=function(e,t){if(!this.isReferencedIdentifier())return!1;var r=this.scope.getBinding(this.node.name);if(!r||"module"!==r.kind)return!1;var n=r.path,i=n.parentPath;return!(!i.isImportDeclaration()||i.node.source.value!==e||t&&(!n.isImportDefaultSpecifier()||"default"!==t)&&(!n.isImportNamespaceSpecifier()||"*"!==t)&&(!n.isImportSpecifier()||n.node.imported.name!==t))},r.getSource=function(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""},r.willIMaybeExecuteBefore=function(e){return"after"!==this._guessExecutionStatusRelativeTo(e)},r._guessExecutionStatusRelativeTo=function(e){var t=e.scope.getFunctionParent(),r=this.scope.getFunctionParent();if(t.node!==r.node){var n=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(n)return n;e=t.path}var i=e.getAncestry();if(i.indexOf(this)>=0)return"after";var s=this.getAncestry(),a=void 0,u=void 0,l=void 0;for(l=0;l=0){a=c;break}}if(!a)return"before";var p=i[u-1],h=s[l-1];return p&&h?p.listKey&&p.container===h.container?p.key>h.key?"before":"after":o.VISITOR_KEYS[p.type].indexOf(p.key)>o.VISITOR_KEYS[h.type].indexOf(h.key)?"before":"after":"before"},r._guessExecutionStatusRelativeToDifferentFunctions=function(e){var t=e.path;if(t.isFunctionDeclaration()){var r=t.scope.getBinding(t.node.id.name);if(!r.references)return"before";for(var n=r.referencePaths,i=n,a=Array.isArray(i),o=0,i=a?i:(0,s.default)(i);;){var u;if(a){if(o>=i.length)break;u=i[o++]}else{if((o=i.next()).done)break;u=o.value}var l=u;if("callee"!==l.key||!l.parentPath.isCallExpression())return}for(var c=void 0,p=n,h=Array.isArray(p),f=0,p=h?p:(0,s.default)(p);;){var d;if(h){if(f>=p.length)break;d=p[f++]}else{if((f=p.next()).done)break;d=f.value}var m=d;if(!m.find(function(e){return e.node===t.node})){var y=this._guessExecutionStatusRelativeTo(m);if(c){if(c!==y)return}else c=y}}return c}},r.resolve=function(e,t){return this._resolve(e,t)||this},r._resolve=function(e,t){if(!(t&&t.indexOf(this)>=0))if((t=t||[]).push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var r=this.scope.getBinding(this.node.name);if(!r)return;if(!r.constant)return;if("module"===r.kind)return;if(r.path!==this){var n=r.path.resolve(e,t);if(this.find(function(e){return e.node===n.node}))return;return n}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var i=this.toComputedKey();if(!o.isLiteral(i))return;var a=i.value,u=this.get("object").resolve(e,t);if(u.isObjectExpression())for(var l=u.get("properties"),c=Array.isArray(l),p=0,l=c?l:(0,s.default)(l);;){var h;if(c){if(p>=l.length)break;h=l[p++]}else{if((p=l.next()).done)break;h=p.value}var f=h;if(f.isProperty()){var d=f.get("key"),m=f.isnt("computed")&&d.isIdentifier({name:a});if(m=m||d.isLiteral({value:a}))return f.get("value").resolve(e,t)}}else if(u.isArrayExpression()&&!isNaN(+a)){var y=u.get("elements")[a];if(y)return y.resolve(e,t)}}}};var a=n(e("lodash/includes")),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"));r.is=i},{"babel-runtime/core-js/get-iterator":120,"babel-types":178,"lodash/includes":507}],155:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/get-iterator")),s=n(e("babel-runtime/helpers/classCallCheck")),a=e("babel-types"),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(a),u={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!a.react.isCompatTag(e.node.name)||e.parentPath.isJSXMemberExpression()){if("this"===e.node.name){var r=e.scope;do{if(r.path.isFunction()&&!r.path.isArrowFunctionExpression())break}while(r=r.parent);r&&t.breakOnScopePaths.push(r.path)}var n=e.scope.getBinding(e.node.name);n&&n===t.scope.getBinding(e.node.name)&&(t.bindings[e.node.name]=n)}}},l=function(){function e(t,r){(0,s.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=r,this.path=t,this.attachAfter=!1}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var r=this.bindings[t];if(!e.bindingIdentifierEquals(t,r.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this._getAttachmentPath();if(e){var t=e.scope;if(t.path===e&&(t=e.scope.parent),t.path.isProgram()||t.path.isFunction())for(var r in this.bindings)if(t.hasOwnBinding(r)){var n=this.bindings[r];if("param"!==n.kind&&this.getAttachmentParentForPath(n.path).key>e.key){this.attachAfter=!0,e=n.path;for(var s=n.constantViolations,a=Array.isArray(s),o=0,s=a?s:(0,i.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if((o=s.next()).done)break;u=o.value}var l=u;this.getAttachmentParentForPath(l).key>e.key&&(e=l)}}}return e.parentPath.isExportDeclaration()&&(e=e.parentPath),e}},e.prototype._getAttachmentPath=function(){var e=this.scopes.pop();if(e){if(e.path.isFunction()){if(this.hasOwnParamBindings(e)){if(this.scope===e)return;return e.path.get("body").get("body")[0]}return this.getNextScopeAttachmentParent()}return e.path.isProgram()?this.getNextScopeAttachmentParent():void 0}},e.prototype.getNextScopeAttachmentParent=function(){var e=this.scopes.pop();if(e)return this.getAttachmentParentForPath(e.path)},e.prototype.getAttachmentParentForPath=function(e){do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement()||e.isVariableDeclarator()&&null!==e.parentPath.node&&e.parentPath.node.declarations.length>1)return e}while(e=e.parentPath)},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var r=this.bindings[t];if("param"===r.kind&&r.constant)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(u,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var r=t.scope.generateUidIdentifier("ref"),n=o.variableDeclarator(r,this.path.node);t[this.attachAfter?"insertAfter":"insertBefore"]([t.isVariableDeclarator()?n:o.variableDeclaration("var",[n])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(r=o.JSXExpressionContainer(r)),this.path.replaceWith(r)}}},e}();r.default=l,t.exports=r.default},{"babel-runtime/core-js/get-iterator":120,"babel-runtime/helpers/classCallCheck":134,"babel-types":178}],156:[function(e,t,r){"use strict";r.__esModule=!0;r.hooks=[function(e,t){if("test"===e.key&&(t.isWhile()||t.isSwitchCase())||"declaration"===e.key&&t.isExportDeclaration()||"body"===e.key&&t.isLabeledStatement()||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0},function(e,t){if(t.isIfStatement()&&("consequent"===e.key||"alternate"===e.key)||"body"===e.key&&(t.isLoop()||t.isArrowFunctionExpression()))return e.replaceWith({type:"BlockStatement",body:[]}),!0}]},{}],157:[function(e,t,r){"use strict";r.__esModule=!0,r.Flow=r.Pure=r.Generated=r.User=r.Var=r.BlockScoped=r.Referenced=r.Scope=r.Expression=r.Statement=r.BindingIdentifier=r.ReferencedMemberExpression=r.ReferencedIdentifier=void 0;var n=e("babel-types"),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(n);r.ReferencedIdentifier={types:["Identifier","JSXIdentifier"],checkPath:function(e,t){var r=e.node,s=e.parent;if(!i.isIdentifier(r,t)&&!i.isJSXMemberExpression(s,t)){if(!i.isJSXIdentifier(r,t))return!1;if(n.react.isCompatTag(r.name))return!1}return i.isReferenced(r,s)}},r.ReferencedMemberExpression={types:["MemberExpression"],checkPath:function(e){var t=e.node,r=e.parent;return i.isMemberExpression(t)&&i.isReferenced(t,r)}},r.BindingIdentifier={types:["Identifier"],checkPath:function(e){var t=e.node,r=e.parent;return i.isIdentifier(t)&&i.isBinding(t,r)}},r.Statement={types:["Statement"],checkPath:function(e){var t=e.node,r=e.parent;if(i.isStatement(t)){if(i.isVariableDeclaration(t)){if(i.isForXStatement(r,{left:t}))return!1;if(i.isForStatement(r,{init:t}))return!1}return!0}return!1}},r.Expression={types:["Expression"],checkPath:function(e){return e.isIdentifier()?e.isReferencedIdentifier():i.isExpression(e.node)}},r.Scope={types:["Scopable"],checkPath:function(e){return i.isScope(e.node,e.parent)}},r.Referenced={checkPath:function(e){return i.isReferenced(e.node,e.parent)}},r.BlockScoped={checkPath:function(e){return i.isBlockScoped(e.node)}},r.Var={types:["VariableDeclaration"],checkPath:function(e){return i.isVar(e.node)}},r.User={checkPath:function(e){return e.node&&!!e.node.loc}},r.Generated={checkPath:function(e){return!e.isUser()}},r.Pure={checkPath:function(e,t){return e.scope.isPure(e.node,t)}},r.Flow={types:["Flow","ImportDeclaration","ExportDeclaration","ImportSpecifier"],checkPath:function(e){var t=e.node;return!!i.isFlow(t)||(i.isImportDeclaration(t)?"type"===t.importKind||"typeof"===t.importKind:i.isExportDeclaration(t)?"type"===t.exportKind:!!i.isImportSpecifier(t)&&("type"===t.importKind||"typeof"===t.importKind))}}},{"babel-types":178}],158:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/helpers/typeof")),s=n(e("babel-runtime/core-js/get-iterator"));r.insertBefore=function(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertBefore(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key)this.node&&e.push(this.node),this.replaceExpressionWithStatements(e);else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertBefore(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.push(this.node),this._replaceWith(l.blockStatement(e))}return[this]},r._containerInsert=function(e,t){this.updateSiblingKeys(e,t.length);for(var r=[],n=0;n=c.length)break;f=c[h++]}else{if((h=c.next()).done)break;f=h.value}var d=f;d.setScope(),d.debug(function(){return"Inserted."});for(var m=l,y=Array.isArray(m),g=0,m=y?m:(0,s.default)(m);;){var b;if(y){if(g>=m.length)break;b=m[g++]}else{if((g=m.next()).done)break;b=g.value}b.maybeQueue(d,!0)}}return r},r._containerInsertBefore=function(e){return this._containerInsert(this.key,e)},r._containerInsertAfter=function(e){return this._containerInsert(this.key+1,e)},r._maybePopFromStatements=function(e){var t=e[e.length-1];(l.isIdentifier(t)||l.isExpressionStatement(t)&&l.isIdentifier(t.expression))&&!this.isCompletionRecord()&&e.pop()},r.insertAfter=function(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertAfter(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key){if(this.node){var t=this.scope.generateDeclaredUidIdentifier();e.unshift(l.expressionStatement(l.assignmentExpression("=",t,this.node))),e.push(l.expressionStatement(t))}this.replaceExpressionWithStatements(e)}else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertAfter(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.unshift(this.node),this._replaceWith(l.blockStatement(e))}return[this]},r.updateSiblingKeys=function(e,t){if(this.parent)for(var r=a.path.get(this.parent),n=0;n=e&&(i.key+=t)}},r._verifyNodeList=function(e){if(!e)return[];e.constructor!==Array&&(e=[e]);for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:this.scope;return new o.default(this,e).run()};var a=e("../cache"),o=n(e("./lib/hoister")),u=n(e("./index")),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"))},{"../cache":140,"./index":150,"./lib/hoister":155,"babel-runtime/core-js/get-iterator":120,"babel-runtime/helpers/typeof":138,"babel-types":178}],159:[function(e,t,r){"use strict";r.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/get-iterator"));r.remove=function(){this._assertUnremoved(),this.resync(),this._callRemovalHooks()?this._markRemoved():(this.shareCommentsWithSiblings(),this._remove(),this._markRemoved())},r._callRemovalHooks=function(){for(var e=i.hooks,t=Array.isArray(e),r=0,e=t?e:(0,n.default)(e);;){var s;if(t){if(r>=e.length)break;s=e[r++]}else{if((r=e.next()).done)break;s=r.value}if(s(this,this.parentPath))return!0}},r._remove=function(){Array.isArray(this.container)?(this.container.splice(this.key,1),this.updateSiblingKeys(this.key,-1)):this._replaceWith(null)},r._markRemoved=function(){this.shouldSkip=!0,this.removed=!0,this.node=null},r._assertUnremoved=function(){if(this.removed)throw this.buildCodeFrameError("NodePath has been removed so is read-only.")};var i=e("./lib/removal-hooks")},{"./lib/removal-hooks":156,"babel-runtime/core-js/get-iterator":120}],160:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/core-js/get-iterator"));r.replaceWithMultiple=function(e){this.resync(),e=this._verifyNodeList(e),l.inheritLeadingComments(e[0],this.node),l.inheritTrailingComments(e[e.length-1],this.node),this.node=this.container[this.key]=null,this.insertAfter(e),this.node?this.requeue():this.remove()},r.replaceWithSourceString=function(e){this.resync();try{e="("+e+")",e=(0,u.parse)(e)}catch(r){var t=r.loc;throw t&&(r.message+=" - make sure this is an expression.",r.message+="\n"+(0,s.default)(e,t.line,t.column+1)),r}return e=e.program.body[0].expression,a.default.removeProperties(e),this.replaceWith(e)},r.replaceWith=function(e){if(this.resync(),this.removed)throw new Error("You can't replace this node, we've already removed it");if(e instanceof o.default&&(e=e.node),!e)throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");if(this.node!==e){if(this.isProgram()&&!l.isProgram(e))throw new Error("You can only replace a Program root node with another Program node");if(Array.isArray(e))throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");if("string"==typeof e)throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");if(this.isNodeType("Statement")&&l.isExpression(e)&&(this.canHaveVariableDeclarationOrExpression()||this.canSwapBetweenExpressionAndStatement(e)||this.parentPath.isExportDefaultDeclaration()||(e=l.expressionStatement(e))),this.isNodeType("Expression")&&l.isStatement(e)&&!this.canHaveVariableDeclarationOrExpression()&&!this.canSwapBetweenExpressionAndStatement(e))return this.replaceExpressionWithStatements([e]);var t=this.node;t&&(l.inheritsComments(e,t),l.removeComments(t)),this._replaceWith(e),this.type=e.type,this.setScope(),this.requeue()}},r._replaceWith=function(e){if(!this.container)throw new ReferenceError("Container is falsy");this.inList?l.validate(this.parent,this.key,[e]):l.validate(this.parent,this.key,e),this.debug(function(){return"Replace with "+(e&&e.type)}),this.node=this.container[this.key]=e},r.replaceExpressionWithStatements=function(e){this.resync();var t=l.toSequenceExpression(e,this.scope);if(l.isSequenceExpression(t)){var r=t.expressions;r.length>=2&&this.parentPath.isExpressionStatement()&&this._maybePopFromStatements(r),1===r.length?this.replaceWith(r[0]):this.replaceWith(t)}else{if(!t){var n=l.functionExpression(null,[],l.blockStatement(e));n.shadow=!0,this.replaceWith(l.callExpression(n,[])),this.traverse(c);for(var s=this.get("callee").getCompletionRecords(),a=Array.isArray(s),o=0,s=a?s:(0,i.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if((o=s.next()).done)break;u=o.value}var p=u;if(p.isExpressionStatement()){var h=p.findParent(function(e){return e.isLoop()});if(h){var f=h.getData("expressionReplacementReturnUid");if(f)f=l.identifier(f.name);else{var d=this.get("callee");f=d.scope.generateDeclaredUidIdentifier("ret"),d.get("body").pushContainer("body",l.returnStatement(f)),h.setData("expressionReplacementReturnUid",f)}p.get("expression").replaceWith(l.assignmentExpression("=",f,p.node.expression))}else p.replaceWith(l.returnStatement(p.node.expression))}}return this.node}this.replaceWith(t)}},r.replaceInline=function(e){return this.resync(),Array.isArray(e)?Array.isArray(this.container)?(e=this._verifyNodeList(e),this._containerInsertAfter(e),this.remove()):this.replaceWithMultiple(e):this.replaceWith(e)};var s=n(e("babel-code-frame")),a=n(e("../index")),o=n(e("./index")),u=e("babylon"),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types")),c={Function:function(e){e.skip()},VariableDeclaration:function(e){if("var"===e.node.kind){var t=e.getBindingIdentifiers();for(var r in t)e.scope.push({id:t[r]});for(var n=[],s=e.node.declarations,a=Array.isArray(s),o=0,s=a?s:(0,i.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if((o=s.next()).done)break;u=o.value}var c=u;c.init&&n.push(l.expressionStatement(l.assignmentExpression("=",c.id,c.init)))}e.replaceWithMultiple(n)}}}},{"../index":143,"./index":150,"babel-code-frame":21,"babel-runtime/core-js/get-iterator":120,"babel-types":178,babylon:186}],161:[function(e,t,r){"use strict";r.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/helpers/classCallCheck")),i=function(){function e(t){var r=t.existing,i=t.identifier,s=t.scope,a=t.path,o=t.kind;(0,n.default)(this,e),this.identifier=i,this.scope=s,this.path=a,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],this.referenced=!1,this.references=0,this.clearValue(),r&&(this.constantViolations=[].concat(r.path,r.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,-1===this.constantViolations.indexOf(e)&&this.constantViolations.push(e)},e.prototype.reference=function(e){-1===this.referencePaths.indexOf(e)&&(this.referenced=!0,this.references++,this.referencePaths.push(e))},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();r.default=i,t.exports=r.default},{"babel-runtime/helpers/classCallCheck":134}],162:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(v.isModuleDeclaration(e))if(e.source)s(e.source,t);else if(e.specifiers&&e.specifiers.length)for(var r=e.specifiers,n=Array.isArray(r),i=0,r=n?r:(0,c.default)(r);;){var a;if(n){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}s(a,t)}else e.declaration&&s(e.declaration,t);else if(v.isModuleSpecifier(e))s(e.local,t);else if(v.isMemberExpression(e))s(e.object,t),s(e.property,t);else if(v.isIdentifier(e))t.push(e.name);else if(v.isLiteral(e))t.push(e.value);else if(v.isCallExpression(e))s(e.callee,t);else if(v.isObjectExpression(e)||v.isObjectPattern(e))for(var o=e.properties,u=Array.isArray(o),l=0,o=u?o:(0,c.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if((l=o.next()).done)break;p=l.value}var h=p;s(h.key||h.argument,t)}}r.__esModule=!0;var a=i(e("babel-runtime/core-js/object/keys")),o=i(e("babel-runtime/core-js/object/create")),u=i(e("babel-runtime/core-js/map")),l=i(e("babel-runtime/helpers/classCallCheck")),c=i(e("babel-runtime/core-js/get-iterator")),p=i(e("lodash/includes")),h=i(e("lodash/repeat")),f=i(e("./lib/renamer")),d=i(e("../index")),m=i(e("lodash/defaults")),y=n(e("babel-messages")),g=i(e("./binding")),b=i(e("globals")),v=n(e("babel-types")),x=e("../cache"),E=0,A={For:function(e){for(var t=v.FOR_INIT_KEYS,r=Array.isArray(t),n=0,t=r?t:(0,c.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i,a=e.get(s);a.isVar()&&e.scope.getFunctionParent().registerBinding("var",a)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var r=e.get("left");(r.isPattern()||r.isIdentifier())&&t.constantViolations.push(r)},ExportDeclaration:{exit:function(e){var t=e.node,r=e.scope,n=t.declaration;if(v.isClassDeclaration(n)||v.isFunctionDeclaration(n)){var i=n.id;if(!i)return;var s=r.getBinding(i.name);s&&s.reference(e)}else if(v.isVariableDeclaration(n))for(var a=n.declarations,o=Array.isArray(a),u=0,a=o?a:(0,c.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if((u=a.next()).done)break;l=u.value}var p=l,h=v.getBindingIdentifiers(p);for(var f in h){var d=r.getBinding(f);d&&d.reference(e)}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var r=t.name;e.scope.bindings[r]=e.scope.getBinding(r)}},Block:function(e){for(var t=e.get("body"),r=Array.isArray(t),n=0,t=r?t:(0,c.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i;s.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(s)}}},D=0,C=function(){function e(t,r){if((0,l.default)(this,e),r&&r.block===t.node)return r;var n=function(e,t,r){for(var n=x.scope.get(e.node)||[],i=n,s=Array.isArray(i),a=0,i=s?i:(0,c.default)(i);;){var o;if(s){if(a>=i.length)break;o=i[a++]}else{if((a=i.next()).done)break;o=a.value}var u=o;if(u.parent===t&&u.path===e)return u}n.push(r),x.scope.has(e.node)||x.scope.set(e.node,n)}(t,r,this);if(n)return n;this.uid=D++,this.parent=r,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,this.path=t,this.labels=new u.default}return e.prototype.traverse=function(e,t,r){(0,d.default)(e,t,this,r,this.path)},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp",t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp";return v.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp";e=v.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,r=0;do{t=this._generateUid(e,r),r++}while(this.hasLabel(t)||this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var n=this.getProgramParent();return n.references[t]=!0,n.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var r=e;return t>1&&(r+=t),"_"+r},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var r=e;v.isAssignmentExpression(e)?r=e.left:v.isVariableDeclarator(e)?r=e.id:(v.isObjectProperty(r)||v.isObjectMethod(r))&&(r=r.key);var n=[];s(r,n);var i=n.join("$");return i=i.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(i.slice(0,20))},e.prototype.isStatic=function(e){if(v.isThisExpression(e)||v.isSuper(e))return!0;if(v.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var r=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:r}),r},e.prototype.checkBlockScopedCollisions=function(e,t,r,n){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){if("let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind||"param"===e.kind&&("let"===t||"const"===t))throw this.hub.file.buildCodeFrameError(n,y.get("scopeDuplicateDeclaration",r),TypeError)}},e.prototype.rename=function(e,t,r){var n=this.getBinding(e);if(n)return t=t||this.generateUidIdentifier(e).name,new f.default(n,e,t).rename(r)},e.prototype._renameFromMap=function(e,t,r,n){e[t]&&(e[r]=n,e[t]=null)},e.prototype.dump=function(){var e=(0,h.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var r in t.bindings){var n=t.bindings[r];console.log(" -",r,{constant:n.constant,references:n.references,violations:n.constantViolations.length,kind:n.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var r=this.hub.file;if(v.isIdentifier(e)){var n=this.getBinding(e.name);if(n&&n.constant&&n.path.isGenericType("Array"))return e}if(v.isArrayExpression(e))return e;if(v.isIdentifier(e,{name:"arguments"}))return v.callExpression(v.memberExpression(v.memberExpression(v.memberExpression(v.identifier("Array"),v.identifier("prototype")),v.identifier("slice")),v.identifier("call")),[e]);var i="toArray",s=[e];return!0===t?i="toConsumableArray":t&&(s.push(v.numericLiteral(t)),i="slicedToArray"),v.callExpression(r.addHelper(i),s)},e.prototype.hasLabel=function(e){return!!this.getLabel(e)},e.prototype.getLabel=function(e){return this.labels.get(e)},e.prototype.registerLabel=function(e){this.labels.set(e.node.label.name,e)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerLabel(e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),r=Array.isArray(t),n=0,t=r?t:(0,c.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i;this.registerBinding(e.node.kind,s)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var a=e.get("specifiers"),o=Array.isArray(a),u=0,a=o?a:(0,c.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if((u=a.next()).done)break;l=u.value}var p=l;this.registerBinding("module",p)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?v.unaryExpression("void",v.numericLiteral(0),!0):v.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var r in t){var n=this.getBinding(r);n&&n.reassign(e)}},e.prototype.registerBinding=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var n=t.get("declarations"),i=Array.isArray(n),s=0,n=i?n:(0,c.default)(n);;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}var o=a;this.registerBinding(e,o)}else{var u=this.getProgramParent(),l=t.getBindingIdentifiers(!0);for(var p in l)for(var h=l[p],f=Array.isArray(h),d=0,h=f?h:(0,c.default)(h);;){var m;if(f){if(d>=h.length)break;m=h[d++]}else{if((d=h.next()).done)break;m=d.value}var y=m,b=this.getOwnBinding(p);if(b){if(b.identifier===y)continue;this.checkBlockScopedCollisions(b,e,p,y)}b&&b.path.isFlow()&&(b=null),u.references[p]=!0,this.bindings[p]=new g.default({identifier:y,existing:b,scope:this,path:r,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do{if(t.uids[e])return!0}while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do{if(t.globals[e])return!0}while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do{if(t.references[e])return!0}while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(v.isIdentifier(e)){var r=this.getBinding(e.name);return!!r&&(!t||r.constant)}if(v.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(v.isClassBody(e)){for(var n=e.body,i=Array.isArray(n),s=0,n=i?n:(0,c.default)(n);;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}var o=a;if(!this.isPure(o,t))return!1}return!0}if(v.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(v.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),p=0,u=l?u:(0,c.default)(u);;){var h;if(l){if(p>=u.length)break;h=u[p++]}else{if((p=u.next()).done)break;h=p.value}var f=h;if(!this.isPure(f,t))return!1}return!0}if(v.isObjectExpression(e)){for(var d=e.properties,m=Array.isArray(d),y=0,d=m?d:(0,c.default)(d);;){var g;if(m){if(y>=d.length)break;g=d[y++]}else{if((y=d.next()).done)break;g=y.value}var b=g;if(!this.isPure(b,t))return!1}return!0}return v.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):v.isClassProperty(e)||v.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):v.isUnaryExpression(e)?this.isPure(e.argument,t):v.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var r=t.data[e];if(null!=r)return r}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{null!=t.data[e]&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){E++,this._crawl(),E--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,o.default)(null),this.bindings=(0,o.default)(null),this.globals=(0,o.default)(null),this.uids=(0,o.default)(null),this.data=(0,o.default)(null),e.isLoop())for(var t=v.FOR_INIT_KEYS,r=Array.isArray(t),n=0,t=r?t:(0,c.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i,a=e.get(s);a.isBlockScoped()&&this.registerBinding(a.node.kind,a)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[v.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[v.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var u=e.get("params"),l=Array.isArray(u),p=0,u=l?u:(0,c.default)(u);;){var h;if(l){if(p>=u.length)break;h=u[p++]}else{if((p=u.next()).done)break;h=p.value}var f=h;this.registerBinding("param",f)}e.isCatchClause()&&this.registerBinding("let",e);if(!this.getProgramParent().crawling){var d={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(A,d),this.crawling=!1;for(var m=d.assignments,y=Array.isArray(m),g=0,m=y?m:(0,c.default)(m);;){var b;if(y){if(g>=m.length)break;b=m[g++]}else{if((g=m.next()).done)break;b=g.value}var x=b,E=x.getBindingIdentifiers(),D=void 0;for(var C in E)x.scope.getBinding(C)||(D=D||x.scope.getProgramParent()).addGlobal(E[C]);x.scope.registerConstantViolation(x)}for(var S=d.references,_=Array.isArray(S),w=0,S=_?S:(0,c.default)(S);;){var k;if(_){if(w>=S.length)break;k=S[w++]}else{if((w=S.next()).done)break;k=w.value}var F=k,T=F.scope.getBinding(F.node.name);T?T.reference(F):F.scope.getProgramParent().addGlobal(F.node)}for(var P=d.constantViolations,B=Array.isArray(P),O=0,P=B?P:(0,c.default)(P);;){var j;if(B){if(O>=P.length)break;j=P[O++]}else{if((O=P.next()).done)break;j=O.value}var N=j;N.scope.registerConstantViolation(N)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(v.ensureBlock(t.node),t=t.get("body"));var r=e.unique,n=e.kind||"var",i=null==e._blockHoist?2:e._blockHoist,s="declaration:"+n+":"+i,a=!r&&t.getData(s);if(!a){var o=v.variableDeclaration(n,[]);o._generated=!0,o._blockHoist=i;a=t.unshiftContainer("body",[o])[0],r||t.setData(s,a)}var u=v.variableDeclarator(e.id,e.init);a.node.declarations.push(u),this.registerBinding(n,a.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do{if(e.path.isProgram())return e}while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do{if(e.path.isFunctionParent())return e}while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do{if(e.path.isBlockParent())return e}while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,o.default)(null),t=this;do{(0,m.default)(e,t.bindings),t=t.parent}while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,o.default)(null),t=arguments,r=Array.isArray(t),n=0,t=r?t:(0,c.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i,a=this;do{for(var u in a.bindings){var l=a.bindings[u];l.kind===s&&(e[u]=l)}a=a.parent}while(a)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===E&&e&&e.path.isFlow()&&console.warn("\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 7. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n "),e},e.prototype.getBinding=function(e){var t=this;do{var r=t.getOwnBinding(e);if(r)return this.warnOnFlowBinding(r)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,r){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,r)||(!!this.hasUid(t)||(!(r||!(0,p.default)(e.globals,t))||!(r||!(0,p.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var r=this.getBinding(e);r&&(r.scope.removeOwnBinding(e),r.scope=t,t.bindings[e]=r)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var r=this;do{r.uids[e]&&(r.uids[e]=!1)}while(r=r.parent)},e}();C.globals=(0,a.default)(b.default.builtin),C.contextVariables=["arguments","undefined","Infinity","NaN"],r.default=C,t.exports=r.default},{"../cache":140,"../index":143,"./binding":161,"./lib/renamer":163,"babel-messages":110,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/map":122,"babel-runtime/core-js/object/create":125,"babel-runtime/core-js/object/keys":127,"babel-runtime/helpers/classCallCheck":134,"babel-types":178,globals:313,"lodash/defaults":495,"lodash/includes":507,"lodash/repeat":530}],163:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var i=n(e("babel-runtime/helpers/classCallCheck")),s=(n(e("../binding")),function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("babel-types"))),a={ReferencedIdentifier:function(e,t){var r=e.node;r.name===t.oldName&&(r.name=t.newName)},Scope:function(e,t){e.scope.bindingIdentifierEquals(t.oldName,t.binding.identifier)||e.skip()},"AssignmentExpression|Declaration":function(e,t){var r=e.getOuterBindingIdentifiers();for(var n in r)n===t.oldName&&(r[n].name=t.newName)}},o=function(){function e(t,r,n){(0,i.default)(this,e),this.newName=n,this.oldName=r,this.binding=t}return e.prototype.maybeConvertFromExportDeclaration=function(e){var t=e.parentPath.isExportDeclaration()&&e.parentPath;if(t){var r=t.isExportDefaultDeclaration();r&&(e.isFunctionDeclaration()||e.isClassDeclaration())&&!e.node.id&&(e.node.id=e.scope.generateUidIdentifier("default"));var n=e.getOuterBindingIdentifiers(),i=[];for(var a in n){var o=a===this.oldName?this.newName:a,u=r?"default":a;i.push(s.exportSpecifier(s.identifier(o),s.identifier(u)))}if(i.length){var l=s.exportNamedDeclaration(null,i);e.isFunctionDeclaration()&&(l._blockHoist=3),t.insertAfter(l),t.replaceWith(e.node)}}},e.prototype.rename=function(e){var t=this.binding,r=this.oldName,n=this.newName,i=t.scope,s=t.path.find(function(e){return e.isDeclaration()||e.isFunctionExpression()});s&&this.maybeConvertFromExportDeclaration(s),i.traverse(e||i.block,a,this),e||(i.removeOwnBinding(r),i.bindings[n]=t,this.binding.identifier.name=n),t.type},e}();r.default=o,t.exports=r.default},{"../binding":161,"babel-runtime/helpers/classCallCheck":134,"babel-types":178}],164:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function s(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!l(t)){var r=t.split("|");if(1!==r.length){var n=e[t];delete e[t];for(var i=r,s=Array.isArray(i),o=0,i=s?i:(0,f.default)(i);;){var p;if(s){if(o>=i.length)break;p=i[o++]}else{if((o=i.next()).done)break;p=o.value}e[p]=n}}}a(e),delete e.__esModule,function(e){for(var t in e)if(!l(t)){var r=e[t];"function"==typeof r&&(e[t]={enter:r})}}(e),u(e);for(var m=(0,h.default)(e),b=Array.isArray(m),v=0,m=b?m:(0,f.default)(m);;){var x;if(b){if(v>=m.length)break;x=m[v++]}else{if((v=m.next()).done)break;x=v.value}var E=x;if(!l(E)){var A=d[E];if(A){var D=e[E];for(var C in D)D[C]=function(e,t){var r=function(r){if(e.checkPath(r))return t.apply(this,arguments)};return r.toString=function(){return t.toString()},r}(A,D[C]);if(delete e[E],A.types)for(var S=A.types,_=Array.isArray(S),w=0,S=_?S:(0,f.default)(S);;){var k;if(_){if(w>=S.length)break;k=S[w++]}else{if((w=S.next()).done)break;k=w.value}var F=k;e[F]?c(e[F],D):e[F]=D}else c(e,D)}}}for(var T in e)if(!l(T)){var P=e[T],B=y.FLIPPED_ALIAS_KEYS[T],O=y.DEPRECATED_KEYS[T];if(O&&(console.trace("Visitor defined for "+T+" but it has been renamed to "+O),B=[O]),B){delete e[T];for(var j=B,N=Array.isArray(j),I=0,j=N?j:(0,f.default)(j);;){var L;if(N){if(I>=j.length)break;L=j[I++]}else{if((I=j.next()).done)break;L=I.value}var M=L,R=e[M];R?c(R,P):e[M]=(0,g.default)(P)}}}for(var V in e)l(V)||u(e[V]);return e}function a(e){if(!e._verified){if("function"==typeof e)throw new Error(m.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||o(t,e[t]),!l(t)){if(y.TYPES.indexOf(t)<0)throw new Error(m.get("traverseVerifyNodeType",t));var r=e[t];if("object"===(void 0===r?"undefined":(0,p.default)(r)))for(var n in r){if("enter"!==n&&"exit"!==n)throw new Error(m.get("traverseVerifyVisitorProperty",t,n));o(t+"."+n,r[n])}}e._verified=!0}}function o(e,t){for(var r=[].concat(t),n=Array.isArray(r),i=0,r=n?r:(0,f.default)(r);;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var a=s;if("function"!=typeof a)throw new TypeError("Non-function found defined in "+e+" with type "+(void 0===a?"undefined":(0,p.default)(a)))}}function u(e){e.enter&&!Array.isArray(e.enter)&&(e.enter=[e.enter]),e.exit&&!Array.isArray(e.exit)&&(e.exit=[e.exit])}function l(e){return"_"===e[0]||("enter"===e||"exit"===e||"shouldSkip"===e||("blacklist"===e||"noScope"===e||"skipKeys"===e))}function c(e,t){for(var r in t)e[r]=[].concat(e[r]||[],t[r])}r.__esModule=!0;var p=i(e("babel-runtime/helpers/typeof")),h=i(e("babel-runtime/core-js/object/keys")),f=i(e("babel-runtime/core-js/get-iterator"));r.explode=s,r.verify=a,r.merge=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments[2],n={},i=0;i=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},r.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),r.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},r.enable(i())}).call(this,e("_process"))},{"./debug":166,_process:550}],166:[function(e,t,r){arguments[4][60][0].apply(r,arguments)},{dup:60,ms:543}],167:[function(e,t,r){"use strict";r.__esModule=!0,r.NOT_LOCAL_BINDING=r.BLOCK_SCOPED_SYMBOL=r.INHERIT_KEYS=r.UNARY_OPERATORS=r.STRING_UNARY_OPERATORS=r.NUMBER_UNARY_OPERATORS=r.BOOLEAN_UNARY_OPERATORS=r.BINARY_OPERATORS=r.NUMBER_BINARY_OPERATORS=r.BOOLEAN_BINARY_OPERATORS=r.COMPARISON_BINARY_OPERATORS=r.EQUALITY_BINARY_OPERATORS=r.BOOLEAN_NUMBER_BINARY_OPERATORS=r.UPDATE_OPERATORS=r.LOGICAL_OPERATORS=r.COMMENT_KEYS=r.FOR_INIT_KEYS=r.FLATTENABLE_KEYS=r.STATEMENT_OR_BLOCK_KEYS=void 0;var n=function(e){return e&&e.__esModule?e:{default:e}}(e("babel-runtime/core-js/symbol/for")),i=(r.STATEMENT_OR_BLOCK_KEYS=["consequent","body","alternate"],r.FLATTENABLE_KEYS=["body","expressions"],r.FOR_INIT_KEYS=["left","init"],r.COMMENT_KEYS=["leadingComments","trailingComments","innerComments"],r.LOGICAL_OPERATORS=["||","&&"],r.UPDATE_OPERATORS=["++","--"],r.BOOLEAN_NUMBER_BINARY_OPERATORS=[">","<",">=","<="]),s=r.EQUALITY_BINARY_OPERATORS=["==","===","!=","!=="],a=r.COMPARISON_BINARY_OPERATORS=[].concat(s,["in","instanceof"]),o=r.BOOLEAN_BINARY_OPERATORS=[].concat(a,i),u=r.NUMBER_BINARY_OPERATORS=["-","/","%","*","**","&","|",">>",">>>","<<","^"],l=(r.BINARY_OPERATORS=["+"].concat(u,o),r.BOOLEAN_UNARY_OPERATORS=["delete","!"]),c=r.NUMBER_UNARY_OPERATORS=["+","-","++","--","~"],p=r.STRING_UNARY_OPERATORS=["typeof"];r.UNARY_OPERATORS=["void"].concat(l,c,p),r.INHERIT_KEYS={optional:["typeAnnotation","typeParameters","returnType"],force:["start","loc","end"]},r.BLOCK_SCOPED_SYMBOL=(0,n.default)("var used to be block scoped"),r.NOT_LOCAL_BINDING=(0,n.default)("should not be considered a local binding")},{"babel-runtime/core-js/symbol/for":130}],168:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t,r){for(var n=[],s=!0,a=e,o=Array.isArray(a),u=0,a=o?a:(0,l.default)(a);;){var c;if(o){if(u>=a.length)break;c=a[u++]}else{if((u=a.next()).done)break;c=u.value}var p=c;if(s=!1,h.isExpression(p))n.push(p);else if(h.isExpressionStatement(p))n.push(p.expression);else if(h.isVariableDeclaration(p)){if("var"!==p.kind)return;for(var f=p.declarations,d=Array.isArray(f),m=0,f=d?f:(0,l.default)(f);;){var y;if(d){if(m>=f.length)break;y=f[m++]}else{if((m=f.next()).done)break;y=m.value}var g=y,b=h.getBindingIdentifiers(g);for(var v in b)r.push({kind:p.kind,id:b[v]});g.init&&n.push(h.assignmentExpression("=",g.id,g.init))}s=!0}else if(h.isIfStatement(p)){var x=p.consequent?i([p.consequent],t,r):t.buildUndefinedNode(),E=p.alternate?i([p.alternate],t,r):t.buildUndefinedNode();if(!x||!E)return;n.push(h.conditionalExpression(p.test,x,E))}else if(h.isBlockStatement(p)){var A=i(p.body,t,r);if(!A)return;n.push(A)}else{if(!h.isEmptyStatement(p))return;s=!0}}return s&&n.push(t.buildUndefinedNode()),1===n.length?n[0]:h.sequenceExpression(n)}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.key,r=void 0;return"method"===e.kind?s.increment()+"":(r=h.isIdentifier(t)?t.name:h.isStringLiteral(t)?(0,u.default)(t.value):(0,u.default)(h.removePropertiesDeep(h.cloneDeep(t))),e.computed&&(r="["+r+"]"),e.static&&(r="static:"+r),r)}function a(e){return e+="",e=e.replace(/[^a-zA-Z0-9$_]/g,"-"),e=e.replace(/^[-0-9]+/,""),e=e.replace(/[-\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),h.isValidIdentifier(e)||(e="_"+e),e||"_"}r.__esModule=!0;var o=n(e("babel-runtime/core-js/number/max-safe-integer")),u=n(e("babel-runtime/core-js/json/stringify")),l=n(e("babel-runtime/core-js/get-iterator"));r.toComputedKey=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.key||e.property;return e.computed||h.isIdentifier(t)&&(t=h.stringLiteral(t.name)),t},r.toSequenceExpression=function(e,t){if(e&&e.length){var r=[],n=i(e,t,r);if(n){for(var s=r,a=Array.isArray(s),o=0,s=a?s:(0,l.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if((o=s.next()).done)break;u=o.value}var c=u;t.push(c)}return n}}},r.toKeyAlias=s,r.toIdentifier=a,r.toBindingIdentifierName=function(e){return"eval"!==(e=a(e))&&"arguments"!==e||(e="_"+e),e},r.toStatement=function(e,t){if(h.isStatement(e))return e;var r=!1,n=void 0;if(h.isClass(e))r=!0,n="ClassDeclaration";else if(h.isFunction(e))r=!0,n="FunctionDeclaration";else if(h.isAssignmentExpression(e))return h.expressionStatement(e);if(r&&!e.id&&(n=!1),!n){if(t)return!1;throw new Error("cannot turn "+e.type+" to a statement")}return e.type=n,e},r.toExpression=function(e){if(h.isExpressionStatement(e)&&(e=e.expression),h.isExpression(e))return e;if(h.isClass(e)?e.type="ClassExpression":h.isFunction(e)&&(e.type="FunctionExpression"),!h.isExpression(e))throw new Error("cannot turn "+e.type+" to an expression");return e},r.toBlock=function(e,t){return h.isBlockStatement(e)?e:(h.isEmptyStatement(e)&&(e=[]),Array.isArray(e)||(h.isStatement(e)||(e=h.isFunction(t)?h.returnStatement(e):h.expressionStatement(e)),e=[e]),h.blockStatement(e))},r.valueToNode=function(e){if(void 0===e)return h.identifier("undefined");if(!0===e||!1===e)return h.booleanLiteral(e);if(null===e)return h.nullLiteral();if("string"==typeof e)return h.stringLiteral(e);if("number"==typeof e)return h.numericLiteral(e);if((0,p.default)(e)){var t=e.source,r=e.toString().match(/\/([a-z]+|)$/)[1];return h.regExpLiteral(t,r)}if(Array.isArray(e))return h.arrayExpression(e.map(h.valueToNode));if((0,c.default)(e)){var n=[];for(var i in e){var s=void 0;s=h.isValidIdentifier(i)?h.identifier(i):h.stringLiteral(i),n.push(h.objectProperty(s,h.valueToNode(e[i])))}return h.objectExpression(n)}throw new Error("don't know how to turn this value into a node")};var c=n(e("lodash/isPlainObject")),p=n(e("lodash/isRegExp")),h=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("./index"));s.uid=0,s.increment=function(){return s.uid>=o.default?s.uid=0:s.uid++}},{"./index":178,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/json/stringify":121,"babel-runtime/core-js/number/max-safe-integer":123,"lodash/isPlainObject":518,"lodash/isRegExp":519}],169:[function(e,t,r){"use strict";var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("../index")),i=e("../constants"),s=e("./index"),a=function(e){return e&&e.__esModule?e:{default:e}}(s);(0,a.default)("ArrayExpression",{fields:{elements:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeOrValueType)("null","Expression","SpreadElement"))),default:[]}},visitor:["elements"],aliases:["Expression"]}),(0,a.default)("AssignmentExpression",{fields:{operator:{validate:(0,s.assertValueType)("string")},left:{validate:(0,s.assertNodeType)("LVal")},right:{validate:(0,s.assertNodeType)("Expression")}},builder:["operator","left","right"],visitor:["left","right"],aliases:["Expression"]}),(0,a.default)("BinaryExpression",{builder:["operator","left","right"],fields:{operator:{validate:s.assertOneOf.apply(void 0,i.BINARY_OPERATORS)},left:{validate:(0,s.assertNodeType)("Expression")},right:{validate:(0,s.assertNodeType)("Expression")}},visitor:["left","right"],aliases:["Binary","Expression"]}),(0,a.default)("Directive",{visitor:["value"],fields:{value:{validate:(0,s.assertNodeType)("DirectiveLiteral")}}}),(0,a.default)("DirectiveLiteral",{builder:["value"],fields:{value:{validate:(0,s.assertValueType)("string")}}}),(0,a.default)("BlockStatement",{builder:["body","directives"],visitor:["directives","body"],fields:{directives:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Directive"))),default:[]},body:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","Statement"]}),(0,a.default)("BreakStatement",{visitor:["label"],fields:{label:{validate:(0,s.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,a.default)("CallExpression",{visitor:["callee","arguments"],fields:{callee:{validate:(0,s.assertNodeType)("Expression")},arguments:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression","SpreadElement")))}},aliases:["Expression"]}),(0,a.default)("CatchClause",{visitor:["param","body"],fields:{param:{validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("BlockStatement")}},aliases:["Scopable"]}),(0,a.default)("ConditionalExpression",{visitor:["test","consequent","alternate"],fields:{test:{validate:(0,s.assertNodeType)("Expression")},consequent:{validate:(0,s.assertNodeType)("Expression")},alternate:{validate:(0,s.assertNodeType)("Expression")}},aliases:["Expression","Conditional"]}),(0,a.default)("ContinueStatement",{visitor:["label"],fields:{label:{validate:(0,s.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,a.default)("DebuggerStatement",{aliases:["Statement"]}),(0,a.default)("DoWhileStatement",{visitor:["test","body"],fields:{test:{validate:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("Statement")}},aliases:["Statement","BlockParent","Loop","While","Scopable"]}),(0,a.default)("EmptyStatement",{aliases:["Statement"]}),(0,a.default)("ExpressionStatement",{visitor:["expression"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}},aliases:["Statement","ExpressionWrapper"]}),(0,a.default)("File",{builder:["program","comments","tokens"],visitor:["program"],fields:{program:{validate:(0,s.assertNodeType)("Program")}}}),(0,a.default)("ForInStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,s.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("ForStatement",{visitor:["init","test","update","body"],aliases:["Scopable","Statement","For","BlockParent","Loop"],fields:{init:{validate:(0,s.assertNodeType)("VariableDeclaration","Expression"),optional:!0},test:{validate:(0,s.assertNodeType)("Expression"),optional:!0},update:{validate:(0,s.assertNodeType)("Expression"),optional:!0},body:{validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("FunctionDeclaration",{builder:["id","params","body","generator","async"],visitor:["id","params","body","returnType","typeParameters"],fields:{id:{validate:(0,s.assertNodeType)("Identifier")},params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,s.assertValueType)("boolean")},async:{default:!1,validate:(0,s.assertValueType)("boolean")}},aliases:["Scopable","Function","BlockParent","FunctionParent","Statement","Pureish","Declaration"]}),(0,a.default)("FunctionExpression",{inherits:"FunctionDeclaration",aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{id:{validate:(0,s.assertNodeType)("Identifier"),optional:!0},params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,s.assertValueType)("boolean")},async:{default:!1,validate:(0,s.assertValueType)("boolean")}}}),(0,a.default)("Identifier",{builder:["name"],visitor:["typeAnnotation"],aliases:["Expression","LVal"],fields:{name:{validate:function(e,t,r){n.isValidIdentifier(r)}},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("IfStatement",{visitor:["test","consequent","alternate"],aliases:["Statement","Conditional"],fields:{test:{validate:(0,s.assertNodeType)("Expression")},consequent:{validate:(0,s.assertNodeType)("Statement")},alternate:{optional:!0,validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("LabeledStatement",{visitor:["label","body"],aliases:["Statement"],fields:{label:{validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("StringLiteral",{builder:["value"],fields:{value:{validate:(0,s.assertValueType)("string")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,a.default)("NumericLiteral",{builder:["value"],deprecatedAlias:"NumberLiteral",fields:{value:{validate:(0,s.assertValueType)("number")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,a.default)("NullLiteral",{aliases:["Expression","Pureish","Literal","Immutable"]}),(0,a.default)("BooleanLiteral",{builder:["value"],fields:{value:{validate:(0,s.assertValueType)("boolean")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,a.default)("RegExpLiteral",{builder:["pattern","flags"],deprecatedAlias:"RegexLiteral",aliases:["Expression","Literal"],fields:{pattern:{validate:(0,s.assertValueType)("string")},flags:{validate:(0,s.assertValueType)("string"),default:""}}}),(0,a.default)("LogicalExpression",{builder:["operator","left","right"],visitor:["left","right"],aliases:["Binary","Expression"],fields:{operator:{validate:s.assertOneOf.apply(void 0,i.LOGICAL_OPERATORS)},left:{validate:(0,s.assertNodeType)("Expression")},right:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("MemberExpression",{builder:["object","property","computed"],visitor:["object","property"],aliases:["Expression","LVal"],fields:{object:{validate:(0,s.assertNodeType)("Expression")},property:{validate:function(e,t,r){var n=e.computed?"Expression":"Identifier";(0,s.assertNodeType)(n)(e,t,r)}},computed:{default:!1}}}),(0,a.default)("NewExpression",{visitor:["callee","arguments"],aliases:["Expression"],fields:{callee:{validate:(0,s.assertNodeType)("Expression")},arguments:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression","SpreadElement")))}}}),(0,a.default)("Program",{visitor:["directives","body"],builder:["body","directives"],fields:{directives:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Directive"))),default:[]},body:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","FunctionParent"]}),(0,a.default)("ObjectExpression",{visitor:["properties"],aliases:["Expression"],fields:{properties:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ObjectMethod","ObjectProperty","SpreadProperty")))}}}),(0,a.default)("ObjectMethod",{builder:["kind","key","params","body","computed"],fields:{kind:{validate:(0,s.chain)((0,s.assertValueType)("string"),(0,s.assertOneOf)("method","get","set")),default:"method"},computed:{validate:(0,s.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var n=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];s.assertNodeType.apply(void 0,n)(e,t,r)}},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))},body:{validate:(0,s.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,s.assertValueType)("boolean")},async:{default:!1,validate:(0,s.assertValueType)("boolean")}},visitor:["key","params","body","decorators","returnType","typeParameters"],aliases:["UserWhitespacable","Function","Scopable","BlockParent","FunctionParent","Method","ObjectMember"]}),(0,a.default)("ObjectProperty",{builder:["key","value","computed","shorthand","decorators"],fields:{computed:{validate:(0,s.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var n=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];s.assertNodeType.apply(void 0,n)(e,t,r)}},value:{validate:(0,s.assertNodeType)("Expression","Pattern","RestElement")},shorthand:{validate:(0,s.assertValueType)("boolean"),default:!1},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator"))),optional:!0}},visitor:["key","value","decorators"],aliases:["UserWhitespacable","Property","ObjectMember"]}),(0,a.default)("RestElement",{visitor:["argument","typeAnnotation"],aliases:["LVal"],fields:{argument:{validate:(0,s.assertNodeType)("LVal")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ReturnStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,s.assertNodeType)("Expression"),optional:!0}}}),(0,a.default)("SequenceExpression",{visitor:["expressions"],fields:{expressions:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))}},aliases:["Expression"]}),(0,a.default)("SwitchCase",{visitor:["test","consequent"],fields:{test:{validate:(0,s.assertNodeType)("Expression"),optional:!0},consequent:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Statement")))}}}),(0,a.default)("SwitchStatement",{visitor:["discriminant","cases"],aliases:["Statement","BlockParent","Scopable"],fields:{discriminant:{validate:(0,s.assertNodeType)("Expression")},cases:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("SwitchCase")))}}}),(0,a.default)("ThisExpression",{aliases:["Expression"]}),(0,a.default)("ThrowStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("TryStatement",{visitor:["block","handler","finalizer"],aliases:["Statement"],fields:{body:{validate:(0,s.assertNodeType)("BlockStatement")},handler:{optional:!0,handler:(0,s.assertNodeType)("BlockStatement")},finalizer:{optional:!0,validate:(0,s.assertNodeType)("BlockStatement")}}}),(0,a.default)("UnaryExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!0},argument:{validate:(0,s.assertNodeType)("Expression")},operator:{validate:s.assertOneOf.apply(void 0,i.UNARY_OPERATORS)}},visitor:["argument"],aliases:["UnaryLike","Expression"]}),(0,a.default)("UpdateExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!1},argument:{validate:(0,s.assertNodeType)("Expression")},operator:{validate:s.assertOneOf.apply(void 0,i.UPDATE_OPERATORS)}},visitor:["argument"],aliases:["Expression"]}),(0,a.default)("VariableDeclaration",{builder:["kind","declarations"],visitor:["declarations"],aliases:["Statement","Declaration"],fields:{kind:{validate:(0,s.chain)((0,s.assertValueType)("string"),(0,s.assertOneOf)("var","let","const"))},declarations:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("VariableDeclarator")))}}}),(0,a.default)("VariableDeclarator",{visitor:["id","init"],fields:{id:{validate:(0,s.assertNodeType)("LVal")},init:{optional:!0,validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("WhileStatement",{visitor:["test","body"],aliases:["Statement","BlockParent","Loop","While","Scopable"],fields:{test:{validate:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("BlockStatement","Statement")}}}),(0,a.default)("WithStatement",{visitor:["object","body"],aliases:["Statement"],fields:{object:{object:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("BlockStatement","Statement")}}})},{"../constants":167,"../index":178,"./index":173}],170:[function(e,t,r){"use strict";var n=e("./index"),i=function(e){return e&&e.__esModule?e:{default:e}}(n);(0,i.default)("AssignmentPattern",{visitor:["left","right"],aliases:["Pattern","LVal"],fields:{left:{validate:(0,n.assertNodeType)("Identifier")},right:{validate:(0,n.assertNodeType)("Expression")},decorators:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Decorator")))}}}),(0,i.default)("ArrayPattern",{visitor:["elements","typeAnnotation"],aliases:["Pattern","LVal"],fields:{elements:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Identifier","Pattern","RestElement")))},decorators:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Decorator")))}}}),(0,i.default)("ArrowFunctionExpression",{builder:["params","body","async"],visitor:["params","body","returnType","typeParameters"],aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{params:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("LVal")))},body:{validate:(0,n.assertNodeType)("BlockStatement","Expression")},async:{validate:(0,n.assertValueType)("boolean"),default:!1}}}),(0,i.default)("ClassBody",{visitor:["body"],fields:{body:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("ClassMethod","ClassProperty")))}}}),(0,i.default)("ClassDeclaration",{builder:["id","superClass","body","decorators"],visitor:["id","body","superClass","mixins","typeParameters","superTypeParameters","implements","decorators"],aliases:["Scopable","Class","Statement","Declaration","Pureish"],fields:{id:{validate:(0,n.assertNodeType)("Identifier")},body:{validate:(0,n.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,n.assertNodeType)("Expression")},decorators:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Decorator")))}}}),(0,i.default)("ClassExpression",{inherits:"ClassDeclaration",aliases:["Scopable","Class","Expression","Pureish"],fields:{id:{optional:!0,validate:(0,n.assertNodeType)("Identifier")},body:{validate:(0,n.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,n.assertNodeType)("Expression")},decorators:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Decorator")))}}}),(0,i.default)("ExportAllDeclaration",{visitor:["source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{source:{validate:(0,n.assertNodeType)("StringLiteral")}}}),(0,i.default)("ExportDefaultDeclaration",{visitor:["declaration"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,n.assertNodeType)("FunctionDeclaration","ClassDeclaration","Expression")}}}),(0,i.default)("ExportNamedDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,n.assertNodeType)("Declaration"),optional:!0},specifiers:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("ExportSpecifier")))},source:{validate:(0,n.assertNodeType)("StringLiteral"),optional:!0}}}),(0,i.default)("ExportSpecifier",{visitor:["local","exported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,n.assertNodeType)("Identifier")},exported:{validate:(0,n.assertNodeType)("Identifier")}}}),(0,i.default)("ForOfStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,n.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,n.assertNodeType)("Expression")},body:{validate:(0,n.assertNodeType)("Statement")}}}),(0,i.default)("ImportDeclaration",{visitor:["specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration"],fields:{specifiers:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier")))},source:{validate:(0,n.assertNodeType)("StringLiteral")}}}),(0,i.default)("ImportDefaultSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,n.assertNodeType)("Identifier")}}}),(0,i.default)("ImportNamespaceSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,n.assertNodeType)("Identifier")}}}),(0,i.default)("ImportSpecifier",{visitor:["local","imported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,n.assertNodeType)("Identifier")},imported:{validate:(0,n.assertNodeType)("Identifier")},importKind:{validate:(0,n.assertOneOf)(null,"type","typeof")}}}),(0,i.default)("MetaProperty",{visitor:["meta","property"],aliases:["Expression"],fields:{meta:{validate:(0,n.assertValueType)("string")},property:{validate:(0,n.assertValueType)("string")}}}),(0,i.default)("ClassMethod",{aliases:["Function","Scopable","BlockParent","FunctionParent","Method"],builder:["kind","key","params","body","computed","static"],visitor:["key","params","body","decorators","returnType","typeParameters"],fields:{kind:{validate:(0,n.chain)((0,n.assertValueType)("string"),(0,n.assertOneOf)("get","set","method","constructor")),default:"method"},computed:{default:!1,validate:(0,n.assertValueType)("boolean")},static:{default:!1,validate:(0,n.assertValueType)("boolean")},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];n.assertNodeType.apply(void 0,i)(e,t,r)}},params:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("LVal")))},body:{validate:(0,n.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,n.assertValueType)("boolean")},async:{default:!1,validate:(0,n.assertValueType)("boolean")}}}),(0,i.default)("ObjectPattern",{visitor:["properties","typeAnnotation"],aliases:["Pattern","LVal"],fields:{properties:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("RestProperty","Property")))},decorators:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Decorator")))}}}),(0,i.default)("SpreadElement",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,n.assertNodeType)("Expression")}}}),(0,i.default)("Super",{aliases:["Expression"]}),(0,i.default)("TaggedTemplateExpression",{visitor:["tag","quasi"],aliases:["Expression"],fields:{tag:{validate:(0,n.assertNodeType)("Expression")},quasi:{validate:(0,n.assertNodeType)("TemplateLiteral")}}}),(0,i.default)("TemplateElement",{builder:["value","tail"],fields:{value:{},tail:{validate:(0,n.assertValueType)("boolean"),default:!1}}}),(0,i.default)("TemplateLiteral",{visitor:["quasis","expressions"],aliases:["Expression","Literal"],fields:{quasis:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("TemplateElement")))},expressions:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("Expression")))}}}),(0,i.default)("YieldExpression",{builder:["argument","delegate"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{delegate:{validate:(0,n.assertValueType)("boolean"),default:!1},argument:{optional:!0,validate:(0,n.assertNodeType)("Expression")}}})},{"./index":173}],171:[function(e,t,r){"use strict";var n=e("./index"),i=function(e){return e&&e.__esModule?e:{default:e}}(n);(0,i.default)("AwaitExpression",{builder:["argument"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{argument:{validate:(0,n.assertNodeType)("Expression")}}}),(0,i.default)("ForAwaitStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,n.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,n.assertNodeType)("Expression")},body:{validate:(0,n.assertNodeType)("Statement")}}}),(0,i.default)("BindExpression",{visitor:["object","callee"],aliases:["Expression"],fields:{}}),(0,i.default)("Import",{aliases:["Expression"]}),(0,i.default)("Decorator",{visitor:["expression"],fields:{expression:{validate:(0,n.assertNodeType)("Expression")}}}),(0,i.default)("DoExpression",{visitor:["body"],aliases:["Expression"],fields:{body:{validate:(0,n.assertNodeType)("BlockStatement")}}}),(0,i.default)("ExportDefaultSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,n.assertNodeType)("Identifier")}}}),(0,i.default)("ExportNamespaceSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,n.assertNodeType)("Identifier")}}}),(0,i.default)("RestProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,n.assertNodeType)("LVal")}}}),(0,i.default)("SpreadProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,n.assertNodeType)("Expression")}}})},{"./index":173}],172:[function(e,t,r){"use strict";var n=e("./index"),i=function(e){return e&&e.__esModule?e:{default:e}}(n);(0,i.default)("AnyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,i.default)("ArrayTypeAnnotation",{visitor:["elementType"],aliases:["Flow"],fields:{}}),(0,i.default)("BooleanTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,i.default)("BooleanLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,i.default)("NullLiteralTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,i.default)("ClassImplements",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,i.default)("ClassProperty",{visitor:["key","value","typeAnnotation","decorators"],builder:["key","value","typeAnnotation","decorators","computed"],aliases:["Property"],fields:{computed:{validate:(0,n.assertValueType)("boolean"),default:!1}}}),(0,i.default)("DeclareClass",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareFunction",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareInterface",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareModule",{visitor:["id","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareModuleExports",{visitor:["typeAnnotation"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareTypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareOpaqueType",{visitor:["id","typeParameters","supertype"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareVariable",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("DeclareExportDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("ExistentialTypeParam",{aliases:["Flow"]}),(0,i.default)("FunctionTypeAnnotation",{visitor:["typeParameters","params","rest","returnType"],aliases:["Flow"],fields:{}}),(0,i.default)("FunctionTypeParam",{visitor:["name","typeAnnotation"],aliases:["Flow"],fields:{}}),(0,i.default)("GenericTypeAnnotation",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,i.default)("InterfaceExtends",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,i.default)("InterfaceDeclaration",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("IntersectionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,i.default)("MixedTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,i.default)("EmptyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,i.default)("NullableTypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,i.default)("NumericLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,i.default)("NumberTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,i.default)("StringLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,i.default)("StringTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,i.default)("ThisTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,i.default)("TupleTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,i.default)("TypeofTypeAnnotation",{visitor:["argument"],aliases:["Flow"],fields:{}}),(0,i.default)("TypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("OpaqueType",{visitor:["id","typeParameters","impltype","supertype"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,i.default)("TypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,i.default)("TypeCastExpression",{visitor:["expression","typeAnnotation"],aliases:["Flow","ExpressionWrapper","Expression"],fields:{}}),(0,i.default)("TypeParameter",{visitor:["bound"],aliases:["Flow"],fields:{}}),(0,i.default)("TypeParameterDeclaration",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,i.default)("TypeParameterInstantiation",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,i.default)("ObjectTypeAnnotation",{visitor:["properties","indexers","callProperties"],aliases:["Flow"],fields:{}}),(0,i.default)("ObjectTypeCallProperty",{visitor:["value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,i.default)("ObjectTypeIndexer",{visitor:["id","key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,i.default)("ObjectTypeProperty",{visitor:["key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,i.default)("ObjectTypeSpreadProperty",{visitor:["argument"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,i.default)("QualifiedTypeIdentifier",{visitor:["id","qualification"],aliases:["Flow"],fields:{}}),(0,i.default)("UnionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,i.default)("VoidTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}})},{"./index":173}],173:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":void 0===e?"undefined":(0,u.default)(e)}function s(e){function t(t,r,n){if(!(i(n)===e))throw new TypeError("Property "+r+" expected type of "+e+" but got "+i(n))}return t.type=e,t}r.__esModule=!0,r.DEPRECATED_KEYS=r.BUILDER_KEYS=r.NODE_FIELDS=r.ALIAS_KEYS=r.VISITOR_KEYS=void 0;var a=n(e("babel-runtime/core-js/get-iterator")),o=n(e("babel-runtime/core-js/json/stringify")),u=n(e("babel-runtime/helpers/typeof"));r.assertEach=function(e){function t(t,r,n){if(Array.isArray(n))for(var i=0;i=s.length)break;p=s[c++]}else{if((c=s.next()).done)break;p=c.value}var h=p;if(l.is(h,n)){i=!0;break}}if(!i)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,o.default)(r)+" but instead got "+(0,o.default)(n&&n.type))}for(var t=arguments.length,r=Array(t),n=0;n=u.length)break;h=u[p++]}else{if((p=u.next()).done)break;h=p.value}var f=h;if(i(n)===f||l.is(f,n)){s=!0;break}}if(!s)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,o.default)(r)+" but instead got "+(0,o.default)(n&&n.type))}for(var t=arguments.length,r=Array(t),n=0;n=e.length)break;i=e[n++]}else{if((n=e.next()).done)break;i=n.value}i.apply(void 0,arguments)}}for(var t=arguments.length,r=Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=t.inherits&&m[t.inherits]||{};t.fields=t.fields||r.fields||{},t.visitor=t.visitor||r.visitor||[],t.aliases=t.aliases||r.aliases||[],t.builder=t.builder||r.builder||t.visitor||[],t.deprecatedAlias&&(d[t.deprecatedAlias]=e);for(var n=t.visitor.concat(t.builder),o=Array.isArray(n),u=0,n=o?n:(0,a.default)(n);;){var l;if(o){if(u>=n.length)break;l=n[u++]}else{if((u=n.next()).done)break;l=u.value}var y=l;t.fields[y]=t.fields[y]||{}}for(var g in t.fields){var b=t.fields[g];-1===t.builder.indexOf(g)&&(b.optional=!0),void 0===b.default?b.default=null:b.validate||(b.validate=s(i(b.default)))}c[e]=t.visitor,f[e]=t.builder,h[e]=t.fields,p[e]=t.aliases,m[e]=t};var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("../index")),c=r.VISITOR_KEYS={},p=r.ALIAS_KEYS={},h=r.NODE_FIELDS={},f=r.BUILDER_KEYS={},d=r.DEPRECATED_KEYS={},m={}},{"../index":178,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/json/stringify":121,"babel-runtime/helpers/typeof":138}],174:[function(e,t,r){"use strict";e("./index"),e("./core"),e("./es2015"),e("./flow"),e("./jsx"),e("./misc"),e("./experimental")},{"./core":169,"./es2015":170,"./experimental":171,"./flow":172,"./index":173,"./jsx":175,"./misc":176}],175:[function(e,t,r){"use strict";var n=e("./index"),i=function(e){return e&&e.__esModule?e:{default:e}}(n);(0,i.default)("JSXAttribute",{visitor:["name","value"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,n.assertNodeType)("JSXIdentifier","JSXNamespacedName")},value:{optional:!0,validate:(0,n.assertNodeType)("JSXElement","StringLiteral","JSXExpressionContainer")}}}),(0,i.default)("JSXClosingElement",{visitor:["name"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,n.assertNodeType)("JSXIdentifier","JSXMemberExpression")}}}),(0,i.default)("JSXElement",{builder:["openingElement","closingElement","children","selfClosing"],visitor:["openingElement","children","closingElement"],aliases:["JSX","Immutable","Expression"],fields:{openingElement:{validate:(0,n.assertNodeType)("JSXOpeningElement")},closingElement:{optional:!0,validate:(0,n.assertNodeType)("JSXClosingElement")},children:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("JSXText","JSXExpressionContainer","JSXSpreadChild","JSXElement")))}}}),(0,i.default)("JSXEmptyExpression",{aliases:["JSX","Expression"]}),(0,i.default)("JSXExpressionContainer",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,n.assertNodeType)("Expression")}}}),(0,i.default)("JSXSpreadChild",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,n.assertNodeType)("Expression")}}}),(0,i.default)("JSXIdentifier",{builder:["name"],aliases:["JSX","Expression"],fields:{name:{validate:(0,n.assertValueType)("string")}}}),(0,i.default)("JSXMemberExpression",{visitor:["object","property"],aliases:["JSX","Expression"],fields:{object:{validate:(0,n.assertNodeType)("JSXMemberExpression","JSXIdentifier")},property:{validate:(0,n.assertNodeType)("JSXIdentifier")}}}),(0,i.default)("JSXNamespacedName",{visitor:["namespace","name"],aliases:["JSX"],fields:{namespace:{validate:(0,n.assertNodeType)("JSXIdentifier")},name:{validate:(0,n.assertNodeType)("JSXIdentifier")}}}),(0,i.default)("JSXOpeningElement",{builder:["name","attributes","selfClosing"],visitor:["name","attributes"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,n.assertNodeType)("JSXIdentifier","JSXMemberExpression")},selfClosing:{default:!1,validate:(0,n.assertValueType)("boolean")},attributes:{validate:(0,n.chain)((0,n.assertValueType)("array"),(0,n.assertEach)((0,n.assertNodeType)("JSXAttribute","JSXSpreadAttribute")))}}}),(0,i.default)("JSXSpreadAttribute",{visitor:["argument"],aliases:["JSX"],fields:{argument:{validate:(0,n.assertNodeType)("Expression")}}}),(0,i.default)("JSXText",{aliases:["JSX","Immutable"],builder:["value"],fields:{value:{validate:(0,n.assertValueType)("string")}}})},{"./index":173}],176:[function(e,t,r){"use strict";var n=e("./index"),i=function(e){return e&&e.__esModule?e:{default:e}}(n);(0,i.default)("Noop",{visitor:[]}),(0,i.default)("ParenthesizedExpression",{visitor:["expression"],aliases:["Expression","ExpressionWrapper"],fields:{expression:{validate:(0,n.assertNodeType)("Expression")}}})},{"./index":173}],177:[function(e,t,r){"use strict";function n(e){for(var t={},r={},s=[],a=[],o=0;o=0)){if(i.isAnyTypeAnnotation(u))return[u];if(i.isFlowBaseAnnotation(u))r[u.type]=u;else if(i.isUnionTypeAnnotation(u))s.indexOf(u.types)<0&&(e=e.concat(u.types),s.push(u.types));else if(i.isGenericTypeAnnotation(u)){var l=u.id.name;if(t[l]){var c=t[l];c.typeParameters?u.typeParameters&&(c.typeParameters.params=n(c.typeParameters.params.concat(u.typeParameters.params))):c=u.typeParameters}else t[l]=u}else a.push(u)}}for(var p in r)a.push(r[p]);for(var h in t)a.push(t[h]);return a}r.__esModule=!0,r.createUnionTypeAnnotation=function(e){var t=n(e);return 1===t.length?t[0]:i.unionTypeAnnotation(t)},r.removeTypeDuplicates=n,r.createTypeAnnotationBasedOnTypeof=function(e){if("string"===e)return i.stringTypeAnnotation();if("number"===e)return i.numberTypeAnnotation();if("undefined"===e)return i.voidTypeAnnotation();if("boolean"===e)return i.booleanTypeAnnotation();if("function"===e)return i.genericTypeAnnotation(i.identifier("Function"));if("object"===e)return i.genericTypeAnnotation(i.identifier("Object"));if("symbol"===e)return i.genericTypeAnnotation(i.identifier("Symbol"));throw new Error("Invalid typeof value")};var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("./index"))},{"./index":178}],178:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=F["is"+e];t||(t=F["is"+e]=function(t,r){return F.is(e,t,r)}),F["assert"+e]=function(r,n){if(n=n||{},!t(r,n))throw new Error("Expected type "+(0,b.default)(e)+" with option "+(0,b.default)(n))}}function s(e,t){if(e===t)return!0;if(F.ALIAS_KEYS[t])return!1;var r=F.FLIPPED_ALIAS_KEYS[t];if(r){if(r[0]===e)return!0;for(var n=r,i=Array.isArray(n),s=0,n=i?n:(0,y.default)(n);;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}if(e===a)return!0}}return!1}function a(e,t,r){if(e){var n=F.NODE_FIELDS[e.type];if(n){var i=n[t];i&&i.validate&&(i.optional&&null==r||i.validate(e,t,r))}}}function o(e){if(!e)return e;var t={};for(var r in e)"_"!==r[0]&&(t[r]=e[r]);return t}function u(e,t){p("trailingComments",e,t)}function l(e,t){p("leadingComments",e,t)}function c(e,t){p("innerComments",e,t)}function p(e,t,r){t&&r&&(t[e]=(0,_.default)([].concat(t[e],r[e]).filter(Boolean)))}function h(e){return!(!e||!w.VISITOR_KEYS[e.type])}function f(e,t,r){if(e){var n=F.VISITOR_KEYS[e.type];if(n){t(e,r=r||{});for(var i=n,s=Array.isArray(i),a=0,i=s?i:(0,y.default)(i);;){var o;if(s){if(a>=i.length)break;o=i[a++]}else{if((a=i.next()).done)break;o=a.value}var u=e[o];if(Array.isArray(u))for(var l=u,c=Array.isArray(l),p=0,l=c?l:(0,y.default)(l);;){var h;if(c){if(p>=l.length)break;h=l[p++]}else{if((p=l.next()).done)break;h=p.value}f(h,t,r)}else f(u,t,r)}}}}function d(e,t){for(var r=(t=t||{}).preserveComments?O:j,n=Array.isArray(r),i=0,r=n?r:(0,y.default)(r);;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var a=s;null!=e[a]&&(e[a]=void 0)}for(var o in e)"_"===o[0]&&null!=e[o]&&(e[o]=void 0);for(var u=(0,m.default)(e),l=Array.isArray(u),c=0,u=l?u:(0,y.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if((c=u.next()).done)break;p=c.value}e[p]=null}}r.__esModule=!0,r.createTypeAnnotationBasedOnTypeof=r.removeTypeDuplicates=r.createUnionTypeAnnotation=r.valueToNode=r.toBlock=r.toExpression=r.toStatement=r.toBindingIdentifierName=r.toIdentifier=r.toKeyAlias=r.toSequenceExpression=r.toComputedKey=r.isNodesEquivalent=r.isImmutable=r.isScope=r.isSpecifierDefault=r.isVar=r.isBlockScoped=r.isLet=r.isValidIdentifier=r.isReferenced=r.isBinding=r.getOuterBindingIdentifiers=r.getBindingIdentifiers=r.TYPES=r.react=r.DEPRECATED_KEYS=r.BUILDER_KEYS=r.NODE_FIELDS=r.ALIAS_KEYS=r.VISITOR_KEYS=r.NOT_LOCAL_BINDING=r.BLOCK_SCOPED_SYMBOL=r.INHERIT_KEYS=r.UNARY_OPERATORS=r.STRING_UNARY_OPERATORS=r.NUMBER_UNARY_OPERATORS=r.BOOLEAN_UNARY_OPERATORS=r.BINARY_OPERATORS=r.NUMBER_BINARY_OPERATORS=r.BOOLEAN_BINARY_OPERATORS=r.COMPARISON_BINARY_OPERATORS=r.EQUALITY_BINARY_OPERATORS=r.BOOLEAN_NUMBER_BINARY_OPERATORS=r.UPDATE_OPERATORS=r.LOGICAL_OPERATORS=r.COMMENT_KEYS=r.FOR_INIT_KEYS=r.FLATTENABLE_KEYS=r.STATEMENT_OR_BLOCK_KEYS=void 0;var m=n(e("babel-runtime/core-js/object/get-own-property-symbols")),y=n(e("babel-runtime/core-js/get-iterator")),g=n(e("babel-runtime/core-js/object/keys")),b=n(e("babel-runtime/core-js/json/stringify")),v=e("./constants");Object.defineProperty(r,"STATEMENT_OR_BLOCK_KEYS",{enumerable:!0,get:function(){return v.STATEMENT_OR_BLOCK_KEYS}}),Object.defineProperty(r,"FLATTENABLE_KEYS",{enumerable:!0,get:function(){return v.FLATTENABLE_KEYS}}),Object.defineProperty(r,"FOR_INIT_KEYS",{enumerable:!0,get:function(){return v.FOR_INIT_KEYS}}),Object.defineProperty(r,"COMMENT_KEYS",{enumerable:!0,get:function(){return v.COMMENT_KEYS}}),Object.defineProperty(r,"LOGICAL_OPERATORS",{enumerable:!0,get:function(){return v.LOGICAL_OPERATORS}}),Object.defineProperty(r,"UPDATE_OPERATORS",{enumerable:!0,get:function(){return v.UPDATE_OPERATORS}}),Object.defineProperty(r,"BOOLEAN_NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return v.BOOLEAN_NUMBER_BINARY_OPERATORS}}),Object.defineProperty(r,"EQUALITY_BINARY_OPERATORS",{enumerable:!0,get:function(){return v.EQUALITY_BINARY_OPERATORS}}),Object.defineProperty(r,"COMPARISON_BINARY_OPERATORS",{enumerable:!0,get:function(){return v.COMPARISON_BINARY_OPERATORS}}),Object.defineProperty(r,"BOOLEAN_BINARY_OPERATORS",{enumerable:!0,get:function(){return v.BOOLEAN_BINARY_OPERATORS}}),Object.defineProperty(r,"NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return v.NUMBER_BINARY_OPERATORS}}),Object.defineProperty(r,"BINARY_OPERATORS",{enumerable:!0,get:function(){return v.BINARY_OPERATORS}}),Object.defineProperty(r,"BOOLEAN_UNARY_OPERATORS",{enumerable:!0,get:function(){return v.BOOLEAN_UNARY_OPERATORS}}),Object.defineProperty(r,"NUMBER_UNARY_OPERATORS",{enumerable:!0,get:function(){return v.NUMBER_UNARY_OPERATORS}}),Object.defineProperty(r,"STRING_UNARY_OPERATORS",{enumerable:!0,get:function(){return v.STRING_UNARY_OPERATORS}}),Object.defineProperty(r,"UNARY_OPERATORS",{enumerable:!0,get:function(){return v.UNARY_OPERATORS}}),Object.defineProperty(r,"INHERIT_KEYS",{enumerable:!0,get:function(){return v.INHERIT_KEYS}}),Object.defineProperty(r,"BLOCK_SCOPED_SYMBOL",{enumerable:!0,get:function(){return v.BLOCK_SCOPED_SYMBOL}}),Object.defineProperty(r,"NOT_LOCAL_BINDING",{enumerable:!0,get:function(){return v.NOT_LOCAL_BINDING}}),r.is=function(e,t,r){return!!t&&!!s(t.type,e)&&(void 0===r||F.shallowEqual(t,r))},r.isType=s,r.validate=a,r.shallowEqual=function(e,t){for(var r=(0,g.default)(t),n=Array.isArray(r),i=0,r=n?r:(0,y.default)(r);;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var a=s;if(e[a]!==t[a])return!1}return!0},r.appendToMemberExpression=function(e,t,r){return e.object=F.memberExpression(e.object,e.property,e.computed),e.property=t,e.computed=!!r,e},r.prependToMemberExpression=function(e,t){return e.object=F.memberExpression(t,e.object),e},r.ensureBlock=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"body";return e[t]=F.toBlock(e[t],e)},r.clone=o,r.cloneWithoutLoc=function(e){var t=o(e);return delete t.loc,t},r.cloneDeep=function(e){if(!e)return e;var t={};for(var r in e)if("_"!==r[0]){var n=e[r];n&&(n.type?n=F.cloneDeep(n):Array.isArray(n)&&(n=n.map(F.cloneDeep))),t[r]=n}return t},r.buildMatchMemberExpression=function(e,t){var r=e.split(".");return function(e){if(!F.isMemberExpression(e))return!1;for(var n=[e],i=0;n.length;){var s=n.shift();if(t&&i===r.length)return!0;if(F.isIdentifier(s)){if(r[i]!==s.name)return!1}else{if(!F.isStringLiteral(s)){if(F.isMemberExpression(s)){if(s.computed&&!F.isStringLiteral(s.property))return!1;n.push(s.object),n.push(s.property);continue}return!1}if(r[i]!==s.value)return!1}if(++i>r.length)return!1}return!0}},r.removeComments=function(e){for(var t=F.COMMENT_KEYS,r=Array.isArray(t),n=0,t=r?t:(0,y.default)(t);;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}delete e[i]}return e},r.inheritsComments=function(e,t){return u(e,t),l(e,t),c(e,t),e},r.inheritTrailingComments=u,r.inheritLeadingComments=l,r.inheritInnerComments=c,r.inherits=function(e,t){if(!e||!t)return e;for(var r=F.INHERIT_KEYS.optional,n=Array.isArray(r),i=0,r=n?r:(0,y.default)(r);;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var a=s;null==e[a]&&(e[a]=t[a])}for(var o in t)"_"===o[0]&&(e[o]=t[o]);for(var u=F.INHERIT_KEYS.force,l=Array.isArray(u),c=0,u=l?u:(0,y.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if((c=u.next()).done)break;p=c.value}var h=p;e[h]=t[h]}return F.inheritsComments(e,t),e},r.assertNode=function(e){if(!h(e))throw new TypeError("Not a valid node "+(e&&e.type))},r.isNode=h,r.traverseFast=f,r.removeProperties=d,r.removePropertiesDeep=function(e,t){return f(e,d,t),e};var x=e("./retrievers");Object.defineProperty(r,"getBindingIdentifiers",{enumerable:!0,get:function(){return x.getBindingIdentifiers}}),Object.defineProperty(r,"getOuterBindingIdentifiers",{enumerable:!0,get:function(){return x.getOuterBindingIdentifiers}});var E=e("./validators");Object.defineProperty(r,"isBinding",{enumerable:!0,get:function(){return E.isBinding}}),Object.defineProperty(r,"isReferenced",{enumerable:!0,get:function(){return E.isReferenced}}),Object.defineProperty(r,"isValidIdentifier",{enumerable:!0,get:function(){return E.isValidIdentifier}}),Object.defineProperty(r,"isLet",{enumerable:!0,get:function(){return E.isLet}}),Object.defineProperty(r,"isBlockScoped",{enumerable:!0,get:function(){return E.isBlockScoped}}),Object.defineProperty(r,"isVar",{enumerable:!0,get:function(){return E.isVar}}),Object.defineProperty(r,"isSpecifierDefault",{enumerable:!0,get:function(){return E.isSpecifierDefault}}),Object.defineProperty(r,"isScope",{enumerable:!0,get:function(){return E.isScope}}),Object.defineProperty(r,"isImmutable",{enumerable:!0,get:function(){return E.isImmutable}}),Object.defineProperty(r,"isNodesEquivalent",{enumerable:!0,get:function(){return E.isNodesEquivalent}});var A=e("./converters");Object.defineProperty(r,"toComputedKey",{enumerable:!0,get:function(){return A.toComputedKey}}),Object.defineProperty(r,"toSequenceExpression",{enumerable:!0,get:function(){return A.toSequenceExpression}}),Object.defineProperty(r,"toKeyAlias",{enumerable:!0,get:function(){return A.toKeyAlias}}),Object.defineProperty(r,"toIdentifier",{enumerable:!0,get:function(){return A.toIdentifier}}),Object.defineProperty(r,"toBindingIdentifierName",{enumerable:!0,get:function(){return A.toBindingIdentifierName}}),Object.defineProperty(r,"toStatement",{enumerable:!0,get:function(){return A.toStatement}}),Object.defineProperty(r,"toExpression",{enumerable:!0,get:function(){return A.toExpression}}),Object.defineProperty(r,"toBlock",{enumerable:!0,get:function(){return A.toBlock}}),Object.defineProperty(r,"valueToNode",{enumerable:!0,get:function(){return A.valueToNode}});var D=e("./flow");Object.defineProperty(r,"createUnionTypeAnnotation",{enumerable:!0,get:function(){return D.createUnionTypeAnnotation}}),Object.defineProperty(r,"removeTypeDuplicates",{enumerable:!0,get:function(){return D.removeTypeDuplicates}}),Object.defineProperty(r,"createTypeAnnotationBasedOnTypeof",{enumerable:!0,get:function(){return D.createTypeAnnotationBasedOnTypeof}});var C=n(e("to-fast-properties")),S=n(e("lodash/clone")),_=n(e("lodash/uniq"));e("./definitions/init");var w=e("./definitions"),k=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("./react")),F=r;r.VISITOR_KEYS=w.VISITOR_KEYS,r.ALIAS_KEYS=w.ALIAS_KEYS,r.NODE_FIELDS=w.NODE_FIELDS,r.BUILDER_KEYS=w.BUILDER_KEYS,r.DEPRECATED_KEYS=w.DEPRECATED_KEYS,r.react=k;for(var T in F.VISITOR_KEYS)i(T);F.FLIPPED_ALIAS_KEYS={},(0,g.default)(F.ALIAS_KEYS).forEach(function(e){F.ALIAS_KEYS[e].forEach(function(t){(F.FLIPPED_ALIAS_KEYS[t]=F.FLIPPED_ALIAS_KEYS[t]||[]).push(e)})}),(0,g.default)(F.FLIPPED_ALIAS_KEYS).forEach(function(e){F[e.toUpperCase()+"_TYPES"]=F.FLIPPED_ALIAS_KEYS[e],i(e)});r.TYPES=(0,g.default)(F.VISITOR_KEYS).concat((0,g.default)(F.FLIPPED_ALIAS_KEYS)).concat((0,g.default)(F.DEPRECATED_KEYS));(0,g.default)(F.BUILDER_KEYS).forEach(function(e){function t(){if(arguments.length>r.length)throw new Error("t."+e+": Too many arguments passed. Received "+arguments.length+" but can receive no more than "+r.length);var t={};t.type=e;for(var n=0,i=r,s=Array.isArray(i),o=0,i=s?i:(0,y.default)(i);;){var u;if(s){if(o>=i.length)break;u=i[o++]}else{if((o=i.next()).done)break;u=o.value}var l=u,c=F.NODE_FIELDS[e][l],p=arguments[n++];void 0===p&&(p=(0,S.default)(c.default)),t[l]=p}for(var h in t)a(t,h,t[h]);return t}var r=F.BUILDER_KEYS[e];F[e]=t,F[e[0].toLowerCase()+e.slice(1)]=t});var P=function(e){function t(t){return function(){return console.trace("The node type "+e+" has been renamed to "+r),t.apply(this,arguments)}}var r=F.DEPRECATED_KEYS[e];F[e]=F[e[0].toLowerCase()+e.slice(1)]=t(F[r]),F["is"+e]=t(F["is"+r]),F["assert"+e]=t(F["assert"+r])};for(var B in F.DEPRECATED_KEYS)P(B);(0,C.default)(F),(0,C.default)(F.VISITOR_KEYS);var O=["tokens","start","end","loc","raw","rawValue"],j=F.COMMENT_KEYS.concat(["comments"]).concat(O)},{"./constants":167,"./converters":168,"./definitions":173,"./definitions/init":174,"./flow":177,"./react":179,"./retrievers":180,"./validators":181,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/json/stringify":121,"babel-runtime/core-js/object/get-own-property-symbols":126,"babel-runtime/core-js/object/keys":127,"lodash/clone":491,"lodash/uniq":540,"to-fast-properties":607}],179:[function(e,t,r){"use strict";function n(e,t){for(var r=e.value.split(/\r\n|\n|\r/),n=0,s=0;s=r.length)break;l=r[u++]}else{if((u=r.next()).done)break;l=u.value}var p=l;if((0,a.default)(e[p])!==(0,a.default)(t[p]))return!1;if(Array.isArray(e[p])){if(!Array.isArray(t[p]))return!1;if(e[p].length!==t[p].length)return!1;for(var h=0;h=0)return!0}else if(i===e)return!0}return!1},r.isReferenced=function(e,t){switch(t.type){case"BindExpression":return t.object===e||t.callee===e;case"MemberExpression":case"JSXMemberExpression":return!(t.property!==e||!t.computed)||t.object===e;case"MetaProperty":return!1;case"ObjectProperty":if(t.key===e)return t.computed;case"VariableDeclarator":return t.id!==e;case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":for(var r=t.params,n=Array.isArray(r),i=0,r=n?r:(0,o.default)(r);;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}if(s===e)return!1}return t.id!==e;case"ExportSpecifier":return!t.source&&t.local===e;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"JSXAttribute":return t.name!==e;case"ClassProperty":return t.key===e?t.computed:t.value===e;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ClassDeclaration":case"ClassExpression":return t.id!==e;case"ClassMethod":case"ObjectMethod":return t.key===e&&t.computed;case"LabeledStatement":return!1;case"CatchClause":return t.param!==e;case"RestElement":return!1;case"AssignmentExpression":case"AssignmentPattern":return t.right===e;case"ObjectPattern":case"ArrayPattern":return!1}return!0},r.isValidIdentifier=function(e){return"string"==typeof e&&!l.default.keyword.isReservedWordES6(e,!0)&&"await"!==e&&l.default.keyword.isIdentifierNameES6(e)},r.isLet=function(e){return c.isVariableDeclaration(e)&&("var"!==e.kind||e[p.BLOCK_SCOPED_SYMBOL])},r.isBlockScoped=function(e){return c.isFunctionDeclaration(e)||c.isClassDeclaration(e)||c.isLet(e)},r.isVar=function(e){return c.isVariableDeclaration(e,{kind:"var"})&&!e[p.BLOCK_SCOPED_SYMBOL]},r.isSpecifierDefault=function(e){return c.isImportDefaultSpecifier(e)||c.isIdentifier(e.imported||e.exported,{name:"default"})},r.isScope=function(e,t){return(!c.isBlockStatement(e)||!c.isFunction(t,{body:e}))&&c.isScopable(e)},r.isImmutable=function(e){return!!c.isType(e.type,"Immutable")||!!c.isIdentifier(e)&&"undefined"===e.name},r.isNodesEquivalent=i;var u=e("./retrievers"),l=n(e("esutils")),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(e("./index")),p=e("./constants")},{"./constants":167,"./index":178,"./retrievers":180,"babel-runtime/core-js/get-iterator":120,"babel-runtime/core-js/object/keys":127,"babel-runtime/helpers/typeof":138,esutils:185}],182:[function(e,t,r){arguments[4][25][0].apply(r,arguments)},{dup:25}],183:[function(e,t,r){arguments[4][26][0].apply(r,arguments)},{dup:26}],184:[function(e,t,r){arguments[4][27][0].apply(r,arguments)},{"./code":183,dup:27}],185:[function(e,t,r){arguments[4][28][0].apply(r,arguments)},{"./ast":182,"./code":183,"./keyword":184,dup:28}],186:[function(e,t,r){"use strict";function n(e){return e=e.split(" "),function(t){return e.indexOf(t)>=0}}function i(e,t){for(var r=65536,n=0;ne)return!1;if((r+=t[n+1])>=e)return!0}}function s(e){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&g.test(String.fromCharCode(e)):i(e,v)))}function a(e){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&b.test(String.fromCharCode(e)):i(e,v)||i(e,x))))}function o(e){return 10===e||13===e||8232===e||8233===e}function u(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}function l(e,t,r,n){return e.type=t,e.end=r,e.loc.end=n,this.processComment(e),e}function c(e){return e[e.length-1]}function p(e){return e&&"Property"===e.type&&"init"===e.kind&&!1===e.method}function h(e){return"JSXIdentifier"===e.type?e.name:"JSXNamespacedName"===e.type?e.namespace.name+":"+e.name.name:"JSXMemberExpression"===e.type?h(e.object)+"."+h(e.property):void 0}Object.defineProperty(r,"__esModule",{value:!0});var f={6:n("enum await"),strict:n("implements interface let package private protected public static yield"),strictBind:n("eval arguments")},d=n("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),m="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",y="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",g=new RegExp("["+m+"]"),b=new RegExp("["+m+y+"]");m=y=null;var v=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],x=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],E={sourceType:"script",sourceFilename:void 0,startLine:1,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,plugins:[],strictMode:null},A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},D=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},C=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},S=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},_=!0,w=function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};D(this,e),this.label=t,this.keyword=r.keyword,this.beforeExpr=!!r.beforeExpr,this.startsExpr=!!r.startsExpr,this.rightAssociative=!!r.rightAssociative,this.isLoop=!!r.isLoop,this.isAssign=!!r.isAssign,this.prefix=!!r.prefix,this.postfix=!!r.postfix,this.binop=r.binop||null,this.updateContext=null},k=function(e){function t(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return D(this,t),n.keyword=r,S(this,e.call(this,r,n))}return C(t,e),t}(w),F=function(e){function t(r,n){return D(this,t),S(this,e.call(this,r,{beforeExpr:_,binop:n}))}return C(t,e),t}(w),T={num:new w("num",{startsExpr:!0}),regexp:new w("regexp",{startsExpr:!0}),string:new w("string",{startsExpr:!0}),name:new w("name",{startsExpr:!0}),eof:new w("eof"),bracketL:new w("[",{beforeExpr:_,startsExpr:!0}),bracketR:new w("]"),braceL:new w("{",{beforeExpr:_,startsExpr:!0}),braceBarL:new w("{|",{beforeExpr:_,startsExpr:!0}),braceR:new w("}"),braceBarR:new w("|}"),parenL:new w("(",{beforeExpr:_,startsExpr:!0}),parenR:new w(")"),comma:new w(",",{beforeExpr:_}),semi:new w(";",{beforeExpr:_}),colon:new w(":",{beforeExpr:_}),doubleColon:new w("::",{beforeExpr:_}),dot:new w("."),question:new w("?",{beforeExpr:_}),arrow:new w("=>",{beforeExpr:_}),template:new w("template"),ellipsis:new w("...",{beforeExpr:_}),backQuote:new w("`",{startsExpr:!0}),dollarBraceL:new w("${",{beforeExpr:_,startsExpr:!0}),at:new w("@"),eq:new w("=",{beforeExpr:_,isAssign:!0}),assign:new w("_=",{beforeExpr:_,isAssign:!0}),incDec:new w("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new w("prefix",{beforeExpr:_,prefix:!0,startsExpr:!0}),logicalOR:new F("||",1),logicalAND:new F("&&",2),bitwiseOR:new F("|",3),bitwiseXOR:new F("^",4),bitwiseAND:new F("&",5),equality:new F("==/!=",6),relational:new F("",7),bitShift:new F("<>",8),plusMin:new w("+/-",{beforeExpr:_,binop:9,prefix:!0,startsExpr:!0}),modulo:new F("%",10),star:new F("*",10),slash:new F("/",10),exponent:new w("**",{beforeExpr:_,binop:11,rightAssociative:!0})},P={break:new k("break"),case:new k("case",{beforeExpr:_}),catch:new k("catch"),continue:new k("continue"),debugger:new k("debugger"),default:new k("default",{beforeExpr:_}),do:new k("do",{isLoop:!0,beforeExpr:_}),else:new k("else",{beforeExpr:_}),finally:new k("finally"),for:new k("for",{isLoop:!0}),function:new k("function",{startsExpr:!0}),if:new k("if"),return:new k("return",{beforeExpr:_}),switch:new k("switch"),throw:new k("throw",{beforeExpr:_}),try:new k("try"),var:new k("var"),let:new k("let"),const:new k("const"),while:new k("while",{isLoop:!0}),with:new k("with"),new:new k("new",{beforeExpr:_,startsExpr:!0}),this:new k("this",{startsExpr:!0}),super:new k("super",{startsExpr:!0}),class:new k("class"),extends:new k("extends",{beforeExpr:_}),export:new k("export"),import:new k("import",{startsExpr:!0}),yield:new k("yield",{beforeExpr:_,startsExpr:!0}),null:new k("null",{startsExpr:!0}),true:new k("true",{startsExpr:!0}),false:new k("false",{startsExpr:!0}),in:new k("in",{beforeExpr:_,binop:7}),instanceof:new k("instanceof",{beforeExpr:_,binop:7}),typeof:new k("typeof",{beforeExpr:_,prefix:!0,startsExpr:!0}),void:new k("void",{beforeExpr:_,prefix:!0,startsExpr:!0}),delete:new k("delete",{beforeExpr:_,prefix:!0,startsExpr:!0})};Object.keys(P).forEach(function(e){T["_"+e]=P[e]});var B=/\r\n?|\n|\u2028|\u2029/,O=new RegExp(B.source,"g"),j=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,N=function e(t,r,n,i){D(this,e),this.token=t,this.isExpr=!!r,this.preserveSpace=!!n,this.override=i},I={braceStatement:new N("{",!1),braceExpression:new N("{",!0),templateQuasi:new N("${",!0),parenStatement:new N("(",!1),parenExpression:new N("(",!0),template:new N("`",!0,!0,function(e){return e.readTmplToken()}),functionExpression:new N("function",!0)};T.parenR.updateContext=T.braceR.updateContext=function(){if(1!==this.state.context.length){var e=this.state.context.pop();e===I.braceStatement&&this.curContext()===I.functionExpression?(this.state.context.pop(),this.state.exprAllowed=!1):e===I.templateQuasi?this.state.exprAllowed=!0:this.state.exprAllowed=!e.isExpr}else this.state.exprAllowed=!0},T.name.updateContext=function(e){this.state.exprAllowed=!1,e!==T._let&&e!==T._const&&e!==T._var||B.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0)},T.braceL.updateContext=function(e){this.state.context.push(this.braceIsBlock(e)?I.braceStatement:I.braceExpression),this.state.exprAllowed=!0},T.dollarBraceL.updateContext=function(){this.state.context.push(I.templateQuasi),this.state.exprAllowed=!0},T.parenL.updateContext=function(e){var t=e===T._if||e===T._for||e===T._with||e===T._while;this.state.context.push(t?I.parenStatement:I.parenExpression),this.state.exprAllowed=!0},T.incDec.updateContext=function(){},T._function.updateContext=function(){this.curContext()!==I.braceStatement&&this.state.context.push(I.functionExpression),this.state.exprAllowed=!1},T.backQuote.updateContext=function(){this.curContext()===I.template?this.state.context.pop():this.state.context.push(I.template),this.state.exprAllowed=!1};var L=function e(t,r){D(this,e),this.line=t,this.column=r},M=function e(t,r){D(this,e),this.start=t,this.end=r},R=function(){function e(){D(this,e)}return e.prototype.init=function(e,t){return this.strict=!1!==e.strictMode&&"module"===e.sourceType,this.input=t,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=this.inPropertyName=this.inType=this.inClassProperty=this.noAnonFunctionType=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=e.startLine,this.type=T.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[I.braceStatement],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this.invalidTemplateEscapePosition=null,this.exportedIdentifiers=[],this},e.prototype.curPosition=function(){return new L(this.curLine,this.pos-this.lineStart)},e.prototype.clone=function(t){var r=new e;for(var n in this){var i=this[n];t&&"context"!==n||!Array.isArray(i)||(i=i.slice()),r[n]=i}return r},e}(),V={},U=["jsx","doExpressions","objectRestSpread","decorators","classProperties","exportExtensions","asyncGenerators","functionBind","functionSent","dynamicImport","flow"],q=function(e){function t(r,n){D(this,t),r=function(e){var t={};for(var r in E)t[r]=e&&r in e?e[r]:E[r];return t}(r);var i=S(this,e.call(this,r,n));return i.options=r,i.inModule="module"===i.options.sourceType,i.input=n,i.plugins=i.loadPlugins(i.options.plugins),i.filename=r.sourceFilename,0===i.state.pos&&"#"===i.input[0]&&"!"===i.input[1]&&i.skipLineComment(2),i}return C(t,e),t.prototype.isReservedWord=function(e){return"await"===e?this.inModule:f[6](e)},t.prototype.hasPlugin=function(e){return!!(this.plugins["*"]&&U.indexOf(e)>-1)||!!this.plugins[e]},t.prototype.extend=function(e,t){this[e]=t(this[e])},t.prototype.loadAllPlugins=function(){var e=this,t=Object.keys(V).filter(function(e){return"flow"!==e&&"estree"!==e});t.push("flow"),t.forEach(function(t){var r=V[t];r&&r(e)})},t.prototype.loadPlugins=function(e){if(e.indexOf("*")>=0)return this.loadAllPlugins(),{"*":!0};var t={};e.indexOf("flow")>=0&&(e=e.filter(function(e){return"flow"!==e})).push("flow"),e.indexOf("estree")>=0&&(e=e.filter(function(e){return"estree"!==e})).unshift("estree");for(var r=e,n=Array.isArray(r),i=0,r=n?r:r[Symbol.iterator]();;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var a=s;if(!t[a]){t[a]=!0;var o=V[a];o&&o(this)}}return t},t.prototype.parse=function(){var e=this.startNode(),t=this.startNode();return this.nextToken(),this.parseTopLevel(e,t)},t}(function(){function e(t,r){D(this,e),this.state=new R,this.state.init(t,r)}return e.prototype.next=function(){this.isLookahead||this.state.tokens.push(new function e(t){D(this,e),this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new M(t.startLoc,t.endLoc)}(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()},e.prototype.eat=function(e){return!!this.match(e)&&(this.next(),!0)},e.prototype.match=function(e){return this.state.type===e},e.prototype.isKeyword=function(e){return d(e)},e.prototype.lookahead=function(){var e=this.state;this.state=e.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var t=this.state.clone(!0);return this.state=e,t},e.prototype.setStrict=function(e){if(this.state.strict=e,this.match(T.num)||this.match(T.string)){for(this.state.pos=this.state.start;this.state.pos=this.input.length?this.finishToken(T.eof):e.override?e.override(this):this.readToken(this.fullCharCodeAtPos())},e.prototype.readToken=function(e){return s(e)||92===e?this.readWord():this.getTokenFromCode(e)},e.prototype.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.state.pos);if(e<=55295||e>=57344)return e;return(e<<10)+this.input.charCodeAt(this.state.pos+1)-56613888},e.prototype.pushComment=function(e,t,r,n,i,s){var a={type:e?"CommentBlock":"CommentLine",value:t,start:r,end:n,loc:new M(i,s)};this.isLookahead||(this.state.tokens.push(a),this.state.comments.push(a),this.addComment(a))},e.prototype.skipBlockComment=function(){var e=this.state.curPosition(),t=this.state.pos,r=this.input.indexOf("*/",this.state.pos+=2);-1===r&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=r+2,O.lastIndex=t;for(var n=void 0;(n=O.exec(this.input))&&n.index8&&e<14||e>=5760&&j.test(String.fromCharCode(e))))break e;++this.state.pos}}},e.prototype.finishToken=function(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var r=this.state.type;this.state.type=e,this.state.value=t,this.updateContext(r)},e.prototype.readToken_dot=function(){var e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.state.pos+2);return 46===e&&46===t?(this.state.pos+=3,this.finishToken(T.ellipsis)):(++this.state.pos,this.finishToken(T.dot))},e.prototype.readToken_slash=function(){if(this.state.exprAllowed)return++this.state.pos,this.readRegexp();return 61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(T.assign,2):this.finishOp(T.slash,1)},e.prototype.readToken_mult_modulo=function(e){var t=42===e?T.star:T.modulo,r=1,n=this.input.charCodeAt(this.state.pos+1);return 42===n&&(r++,n=this.input.charCodeAt(this.state.pos+2),t=T.exponent),61===n&&(r++,t=T.assign),this.finishOp(t,r)},e.prototype.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?this.finishOp(124===e?T.logicalOR:T.logicalAND,2):61===t?this.finishOp(T.assign,2):124===e&&125===t&&this.hasPlugin("flow")?this.finishOp(T.braceBarR,2):this.finishOp(124===e?T.bitwiseOR:T.bitwiseAND,1)},e.prototype.readToken_caret=function(){return 61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(T.assign,2):this.finishOp(T.bitwiseXOR,1)},e.prototype.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?45===t&&62===this.input.charCodeAt(this.state.pos+2)&&B.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(T.incDec,2):61===t?this.finishOp(T.assign,2):this.finishOp(T.plusMin,1)},e.prototype.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.state.pos+1),r=1;return t===e?(r=62===e&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+r)?this.finishOp(T.assign,r+1):this.finishOp(T.bitShift,r)):33===t&&60===e&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(r=2),this.finishOp(T.relational,r))},e.prototype.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.state.pos+1);return 61===t?this.finishOp(T.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===e&&62===t?(this.state.pos+=2,this.finishToken(T.arrow)):this.finishOp(61===e?T.eq:T.prefix,1)},e.prototype.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(T.parenL);case 41:return++this.state.pos,this.finishToken(T.parenR);case 59:return++this.state.pos,this.finishToken(T.semi);case 44:return++this.state.pos,this.finishToken(T.comma);case 91:return++this.state.pos,this.finishToken(T.bracketL);case 93:return++this.state.pos,this.finishToken(T.bracketR);case 123:return this.hasPlugin("flow")&&124===this.input.charCodeAt(this.state.pos+1)?this.finishOp(T.braceBarL,2):(++this.state.pos,this.finishToken(T.braceL));case 125:return++this.state.pos,this.finishToken(T.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(T.doubleColon,2):(++this.state.pos,this.finishToken(T.colon));case 63:return++this.state.pos,this.finishToken(T.question);case 64:return++this.state.pos,this.finishToken(T.at);case 96:return++this.state.pos,this.finishToken(T.backQuote);case 48:var t=this.input.charCodeAt(this.state.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(T.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+u(e)+"'")},e.prototype.finishOp=function(e,t){var r=this.input.slice(this.state.pos,this.state.pos+t);return this.state.pos+=t,this.finishToken(e,r)},e.prototype.readRegexp=function(){for(var e=this.state.pos,t=void 0,r=void 0;;){this.state.pos>=this.input.length&&this.raise(e,"Unterminated regular expression");var n=this.input.charAt(this.state.pos);if(B.test(n)&&this.raise(e,"Unterminated regular expression"),t)t=!1;else{if("["===n)r=!0;else if("]"===n&&r)r=!1;else if("/"===n&&!r)break;t="\\"===n}++this.state.pos}var i=this.input.slice(e,this.state.pos);++this.state.pos;var s=this.readWord1();if(s){/^[gmsiyu]*$/.test(s)||this.raise(e,"Invalid regular expression flag")}return this.finishToken(T.regexp,{pattern:i,flags:s})},e.prototype.readInt=function(e,t){for(var r=this.state.pos,n=0,i=0,s=null==t?1/0:t;i=97?a-97+10:a>=65?a-65+10:a>=48&&a<=57?a-48:1/0)>=e)break;++this.state.pos,n=n*e+o}return this.state.pos===r||null!=t&&this.state.pos-r!==t?null:n},e.prototype.readRadixNumber=function(e){this.state.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.state.start+2,"Expected number in radix "+e),s(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(T.num,t)},e.prototype.readNumber=function(e){var t=this.state.pos,r=48===this.input.charCodeAt(t),n=!1;e||null!==this.readInt(10)||this.raise(t,"Invalid number"),r&&this.state.pos==t+1&&(r=!1);var i=this.input.charCodeAt(this.state.pos);46!==i||r||(++this.state.pos,this.readInt(10),n=!0,i=this.input.charCodeAt(this.state.pos)),69!==i&&101!==i||r||(43!==(i=this.input.charCodeAt(++this.state.pos))&&45!==i||++this.state.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),n=!0),s(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var a=this.input.slice(t,this.state.pos),o=void 0;return n?o=parseFloat(a):r&&1!==a.length?this.state.strict?this.raise(t,"Invalid number"):o=/[89]/.test(a)?parseInt(a,10):parseInt(a,8):o=parseInt(a,10),this.finishToken(T.num,o)},e.prototype.readCodePoint=function(e){var t=void 0;if(123===this.input.charCodeAt(this.state.pos)){var r=++this.state.pos;if(t=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos,e),++this.state.pos,null===t)--this.state.invalidTemplateEscapePosition;else if(t>1114111){if(!e)return this.state.invalidTemplateEscapePosition=r-2,null;this.raise(r,"Code point out of bounds")}}else t=this.readHexChar(4,e);return t},e.prototype.readString=function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var n=this.input.charCodeAt(this.state.pos);if(n===e)break;92===n?(t+=this.input.slice(r,this.state.pos),t+=this.readEscapedChar(!1),r=this.state.pos):(o(n)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return t+=this.input.slice(r,this.state.pos++),this.finishToken(T.string,t)},e.prototype.readTmplToken=function(){for(var e="",t=this.state.pos,r=!1;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var n=this.input.charCodeAt(this.state.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(T.template)?36===n?(this.state.pos+=2,this.finishToken(T.dollarBraceL)):(++this.state.pos,this.finishToken(T.backQuote)):(e+=this.input.slice(t,this.state.pos),this.finishToken(T.template,r?null:e));if(92===n){e+=this.input.slice(t,this.state.pos);var i=this.readEscapedChar(!0);null===i?r=!0:e+=i,t=this.state.pos}else if(o(n)){switch(e+=this.input.slice(t,this.state.pos),++this.state.pos,n){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}++this.state.curLine,this.state.lineStart=this.state.pos,t=this.state.pos}else++this.state.pos}},e.prototype.readEscapedChar=function(e){var t=!e,r=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,r){case 110:return"\n";case 114:return"\r";case 120:var n=this.readHexChar(2,t);return null===n?null:String.fromCharCode(n);case 117:var i=this.readCodePoint(t);return null===i?null:u(i);case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(r>=48&&r<=55){var s=this.state.pos-1,a=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],o=parseInt(a,8);if(o>255&&(a=a.slice(0,-1),o=parseInt(a,8)),o>0){if(e)return this.state.invalidTemplateEscapePosition=s,null;this.state.strict?this.raise(s,"Octal literal in strict mode"):this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=s)}return this.state.pos+=a.length-1,String.fromCharCode(o)}return String.fromCharCode(r)}},e.prototype.readHexChar=function(e,t){var r=this.state.pos,n=this.readInt(16,e);return null===n&&(t?this.raise(r,"Bad character escape sequence"):(this.state.pos=r-1,this.state.invalidTemplateEscapePosition=r-1)),n},e.prototype.readWord1=function(){this.state.containsEsc=!1;for(var e="",t=!0,r=this.state.pos;this.state.pos1&&void 0!==arguments[1]?arguments[1]:"Unexpected token";t&&"object"===(void 0===t?"undefined":A(t))&&t.label&&(t="Unexpected token, expected "+t.label),this.raise(null!=e?e:this.state.start,t)};var X=q.prototype;X.parseTopLevel=function(e,t){return t.sourceType=this.options.sourceType,this.parseBlockBody(t,!0,!0,T.eof),e.program=this.finishNode(t,"Program"),e.comments=this.state.comments,e.tokens=this.state.tokens,this.finishNode(e,"File")};var W={kind:"loop"},J={kind:"switch"};X.stmtToDirective=function(e){var t=e.expression,r=this.startNodeAt(t.start,t.loc.start),n=this.startNodeAt(e.start,e.loc.start),i=this.input.slice(t.start,t.end),s=r.value=i.slice(1,-1);return this.addExtra(r,"raw",i),this.addExtra(r,"rawValue",s),n.value=this.finishNodeAt(r,"DirectiveLiteral",t.end,t.loc.end),this.finishNodeAt(n,"Directive",e.end,e.loc.end)},X.parseStatement=function(e,t){this.match(T.at)&&this.parseDecorators(!0);var r=this.state.type,n=this.startNode();switch(r){case T._break:case T._continue:return this.parseBreakContinueStatement(n,r.keyword);case T._debugger:return this.parseDebuggerStatement(n);case T._do:return this.parseDoStatement(n);case T._for:return this.parseForStatement(n);case T._function:return e||this.unexpected(),this.parseFunctionStatement(n);case T._class:return e||this.unexpected(),this.parseClass(n,!0);case T._if:return this.parseIfStatement(n);case T._return:return this.parseReturnStatement(n);case T._switch:return this.parseSwitchStatement(n);case T._throw:return this.parseThrowStatement(n);case T._try:return this.parseTryStatement(n);case T._let:case T._const:e||this.unexpected();case T._var:return this.parseVarStatement(n,r);case T._while:return this.parseWhileStatement(n);case T._with:return this.parseWithStatement(n);case T.braceL:return this.parseBlock();case T.semi:return this.parseEmptyStatement(n);case T._export:case T._import:if(this.hasPlugin("dynamicImport")&&this.lookahead().type===T.parenL)break;return this.options.allowImportExportEverywhere||(t||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.state.start,"'import' and 'export' may appear only with 'sourceType: \"module\"'")),r===T._import?this.parseImport(n):this.parseExport(n);case T.name:if("async"===this.state.value){var i=this.state.clone();if(this.next(),this.match(T._function)&&!this.canInsertSemicolon())return this.expect(T._function),this.parseFunction(n,!0,!1,!0);this.state=i}}var s=this.state.value,a=this.parseExpression();return r===T.name&&"Identifier"===a.type&&this.eat(T.colon)?this.parseLabeledStatement(n,s,a):this.parseExpressionStatement(n,a)},X.takeDecorators=function(e){this.state.decorators.length&&(e.decorators=this.state.decorators,this.state.decorators=[])},X.parseDecorators=function(e){for(;this.match(T.at);){var t=this.parseDecorator();this.state.decorators.push(t)}e&&this.match(T._export)||this.match(T._class)||this.raise(this.state.start,"Leading decorators must be attached to a class declaration")},X.parseDecorator=function(){this.hasPlugin("decorators")||this.unexpected();var e=this.startNode();return this.next(),e.expression=this.parseMaybeAssign(),this.finishNode(e,"Decorator")},X.parseBreakContinueStatement=function(e,t){var r="break"===t;this.next(),this.isLineTerminator()?e.label=null:this.match(T.name)?(e.label=this.parseIdentifier(),this.semicolon()):this.unexpected();var n=void 0;for(n=0;n=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}a.name===t&&this.raise(r.start,"Label '"+t+"' is already declared")}for(var o=this.state.type.isLoop?"loop":this.match(T._switch)?"switch":null,u=this.state.labels.length-1;u>=0;u--){var l=this.state.labels[u];if(l.statementStart!==e.start)break;l.statementStart=this.state.start,l.kind=o}return this.state.labels.push({name:t,kind:o,statementStart:this.state.start}),e.body=this.parseStatement(!0),this.state.labels.pop(),e.label=r,this.finishNode(e,"LabeledStatement")},X.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},X.parseBlock=function(e){var t=this.startNode();return this.expect(T.braceL),this.parseBlockBody(t,e,!1,T.braceR),this.finishNode(t,"BlockStatement")},X.isValidDirective=function(e){return"ExpressionStatement"===e.type&&"StringLiteral"===e.expression.type&&!e.expression.extra.parenthesized},X.parseBlockBody=function(e,t,r,n){e.body=[],e.directives=[];for(var i=!1,s=void 0,a=void 0;!this.eat(n);){i||!this.state.containsOctal||a||(a=this.state.octalPosition);var o=this.parseStatement(!0,r);if(t&&!i&&this.isValidDirective(o)){var u=this.stmtToDirective(o);e.directives.push(u),void 0===s&&"use strict"===u.value.value&&(s=this.state.strict,this.setStrict(!0),a&&this.raise(a,"Octal literal in strict mode"))}else i=!0,e.body.push(o)}!1===s&&this.setStrict(!1)},X.parseFor=function(e,t){return e.init=t,this.expect(T.semi),e.test=this.match(T.semi)?null:this.parseExpression(),this.expect(T.semi),e.update=this.match(T.parenR)?null:this.parseExpression(),this.expect(T.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"ForStatement")},X.parseForIn=function(e,t,r){var n=void 0;return r?(this.eatContextual("of"),n="ForAwaitStatement"):(n=this.match(T._in)?"ForInStatement":"ForOfStatement",this.next()),e.left=t,e.right=this.parseExpression(),this.expect(T.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,n)},X.parseVar=function(e,t,r){for(e.declarations=[],e.kind=r.keyword;;){var n=this.startNode();if(this.parseVarHead(n),this.eat(T.eq)?n.init=this.parseMaybeAssign(t):r!==T._const||this.match(T._in)||this.isContextual("of")?"Identifier"===n.id.type||t&&(this.match(T._in)||this.isContextual("of"))?n.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(n,"VariableDeclarator")),!this.eat(T.comma))break}return e},X.parseVarHead=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0,void 0,"variable declaration")},X.parseFunction=function(e,t,r,n,i){var s=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(e,n),this.match(T.star)&&(e.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(e.generator=!0,this.next())),!t||i||this.match(T.name)||this.match(T._yield)||this.unexpected(),(this.match(T.name)||this.match(T._yield))&&(e.id=this.parseBindingIdentifier()),this.parseFunctionParams(e),this.parseFunctionBody(e,r),this.state.inMethod=s,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},X.parseFunctionParams=function(e){this.expect(T.parenL),e.params=this.parseBindingList(T.parenR)},X.parseClass=function(e,t,r){return this.next(),this.takeDecorators(e),this.parseClassId(e,t,r),this.parseClassSuper(e),this.parseClassBody(e),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},X.isClassProperty=function(){return this.match(T.eq)||this.match(T.semi)||this.match(T.braceR)},X.isClassMethod=function(){return this.match(T.parenL)},X.isNonstaticConstructor=function(e){return!(e.computed||e.static||"constructor"!==e.key.name&&"constructor"!==e.key.value)},X.parseClassBody=function(e){var t=this.state.strict;this.state.strict=!0;var r=!1,n=!1,i=[],s=this.startNode();for(s.body=[],this.expect(T.braceL);!this.eat(T.braceR);)if(this.eat(T.semi))i.length>0&&this.raise(this.state.lastTokEnd,"Decorators must not be followed by a semicolon");else if(this.match(T.at))i.push(this.parseDecorator());else{var a=this.startNode();if(i.length&&(a.decorators=i,i=[]),a.static=!1,this.match(T.name)&&"static"===this.state.value){var o=this.parseIdentifier(!0);if(this.isClassMethod()){a.kind="method",a.computed=!1,a.key=o,this.parseClassMethod(s,a,!1,!1);continue}if(this.isClassProperty()){a.computed=!1,a.key=o,s.body.push(this.parseClassProperty(a));continue}a.static=!0}if(this.eat(T.star))a.kind="method",this.parsePropertyName(a),this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Constructor can't be a generator"),a.computed||!a.static||"prototype"!==a.key.name&&"prototype"!==a.key.value||this.raise(a.key.start,"Classes may not have static property named prototype"),this.parseClassMethod(s,a,!0,!1);else{var u=this.match(T.name),l=this.parsePropertyName(a);if(a.computed||!a.static||"prototype"!==a.key.name&&"prototype"!==a.key.value||this.raise(a.key.start,"Classes may not have static property named prototype"),this.isClassMethod())this.isNonstaticConstructor(a)?(n?this.raise(l.start,"Duplicate constructor in the same class"):a.decorators&&this.raise(a.start,"You can't attach decorators to a class constructor"),n=!0,a.kind="constructor"):a.kind="method",this.parseClassMethod(s,a,!1,!1);else if(this.isClassProperty())this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Classes may not have a non-static field named 'constructor'"),s.body.push(this.parseClassProperty(a));else if(u&&"async"===l.name&&!this.isLineTerminator()){var c=this.hasPlugin("asyncGenerators")&&this.eat(T.star);a.kind="method",this.parsePropertyName(a),this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Constructor can't be an async function"),this.parseClassMethod(s,a,c,!0)}else!u||"get"!==l.name&&"set"!==l.name||this.isLineTerminator()&&this.match(T.star)?this.hasPlugin("classConstructorCall")&&u&&"call"===l.name&&this.match(T.name)&&"constructor"===this.state.value?(r?this.raise(a.start,"Duplicate constructor call in the same class"):a.decorators&&this.raise(a.start,"You can't attach decorators to a class constructor"),r=!0,a.kind="constructorCall",this.parsePropertyName(a),this.parseClassMethod(s,a,!1,!1)):this.isLineTerminator()?(this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Classes may not have a non-static field named 'constructor'"),s.body.push(this.parseClassProperty(a))):this.unexpected():(a.kind=l.name,this.parsePropertyName(a),this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Constructor can't have get/set modifier"),this.parseClassMethod(s,a,!1,!1),this.checkGetterSetterParamCount(a))}}i.length&&this.raise(this.state.start,"You have trailing decorators with no method"),e.body=this.finishNode(s,"ClassBody"),this.state.strict=t},X.parseClassProperty=function(e){return this.state.inClassProperty=!0,this.match(T.eq)?(this.hasPlugin("classProperties")||this.unexpected(),this.next(),e.value=this.parseMaybeAssign()):e.value=null,this.semicolon(),this.state.inClassProperty=!1,this.finishNode(e,"ClassProperty")},X.parseClassMethod=function(e,t,r,n){this.parseMethod(t,r,n),e.body.push(this.finishNode(t,"ClassMethod"))},X.parseClassId=function(e,t,r){this.match(T.name)?e.id=this.parseIdentifier():r||!t?e.id=null:this.unexpected()},X.parseClassSuper=function(e){e.superClass=this.eat(T._extends)?this.parseExprSubscripts():null},X.parseExport=function(e){if(this.next(),this.match(T.star)){var t=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration");t.exported=this.parseIdentifier(),e.specifiers=[this.finishNode(t,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(e),this.parseExportFrom(e,!0)}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var r=this.startNode();if(r.exported=this.parseIdentifier(!0),e.specifiers=[this.finishNode(r,"ExportDefaultSpecifier")],this.match(T.comma)&&this.lookahead().type===T.star){this.expect(T.comma);var n=this.startNode();this.expect(T.star),this.expectContextual("as"),n.exported=this.parseIdentifier(),e.specifiers.push(this.finishNode(n,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(e);this.parseExportFrom(e,!0)}else{if(this.eat(T._default)){var i=this.startNode(),s=!1;return this.eat(T._function)?i=this.parseFunction(i,!0,!1,!1,!0):this.match(T._class)?i=this.parseClass(i,!0,!0):(s=!0,i=this.parseMaybeAssign()),e.declaration=i,s&&this.semicolon(),this.checkExport(e,!0,!0),this.finishNode(e,"ExportDefaultDeclaration")}this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.declaration=this.parseExportDeclaration(e)):(e.declaration=null,e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e))}return this.checkExport(e,!0),this.finishNode(e,"ExportNamedDeclaration")},X.parseExportDeclaration=function(){return this.parseStatement(!0)},X.isExportDefaultSpecifier=function(){if(this.match(T.name))return"async"!==this.state.value;if(!this.match(T._default))return!1;var e=this.lookahead();return e.type===T.comma||e.type===T.name&&"from"===e.value},X.parseExportSpecifiersMaybe=function(e){this.eat(T.comma)&&(e.specifiers=e.specifiers.concat(this.parseExportSpecifiers()))},X.parseExportFrom=function(e,t){this.eatContextual("from")?(e.source=this.match(T.string)?this.parseExprAtom():this.unexpected(),this.checkExport(e)):t?this.unexpected():e.source=null,this.semicolon()},X.shouldParseExportDeclaration=function(){return"var"===this.state.type.keyword||"const"===this.state.type.keyword||"let"===this.state.type.keyword||"function"===this.state.type.keyword||"class"===this.state.type.keyword||this.isContextual("async")},X.checkExport=function(e,t,r){if(t)if(r)this.checkDuplicateExports(e,"default");else if(e.specifiers&&e.specifiers.length)for(var n=e.specifiers,i=Array.isArray(n),s=0,n=i?n:n[Symbol.iterator]();;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}var o=a;this.checkDuplicateExports(o,o.exported.name)}else if(e.declaration)if("FunctionDeclaration"===e.declaration.type||"ClassDeclaration"===e.declaration.type)this.checkDuplicateExports(e,e.declaration.id.name);else if("VariableDeclaration"===e.declaration.type)for(var u=e.declaration.declarations,l=Array.isArray(u),c=0,u=l?u:u[Symbol.iterator]();;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if((c=u.next()).done)break;p=c.value}var h=p;this.checkDeclaration(h.id)}if(this.state.decorators.length){var f=e.declaration&&("ClassDeclaration"===e.declaration.type||"ClassExpression"===e.declaration.type);e.declaration&&f||this.raise(e.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(e.declaration)}},X.checkDeclaration=function(e){if("ObjectPattern"===e.type)for(var t=e.properties,r=Array.isArray(t),n=0,t=r?t:t[Symbol.iterator]();;){var i;if(r){if(n>=t.length)break;i=t[n++]}else{if((n=t.next()).done)break;i=n.value}var s=i;this.checkDeclaration(s)}else if("ArrayPattern"===e.type)for(var a=e.elements,o=Array.isArray(a),u=0,a=o?a:a[Symbol.iterator]();;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if((u=a.next()).done)break;l=u.value}var c=l;c&&this.checkDeclaration(c)}else"ObjectProperty"===e.type?this.checkDeclaration(e.value):"RestElement"===e.type||"RestProperty"===e.type?this.checkDeclaration(e.argument):"Identifier"===e.type&&this.checkDuplicateExports(e,e.name)},X.checkDuplicateExports=function(e,t){this.state.exportedIdentifiers.indexOf(t)>-1&&this.raiseDuplicateExportError(e,t),this.state.exportedIdentifiers.push(t)},X.raiseDuplicateExportError=function(e,t){this.raise(e.start,"default"===t?"Only one default export allowed per module.":"`"+t+"` has already been exported. Exported identifiers must be unique.")},X.parseExportSpecifiers=function(){var e=[],t=!0,r=void 0;for(this.expect(T.braceL);!this.eat(T.braceR);){if(t)t=!1;else if(this.expect(T.comma),this.eat(T.braceR))break;var n=this.match(T._default);n&&!r&&(r=!0);var i=this.startNode();i.local=this.parseIdentifier(n),i.exported=this.eatContextual("as")?this.parseIdentifier(!0):i.local.__clone(),e.push(this.finishNode(i,"ExportSpecifier"))}return r&&!this.isContextual("from")&&this.unexpected(),e},X.parseImport=function(e){return this.eat(T._import),this.match(T.string)?(e.specifiers=[],e.source=this.parseExprAtom()):(e.specifiers=[],this.parseImportSpecifiers(e),this.expectContextual("from"),e.source=this.match(T.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},X.parseImportSpecifiers=function(e){var t=!0;if(this.match(T.name)){var r=this.state.start,n=this.state.startLoc;if(e.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),r,n)),!this.eat(T.comma))return}if(this.match(T.star)){var i=this.startNode();return this.next(),this.expectContextual("as"),i.local=this.parseIdentifier(),this.checkLVal(i.local,!0,void 0,"import namespace specifier"),void e.specifiers.push(this.finishNode(i,"ImportNamespaceSpecifier"))}for(this.expect(T.braceL);!this.eat(T.braceR);){if(t)t=!1;else if(this.eat(T.colon)&&this.unexpected(null,"ES2015 named imports do not destructure. Use another statement for destructuring after the import."),this.expect(T.comma),this.eat(T.braceR))break;this.parseImportSpecifier(e)}},X.parseImportSpecifier=function(e){var t=this.startNode();t.imported=this.parseIdentifier(!0),this.eatContextual("as")?t.local=this.parseIdentifier():(this.checkReservedWord(t.imported.name,t.start,!0,!0),t.local=t.imported.__clone()),this.checkLVal(t.local,!0,void 0,"import specifier"),e.specifiers.push(this.finishNode(t,"ImportSpecifier"))},X.parseImportSpecifierDefault=function(e,t,r){var n=this.startNodeAt(t,r);return n.local=e,this.checkLVal(n.local,!0,void 0,"default import specifier"),this.finishNode(n,"ImportDefaultSpecifier")};var z=q.prototype;z.toAssignable=function(e,t,r){if(e)switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var n=e.properties,i=Array.isArray(n),s=0,n=i?n:n[Symbol.iterator]();;){var a;if(i){if(s>=n.length)break;a=n[s++]}else{if((s=n.next()).done)break;a=s.value}var o=a;"ObjectMethod"===o.type?"get"===o.kind||"set"===o.kind?this.raise(o.key.start,"Object pattern can't contain getter or setter"):this.raise(o.key.start,"Object pattern can't contain methods"):this.toAssignable(o,t,"object destructuring pattern")}break;case"ObjectProperty":this.toAssignable(e.value,t,r);break;case"SpreadProperty":e.type="RestProperty";var u=e.argument;this.toAssignable(u,t,r);break;case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,t,r);break;case"AssignmentExpression":"="===e.operator?(e.type="AssignmentPattern",delete e.operator):this.raise(e.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!t)break;default:var l="Invalid left-hand side"+(r?" in "+r:"expression");this.raise(e.start,l)}return e},z.toAssignableList=function(e,t,r){var n=e.length;if(n){var i=e[n-1];if(i&&"RestElement"===i.type)--n;else if(i&&"SpreadElement"===i.type){i.type="RestElement";var s=i.argument;this.toAssignable(s,t,r),"Identifier"!==s.type&&"MemberExpression"!==s.type&&"ArrayPattern"!==s.type&&this.unexpected(s.start),--n}}for(var a=0;a=s.length)break;u=s[o++]}else{if((o=s.next()).done)break;u=o.value}var l=u;"ObjectProperty"===l.type&&(l=l.value),this.checkLVal(l,t,r,"object destructuring pattern")}break;case"ArrayPattern":for(var c=e.elements,p=Array.isArray(c),h=0,c=p?c:c[Symbol.iterator]();;){var f;if(p){if(h>=c.length)break;f=c[h++]}else{if((h=c.next()).done)break;f=h.value}var d=f;d&&this.checkLVal(d,t,r,"array destructuring pattern")}break;case"AssignmentPattern":this.checkLVal(e.left,t,r,"assignment pattern");break;case"RestProperty":this.checkLVal(e.argument,t,r,"rest property");break;case"RestElement":this.checkLVal(e.argument,t,r,"rest element");break;default:var m=(t?"Binding invalid":"Invalid")+" left-hand side"+(n?" in "+n:"expression");this.raise(e.start,m)}};var Y=q.prototype;Y.checkPropClash=function(e,t){if(!e.computed&&!e.kind){var r=e.key;"__proto__"===("Identifier"===r.type?r.name:String(r.value))&&(t.proto&&this.raise(r.start,"Redefinition of __proto__ property"),t.proto=!0)}},Y.getExpression=function(){this.nextToken();var e=this.parseExpression();return this.match(T.eof)||this.unexpected(),e},Y.parseExpression=function(e,t){var r=this.state.start,n=this.state.startLoc,i=this.parseMaybeAssign(e,t);if(this.match(T.comma)){var s=this.startNodeAt(r,n);for(s.expressions=[i];this.eat(T.comma);)s.expressions.push(this.parseMaybeAssign(e,t));return this.toReferencedList(s.expressions),this.finishNode(s,"SequenceExpression")}return i},Y.parseMaybeAssign=function(e,t,r,n){var i=this.state.start,s=this.state.startLoc;if(this.match(T._yield)&&this.state.inGenerator){var a=this.parseYield();return r&&(a=r.call(this,a,i,s)),a}var o=void 0;t?o=!1:(t={start:0},o=!0),(this.match(T.parenL)||this.match(T.name))&&(this.state.potentialArrowAt=this.state.start);var u=this.parseMaybeConditional(e,t,n);if(r&&(u=r.call(this,u,i,s)),this.state.type.isAssign){var l=this.startNodeAt(i,s);if(l.operator=this.state.value,l.left=this.match(T.eq)?this.toAssignable(u,void 0,"assignment expression"):u,t.start=0,this.checkLVal(u,void 0,void 0,"assignment expression"),u.extra&&u.extra.parenthesized){var c=void 0;"ObjectPattern"===u.type?c="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===u.type&&(c="`([a]) = 0` use `([a] = 0)`"),c&&this.raise(u.start,"You're trying to assign to a parenthesized expression, eg. instead of "+c)}return this.next(),l.right=this.parseMaybeAssign(e),this.finishNode(l,"AssignmentExpression")}return o&&t.start&&this.unexpected(t.start),u},Y.parseMaybeConditional=function(e,t,r){var n=this.state.start,i=this.state.startLoc,s=this.parseExprOps(e,t);return t&&t.start?s:this.parseConditional(s,e,n,i,r)},Y.parseConditional=function(e,t,r,n){if(this.eat(T.question)){var i=this.startNodeAt(r,n);return i.test=e,i.consequent=this.parseMaybeAssign(),this.expect(T.colon),i.alternate=this.parseMaybeAssign(t),this.finishNode(i,"ConditionalExpression")}return e},Y.parseExprOps=function(e,t){var r=this.state.start,n=this.state.startLoc,i=this.parseMaybeUnary(t);return t&&t.start?i:this.parseExprOp(i,r,n,-1,e)},Y.parseExprOp=function(e,t,r,n,i){var s=this.state.type.binop;if(!(null==s||i&&this.match(T._in))&&s>n){var a=this.startNodeAt(t,r);a.left=e,a.operator=this.state.value,"**"!==a.operator||"UnaryExpression"!==e.type||!e.extra||e.extra.parenthesizedArgument||e.extra.parenthesized||this.raise(e.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var u=this.state.start,l=this.state.startLoc;return a.right=this.parseExprOp(this.parseMaybeUnary(),u,l,o.rightAssociative?s-1:s,i),this.finishNode(a,o===T.logicalOR||o===T.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(a,t,r,n,i)}return e},Y.parseMaybeUnary=function(e){if(this.state.type.prefix){var t=this.startNode(),r=this.match(T.incDec);t.operator=this.state.value,t.prefix=!0,this.next();var n=this.state.type;return t.argument=this.parseMaybeUnary(),this.addExtra(t,"parenthesizedArgument",!(n!==T.parenL||t.argument.extra&&t.argument.extra.parenthesized)),e&&e.start&&this.unexpected(e.start),r?this.checkLVal(t.argument,void 0,void 0,"prefix operation"):this.state.strict&&"delete"===t.operator&&"Identifier"===t.argument.type&&this.raise(t.start,"Deleting local variable in strict mode"),this.finishNode(t,r?"UpdateExpression":"UnaryExpression")}var i=this.state.start,s=this.state.startLoc,a=this.parseExprSubscripts(e);if(e&&e.start)return a;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(i,s);o.operator=this.state.value,o.prefix=!1,o.argument=a,this.checkLVal(a,void 0,void 0,"postfix operation"),this.next(),a=this.finishNode(o,"UpdateExpression")}return a},Y.parseExprSubscripts=function(e){var t=this.state.start,r=this.state.startLoc,n=this.state.potentialArrowAt,i=this.parseExprAtom(e);return"ArrowFunctionExpression"===i.type&&i.start===n?i:e&&e.start?i:this.parseSubscripts(i,t,r)},Y.parseSubscripts=function(e,t,r,n){for(;;){if(!n&&this.eat(T.doubleColon)){var i=this.startNodeAt(t,r);return i.object=e,i.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(i,"BindExpression"),t,r,n)}if(this.eat(T.dot)){var s=this.startNodeAt(t,r);s.object=e,s.property=this.parseIdentifier(!0),s.computed=!1,e=this.finishNode(s,"MemberExpression")}else if(this.eat(T.bracketL)){var a=this.startNodeAt(t,r);a.object=e,a.property=this.parseExpression(),a.computed=!0,this.expect(T.bracketR),e=this.finishNode(a,"MemberExpression")}else if(!n&&this.match(T.parenL)){var o=this.state.potentialArrowAt===e.start&&"Identifier"===e.type&&"async"===e.name&&!this.canInsertSemicolon();this.next();var u=this.startNodeAt(t,r);if(u.callee=e,u.arguments=this.parseCallExpressionArguments(T.parenR,o),"Import"===u.callee.type&&1!==u.arguments.length&&this.raise(u.start,"import() requires exactly one argument"),e=this.finishNode(u,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(t,r),u);this.toReferencedList(u.arguments)}else{if(!this.match(T.backQuote))return e;var l=this.startNodeAt(t,r);l.tag=e,l.quasi=this.parseTemplate(!0),e=this.finishNode(l,"TaggedTemplateExpression")}}},Y.parseCallExpressionArguments=function(e,t){for(var r=[],n=void 0,i=!0;!this.eat(e);){if(i)i=!1;else if(this.expect(T.comma),this.eat(e))break;this.match(T.parenL)&&!n&&(n=this.state.start),r.push(this.parseExprListItem(!1,t?{start:0}:void 0,t?{start:0}:void 0))}return t&&n&&this.shouldParseAsyncArrow()&&this.unexpected(),r},Y.shouldParseAsyncArrow=function(){return this.match(T.arrow)},Y.parseAsyncArrowFromCallExpression=function(e,t){return this.expect(T.arrow),this.parseArrowExpression(e,t.arguments,!0)},Y.parseNoCallExpr=function(){var e=this.state.start,t=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,t,!0)},Y.parseExprAtom=function(e){var t=this.state.potentialArrowAt===this.state.start,r=void 0;switch(this.state.type){case T._super:return this.state.inMethod||this.state.inClassProperty||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),r=this.startNode(),this.next(),this.match(T.parenL)||this.match(T.bracketL)||this.match(T.dot)||this.unexpected(),this.match(T.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(r.start,"super() outside of class constructor"),this.finishNode(r,"Super");case T._import:return this.hasPlugin("dynamicImport")||this.unexpected(),r=this.startNode(),this.next(),this.match(T.parenL)||this.unexpected(null,T.parenL),this.finishNode(r,"Import");case T._this:return r=this.startNode(),this.next(),this.finishNode(r,"ThisExpression");case T._yield:this.state.inGenerator&&this.unexpected();case T.name:r=this.startNode();var n="await"===this.state.value&&this.state.inAsync,i=this.shouldAllowYieldIdentifier(),s=this.parseIdentifier(n||i);if("await"===s.name){if(this.state.inAsync||this.inModule)return this.parseAwait(r)}else{if("async"===s.name&&this.match(T._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(r,!1,!1,!0);if(t&&"async"===s.name&&this.match(T.name)){var a=[this.parseIdentifier()];return this.expect(T.arrow),this.parseArrowExpression(r,a,!0)}}return t&&!this.canInsertSemicolon()&&this.eat(T.arrow)?this.parseArrowExpression(r,[s]):s;case T._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var u=this.state.inFunction,l=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=u,this.state.labels=l,this.finishNode(o,"DoExpression")}case T.regexp:var c=this.state.value;return r=this.parseLiteral(c.value,"RegExpLiteral"),r.pattern=c.pattern,r.flags=c.flags,r;case T.num:return this.parseLiteral(this.state.value,"NumericLiteral");case T.string:return this.parseLiteral(this.state.value,"StringLiteral");case T._null:return r=this.startNode(),this.next(),this.finishNode(r,"NullLiteral");case T._true:case T._false:return r=this.startNode(),r.value=this.match(T._true),this.next(),this.finishNode(r,"BooleanLiteral");case T.parenL:return this.parseParenAndDistinguishExpression(null,null,t);case T.bracketL:return r=this.startNode(),this.next(),r.elements=this.parseExprList(T.bracketR,!0,e),this.toReferencedList(r.elements),this.finishNode(r,"ArrayExpression");case T.braceL:return this.parseObj(!1,e);case T._function:return this.parseFunctionExpression();case T.at:this.parseDecorators();case T._class:return r=this.startNode(),this.takeDecorators(r),this.parseClass(r,!1);case T._new:return this.parseNew();case T.backQuote:return this.parseTemplate(!1);case T.doubleColon:r=this.startNode(),this.next(),r.object=null;var p=r.callee=this.parseNoCallExpr();if("MemberExpression"===p.type)return this.finishNode(r,"BindExpression");this.raise(p.start,"Binding should be performed on object property.");default:this.unexpected()}},Y.parseFunctionExpression=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(T.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(e,t,"sent"):this.parseFunction(e,!1)},Y.parseMetaProperty=function(e,t,r){return e.meta=t,e.property=this.parseIdentifier(!0),e.property.name!==r&&this.raise(e.property.start,"The only valid meta property for new is "+t.name+"."+r),this.finishNode(e,"MetaProperty")},Y.parseLiteral=function(e,t,r,n){r=r||this.state.start,n=n||this.state.startLoc;var i=this.startNodeAt(r,n);return this.addExtra(i,"rawValue",e),this.addExtra(i,"raw",this.input.slice(r,this.state.end)),i.value=e,this.next(),this.finishNode(i,t)},Y.parseParenExpression=function(){this.expect(T.parenL);var e=this.parseExpression();return this.expect(T.parenR),e},Y.parseParenAndDistinguishExpression=function(e,t,r){e=e||this.state.start,t=t||this.state.startLoc;var n=void 0;this.expect(T.parenL);for(var i=this.state.start,s=this.state.startLoc,a=[],o={start:0},u={start:0},l=!0,c=void 0,p=void 0;!this.match(T.parenR);){if(l)l=!1;else if(this.expect(T.comma,u.start||null),this.match(T.parenR)){p=this.state.start;break}if(this.match(T.ellipsis)){var h=this.state.start,f=this.state.startLoc;c=this.state.start,a.push(this.parseParenItem(this.parseRest(),h,f));break}a.push(this.parseMaybeAssign(!1,o,this.parseParenItem,u))}var d=this.state.start,m=this.state.startLoc;this.expect(T.parenR);var y=this.startNodeAt(e,t);if(r&&this.shouldParseArrow()&&(y=this.parseArrow(y))){for(var g=a,b=Array.isArray(g),v=0,g=b?g:g[Symbol.iterator]();;){var x;if(b){if(v>=g.length)break;x=g[v++]}else{if((v=g.next()).done)break;x=v.value}var E=x;E.extra&&E.extra.parenthesized&&this.unexpected(E.extra.parenStart)}return this.parseArrowExpression(y,a)}return a.length||this.unexpected(this.state.lastTokStart),p&&this.unexpected(p),c&&this.unexpected(c),o.start&&this.unexpected(o.start),u.start&&this.unexpected(u.start),a.length>1?((n=this.startNodeAt(i,s)).expressions=a,this.toReferencedList(n.expressions),this.finishNodeAt(n,"SequenceExpression",d,m)):n=a[0],this.addExtra(n,"parenthesized",!0),this.addExtra(n,"parenStart",e),n},Y.shouldParseArrow=function(){return!this.canInsertSemicolon()},Y.parseArrow=function(e){if(this.eat(T.arrow))return e},Y.parseParenItem=function(e){return e},Y.parseNew=function(){var e=this.startNode(),t=this.parseIdentifier(!0);if(this.eat(T.dot)){var r=this.parseMetaProperty(e,t,"target");return this.state.inFunction||this.raise(r.property.start,"new.target can only be used in functions"),r}return e.callee=this.parseNoCallExpr(),this.eat(T.parenL)?(e.arguments=this.parseExprList(T.parenR),this.toReferencedList(e.arguments)):e.arguments=[],this.finishNode(e,"NewExpression")},Y.parseTemplateElement=function(e){var t=this.startNode();return null===this.state.value&&(e&&this.hasPlugin("templateInvalidEscapes")?this.state.invalidTemplateEscapePosition=null:this.raise(this.state.invalidTemplateEscapePosition,"Invalid escape sequence in template")),t.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),t.tail=this.match(T.backQuote),this.finishNode(t,"TemplateElement")},Y.parseTemplate=function(e){var t=this.startNode();this.next(),t.expressions=[];var r=this.parseTemplateElement(e);for(t.quasis=[r];!r.tail;)this.expect(T.dollarBraceL),t.expressions.push(this.parseExpression()),this.expect(T.braceR),t.quasis.push(r=this.parseTemplateElement(e));return this.next(),this.finishNode(t,"TemplateLiteral")},Y.parseObj=function(e,t){var r=[],n=Object.create(null),i=!0,s=this.startNode();s.properties=[],this.next();for(var a=null;!this.eat(T.braceR);){if(i)i=!1;else if(this.expect(T.comma),this.eat(T.braceR))break;for(;this.match(T.at);)r.push(this.parseDecorator());var o=this.startNode(),u=!1,l=!1,c=void 0,p=void 0;if(r.length&&(o.decorators=r,r=[]),this.hasPlugin("objectRestSpread")&&this.match(T.ellipsis)){if(o=this.parseSpread(e?{start:0}:void 0),o.type=e?"RestProperty":"SpreadProperty",e&&this.toAssignable(o.argument,!0,"object pattern"),s.properties.push(o),!e)continue;var h=this.state.start;if(null===a){if(this.eat(T.braceR))break;if(this.match(T.comma)&&this.lookahead().type===T.braceR)continue;a=h;continue}this.unexpected(a,"Cannot have multiple rest elements when destructuring")}if(o.method=!1,o.shorthand=!1,(e||t)&&(c=this.state.start,p=this.state.startLoc),e||(u=this.eat(T.star)),!e&&this.isContextual("async")){u&&this.unexpected();var f=this.parseIdentifier();this.match(T.colon)||this.match(T.parenL)||this.match(T.braceR)||this.match(T.eq)||this.match(T.comma)?(o.key=f,o.computed=!1):(l=!0,this.hasPlugin("asyncGenerators")&&(u=this.eat(T.star)),this.parsePropertyName(o))}else this.parsePropertyName(o);this.parseObjPropValue(o,c,p,u,l,e,t),this.checkPropClash(o,n),o.shorthand&&this.addExtra(o,"shorthand",!0),s.properties.push(o)}return null!==a&&this.unexpected(a,"The rest element has to be the last element when destructuring"),r.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(s,e?"ObjectPattern":"ObjectExpression")},Y.isGetterOrSetterMethod=function(e,t){return!t&&!e.computed&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)&&(this.match(T.string)||this.match(T.num)||this.match(T.bracketL)||this.match(T.name)||this.state.type.keyword)},Y.checkGetterSetterParamCount=function(e){var t="get"===e.kind?0:1;if(e.params.length!==t){var r=e.start;"get"===e.kind?this.raise(r,"getter should have no params"):this.raise(r,"setter should have exactly one param")}},Y.parseObjectMethod=function(e,t,r,n){return r||t||this.match(T.parenL)?(n&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,t,r),this.finishNode(e,"ObjectMethod")):this.isGetterOrSetterMethod(e,n)?((t||r)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),this.parseMethod(e),this.checkGetterSetterParamCount(e),this.finishNode(e,"ObjectMethod")):void 0},Y.parseObjectProperty=function(e,t,r,n,i){return this.eat(T.colon)?(e.value=n?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,i),this.finishNode(e,"ObjectProperty")):e.computed||"Identifier"!==e.key.type?void 0:(this.checkReservedWord(e.key.name,e.key.start,!0,!0),n?e.value=this.parseMaybeDefault(t,r,e.key.__clone()):this.match(T.eq)&&i?(i.start||(i.start=this.state.start),e.value=this.parseMaybeDefault(t,r,e.key.__clone())):e.value=e.key.__clone(),e.shorthand=!0,this.finishNode(e,"ObjectProperty"))},Y.parseObjPropValue=function(e,t,r,n,i,s,a){var o=this.parseObjectMethod(e,n,i,s)||this.parseObjectProperty(e,t,r,s,a);return o||this.unexpected(),o},Y.parsePropertyName=function(e){if(this.eat(T.bracketL))e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(T.bracketR);else{e.computed=!1;var t=this.state.inPropertyName;this.state.inPropertyName=!0,e.key=this.match(T.num)||this.match(T.string)?this.parseExprAtom():this.parseIdentifier(!0),this.state.inPropertyName=t}return e.key},Y.initFunction=function(e,t){e.id=null,e.generator=!1,e.expression=!1,e.async=!!t},Y.parseMethod=function(e,t,r){var n=this.state.inMethod;return this.state.inMethod=e.kind||!0,this.initFunction(e,r),this.expect(T.parenL),e.params=this.parseBindingList(T.parenR),e.generator=!!t,this.parseFunctionBody(e),this.state.inMethod=n,e},Y.parseArrowExpression=function(e,t,r){return this.initFunction(e,r),e.params=this.toAssignableList(t,!0,"arrow function parameters"),this.parseFunctionBody(e,!0),this.finishNode(e,"ArrowFunctionExpression")},Y.isStrictBody=function(e,t){if(!t&&e.body.directives.length)for(var r=e.body.directives,n=Array.isArray(r),i=0,r=n?r:r[Symbol.iterator]();;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}if("use strict"===s.value.value)return!0}return!1},Y.parseFunctionBody=function(e,t){var r=t&&!this.match(T.braceL),n=this.state.inAsync;if(this.state.inAsync=e.async,r)e.body=this.parseMaybeAssign(),e.expression=!0;else{var i=this.state.inFunction,s=this.state.inGenerator,a=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=e.generator,this.state.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.state.inFunction=i,this.state.inGenerator=s,this.state.labels=a}this.state.inAsync=n;var o=this.isStrictBody(e,r),u=this.state.strict||t||o;if(o&&e.id&&"Identifier"===e.id.type&&"yield"===e.id.name&&this.raise(e.id.start,"Binding yield in strict mode"),u){var l=Object.create(null),c=this.state.strict;o&&(this.state.strict=!0),e.id&&this.checkLVal(e.id,!0,void 0,"function name");for(var p=e.params,h=Array.isArray(p),f=0,p=h?p:p[Symbol.iterator]();;){var d;if(h){if(f>=p.length)break;d=p[f++]}else{if((f=p.next()).done)break;d=f.value}var m=d;o&&"Identifier"!==m.type&&this.raise(m.start,"Non-simple parameter in strict mode"),this.checkLVal(m,!0,l,"function parameter list")}this.state.strict=c}},Y.parseExprList=function(e,t,r){for(var n=[],i=!0;!this.eat(e);){if(i)i=!1;else if(this.expect(T.comma),this.eat(e))break;n.push(this.parseExprListItem(t,r))}return n},Y.parseExprListItem=function(e,t,r){return e&&this.match(T.comma)?null:this.match(T.ellipsis)?this.parseSpread(t):this.parseMaybeAssign(!1,t,this.parseParenItem,r)},Y.parseIdentifier=function(e){var t=this.startNode();return e||this.checkReservedWord(this.state.value,this.state.start,!!this.state.type.keyword,!1),this.match(T.name)?t.name=this.state.value:this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),!e&&"await"===t.name&&this.state.inAsync&&this.raise(t.start,"invalid use of await inside of an async function"),t.loc.identifierName=t.name,this.next(),this.finishNode(t,"Identifier")},Y.checkReservedWord=function(e,t,r,n){(this.isReservedWord(e)||r&&this.isKeyword(e))&&this.raise(t,e+" is a reserved word"),this.state.strict&&(f.strict(e)||n&&f.strictBind(e))&&this.raise(t,e+" is a reserved word in strict mode")},Y.parseAwait=function(e){return this.state.inAsync||this.unexpected(),this.match(T.star)&&this.raise(e.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),e.argument=this.parseMaybeUnary(),this.finishNode(e,"AwaitExpression")},Y.parseYield=function(){var e=this.startNode();return this.next(),this.match(T.semi)||this.canInsertSemicolon()||!this.match(T.star)&&!this.state.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(T.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")};var H=q.prototype,$=["leadingComments","trailingComments","innerComments"],Q=function(){function e(t,r,n){D(this,e),this.type="",this.start=t,this.end=0,this.loc=new M(r),n&&(this.loc.filename=n)}return e.prototype.__clone=function(){var t=new e;for(var r in this)$.indexOf(r)<0&&(t[r]=this[r]);return t},e}();H.startNode=function(){return new Q(this.state.start,this.state.startLoc,this.filename)},H.startNodeAt=function(e,t){return new Q(e,t,this.filename)},H.finishNode=function(e,t){return l.call(this,e,t,this.state.lastTokEnd,this.state.lastTokEndLoc)},H.finishNodeAt=function(e,t,r,n){return l.call(this,e,t,r,n)};q.prototype.raise=function(e,t){var r=function(e,t){for(var r=1,n=0;;){O.lastIndex=n;var i=O.exec(e);if(!(i&&i.index0)){var t=this.state.commentStack,r=void 0,n=void 0,i=void 0,s=void 0,a=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=e.end?(i=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var o=c(t);t.length>0&&o.trailingComments&&o.trailingComments[0].start>=e.end&&(i=o.trailingComments,o.trailingComments=null)}for(t.length>0&&c(t).start>=e.start&&(r=t.pop());t.length>0&&c(t).start>=e.start;)n=t.pop();if(!n&&r&&(n=r),r&&this.state.leadingComments.length>0){var u=c(this.state.leadingComments);if("ObjectProperty"===r.type){if(u.start>=e.start&&this.state.commentPreviousNode){for(a=0;a0&&(r.trailingComments=this.state.leadingComments,this.state.leadingComments=[])}}else if("CallExpression"===e.type&&e.arguments&&e.arguments.length){var l=c(e.arguments);l&&u.start>=l.start&&u.end<=e.end&&this.state.commentPreviousNode&&this.state.leadingComments.length>0&&(l.trailingComments=this.state.leadingComments,this.state.leadingComments=[])}}if(n){if(n.leadingComments)if(n!==e&&c(n.leadingComments).end<=e.start)e.leadingComments=n.leadingComments,n.leadingComments=null;else for(s=n.leadingComments.length-2;s>=0;--s)if(n.leadingComments[s].end<=e.start){e.leadingComments=n.leadingComments.splice(0,s+1);break}}else if(this.state.leadingComments.length>0)if(c(this.state.leadingComments).end<=e.start){if(this.state.commentPreviousNode)for(a=0;a0&&(e.leadingComments=this.state.leadingComments,this.state.leadingComments=[])}else{for(s=0;se.start);s++);e.leadingComments=this.state.leadingComments.slice(0,s),0===e.leadingComments.length&&(e.leadingComments=null),0===(i=this.state.leadingComments.slice(s)).length&&(i=null)}this.state.commentPreviousNode=e,i&&(i.length&&i[0].start>=e.start&&c(i).end<=e.end?e.innerComments=i:e.trailingComments=i),t.push(e)}};var ee=q.prototype;ee.estreeParseRegExpLiteral=function(e){var t=e.pattern,r=e.flags,n=null;try{n=new RegExp(t,r)}catch(e){}var i=this.estreeParseLiteral(n);return i.regex={pattern:t,flags:r},i},ee.estreeParseLiteral=function(e){return this.parseLiteral(e,"Literal")},ee.directiveToStmt=function(e){var t=e.value,r=this.startNodeAt(e.start,e.loc.start),n=this.startNodeAt(t.start,t.loc.start);return n.value=t.value,n.raw=t.extra.raw,r.expression=this.finishNodeAt(n,"Literal",t.end,t.loc.end),r.directive=t.extra.raw.slice(1,-1),this.finishNodeAt(r,"ExpressionStatement",e.end,e.loc.end)};var te=["any","mixed","empty","bool","boolean","number","string","void","null"],re=q.prototype;re.flowParseTypeInitialiser=function(e){var t=this.state.inType;this.state.inType=!0,this.expect(e||T.colon);var r=this.flowParseType();return this.state.inType=t,r},re.flowParsePredicate=function(){var e=this.startNode(),t=this.state.startLoc,r=this.state.start;this.expect(T.modulo);var n=this.state.startLoc;return this.expectContextual("checks"),t.line===n.line&&t.column===n.column-1||this.raise(r,"Spaces between ´%´ and ´checks´ are not allowed here."),this.eat(T.parenL)?(e.expression=this.parseExpression(),this.expect(T.parenR),this.finishNode(e,"DeclaredPredicate")):this.finishNode(e,"InferredPredicate")},re.flowParseTypeAndPredicateInitialiser=function(){var e=this.state.inType;this.state.inType=!0,this.expect(T.colon);var t=null,r=null;return this.match(T.modulo)?(this.state.inType=e,r=this.flowParsePredicate()):(t=this.flowParseType(),this.state.inType=e,this.match(T.modulo)&&(r=this.flowParsePredicate())),[t,r]},re.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},re.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),r=this.startNode(),n=this.startNode();this.isRelational("<")?r.typeParameters=this.flowParseTypeParameterDeclaration():r.typeParameters=null,this.expect(T.parenL);var i=this.flowParseFunctionTypeParams();r.params=i.params,r.rest=i.rest,this.expect(T.parenR);var s=null,a=this.flowParseTypeAndPredicateInitialiser();return r.returnType=a[0],s=a[1],n.typeAnnotation=this.finishNode(r,"FunctionTypeAnnotation"),n.predicate=s,t.typeAnnotation=this.finishNode(n,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},re.flowParseDeclare=function(e){return this.match(T._class)?this.flowParseDeclareClass(e):this.match(T._function)?this.flowParseDeclareFunction(e):this.match(T._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.lookahead().type===T.dot?this.flowParseDeclareModuleExports(e):this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("opaque")?this.flowParseDeclareOpaqueType(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):this.match(T._export)?this.flowParseDeclareExportDeclaration(e):void this.unexpected()},re.flowParseDeclareExportDeclaration=function(e){if(this.expect(T._export),this.isContextual("opaque"))return e.declaration=this.flowParseDeclare(this.startNode()),e.default=!1,this.finishNode(e,"DeclareExportDeclaration");throw this.unexpected()},re.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},re.flowParseDeclareModule=function(e){this.next(),this.match(T.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),r=t.body=[];for(this.expect(T.braceL);!this.match(T.braceR);){var n=this.startNode();if(this.match(T._import)){var i=this.lookahead();"type"!==i.value&&"typeof"!==i.value&&this.unexpected(null,"Imports within a `declare module` body must always be `import type` or `import typeof`"),this.parseImport(n)}else this.expectContextual("declare","Only declares and type imports are allowed inside declare module"),n=this.flowParseDeclare(n,!0);r.push(n)}return this.expect(T.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},re.flowParseDeclareModuleExports=function(e){return this.expectContextual("module"),this.expect(T.dot),this.expectContextual("exports"),e.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(e,"DeclareModuleExports")},re.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},re.flowParseDeclareOpaqueType=function(e){return this.next(),this.flowParseOpaqueType(e,!0),this.finishNode(e,"DeclareOpaqueType")},re.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},re.flowParseInterfaceish=function(e){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(T._extends))do{e.extends.push(this.flowParseInterfaceExtends())}while(this.eat(T.comma));if(this.isContextual("mixins")){this.next();do{e.mixins.push(this.flowParseInterfaceExtends())}while(this.eat(T.comma))}e.body=this.flowParseObjectType(!0,!1,!1)},re.flowParseInterfaceExtends=function(){var e=this.startNode();return e.id=this.flowParseQualifiedTypeIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},re.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},re.flowParseRestrictedIdentifier=function(e){return te.indexOf(this.state.value)>-1&&this.raise(this.state.start,"Cannot overwrite primitive type "+this.state.value),this.parseIdentifier(e)},re.flowParseTypeAlias=function(e){return e.id=this.flowParseRestrictedIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(T.eq),this.semicolon(),this.finishNode(e,"TypeAlias")},re.flowParseOpaqueType=function(e,t){return this.expectContextual("type"),e.id=this.flowParseRestrictedIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.supertype=null,this.match(T.colon)&&(e.supertype=this.flowParseTypeInitialiser(T.colon)),e.impltype=null,t||(e.impltype=this.flowParseTypeInitialiser(T.eq)),this.semicolon(),this.finishNode(e,"OpaqueType")},re.flowParseTypeParameter=function(){var e=this.startNode(),t=this.flowParseVariance(),r=this.flowParseTypeAnnotatableIdentifier();return e.name=r.name,e.variance=t,e.bound=r.typeAnnotation,this.match(T.eq)&&(this.eat(T.eq),e.default=this.flowParseType()),this.finishNode(e,"TypeParameter")},re.flowParseTypeParameterDeclaration=function(){var e=this.state.inType,t=this.startNode();t.params=[],this.state.inType=!0,this.isRelational("<")||this.match(T.jsxTagStart)?this.next():this.unexpected();do{t.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(T.comma)}while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterDeclaration")},re.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseType()),this.isRelational(">")||this.expect(T.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},re.flowParseObjectPropertyKey=function(){return this.match(T.num)||this.match(T.string)?this.parseExprAtom():this.parseIdentifier(!0)},re.flowParseObjectTypeIndexer=function(e,t,r){return e.static=t,this.expect(T.bracketL),this.lookahead().type===T.colon?(e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser()):(e.id=null,e.key=this.flowParseType()),this.expect(T.bracketR),e.value=this.flowParseTypeInitialiser(),e.variance=r,this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},re.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(T.parenL);!this.match(T.parenR)&&!this.match(T.ellipsis);)e.params.push(this.flowParseFunctionTypeParam()),this.match(T.parenR)||this.expect(T.comma);return this.eat(T.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(T.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},re.flowParseObjectTypeMethod=function(e,t,r,n){var i=this.startNodeAt(e,t);return i.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),i.static=r,i.key=n,i.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(i,"ObjectTypeProperty")},re.flowParseObjectTypeCallProperty=function(e,t){var r=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(r),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},re.flowParseObjectType=function(e,t,r){var n=this.state.inType;this.state.inType=!0;var i=this.startNode(),s=void 0,a=void 0,o=!1;i.callProperties=[],i.properties=[],i.indexers=[];var u=void 0,l=void 0;for(t&&this.match(T.braceBarL)?(this.expect(T.braceBarL),u=T.braceBarR,l=!0):(this.expect(T.braceL),u=T.braceR,l=!1),i.exact=l;!this.match(u);){var c=!1,p=this.state.start,h=this.state.startLoc;s=this.startNode(),e&&this.isContextual("static")&&this.lookahead().type!==T.colon&&(this.next(),o=!0);var f=this.state.start,d=this.flowParseVariance();this.match(T.bracketL)?i.indexers.push(this.flowParseObjectTypeIndexer(s,o,d)):this.match(T.parenL)||this.isRelational("<")?(d&&this.unexpected(f),i.callProperties.push(this.flowParseObjectTypeCallProperty(s,o))):this.match(T.ellipsis)?(r||this.unexpected(null,"Spread operator cannot appear in class or interface definitions"),d&&this.unexpected(d.start,"Spread properties cannot have variance"),this.expect(T.ellipsis),s.argument=this.flowParseType(),this.flowObjectTypeSemicolon(),i.properties.push(this.finishNode(s,"ObjectTypeSpreadProperty"))):(a=this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(T.parenL)?(d&&this.unexpected(d.start),i.properties.push(this.flowParseObjectTypeMethod(p,h,o,a))):(this.eat(T.question)&&(c=!0),s.key=a,s.value=this.flowParseTypeInitialiser(),s.optional=c,s.static=o,s.variance=d,this.flowObjectTypeSemicolon(),i.properties.push(this.finishNode(s,"ObjectTypeProperty")))),o=!1}this.expect(u);var m=this.finishNode(i,"ObjectTypeAnnotation");return this.state.inType=n,m},re.flowObjectTypeSemicolon=function(){this.eat(T.semi)||this.eat(T.comma)||this.match(T.braceR)||this.match(T.braceBarR)||this.unexpected()},re.flowParseQualifiedTypeIdentifier=function(e,t,r){e=e||this.state.start,t=t||this.state.startLoc;for(var n=r||this.parseIdentifier();this.eat(T.dot);){var i=this.startNodeAt(e,t);i.qualification=n,i.id=this.parseIdentifier(),n=this.finishNode(i,"QualifiedTypeIdentifier")}return n},re.flowParseGenericType=function(e,t,r){var n=this.startNodeAt(e,t);return n.typeParameters=null,n.id=this.flowParseQualifiedTypeIdentifier(e,t,r),this.isRelational("<")&&(n.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(n,"GenericTypeAnnotation")},re.flowParseTypeofType=function(){var e=this.startNode();return this.expect(T._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},re.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(T.bracketL);this.state.pos0&&void 0!==arguments[0]?arguments[0]:[],rest:null};!this.match(T.parenR)&&!this.match(T.ellipsis);)e.params.push(this.flowParseFunctionTypeParam()),this.match(T.parenR)||this.expect(T.comma);return this.eat(T.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),e},re.flowIdentToTypeAnnotation=function(e,t,r,n){switch(n.name){case"any":return this.finishNode(r,"AnyTypeAnnotation");case"void":return this.finishNode(r,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(r,"BooleanTypeAnnotation");case"mixed":return this.finishNode(r,"MixedTypeAnnotation");case"empty":return this.finishNode(r,"EmptyTypeAnnotation");case"number":return this.finishNode(r,"NumberTypeAnnotation");case"string":return this.finishNode(r,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,n)}},re.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,r=this.startNode(),n=void 0,i=void 0,s=!1,a=this.state.noAnonFunctionType;switch(this.state.type){case T.name:return this.flowIdentToTypeAnnotation(e,t,r,this.parseIdentifier());case T.braceL:return this.flowParseObjectType(!1,!1,!0);case T.braceBarL:return this.flowParseObjectType(!1,!0,!0);case T.bracketL:return this.flowParseTupleType();case T.relational:if("<"===this.state.value)return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(T.parenL),n=this.flowParseFunctionTypeParams(),r.params=n.params,r.rest=n.rest,this.expect(T.parenR),this.expect(T.arrow),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");break;case T.parenL:if(this.next(),!this.match(T.parenR)&&!this.match(T.ellipsis))if(this.match(T.name)){var o=this.lookahead().type;s=o!==T.question&&o!==T.colon}else s=!0;if(s){if(this.state.noAnonFunctionType=!1,i=this.flowParseType(),this.state.noAnonFunctionType=a,this.state.noAnonFunctionType||!(this.match(T.comma)||this.match(T.parenR)&&this.lookahead().type===T.arrow))return this.expect(T.parenR),i;this.eat(T.comma)}return n=i?this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(i)]):this.flowParseFunctionTypeParams(),r.params=n.params,r.rest=n.rest,this.expect(T.parenR),this.expect(T.arrow),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation");case T.string:return this.parseLiteral(this.state.value,"StringLiteralTypeAnnotation");case T._true:case T._false:return r.value=this.match(T._true),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case T.plusMin:if("-"===this.state.value)return this.next(),this.match(T.num)||this.unexpected(null,"Unexpected token, expected number"),this.parseLiteral(-this.state.value,"NumericLiteralTypeAnnotation",r.start,r.loc.start);this.unexpected();case T.num:return this.parseLiteral(this.state.value,"NumericLiteralTypeAnnotation");case T._null:return r.value=this.match(T._null),this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case T._this:return r.value=this.match(T._this),this.next(),this.finishNode(r,"ThisTypeAnnotation");case T.star:return this.next(),this.finishNode(r,"ExistentialTypeParam");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},re.flowParsePostfixType=function(){for(var e=this.state.start,t=this.state.startLoc,r=this.flowParsePrimaryType();!this.canInsertSemicolon()&&this.match(T.bracketL);){var n=this.startNodeAt(e,t);n.elementType=r,this.expect(T.bracketL),this.expect(T.bracketR),r=this.finishNode(n,"ArrayTypeAnnotation")}return r},re.flowParsePrefixType=function(){var e=this.startNode();return this.eat(T.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},re.flowParseAnonFunctionWithoutParens=function(){var e=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(T.arrow)){var t=this.startNodeAt(e.start,e.loc.start);return t.params=[this.reinterpretTypeAsFunctionTypeParam(e)],t.rest=null,t.returnType=this.flowParseType(),t.typeParameters=null,this.finishNode(t,"FunctionTypeAnnotation")}return e},re.flowParseIntersectionType=function(){var e=this.startNode();this.eat(T.bitwiseAND);var t=this.flowParseAnonFunctionWithoutParens();for(e.types=[t];this.eat(T.bitwiseAND);)e.types.push(this.flowParseAnonFunctionWithoutParens());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},re.flowParseUnionType=function(){var e=this.startNode();this.eat(T.bitwiseOR);var t=this.flowParseIntersectionType();for(e.types=[t];this.eat(T.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},re.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},re.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},re.flowParseTypeAndPredicateAnnotation=function(){var e=this.startNode(),t=this.flowParseTypeAndPredicateInitialiser();return e.typeAnnotation=t[0],e.predicate=t[1],this.finishNode(e,"TypeAnnotation")},re.flowParseTypeAnnotatableIdentifier=function(){var e=this.flowParseRestrictedIdentifier();return this.match(T.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(e,e.type)),e},re.typeCastToParameter=function(e){return e.expression.typeAnnotation=e.typeAnnotation,this.finishNodeAt(e.expression,e.expression.type,e.typeAnnotation.end,e.typeAnnotation.loc.end)},re.flowParseVariance=function(){var e=null;return this.match(T.plusMin)&&("+"===this.state.value?e="plus":"-"===this.state.value&&(e="minus"),this.next()),e};var ne=String.fromCodePoint;if(!ne){var ie=String.fromCharCode,se=Math.floor;ne=function(){var e=[],t=void 0,r=void 0,n=-1,i=arguments.length;if(!i)return"";for(var s="";++n1114111||se(a)!=a)throw RangeError("Invalid code point: "+a);a<=65535?e.push(a):(t=55296+((a-=65536)>>10),r=a%1024+56320,e.push(t,r)),(n+1==i||e.length>16384)&&(s+=ie.apply(null,e),e.length=0)}return s}}var ae=ne,oe={quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},ue=/^[\da-fA-F]+$/,le=/^\d+$/;I.j_oTag=new N("...",!0,!0),T.jsxName=new w("jsxName"),T.jsxText=new w("jsxText",{beforeExpr:!0}),T.jsxTagStart=new w("jsxTagStart",{startsExpr:!0}),T.jsxTagEnd=new w("jsxTagEnd"),T.jsxTagStart.updateContext=function(){this.state.context.push(I.j_expr),this.state.context.push(I.j_oTag),this.state.exprAllowed=!1},T.jsxTagEnd.updateContext=function(e){var t=this.state.context.pop();t===I.j_oTag&&e===T.slash||t===I.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===I.j_expr):this.state.exprAllowed=!0};var ce=q.prototype;ce.jsxReadToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var r=this.input.charCodeAt(this.state.pos);switch(r){case 60:case 123:return this.state.pos===this.state.start?60===r&&this.state.exprAllowed?(++this.state.pos,this.finishToken(T.jsxTagStart)):this.getTokenFromCode(r):(e+=this.input.slice(t,this.state.pos),this.finishToken(T.jsxText,e));case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;default:o(r)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}},ce.jsxReadNewLine=function(e){var t=this.input.charCodeAt(this.state.pos),r=void 0;return++this.state.pos,13===t&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,r=e?"\n":"\r\n"):r=String.fromCharCode(t),++this.state.curLine,this.state.lineStart=this.state.pos,r},ce.jsxReadString=function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var n=this.input.charCodeAt(this.state.pos);if(n===e)break;38===n?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadEntity(),r=this.state.pos):o(n)?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadNewLine(!1),r=this.state.pos):++this.state.pos}return t+=this.input.slice(r,this.state.pos++),this.finishToken(T.string,t)},ce.jsxReadEntity=function(){for(var e="",t=0,r=void 0,n=this.input[this.state.pos],i=++this.state.pos;this.state.pos")}return r.openingElement=i,r.closingElement=s,r.children=n,this.match(T.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(r,"JSXElement")},ce.jsxParseElement=function(){var e=this.state.start,t=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,t)};V.estree=function(e){e.extend("checkDeclaration",function(e){return function(t){p(t)?this.checkDeclaration(t.value):e.call(this,t)}}),e.extend("checkGetterSetterParamCount",function(){return function(e){var t="get"===e.kind?0:1;if(e.value.params.length!==t){var r=e.start;"get"===e.kind?this.raise(r,"getter should have no params"):this.raise(r,"setter should have exactly one param")}}}),e.extend("checkLVal",function(e){return function(t,r,n){var i=this;switch(t.type){case"ObjectPattern":t.properties.forEach(function(e){i.checkLVal("Property"===e.type?e.value:e,r,n,"object destructuring pattern")});break;default:for(var s=arguments.length,a=Array(s>3?s-3:0),o=3;o0)for(var r=e.body.body,n=Array.isArray(r),i=0,r=n?r:r[Symbol.iterator]();;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var a=s;if("ExpressionStatement"!==a.type||"Literal"!==a.expression.type)break;if("use strict"===a.expression.value)return!0}return!1}}),e.extend("isValidDirective",function(){return function(e){return!("ExpressionStatement"!==e.type||"Literal"!==e.expression.type||"string"!=typeof e.expression.value||e.expression.extra&&e.expression.extra.parenthesized)}}),e.extend("stmtToDirective",function(e){return function(t){var r=e.call(this,t),n=t.expression.value;return r.value.value=n,r}}),e.extend("parseBlockBody",function(e){return function(t){for(var r=this,n=arguments.length,i=Array(n>1?n-1:0),s=1;s1?n-1:0),s=1;s2?n-2:0),s=2;s=a.length)break;l=a[u++]}else{if((u=a.next()).done)break;l=u.value}var c=l;"get"===c.kind||"set"===c.kind?this.raise(c.key.start,"Object pattern can't contain getter or setter"):c.method?this.raise(c.key.start,"Object pattern can't contain methods"):this.toAssignable(c,r,"object destructuring pattern")}return t}return e.call.apply(e,[this,t,r].concat(i))}})},V.flow=function(e){e.extend("parseFunctionBody",function(e){return function(t,r){return this.match(T.colon)&&!r&&(t.returnType=this.flowParseTypeAndPredicateAnnotation()),e.call(this,t,r)}}),e.extend("parseStatement",function(e){return function(t,r){if(this.state.strict&&this.match(T.name)&&"interface"===this.state.value){var n=this.startNode();return this.next(),this.flowParseInterface(n)}return e.call(this,t,r)}}),e.extend("parseExpressionStatement",function(e){return function(t,r){if("Identifier"===r.type)if("declare"===r.name){if(this.match(T._class)||this.match(T.name)||this.match(T._function)||this.match(T._var)||this.match(T._export))return this.flowParseDeclare(t)}else if(this.match(T.name)){if("interface"===r.name)return this.flowParseInterface(t);if("type"===r.name)return this.flowParseTypeAlias(t);if("opaque"===r.name)return this.flowParseOpaqueType(t,!1)}return e.call(this,t,r)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||this.isContextual("opaque")||e.call(this)}}),e.extend("isExportDefaultSpecifier",function(e){return function(){return(!this.match(T.name)||"type"!==this.state.value&&"interface"!==this.state.value&&"opaque"!==this.state.value)&&e.call(this)}}),e.extend("parseConditional",function(e){return function(t,r,n,i,s){if(s&&this.match(T.question)){var a=this.state.clone();try{return e.call(this,t,r,n,i)}catch(e){if(e instanceof SyntaxError)return this.state=a,s.start=e.pos||this.state.start,t;throw e}}return e.call(this,t,r,n,i)}}),e.extend("parseParenItem",function(e){return function(t,r,n){if(t=e.call(this,t,r,n),this.eat(T.question)&&(t.optional=!0),this.match(T.colon)){var i=this.startNodeAt(r,n);return i.expression=t,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")}return t}}),e.extend("parseExport",function(e){return function(t){return"ExportNamedDeclaration"===(t=e.call(this,t)).type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var r=this.startNode();return this.next(),this.match(T.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(r)}if(this.isContextual("opaque")){t.exportKind="type";var n=this.startNode();return this.next(),this.flowParseOpaqueType(n,!1)}if(this.isContextual("interface")){t.exportKind="type";var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(T.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(t,r,n){return"TypeCastExpression"===t.type?e.call(this,this.typeCastToParameter(t),r,n):e.call(this,t,r,n)}}),e.extend("toAssignableList",function(e){return function(t,r,n){for(var i=0;i2?n-2:0),s=2;s=0&&l>0){for(n=[],s=r.length;c>=0&&!o;)c==u?(n.push(c),u=r.indexOf(e,c+1)):1==n.length?o=[n.pop(),l]:((i=n.pop())=0?u:l;n.length&&(o=[s,a])}return o}t.exports=n,n.range=s},{}],188:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return a[e>>18&63]+a[e>>12&63]+a[e>>6&63]+a[63&e]}function s(e,t,r){for(var n,s=[],a=t;a0?l-4:l;var c=0;for(t=0;t>16&255,a[c++]=i>>8&255,a[c++]=255&i;return 2===s?(i=o[e.charCodeAt(t)]<<2|o[e.charCodeAt(t+1)]>>4,a[c++]=255&i):1===s&&(i=o[e.charCodeAt(t)]<<10|o[e.charCodeAt(t+1)]<<4|o[e.charCodeAt(t+2)]>>2,a[c++]=i>>8&255,a[c++]=255&i),a},r.fromByteArray=function(e){for(var t,r=e.length,n=r%3,i="",o=[],u=0,l=r-n;ul?l:u+16383));return 1===n?(t=e[r-1],i+=a[t>>2],i+=a[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=a[t>>10],i+=a[t>>4&63],i+=a[t<<2&63],i+="="),o.push(i),o.join("")};for(var a=[],o=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,p=l.length;c=t}function c(e,t){var r=[],i=h("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var f=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),d=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),y=f||d,g=i.body.indexOf(",")>=0;if(!y&&!g)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+m+i.post,c(e)):[e];var b;if(y)b=i.body.split(/\.\./);else if(1===(b=s(i.body)).length&&1===(b=c(b[0],!1).map(a)).length){return(E=i.post.length?c(i.post,!1):[""]).map(function(e){return i.pre+b[0]+e})}var v,x=i.pre,E=i.post.length?c(i.post,!1):[""];if(y){var A=n(b[0]),D=n(b[1]),C=Math.max(b[0].length,b[1].length),S=3==b.length?Math.abs(n(b[2])):1,_=u;D0){var P=new Array(T+1).join("0");F=k<0?"-"+P+F.slice(1):P+F}}v.push(F)}}else v=p(b,function(e){return c(e,!1)});for(var B=0;BN)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=i.prototype,t}function i(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return o(e)}return s(e,t,r)}function s(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return T(e)?function(e,t,r){if(t<0||e.byteLength=N)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+N.toString(16)+" bytes");return 0|e}function c(e,t){if(i.isBuffer(e))return e.length;if(P(e)||T(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return w(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return k(e).length;default:if(n)return w(e).length;t=(""+t).toLowerCase(),n=!0}}function p(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,r){var n=e.length;(!t||t<0)&&(t=0);(!r||r<0||r>n)&&(r=n);for(var i="",s=t;s2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,B(r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if("string"==typeof t&&(t=i.from(t,n)),i.isBuffer(t))return 0===t.length?-1:d(e,t,r,n,s);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):d(e,[t],r,n,s);throw new TypeError("val must be string, number or Buffer")}function d(e,t,r,n,i){function s(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,o=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,o/=2,u/=2,r/=2}var l;if(i){var c=-1;for(l=r;lo&&(r=o-u),l=r;l>=0;l--){for(var p=!0,h=0;hi&&(n=i):n=i;var s=t.length;if(s%2!=0)throw new TypeError("Invalid hex string");n>s/2&&(n=s/2);for(var a=0;a>8,i=r%256,s.push(i),s.push(n);return s}(t,e.length-r),e,r,n)}function E(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:s>223?3:s>191?2:1;if(i+o<=r){var u,l,c,p;switch(o){case 1:s<128&&(a=s);break;case 2:128==(192&(u=e[i+1]))&&(p=(31&s)<<6|63&u)>127&&(a=p);break;case 3:u=e[i+1],l=e[i+2],128==(192&u)&&128==(192&l)&&(p=(15&s)<<12|(63&u)<<6|63&l)>2047&&(p<55296||p>57343)&&(a=p);break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128==(192&u)&&128==(192&l)&&128==(192&c)&&(p=(15&s)<<18|(63&u)<<12|(63&l)<<6|63&c)>65535&&p<1114112&&(a=p)}}null===a?(a=65533,o=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=o}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);var r="",n=0;for(;nr)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,r,n,s,a){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function C(e,t,r,n,i,s){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function S(e,t,r,n,i){return t=+t,r>>>=0,i||C(e,0,r,4),j.write(e,t,r,n,23,4),r+4}function _(e,t,r,n,i){return t=+t,r>>>=0,i||C(e,0,r,8),j.write(e,t,r,n,52,8),r+8}function w(e,t){t=t||1/0;for(var r,n=e.length,i=null,s=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function k(e){return O.toByteArray(function(e){if((e=e.trim().replace(L,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function F(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function T(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function P(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function B(e){return e!=e}var O=e("base64-js"),j=e("ieee754");r.Buffer=i,r.SlowBuffer=function(e){return+e!=e&&(e=0),i.alloc(+e)},r.INSPECT_MAX_BYTES=50;var N=2147483647;r.kMaxLength=N,(i.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),i.poolSize=8192,i.from=function(e,t,r){return s(e,t,r)},i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,i.alloc=function(e,t,r){return function(e,t,r){return a(e),e<=0?n(e):void 0!==t?"string"==typeof r?n(e).fill(t,r):n(e).fill(t):n(e)}(e,t,r)},i.allocUnsafe=function(e){return o(e)},i.allocUnsafeSlow=function(e){return o(e)},i.isBuffer=function(e){return null!=e&&!0===e._isBuffer},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,s=0,a=Math.min(r,n);s0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},i.prototype.compare=function(e,t,r,n,s){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===s&&(s=this.length),t<0||r>e.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&t>=r)return 0;if(n>=s)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,s>>>=0,this===e)return 0;for(var a=s-n,o=r-t,u=Math.min(a,o),l=this.slice(n,s),c=e.slice(t,r),p=0;p>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return y(this,e,t,r);case"ascii":return g(this,e,t,r);case"latin1":case"binary":return b(this,e,t,r);case"base64":return v(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;i.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||A(e,t,this.length);for(var n=this[e],i=1,s=0;++s>>=0,t>>>=0,r||A(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},i.prototype.readUInt8=function(e,t){return e>>>=0,t||A(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return e>>>=0,t||A(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return e>>>=0,t||A(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return e>>>=0,t||A(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return e>>>=0,t||A(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||A(e,t,this.length);for(var n=this[e],i=1,s=0;++s=i&&(n-=Math.pow(2,8*t)),n},i.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||A(e,t,this.length);for(var n=t,i=1,s=this[e+--n];n>0&&(i*=256);)s+=this[e+--n]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},i.prototype.readInt8=function(e,t){return e>>>=0,t||A(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){e>>>=0,t||A(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt16BE=function(e,t){e>>>=0,t||A(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt32LE=function(e,t){return e>>>=0,t||A(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return e>>>=0,t||A(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return e>>>=0,t||A(e,4,this.length),j.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return e>>>=0,t||A(e,4,this.length),j.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return e>>>=0,t||A(e,8,this.length),j.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return e>>>=0,t||A(e,8,this.length),j.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){D(this,e,t,r,Math.pow(2,8*r)-1,0)}var i=1,s=0;for(this[t]=255&e;++s>>=0,r>>>=0,!n){D(this,e,t,r,Math.pow(2,8*r)-1,0)}var i=r-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+r},i.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,1,255,0),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},i.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);D(this,e,t,r,i-1,-i)}var s=0,a=1,o=0;for(this[t]=255&e;++s>0)-o&255;return t+r},i.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);D(this,e,t,r,i-1,-i)}var s=r-1,a=1,o=0;for(this[t+s]=255&e;--s>=0&&(a*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/a>>0)-o&255;return t+r},i.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},i.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeFloatLE=function(e,t,r){return S(this,e,t,!0,r)},i.prototype.writeFloatBE=function(e,t,r){return S(this,e,t,!1,r)},i.prototype.writeDoubleLE=function(e,t,r){return _(this,e,t,!0,r)},i.prototype.writeDoubleBE=function(e,t,r){return _(this,e,t,!1,r)},i.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(s<1e3)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;ac;)if((o=u[c++])!=o)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===r)return e||c||0;return!e&&-1}}},{"./_to-absolute-index":273,"./_to-iobject":275,"./_to-length":276}],214:[function(e,t,r){var n=e("./_ctx"),i=e("./_iobject"),s=e("./_to-object"),a=e("./_to-length"),o=e("./_array-species-create");t.exports=function(e,t){var r=1==e,u=2==e,l=3==e,c=4==e,p=6==e,h=5==e||p,f=t||o;return function(t,o,d){for(var m,y,g=s(t),b=i(g),v=n(o,d,3),x=a(b.length),E=0,A=r?f(t,x):u?f(t,0):void 0;x>E;E++)if((h||E in b)&&(m=b[E],y=v(m,E,g),e))if(r)A[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:A.push(m)}else if(c)return!1;return p?-1:l||c?c:A}}},{"./_array-species-create":216,"./_ctx":224,"./_iobject":238,"./_to-length":276,"./_to-object":277}],215:[function(e,t,r){var n=e("./_is-object"),i=e("./_is-array"),s=e("./_wks")("species");t.exports=function(e){var t;return i(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!i(t.prototype)||(t=void 0),n(t)&&null===(t=t[s])&&(t=void 0)),void 0===t?Array:t}},{"./_is-array":240,"./_is-object":241,"./_wks":283}],216:[function(e,t,r){var n=e("./_array-species-constructor");t.exports=function(e,t){return new(n(e))(t)}},{"./_array-species-constructor":215}],217:[function(e,t,r){var n=e("./_cof"),i=e("./_wks")("toStringTag"),s="Arguments"==n(function(){return arguments}());t.exports=function(e){var t,r,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),i))?r:s?n(t):"Object"==(a=n(t))&&"function"==typeof t.callee?"Arguments":a}},{"./_cof":218,"./_wks":283}],218:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],219:[function(e,t,r){"use strict";var n=e("./_object-dp").f,i=e("./_object-create"),s=e("./_redefine-all"),a=e("./_ctx"),o=e("./_an-instance"),u=e("./_for-of"),l=e("./_iter-define"),c=e("./_iter-step"),p=e("./_set-species"),h=e("./_descriptors"),f=e("./_meta").fastKey,d=e("./_validate-collection"),m=h?"_s":"size",y=function(e,t){var r,n=f(t);if("F"!==n)return e._i[n];for(r=e._f;r;r=r.n)if(r.k==t)return r};t.exports={getConstructor:function(e,t,r,l){var c=e(function(e,n){o(e,c,t,"_i"),e._t=t,e._i=i(null),e._f=void 0,e._l=void 0,e[m]=0,void 0!=n&&u(n,r,e[l],e)});return s(c.prototype,{clear:function(){for(var e=d(this,t),r=e._i,n=e._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete r[n.i];e._f=e._l=void 0,e[m]=0},delete:function(e){var r=d(this,t),n=y(r,e);if(n){var i=n.n,s=n.p;delete r._i[n.i],n.r=!0,s&&(s.n=i),i&&(i.p=s),r._f==n&&(r._f=i),r._l==n&&(r._l=s),r[m]--}return!!n},forEach:function(e){d(this,t);for(var r,n=a(e,arguments.length>1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(n(r.v,r.k,this);r&&r.r;)r=r.p},has:function(e){return!!y(d(this,t),e)}}),h&&n(c.prototype,"size",{get:function(){return d(this,t)[m]}}),c},def:function(e,t,r){var n,i,s=y(e,t);return s?s.v=r:(e._l=s={i:i=f(t,!0),k:t,v:r,p:n=e._l,n:void 0,r:!1},e._f||(e._f=s),n&&(n.n=s),e[m]++,"F"!==i&&(e._i[i]=s)),e},getEntry:y,setStrong:function(e,t,r){l(e,t,function(e,r){this._t=d(e,t),this._k=r,this._l=void 0},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?"keys"==e?c(0,t.k):"values"==e?c(0,t.v):c(0,[t.k,t.v]):(this._t=void 0,c(1))},r?"entries":"values",!r,!0),p(t)}}},{"./_an-instance":210,"./_ctx":224,"./_descriptors":226,"./_for-of":232,"./_iter-define":244,"./_iter-step":245,"./_meta":248,"./_object-create":250,"./_object-dp":251,"./_redefine-all":263,"./_set-species":268,"./_validate-collection":280}],220:[function(e,t,r){var n=e("./_classof"),i=e("./_array-from-iterable");t.exports=function(e){return function(){if(n(this)!=e)throw TypeError(e+"#toJSON isn't generic");return i(this)}}},{"./_array-from-iterable":212,"./_classof":217}],221:[function(e,t,r){"use strict";var n=e("./_redefine-all"),i=e("./_meta").getWeak,s=e("./_an-object"),a=e("./_is-object"),o=e("./_an-instance"),u=e("./_for-of"),l=e("./_array-methods"),c=e("./_has"),p=e("./_validate-collection"),h=l(5),f=l(6),d=0,m=function(e){return e._l||(e._l=new y)},y=function(){this.a=[]},g=function(e,t){return h(e.a,function(e){return e[0]===t})};y.prototype={get:function(e){var t=g(this,e);if(t)return t[1]},has:function(e){return!!g(this,e)},set:function(e,t){var r=g(this,e);r?r[1]=t:this.a.push([e,t])},delete:function(e){var t=f(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},t.exports={getConstructor:function(e,t,r,s){var l=e(function(e,n){o(e,l,t,"_i"),e._t=t,e._i=d++,e._l=void 0,void 0!=n&&u(n,r,e[s],e)});return n(l.prototype,{delete:function(e){if(!a(e))return!1;var r=i(e);return!0===r?m(p(this,t)).delete(e):r&&c(r,this._i)&&delete r[this._i]},has:function(e){if(!a(e))return!1;var r=i(e);return!0===r?m(p(this,t)).has(e):r&&c(r,this._i)}}),l},def:function(e,t,r){var n=i(s(t),!0);return!0===n?m(e).set(t,r):n[e._i]=r,e},ufstore:m}},{"./_an-instance":210,"./_an-object":211,"./_array-methods":214,"./_for-of":232,"./_has":234,"./_is-object":241,"./_meta":248,"./_redefine-all":263,"./_validate-collection":280}],222:[function(e,t,r){"use strict";var n=e("./_global"),i=e("./_export"),s=e("./_meta"),a=e("./_fails"),o=e("./_hide"),u=e("./_redefine-all"),l=e("./_for-of"),c=e("./_an-instance"),p=e("./_is-object"),h=e("./_set-to-string-tag"),f=e("./_object-dp").f,d=e("./_array-methods")(0),m=e("./_descriptors");t.exports=function(e,t,r,y,g,b){var v=n[e],x=v,E=g?"set":"add",A=x&&x.prototype,D={};return m&&"function"==typeof x&&(b||A.forEach&&!a(function(){(new x).entries().next()}))?(x=t(function(t,r){c(t,x,e,"_c"),t._c=new v,void 0!=r&&l(r,g,t[E],t)}),d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in A&&(!b||"clear"!=e)&&o(x.prototype,e,function(r,n){if(c(this,x,e),!t&&b&&!p(r))return"get"==e&&void 0;var i=this._c[e](0===r?0:r,n);return t?this:i})}),b||f(x.prototype,"size",{get:function(){return this._c.size}})):(x=y.getConstructor(t,e,g,E),u(x.prototype,r),s.NEED=!0),h(x,e),D[e]=x,i(i.G+i.W+i.F,D),b||y.setStrong(x,e,g),x}},{"./_an-instance":210,"./_array-methods":214,"./_descriptors":226,"./_export":230,"./_fails":231,"./_for-of":232,"./_global":233,"./_hide":235,"./_is-object":241,"./_meta":248,"./_object-dp":251,"./_redefine-all":263,"./_set-to-string-tag":269}],223:[function(e,t,r){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},{}],224:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":208}],225:[function(e,t,r){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],226:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":231}],227:[function(e,t,r){var n=e("./_is-object"),i=e("./_global").document,s=n(i)&&n(i.createElement);t.exports=function(e){return s?i.createElement(e):{}}},{"./_global":233,"./_is-object":241}],228:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],229:[function(e,t,r){var n=e("./_object-keys"),i=e("./_object-gops"),s=e("./_object-pie");t.exports=function(e){var t=n(e),r=i.f;if(r)for(var a,o=r(e),u=s.f,l=0;o.length>l;)u.call(e,a=o[l++])&&t.push(a);return t}},{"./_object-gops":256,"./_object-keys":259,"./_object-pie":260}],230:[function(e,t,r){var n=e("./_global"),i=e("./_core"),s=e("./_ctx"),a=e("./_hide"),o=function(e,t,r){var u,l,c,p=e&o.F,h=e&o.G,f=e&o.S,d=e&o.P,m=e&o.B,y=e&o.W,g=h?i:i[t]||(i[t]={}),b=g.prototype,v=h?n:f?n[t]:(n[t]||{}).prototype;h&&(r=t);for(u in r)(l=!p&&v&&void 0!==v[u])&&u in g||(c=l?v[u]:r[u],g[u]=h&&"function"!=typeof v[u]?r[u]:m&&l?s(c,n):y&&v[u]==c?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):d&&"function"==typeof c?s(Function.call,c):c,d&&((g.virtual||(g.virtual={}))[u]=c,e&o.R&&b&&!b[u]&&a(b,u,c)))};o.F=1,o.G=2,o.S=4,o.P=8,o.B=16,o.W=32,o.U=64,o.R=128,t.exports=o},{"./_core":223,"./_ctx":224,"./_global":233,"./_hide":235}],231:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],232:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),s=e("./_is-array-iter"),a=e("./_an-object"),o=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={};(r=t.exports=function(e,t,r,p,h){var f,d,m,y,g=h?function(){return e}:u(e),b=n(r,p,t?2:1),v=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(s(g)){for(f=o(e.length);f>v;v++)if((y=t?b(a(d=e[v])[0],d[1]):b(e[v]))===l||y===c)return y}else for(m=g.call(e);!(d=m.next()).done;)if((y=i(m,b,d.value,t))===l||y===c)return y}).BREAK=l,r.RETURN=c},{"./_an-object":211,"./_ctx":224,"./_is-array-iter":239,"./_iter-call":242,"./_to-length":276,"./core.get-iterator-method":284}],233:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],234:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],235:[function(e,t,r){var n=e("./_object-dp"),i=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":226,"./_object-dp":251,"./_property-desc":262}],236:[function(e,t,r){var n=e("./_global").document;t.exports=n&&n.documentElement},{"./_global":233}],237:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":226,"./_dom-create":227,"./_fails":231}],238:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":218}],239:[function(e,t,r){var n=e("./_iterators"),i=e("./_wks")("iterator"),s=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||s[i]===e)}},{"./_iterators":246,"./_wks":283}],240:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":218}],241:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],242:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){var s=e.return;throw void 0!==s&&n(s.call(e)),t}}},{"./_an-object":211}],243:[function(e,t,r){"use strict";var n=e("./_object-create"),i=e("./_property-desc"),s=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(a,{next:i(1,r)}),s(e,t+" Iterator")}},{"./_hide":235,"./_object-create":250,"./_property-desc":262,"./_set-to-string-tag":269,"./_wks":283}],244:[function(e,t,r){"use strict";var n=e("./_library"),i=e("./_export"),s=e("./_redefine"),a=e("./_hide"),o=e("./_has"),u=e("./_iterators"),l=e("./_iter-create"),c=e("./_set-to-string-tag"),p=e("./_object-gpo"),h=e("./_wks")("iterator"),f=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(e,t,r,m,y,g,b){l(r,t,m);var v,x,E,A=function(e){if(!f&&e in _)return _[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},D=t+" Iterator",C="values"==y,S=!1,_=e.prototype,w=_[h]||_["@@iterator"]||y&&_[y],k=w||A(y),F=y?C?A("entries"):k:void 0,T="Array"==t?_.entries||w:w;if(T&&(E=p(T.call(new e)))!==Object.prototype&&E.next&&(c(E,D,!0),n||o(E,h)||a(E,h,d)),C&&w&&"values"!==w.name&&(S=!0,k=function(){return w.call(this)}),n&&!b||!f&&!S&&_[h]||a(_,h,k),u[t]=k,u[D]=d,y)if(v={values:C?k:A("values"),keys:g?k:A("keys"),entries:F},b)for(x in v)x in _||s(_,x,v[x]);else i(i.P+i.F*(f||S),t,v);return v}},{"./_export":230,"./_has":234,"./_hide":235,"./_iter-create":243,"./_iterators":246,"./_library":247,"./_object-gpo":257,"./_redefine":264,"./_set-to-string-tag":269,"./_wks":283}],245:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],246:[function(e,t,r){t.exports={}},{}],247:[function(e,t,r){t.exports=!0},{}],248:[function(e,t,r){var n=e("./_uid")("meta"),i=e("./_is-object"),s=e("./_has"),a=e("./_object-dp").f,o=0,u=Object.isExtensible||function(){return!0},l=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),c=function(e){a(e,n,{value:{i:"O"+ ++o,w:{}}})},p=t.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,n)){if(!u(e))return"F";if(!t)return"E";c(e)}return e[n].i},getWeak:function(e,t){if(!s(e,n)){if(!u(e))return!0;if(!t)return!1;c(e)}return e[n].w},onFreeze:function(e){return l&&p.NEED&&u(e)&&!s(e,n)&&c(e),e}}},{"./_fails":231,"./_has":234,"./_is-object":241,"./_object-dp":251,"./_uid":279}],249:[function(e,t,r){"use strict";var n=e("./_object-keys"),i=e("./_object-gops"),s=e("./_object-pie"),a=e("./_to-object"),o=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach(function(e){t[e]=e}),7!=u({},e)[r]||Object.keys(u({},t)).join("")!=n})?function(e,t){for(var r=a(e),u=arguments.length,l=1,c=i.f,p=s.f;u>l;)for(var h,f=o(arguments[l++]),d=c?n(f).concat(c(f)):n(f),m=d.length,y=0;m>y;)p.call(f,h=d[y++])&&(r[h]=f[h]);return r}:u},{"./_fails":231,"./_iobject":238,"./_object-gops":256,"./_object-keys":259,"./_object-pie":260,"./_to-object":277}],250:[function(e,t,r){var n=e("./_an-object"),i=e("./_object-dps"),s=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),o=function(){},u=function(){var t,r=e("./_dom-create")("iframe"),n=s.length;for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",(t=r.contentWindow.document).open(),t.write("