From 62f904974d5c36c9f0d44d0928f23bb3a752398d Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Sat, 23 Feb 2019 17:21:56 -0500 Subject: [PATCH 001/133] src: refactor node options parsers to mitigate MSVC bug Backport-PR-URL: https://github.com/nodejs/node/pull/26649 PR-URL: https://github.com/nodejs/node/pull/26280 Fixes: https://github.com/nodejs/node/issues/25593 Reviewed-By: Joyee Cheung --- src/node.cc | 2 +- src/node_options.cc | 99 +++++++++++++++++++++++++++++++-------------- src/node_options.h | 45 ++++++--------------- src/node_worker.cc | 2 +- 4 files changed, 83 insertions(+), 65 deletions(-) diff --git a/src/node.cc b/src/node.cc index 9494cc11078a31..b705454d77a046 100644 --- a/src/node.cc +++ b/src/node.cc @@ -572,7 +572,7 @@ int ProcessGlobalArgs(std::vector* args, std::vector v8_args; Mutex::ScopedLock lock(per_process::cli_options_mutex); - options_parser::PerProcessOptionsParser::instance.Parse( + options_parser::Parse( args, exec_args, &v8_args, diff --git a/src/node_options.cc b/src/node_options.cc index 9f94c75767bcf1..98da213bff1ba4 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -111,19 +111,60 @@ void EnvironmentOptions::CheckOptions(std::vector* errors) { namespace options_parser { -// Explicitly access the singelton instances in their dependancy order. -// This was moved here to workaround a compiler bug. -// Refs: https://github.com/nodejs/node/issues/25593 +class DebugOptionsParser : public OptionsParser { + public: + DebugOptionsParser(); +}; + +class EnvironmentOptionsParser : public OptionsParser { + public: + EnvironmentOptionsParser(); + explicit EnvironmentOptionsParser(const DebugOptionsParser& dop) + : EnvironmentOptionsParser() { + Insert(&dop, &EnvironmentOptions::get_debug_options); + } +}; -#if HAVE_INSPECTOR -const DebugOptionsParser DebugOptionsParser::instance; -#endif // HAVE_INSPECTOR +class PerIsolateOptionsParser : public OptionsParser { + public: + PerIsolateOptionsParser() = delete; + explicit PerIsolateOptionsParser(const EnvironmentOptionsParser& eop); +}; -const EnvironmentOptionsParser EnvironmentOptionsParser::instance; +class PerProcessOptionsParser : public OptionsParser { + public: + PerProcessOptionsParser() = delete; + explicit PerProcessOptionsParser(const PerIsolateOptionsParser& iop); +}; -const PerIsolateOptionsParser PerIsolateOptionsParser::instance; +#if HAVE_INSPECTOR +const DebugOptionsParser _dop_instance{}; +const EnvironmentOptionsParser _eop_instance{_dop_instance}; +#else +const EnvironmentOptionsParser _eop_instance{}; +#endif // HAVE_INSPECTOR +const PerIsolateOptionsParser _piop_instance{_eop_instance}; +const PerProcessOptionsParser _ppop_instance{_piop_instance}; + +template <> +void Parse( + StringVector* const args, StringVector* const exec_args, + StringVector* const v8_args, + PerIsolateOptions* const options, + OptionEnvvarSettings required_env_settings, StringVector* const errors) { + _piop_instance.Parse( + args, exec_args, v8_args, options, required_env_settings, errors); +} -const PerProcessOptionsParser PerProcessOptionsParser::instance; +template <> +void Parse( + StringVector* const args, StringVector* const exec_args, + StringVector* const v8_args, + PerProcessOptions* const options, + OptionEnvvarSettings required_env_settings, StringVector* const errors) { + _ppop_instance.Parse( + args, exec_args, v8_args, options, required_env_settings, errors); +} // XXX: If you add an option here, please also add it to doc/node.1 and // doc/api/cli.md @@ -286,14 +327,10 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { AddAlias("-i", "--interactive"); AddOption("--napi-modules", "", NoOp{}, kAllowedInEnvironment); - -#if HAVE_INSPECTOR - Insert(&DebugOptionsParser::instance, - &EnvironmentOptions::get_debug_options); -#endif // HAVE_INSPECTOR } -PerIsolateOptionsParser::PerIsolateOptionsParser() { +PerIsolateOptionsParser::PerIsolateOptionsParser( + const EnvironmentOptionsParser& eop) { AddOption("--track-heap-objects", "track heap object allocations for heap snapshots", &PerIsolateOptions::track_heap_objects, @@ -349,11 +386,11 @@ PerIsolateOptionsParser::PerIsolateOptionsParser() { kAllowedInEnvironment); #endif // NODE_REPORT - Insert(&EnvironmentOptionsParser::instance, - &PerIsolateOptions::get_per_env_options); + Insert(&eop, &PerIsolateOptions::get_per_env_options); } -PerProcessOptionsParser::PerProcessOptionsParser() { +PerProcessOptionsParser::PerProcessOptionsParser( + const PerIsolateOptionsParser& iop) { AddOption("--title", "the process title to use on startup", &PerProcessOptions::title, @@ -459,8 +496,7 @@ PerProcessOptionsParser::PerProcessOptionsParser() { #endif #endif - Insert(&PerIsolateOptionsParser::instance, - &PerProcessOptions::get_per_isolate_options); + Insert(&iop, &PerProcessOptions::get_per_isolate_options); } inline std::string RemoveBrackets(const std::string& host) { @@ -526,10 +562,8 @@ void GetOptions(const FunctionCallbackInfo& args) { per_process::cli_options->per_isolate = original_per_isolate; }); - const auto& parser = PerProcessOptionsParser::instance; - Local options = Map::New(isolate); - for (const auto& item : parser.options_) { + for (const auto& item : _ppop_instance.options_) { Local value; const auto& option_info = item.second; auto field = option_info.field; @@ -547,29 +581,34 @@ void GetOptions(const FunctionCallbackInfo& args) { } break; case kBoolean: - value = Boolean::New(isolate, *parser.Lookup(field, opts)); + value = Boolean::New(isolate, + *_ppop_instance.Lookup(field, opts)); break; case kInteger: - value = Number::New(isolate, *parser.Lookup(field, opts)); + value = Number::New(isolate, + *_ppop_instance.Lookup(field, opts)); break; case kUInteger: - value = Number::New(isolate, *parser.Lookup(field, opts)); + value = Number::New(isolate, + *_ppop_instance.Lookup(field, opts)); break; case kString: - if (!ToV8Value(context, *parser.Lookup(field, opts)) + if (!ToV8Value(context, + *_ppop_instance.Lookup(field, opts)) .ToLocal(&value)) { return; } break; case kStringList: if (!ToV8Value(context, - *parser.Lookup>(field, opts)) + *_ppop_instance.Lookup(field, opts)) .ToLocal(&value)) { return; } break; case kHostPort: { - const HostPort& host_port = *parser.Lookup(field, opts); + const HostPort& host_port = + *_ppop_instance.Lookup(field, opts); Local obj = Object::New(isolate); Local host; if (!ToV8Value(context, host_port.host()).ToLocal(&host) || @@ -610,7 +649,7 @@ void GetOptions(const FunctionCallbackInfo& args) { } Local aliases; - if (!ToV8Value(context, parser.aliases_).ToLocal(&aliases)) return; + if (!ToV8Value(context, _ppop_instance.aliases_).ToLocal(&aliases)) return; Local ret = Object::New(isolate); if (ret->Set(context, env->options_string(), options).IsNothing() || diff --git a/src/node_options.h b/src/node_options.h index b3ac910b3d57eb..072e001fb712ea 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -317,12 +317,12 @@ class OptionsParser { // // If `*error` is set, the result of the parsing should be discarded and the // contents of any of the argument vectors should be considered undefined. - virtual void Parse(std::vector* const args, - std::vector* const exec_args, - std::vector* const v8_args, - Options* const options, - OptionEnvvarSettings required_env_settings, - std::vector* const errors) const; + void Parse(std::vector* const args, + std::vector* const exec_args, + std::vector* const v8_args, + Options* const options, + OptionEnvvarSettings required_env_settings, + std::vector* const errors) const; private: // We support the wide variety of different option types by remembering @@ -403,33 +403,12 @@ class OptionsParser { friend void GetOptions(const v8::FunctionCallbackInfo& args); }; -class DebugOptionsParser : public OptionsParser { - public: - DebugOptionsParser(); - - static const DebugOptionsParser instance; -}; - -class EnvironmentOptionsParser : public OptionsParser { - public: - EnvironmentOptionsParser(); - - static const EnvironmentOptionsParser instance; -}; - -class PerIsolateOptionsParser : public OptionsParser { - public: - PerIsolateOptionsParser(); - - static const PerIsolateOptionsParser instance; -}; - -class PerProcessOptionsParser : public OptionsParser { - public: - PerProcessOptionsParser(); - - static const PerProcessOptionsParser instance; -}; +using StringVector = std::vector; +template +void Parse( + StringVector* const args, StringVector* const exec_args, + StringVector* const v8_args, OptionsType* const options, + OptionEnvvarSettings required_env_settings, StringVector* const errors); } // namespace options_parser diff --git a/src/node_worker.cc b/src/node_worker.cc index f4c8e402cbb10c..70901f1fa17836 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -436,7 +436,7 @@ void Worker::New(const FunctionCallbackInfo& args) { // Using invalid_args as the v8_args argument as it stores unknown // options for the per isolate parser. - options_parser::PerIsolateOptionsParser::instance.Parse( + options_parser::Parse( &exec_argv, &exec_argv_out, &invalid_args, From e6c1ad59015e46e1ede23f1f9e4e3f57d5bf51e2 Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Mon, 25 Feb 2019 15:42:28 -0500 Subject: [PATCH 002/133] src: fix warnings around node_options * header explicit usage, order, and reduce use of `*-inl.h` * pointer -> const reference when possible * no variable recyclicng * `std::begin/end` prefered over `instance.begin/end` * `USE` for explicit unused resaults Backport-PR-URL: https://github.com/nodejs/node/pull/26649 PR-URL: https://github.com/nodejs/node/pull/26280 Fixes: https://github.com/nodejs/node/issues/25593 Reviewed-By: Joyee Cheung --- src/node_options-inl.h | 10 +++++----- src/node_options.cc | 9 +++++---- src/node_options.h | 2 +- src/node_process_object.cc | 4 ++-- src/node_worker.cc | 4 ++-- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/node_options-inl.h b/src/node_options-inl.h index 4387ec54bc34cc..9c8d24e29e9c7d 100644 --- a/src/node_options-inl.h +++ b/src/node_options-inl.h @@ -213,15 +213,15 @@ auto OptionsParser::Convert( template template void OptionsParser::Insert( - const OptionsParser* child_options_parser, + const OptionsParser& child_options_parser, ChildOptions* (Options::* get_child)()) { - aliases_.insert(child_options_parser->aliases_.begin(), - child_options_parser->aliases_.end()); + aliases_.insert(std::begin(child_options_parser.aliases_), + std::end(child_options_parser.aliases_)); - for (const auto& pair : child_options_parser->options_) + for (const auto& pair : child_options_parser.options_) options_.emplace(pair.first, Convert(pair.second, get_child)); - for (const auto& pair : child_options_parser->implications_) + for (const auto& pair : child_options_parser.implications_) implications_.emplace(pair.first, Convert(pair.second, get_child)); } diff --git a/src/node_options.cc b/src/node_options.cc index 98da213bff1ba4..f384957db5bef3 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -121,7 +121,7 @@ class EnvironmentOptionsParser : public OptionsParser { EnvironmentOptionsParser(); explicit EnvironmentOptionsParser(const DebugOptionsParser& dop) : EnvironmentOptionsParser() { - Insert(&dop, &EnvironmentOptions::get_debug_options); + Insert(dop, &EnvironmentOptions::get_debug_options); } }; @@ -386,7 +386,7 @@ PerIsolateOptionsParser::PerIsolateOptionsParser( kAllowedInEnvironment); #endif // NODE_REPORT - Insert(&eop, &PerIsolateOptions::get_per_env_options); + Insert(eop, &PerIsolateOptions::get_per_env_options); } PerProcessOptionsParser::PerProcessOptionsParser( @@ -496,7 +496,7 @@ PerProcessOptionsParser::PerProcessOptionsParser( #endif #endif - Insert(&iop, &PerProcessOptions::get_per_isolate_options); + Insert(iop, &PerProcessOptions::get_per_isolate_options); } inline std::string RemoveBrackets(const std::string& host) { @@ -510,7 +510,8 @@ inline int ParseAndValidatePort(const std::string& port, std::vector* errors) { char* endptr; errno = 0; - const long result = strtol(port.c_str(), &endptr, 10); // NOLINT(runtime/int) + const unsigned long result = // NOLINT(runtime/int) + strtoul(port.c_str(), &endptr, 10); if (errno != 0 || *endptr != '\0'|| (result != 0 && result < 1024) || result > 65535) { errors->push_back(" must be 0 or in range 1024 to 65535."); diff --git a/src/node_options.h b/src/node_options.h index 072e001fb712ea..5c9dbe77ab47ef 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -297,7 +297,7 @@ class OptionsParser { // a method that yields the target options type from this parser's options // type. template - void Insert(const OptionsParser* child_options_parser, + void Insert(const OptionsParser& child_options_parser, ChildOptions* (Options::* get_child)()); // Parse a sequence of options into an options struct, a list of diff --git a/src/node_process_object.cc b/src/node_process_object.cc index 21dc7989cbbd75..c8a2c26690acf5 100644 --- a/src/node_process_object.cc +++ b/src/node_process_object.cc @@ -1,5 +1,3 @@ -#include // PATH_MAX - #include "env-inl.h" #include "node_internals.h" #include "node_options-inl.h" @@ -8,6 +6,8 @@ #include "node_revert.h" #include "util-inl.h" +#include // PATH_MAX + namespace node { using v8::Context; using v8::DEFAULT; diff --git a/src/node_worker.cc b/src/node_worker.cc index 70901f1fa17836..a821915e689e2c 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -447,13 +447,13 @@ void Worker::New(const FunctionCallbackInfo& args) { // The first argument is program name. invalid_args.erase(invalid_args.begin()); if (errors.size() > 0 || invalid_args.size() > 0) { - v8::Local value = + v8::Local error = ToV8Value(env->context(), errors.size() > 0 ? errors : invalid_args) .ToLocalChecked(); Local key = FIXED_ONE_BYTE_STRING(env->isolate(), "invalidExecArgv"); - args.This()->Set(env->context(), key, value).FromJust(); + USE(args.This()->Set(env->context(), key, error).FromJust()); return; } } From 63e7cc7694f07697b9a8540dea85a68f390bfdc3 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 6 Mar 2019 15:38:59 +0100 Subject: [PATCH 003/133] src: forbid access to CLI options before bootstrapping is done PR-URL: https://github.com/nodejs/node/pull/26476 Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater Reviewed-By: Richard Lau --- lib/internal/async_hooks.js | 8 +++----- src/node_options.cc | 6 ++++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index eeec0e6f82f36c..53c8d08a7d9af9 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -5,10 +5,6 @@ const { ERR_INVALID_ASYNC_ID } = require('internal/errors').codes; -const { getOptionValue } = require('internal/options'); -const shouldAbortOnUncaughtException = - getOptionValue('--abort-on-uncaught-exception'); - const async_wrap = internalBinding('async_wrap'); /* async_hook_fields is a Uint32Array wrapping the uint32_t array of * Environment::AsyncHooks::fields_[]. Each index tracks the number of active @@ -102,7 +98,9 @@ function fatalError(e) { Error.captureStackTrace(o, fatalError); process._rawDebug(o.stack); } - if (shouldAbortOnUncaughtException) { + + const { getOptionValue } = require('internal/options'); + if (getOptionValue('--abort-on-uncaught-exception')) { process.abort(); } process.exit(1); diff --git a/src/node_options.cc b/src/node_options.cc index f384957db5bef3..fb9b6c59788a73 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -548,6 +548,12 @@ HostPort SplitHostPort(const std::string& arg, void GetOptions(const FunctionCallbackInfo& args) { Mutex::ScopedLock lock(per_process::cli_options_mutex); Environment* env = Environment::GetCurrent(args); + if (!env->has_run_bootstrapping_code()) { + // No code because this is an assertion. + return env->ThrowError( + "Should not query options before bootstrapping is done"); + } + Isolate* isolate = env->isolate(); Local context = env->context(); From ab70c96a79f5a3d916888bf6855c055269a8db0b Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 8 Mar 2019 09:34:46 +0100 Subject: [PATCH 004/133] src: refactor coverage connection - Refactor the C++ class to be resuable for other types of profiles - Move the try-catch block around coverage collection callback to be inside the callback to silence potential JSON or write errors. - Use Function::Call instead of MakeCallback to call the coverage message callback since it does not actually need async hook handling. This way we no longer needs to disable the async hooks when writing the coverage results. - Renames `lib/internal/coverage-gen/with_profiler.js` to `lib/internal/profiler.js` because it is now the only way to generate coverage. PR-URL: https://github.com/nodejs/node/pull/26513 Reviewed-By: Anna Henningsen Reviewed-By: Ben Coe --- lib/internal/bootstrap/pre_execution.js | 2 +- lib/internal/process/per_thread.js | 2 +- .../with_profiler.js => profiler.js} | 19 +- node.gyp | 2 +- src/env.h | 2 +- src/inspector/node_inspector.gypi | 2 +- src/inspector_coverage.cc | 168 -------------- src/inspector_profiler.cc | 214 ++++++++++++++++++ src/node.cc | 4 +- src/node_binding.cc | 6 +- src/node_internals.h | 4 +- 11 files changed, 231 insertions(+), 194 deletions(-) rename lib/internal/{coverage-gen/with_profiler.js => profiler.js} (73%) delete mode 100644 src/inspector_coverage.cc create mode 100644 src/inspector_profiler.cc diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index 607951a0bb4aba..a518fcfd621a6a 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -78,7 +78,7 @@ function setupCoverageHooks(dir) { const { writeCoverage, setCoverageDirectory - } = require('internal/coverage-gen/with_profiler'); + } = require('internal/profiler'); setCoverageDirectory(coverageDirectory); process.on('exit', writeCoverage); process.reallyExit = (code) => { diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js index 9e53ac3a1982da..5706d560baeb9c 100644 --- a/lib/internal/process/per_thread.js +++ b/lib/internal/process/per_thread.js @@ -158,7 +158,7 @@ function wrapProcessMethods(binding) { function kill(pid, sig) { var err; if (process.env.NODE_V8_COVERAGE) { - const { writeCoverage } = require('internal/coverage-gen/with_profiler'); + const { writeCoverage } = require('internal/profiler'); writeCoverage(); } diff --git a/lib/internal/coverage-gen/with_profiler.js b/lib/internal/profiler.js similarity index 73% rename from lib/internal/coverage-gen/with_profiler.js rename to lib/internal/profiler.js index 573d2c3712b281..1042f126dd6e25 100644 --- a/lib/internal/coverage-gen/with_profiler.js +++ b/lib/internal/profiler.js @@ -21,23 +21,16 @@ function writeCoverage() { } const target = join(coverageDirectory, filename); - try { - disableAllAsyncHooks(); - internalBinding('coverage').end((msg) => { + internalBinding('profiler').endCoverage((msg) => { + try { const coverageInfo = JSON.parse(msg).result; if (coverageInfo) { writeFileSync(target, JSON.stringify(coverageInfo)); } - }); - } catch (err) { - console.error(err); - } -} - -function disableAllAsyncHooks() { - const { getHookArrays } = require('internal/async_hooks'); - const [hooks_array] = getHookArrays(); - hooks_array.forEach((hook) => { hook.disable(); }); + } catch (err) { + console.error(err); + } + }); } function setCoverageDirectory(dir) { diff --git a/node.gyp b/node.gyp index 6bd2e63a2a71ee..1a0738008796d3 100644 --- a/node.gyp +++ b/node.gyp @@ -102,7 +102,6 @@ 'lib/internal/cluster/worker.js', 'lib/internal/console/constructor.js', 'lib/internal/console/global.js', - 'lib/internal/coverage-gen/with_profiler.js', 'lib/internal/crypto/certificate.js', 'lib/internal/crypto/cipher.js', 'lib/internal/crypto/diffiehellman.js', @@ -170,6 +169,7 @@ 'lib/internal/process/worker_thread_only.js', 'lib/internal/process/report.js', 'lib/internal/process/task_queues.js', + 'lib/internal/profiler.js', 'lib/internal/querystring.js', 'lib/internal/readline.js', 'lib/internal/repl.js', diff --git a/src/env.h b/src/env.h index 4841f22b199fdc..2890da725c5e02 100644 --- a/src/env.h +++ b/src/env.h @@ -469,7 +469,7 @@ struct CompileFnEntry { #define DEBUG_CATEGORY_NAMES(V) \ NODE_ASYNC_PROVIDER_TYPES(V) \ V(INSPECTOR_SERVER) \ - V(COVERAGE) + V(INSPECTOR_PROFILER) enum class DebugCategory { #define V(name) name, diff --git a/src/inspector/node_inspector.gypi b/src/inspector/node_inspector.gypi index a59727f191e95b..5191543ab73450 100644 --- a/src/inspector/node_inspector.gypi +++ b/src/inspector/node_inspector.gypi @@ -45,7 +45,7 @@ '../../src/inspector_io.cc', '../../src/inspector_agent.h', '../../src/inspector_io.h', - '../../src/inspector_coverage.cc', + '../../src/inspector_profiler.cc', '../../src/inspector_js_api.cc', '../../src/inspector_socket.cc', '../../src/inspector_socket.h', diff --git a/src/inspector_coverage.cc b/src/inspector_coverage.cc deleted file mode 100644 index 8cbec586fba718..00000000000000 --- a/src/inspector_coverage.cc +++ /dev/null @@ -1,168 +0,0 @@ -#include "base_object-inl.h" -#include "debug_utils.h" -#include "inspector_agent.h" -#include "node_internals.h" -#include "v8-inspector.h" - -namespace node { -namespace coverage { - -using v8::Context; -using v8::Function; -using v8::FunctionCallbackInfo; -using v8::HandleScope; -using v8::Isolate; -using v8::Local; -using v8::MaybeLocal; -using v8::NewStringType; -using v8::Object; -using v8::ObjectTemplate; -using v8::String; -using v8::Value; - -using v8_inspector::StringBuffer; -using v8_inspector::StringView; - -std::unique_ptr ToProtocolString(Isolate* isolate, - Local value) { - TwoByteValue buffer(isolate, value); - return StringBuffer::create(StringView(*buffer, buffer.length())); -} - -class V8CoverageConnection : public BaseObject { - public: - class V8CoverageSessionDelegate : public inspector::InspectorSessionDelegate { - public: - explicit V8CoverageSessionDelegate(V8CoverageConnection* connection) - : connection_(connection) {} - - void SendMessageToFrontend( - const v8_inspector::StringView& message) override { - Environment* env = connection_->env(); - Local fn = connection_->env()->on_coverage_message_function(); - bool ending = !fn.IsEmpty(); - Debug(env, - DebugCategory::COVERAGE, - "Sending message to frontend, ending = %s\n", - ending ? "true" : "false"); - if (!ending) { - return; - } - Isolate* isolate = env->isolate(); - - HandleScope handle_scope(isolate); - Context::Scope context_scope(env->context()); - MaybeLocal v8string = - String::NewFromTwoByte(isolate, - message.characters16(), - NewStringType::kNormal, - message.length()); - Local args[] = {v8string.ToLocalChecked().As()}; - USE(MakeCallback(isolate, - connection_->object(), - fn, - arraysize(args), - args, - async_context{0, 0})); - } - - private: - V8CoverageConnection* connection_; - }; - - SET_MEMORY_INFO_NAME(V8CoverageConnection) - SET_SELF_SIZE(V8CoverageConnection) - - void MemoryInfo(MemoryTracker* tracker) const override { - tracker->TrackFieldWithSize( - "session", sizeof(*session_), "InspectorSession"); - } - - explicit V8CoverageConnection(Environment* env) - : BaseObject(env, env->coverage_connection()), session_(nullptr) { - inspector::Agent* inspector = env->inspector_agent(); - std::unique_ptr session = inspector->Connect( - std::make_unique(this), false); - session_ = std::move(session); - MakeWeak(); - } - - void Start() { - Debug(this->env(), - DebugCategory::COVERAGE, - "Sending Profiler.startPreciseCoverage\n"); - Isolate* isolate = this->env()->isolate(); - Local enable = FIXED_ONE_BYTE_STRING( - isolate, "{\"id\": 1, \"method\": \"Profiler.enable\"}"); - Local start = FIXED_ONE_BYTE_STRING( - isolate, - "{" - "\"id\": 2," - "\"method\": \"Profiler.startPreciseCoverage\"," - "\"params\": {\"callCount\": true, \"detailed\": true}" - "}"); - session_->Dispatch(ToProtocolString(isolate, enable)->string()); - session_->Dispatch(ToProtocolString(isolate, start)->string()); - } - - void End() { - Debug(this->env(), - DebugCategory::COVERAGE, - "Sending Profiler.takePreciseCoverage\n"); - Isolate* isolate = this->env()->isolate(); - Local end = - FIXED_ONE_BYTE_STRING(isolate, - "{" - "\"id\": 3," - "\"method\": \"Profiler.takePreciseCoverage\"" - "}"); - session_->Dispatch(ToProtocolString(isolate, end)->string()); - } - - friend class V8CoverageSessionDelegate; - - private: - std::unique_ptr session_; -}; - -bool StartCoverageCollection(Environment* env) { - HandleScope scope(env->isolate()); - - Local t = ObjectTemplate::New(env->isolate()); - t->SetInternalFieldCount(1); - Local obj; - if (!t->NewInstance(env->context()).ToLocal(&obj)) { - return false; - } - - obj->SetAlignedPointerInInternalField(0, nullptr); - - CHECK(env->coverage_connection().IsEmpty()); - env->set_coverage_connection(obj); - V8CoverageConnection* connection = new V8CoverageConnection(env); - connection->Start(); - return true; -} - -static void EndCoverageCollection(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - CHECK(args[0]->IsFunction()); - Debug(env, DebugCategory::COVERAGE, "Ending coverage collection\n"); - env->set_on_coverage_message_function(args[0].As()); - V8CoverageConnection* connection = - Unwrap(env->coverage_connection()); - CHECK_NOT_NULL(connection); - connection->End(); -} - -static void Initialize(Local target, - Local unused, - Local context, - void* priv) { - Environment* env = Environment::GetCurrent(context); - env->SetMethod(target, "end", EndCoverageCollection); -} -} // namespace coverage -} // namespace node - -NODE_MODULE_CONTEXT_AWARE_INTERNAL(coverage, node::coverage::Initialize) diff --git a/src/inspector_profiler.cc b/src/inspector_profiler.cc new file mode 100644 index 00000000000000..942a1d148a2f79 --- /dev/null +++ b/src/inspector_profiler.cc @@ -0,0 +1,214 @@ +#include "base_object-inl.h" +#include "debug_utils.h" +#include "inspector_agent.h" +#include "node_internals.h" +#include "v8-inspector.h" + +namespace node { +namespace profiler { + +using v8::Context; +using v8::EscapableHandleScope; +using v8::Function; +using v8::FunctionCallbackInfo; +using v8::HandleScope; +using v8::Isolate; +using v8::Local; +using v8::MaybeLocal; +using v8::NewStringType; +using v8::Object; +using v8::ObjectTemplate; +using v8::String; +using v8::Value; + +using v8_inspector::StringBuffer; +using v8_inspector::StringView; + +std::unique_ptr ToProtocolString(Isolate* isolate, + Local value) { + TwoByteValue buffer(isolate, value); + return StringBuffer::create(StringView(*buffer, buffer.length())); +} + +class V8ProfilerConnection : public BaseObject { + public: + class V8ProfilerSessionDelegate + : public inspector::InspectorSessionDelegate { + public: + explicit V8ProfilerSessionDelegate(V8ProfilerConnection* connection) + : connection_(connection) {} + + void SendMessageToFrontend( + const v8_inspector::StringView& message) override { + Environment* env = connection_->env(); + + Local fn = connection_->GetMessageCallback(); + bool ending = !fn.IsEmpty(); + Debug(env, + DebugCategory::INSPECTOR_PROFILER, + "Sending message to frontend, ending = %s\n", + ending ? "true" : "false"); + if (!ending) { + return; + } + Isolate* isolate = env->isolate(); + + HandleScope handle_scope(isolate); + Context::Scope context_scope(env->context()); + MaybeLocal v8string = + String::NewFromTwoByte(isolate, + message.characters16(), + NewStringType::kNormal, + message.length()); + Local args[] = {v8string.ToLocalChecked().As()}; + USE(fn->Call( + env->context(), connection_->object(), arraysize(args), args)); + } + + private: + V8ProfilerConnection* connection_; + }; + + SET_MEMORY_INFO_NAME(V8ProfilerConnection) + SET_SELF_SIZE(V8ProfilerConnection) + + void MemoryInfo(MemoryTracker* tracker) const override { + tracker->TrackFieldWithSize( + "session", sizeof(*session_), "InspectorSession"); + } + + explicit V8ProfilerConnection(Environment* env, Local obj) + : BaseObject(env, obj), session_(nullptr) { + inspector::Agent* inspector = env->inspector_agent(); + std::unique_ptr session = inspector->Connect( + std::make_unique(this), false); + session_ = std::move(session); + MakeWeak(); + } + + void DispatchMessage(Isolate* isolate, Local message) { + session_->Dispatch(ToProtocolString(isolate, message)->string()); + } + + static MaybeLocal CreateConnectionObject(Environment* env) { + Isolate* isolate = env->isolate(); + Local context = env->context(); + EscapableHandleScope scope(isolate); + + Local t = ObjectTemplate::New(isolate); + t->SetInternalFieldCount(1); + Local obj; + if (!t->NewInstance(context).ToLocal(&obj)) { + return MaybeLocal(); + } + + obj->SetAlignedPointerInInternalField(0, nullptr); + return scope.Escape(obj); + } + + void Start() { + SetConnection(object()); + StartProfiling(); + } + + void End(Local callback) { + SetMessageCallback(callback); + EndProfiling(); + } + + // Override this to return a JS function that gets called with the message + // sent from the session. + virtual Local GetMessageCallback() = 0; + virtual void SetMessageCallback(Local callback) = 0; + // Use DispatchMessage() to dispatch necessary inspector messages + virtual void StartProfiling() = 0; + virtual void EndProfiling() = 0; + virtual void SetConnection(Local connection) = 0; + + private: + std::unique_ptr session_; +}; + +class V8CoverageConnection : public V8ProfilerConnection { + public: + explicit V8CoverageConnection(Environment* env) + : V8ProfilerConnection(env, + CreateConnectionObject(env).ToLocalChecked()) {} + + Local GetMessageCallback() override { + return env()->on_coverage_message_function(); + } + + void SetMessageCallback(Local callback) override { + return env()->set_on_coverage_message_function(callback); + } + + static V8ProfilerConnection* GetConnection(Environment* env) { + return Unwrap(env->coverage_connection()); + } + + void SetConnection(Local obj) override { + env()->set_coverage_connection(obj); + } + + void StartProfiling() override { + Debug(env(), + DebugCategory::INSPECTOR_PROFILER, + "Sending Profiler.startPreciseCoverage\n"); + Isolate* isolate = env()->isolate(); + Local enable = FIXED_ONE_BYTE_STRING( + isolate, "{\"id\": 1, \"method\": \"Profiler.enable\"}"); + Local start = FIXED_ONE_BYTE_STRING( + isolate, + "{" + "\"id\": 2," + "\"method\": \"Profiler.startPreciseCoverage\"," + "\"params\": {\"callCount\": true, \"detailed\": true}" + "}"); + DispatchMessage(isolate, enable); + DispatchMessage(isolate, start); + } + + void EndProfiling() override { + Debug(env(), + DebugCategory::INSPECTOR_PROFILER, + "Sending Profiler.takePreciseCoverage\n"); + Isolate* isolate = env()->isolate(); + Local end = + FIXED_ONE_BYTE_STRING(isolate, + "{" + "\"id\": 3," + "\"method\": \"Profiler.takePreciseCoverage\"" + "}"); + DispatchMessage(isolate, end); + } + + private: + std::unique_ptr session_; +}; + +void StartCoverageCollection(Environment* env) { + V8CoverageConnection* connection = new V8CoverageConnection(env); + connection->Start(); +} + +static void EndCoverageCollection(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + CHECK(args[0]->IsFunction()); + Debug(env, DebugCategory::INSPECTOR_PROFILER, "Ending coverage collection\n"); + V8ProfilerConnection* connection = V8CoverageConnection::GetConnection(env); + CHECK_NOT_NULL(connection); + connection->End(args[0].As()); +} + +static void Initialize(Local target, + Local unused, + Local context, + void* priv) { + Environment* env = Environment::GetCurrent(context); + env->SetMethod(target, "endCoverage", EndCoverageCollection); +} +} // namespace profiler +} // namespace node + +NODE_MODULE_CONTEXT_AWARE_INTERNAL(profiler, node::profiler::Initialize) diff --git a/src/node.cc b/src/node.cc index b705454d77a046..f3784ec34c3301 100644 --- a/src/node.cc +++ b/src/node.cc @@ -245,9 +245,7 @@ MaybeLocal RunBootstrapping(Environment* env) { bool rc = credentials::SafeGetenv("NODE_V8_COVERAGE", &coverage); if (rc && !coverage.empty()) { #if HAVE_INSPECTOR - if (!coverage::StartCoverageCollection(env)) { - return MaybeLocal(); - } + profiler::StartCoverageCollection(env); #else fprintf(stderr, "NODE_V8_COVERAGE cannot be used without inspector"); #endif // HAVE_INSPECTOR diff --git a/src/node_binding.cc b/src/node_binding.cc index 7b87ba6bffd2e7..9599cf956b9b7c 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc @@ -23,9 +23,9 @@ #endif #if HAVE_INSPECTOR -#define NODE_BUILTIN_COVERAGE_MODULES(V) V(coverage) +#define NODE_BUILTIN_PROFILER_MODULES(V) V(profiler) #else -#define NODE_BUILTIN_COVERAGE_MODULES(V) +#define NODE_BUILTIN_PROFILER_MODULES(V) #endif // A list of built-in modules. In order to do module registration @@ -85,7 +85,7 @@ NODE_BUILTIN_OPENSSL_MODULES(V) \ NODE_BUILTIN_ICU_MODULES(V) \ NODE_BUILTIN_REPORT_MODULES(V) \ - NODE_BUILTIN_COVERAGE_MODULES(V) + NODE_BUILTIN_PROFILER_MODULES(V) // This is used to load built-in modules. Instead of using // __attribute__((constructor)), we call the _register_ diff --git a/src/node_internals.h b/src/node_internals.h index 11ad197ab51a0a..0a25d9a1a97c0f 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -296,8 +296,8 @@ v8::MaybeLocal StartExecution(Environment* env, const char* main_script_id); v8::MaybeLocal GetPerContextExports(v8::Local context); -namespace coverage { -bool StartCoverageCollection(Environment* env); +namespace profiler { +void StartCoverageCollection(Environment* env); } #ifdef _WIN32 From 03bd6496557a907ad1fd03524660239f2b34237a Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 8 Mar 2019 11:53:15 +0100 Subject: [PATCH 005/133] test: show stderr on v8 coverage test failures PR-URL: https://github.com/nodejs/node/pull/26513 Reviewed-By: Anna Henningsen Reviewed-By: Ben Coe --- test/parallel/test-v8-coverage.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/test/parallel/test-v8-coverage.js b/test/parallel/test-v8-coverage.js index 5c3db7af2cfea3..f002604c48e594 100644 --- a/test/parallel/test-v8-coverage.js +++ b/test/parallel/test-v8-coverage.js @@ -22,6 +22,9 @@ function nextdir() { const output = spawnSync(process.execPath, [ require.resolve('../fixtures/v8-coverage/basic') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 0) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('basic.js', coverageDirectory); @@ -38,6 +41,9 @@ function nextdir() { const output = spawnSync(process.execPath, [ require.resolve('../fixtures/v8-coverage/exit-1') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 1) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 1); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('exit-1.js', coverageDirectory); @@ -55,6 +61,9 @@ function nextdir() { require.resolve('../fixtures/v8-coverage/sigint') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); if (!common.isWindows) { + if (output.signal !== 'SIGINT') { + console.log(output.stderr.toString()); + } assert.strictEqual(output.signal, 'SIGINT'); } assert.strictEqual(output.stderr.toString(), ''); @@ -72,6 +81,9 @@ function nextdir() { const output = spawnSync(process.execPath, [ require.resolve('../fixtures/v8-coverage/spawn-subprocess') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 0) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('subprocess.js', @@ -89,6 +101,9 @@ function nextdir() { const output = spawnSync(process.execPath, [ require.resolve('../fixtures/v8-coverage/worker') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 0) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('subprocess.js', @@ -106,6 +121,9 @@ function nextdir() { const output = spawnSync(process.execPath, [ require.resolve('../fixtures/v8-coverage/spawn-subprocess-no-cov') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 0) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('subprocess.js', @@ -119,6 +137,9 @@ function nextdir() { const output = spawnSync(process.execPath, [ require.resolve('../fixtures/v8-coverage/async-hooks') ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 0) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('async-hooks.js', @@ -138,6 +159,9 @@ function nextdir() { cwd: tmpdir.path, env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); + if (output.status !== 0) { + console.log(output.stderr.toString()); + } assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const fixtureCoverage = getFixtureCoverage('basic.js', From d4f95091d074adfcf79e1f7d64f5e8b599a5f9f0 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 8 Mar 2019 14:25:47 +0100 Subject: [PATCH 006/133] process: delay process.argv[0] and process.argv0 handling Since these depends on process runtime states, delay them until pre-execution. PR-URL: https://github.com/nodejs/node/pull/26517 Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater --- lib/internal/bootstrap/node.js | 7 ------- lib/internal/bootstrap/pre_execution.js | 12 ++++++++++++ lib/internal/main/worker_thread.js | 2 ++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index d9ad263ca0b46f..2b5d2ee3f41ee8 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -206,13 +206,6 @@ if (!config.noBrowserGlobals) { defineOperation(global, 'setImmediate', timers.setImmediate); } -Object.defineProperty(process, 'argv0', { - enumerable: true, - configurable: false, - value: process.argv[0] -}); -process.argv[0] = process.execPath; - // TODO(jasnell): The following have been globals since around 2012. // That's just silly. The underlying perfctr support has been removed // so these are now deprecated non-ops that can be removed after one diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index a518fcfd621a6a..f716b2de6d4951 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -3,6 +3,8 @@ const { getOptionValue } = require('internal/options'); function prepareMainThreadExecution() { + // Patch the process object with legacy properties and normalizations + patchProcessObject(); setupTraceCategoryState(); setupWarningHandler(); @@ -59,6 +61,15 @@ function prepareMainThreadExecution() { loadPreloadModules(); } +function patchProcessObject() { + Object.defineProperty(process, 'argv0', { + enumerable: true, + configurable: false, + value: process.argv[0] + }); + process.argv[0] = process.execPath; +} + function setupWarningHandler() { const { onWarning @@ -307,6 +318,7 @@ function loadPreloadModules() { } module.exports = { + patchProcessObject, setupCoverageHooks, setupWarningHandler, setupDebugEnv, diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index 885d6dfcb1be24..c5a729b5721f94 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -4,6 +4,7 @@ // message port. const { + patchProcessObject, setupCoverageHooks, setupWarningHandler, setupDebugEnv, @@ -41,6 +42,7 @@ const { const publicWorker = require('worker_threads'); +patchProcessObject(); setupDebugEnv(); const debug = require('util').debuglog('worker'); From 75c5d9c5b7f7cb43ffaef8eed81ffe5ab30599a1 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 8 Mar 2019 14:39:57 +0100 Subject: [PATCH 007/133] process: create legacy process properties during pre-execution Shim legacy process object properties of CLI options during pre-execution instead of serializing them during bootstrap. PR-URL: https://github.com/nodejs/node/pull/26517 Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater --- lib/internal/bootstrap/pre_execution.js | 31 ++++++++- src/node_process_object.cc | 89 ++----------------------- 2 files changed, 34 insertions(+), 86 deletions(-) diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index f716b2de6d4951..4c5fc2d6747339 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -68,13 +68,42 @@ function patchProcessObject() { value: process.argv[0] }); process.argv[0] = process.execPath; + + // TODO(joyeecheung): most of these should be deprecated and removed, + // execpt some that we need to be able to mutate during run time. + addReadOnlyProcessAlias('_eval', '--eval'); + addReadOnlyProcessAlias('_print_eval', '--print'); + addReadOnlyProcessAlias('_syntax_check_only', '--check'); + addReadOnlyProcessAlias('_forceRepl', '--interactive'); + addReadOnlyProcessAlias('_preload_modules', '--require'); + addReadOnlyProcessAlias('noDeprecation', '--no-deprecation'); + addReadOnlyProcessAlias('noProcessWarnings', '--no-warnings'); + addReadOnlyProcessAlias('traceProcessWarnings', '--trace-warnings'); + addReadOnlyProcessAlias('throwDeprecation', '--throw-deprecation'); + addReadOnlyProcessAlias('profProcess', '--prof-process'); + addReadOnlyProcessAlias('traceDeprecation', '--trace-deprecation'); + addReadOnlyProcessAlias('_breakFirstLine', '--inspect-brk', false); + addReadOnlyProcessAlias('_breakNodeFirstLine', '--inspect-brk-node', false); +} + +function addReadOnlyProcessAlias(name, option, enumerable = true) { + const value = getOptionValue(option); + if (value) { + Object.defineProperty(process, name, { + writable: false, + configurable: true, + enumerable, + value + }); + } } function setupWarningHandler() { const { onWarning } = require('internal/process/warning'); - if (!process.noProcessWarnings && process.env.NODE_NO_WARNINGS !== '1') { + if (!getOptionValue('--no-warnings') && + process.env.NODE_NO_WARNINGS !== '1') { process.on('warning', onWarning); } } diff --git a/src/node_process_object.cc b/src/node_process_object.cc index c8a2c26690acf5..0b97a5b21330cf 100644 --- a/src/node_process_object.cc +++ b/src/node_process_object.cc @@ -158,91 +158,10 @@ MaybeLocal CreateProcessObject( FIXED_ONE_BYTE_STRING(env->isolate(), "ppid"), GetParentProcessId).FromJust()); - // TODO(joyeecheung): the following process properties that are set using - // parsed CLI flags should be migrated to `internal/options` in JS land. - - // -e, --eval - // TODO(addaleax): Remove this. - if (env->options()->has_eval_string) { - READONLY_PROPERTY(process, - "_eval", - String::NewFromUtf8( - env->isolate(), - env->options()->eval_string.c_str(), - NewStringType::kNormal).ToLocalChecked()); - } - - // -p, --print - // TODO(addaleax): Remove this. - if (env->options()->print_eval) { - READONLY_PROPERTY(process, "_print_eval", True(env->isolate())); - } - - // -c, --check - // TODO(addaleax): Remove this. - if (env->options()->syntax_check_only) { - READONLY_PROPERTY(process, "_syntax_check_only", True(env->isolate())); - } - - // -i, --interactive - // TODO(addaleax): Remove this. - if (env->options()->force_repl) { - READONLY_PROPERTY(process, "_forceRepl", True(env->isolate())); - } - - // -r, --require - // TODO(addaleax): Remove this. - const std::vector& preload_modules = - env->options()->preload_modules; - if (!preload_modules.empty()) { - READONLY_PROPERTY(process, - "_preload_modules", - ToV8Value(env->context(), preload_modules) - .ToLocalChecked()); - } - - // --no-deprecation - if (env->options()->no_deprecation) { - READONLY_PROPERTY(process, "noDeprecation", True(env->isolate())); - } - - // --no-warnings - if (env->options()->no_warnings) { - READONLY_PROPERTY(process, "noProcessWarnings", True(env->isolate())); - } - - // --trace-warnings - if (env->options()->trace_warnings) { - READONLY_PROPERTY(process, "traceProcessWarnings", True(env->isolate())); - } - - // --throw-deprecation - if (env->options()->throw_deprecation) { - READONLY_PROPERTY(process, "throwDeprecation", True(env->isolate())); - } - - // --prof-process - // TODO(addaleax): Remove this. - if (env->options()->prof_process) { - READONLY_PROPERTY(process, "profProcess", True(env->isolate())); - } - - // --trace-deprecation - if (env->options()->trace_deprecation) { - READONLY_PROPERTY(process, "traceDeprecation", True(env->isolate())); - } - - // --inspect-brk - if (env->options()->debug_options().wait_for_connect()) { - READONLY_DONT_ENUM_PROPERTY(process, - "_breakFirstLine", True(env->isolate())); - } - - // --inspect-brk-node - if (env->options()->debug_options().break_node_first_line) { - READONLY_DONT_ENUM_PROPERTY(process, - "_breakNodeFirstLine", True(env->isolate())); - } + // TODO(joyeecheung): make this available in JS during pre-execution. + // Note that to use this in releases the code doing the revert need to be + // careful to delay the check until after the bootstrap but that may not + // be possible depending on the feature being reverted. // --security-revert flags #define V(code, _, __) \ From 5a29a94f0e167feae0d0e0243c66aa60bb052bdf Mon Sep 17 00:00:00 2001 From: ZYSzys Date: Sun, 10 Mar 2019 00:06:48 +0800 Subject: [PATCH 008/133] http: reduce usage of public util Backport-PR-URL: https://github.com/nodejs/node/pull/26650 PR-URL: https://github.com/nodejs/node/pull/26548 Refs: https://github.com/nodejs/node/issues/26546 Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- lib/_http_agent.js | 2 +- lib/_http_common.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/_http_agent.js b/lib/_http_agent.js index 8632da45726514..65a538f3c8684a 100644 --- a/lib/_http_agent.js +++ b/lib/_http_agent.js @@ -24,7 +24,7 @@ const net = require('net'); const util = require('util'); const EventEmitter = require('events'); -const debug = util.debuglog('http'); +const debug = require('internal/util/debuglog').debuglog('http'); const { async_id_symbol } = require('internal/async_hooks').symbols; // New Agent code. diff --git a/lib/_http_common.js b/lib/_http_common.js index a83c82c9d4b292..bf885161571be1 100644 --- a/lib/_http_common.js +++ b/lib/_http_common.js @@ -36,7 +36,7 @@ const { readStop } = incoming; -const debug = require('util').debuglog('http'); +const debug = require('internal/util/debuglog').debuglog('http'); const kIncomingMessage = Symbol('IncomingMessage'); const kOnHeaders = HTTPParser.kOnHeaders | 0; From c51cc9e85b3d23f79caf654630cd675e6e138d7c Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Thu, 7 Mar 2019 21:46:54 +0800 Subject: [PATCH 009/133] src: apply clang-tidy rule modernize-make-unique PR-URL: https://github.com/nodejs/node/pull/26493 Reviewed-By: Anna Henningsen Reviewed-By: Refael Ackermann Reviewed-By: Ben Noordhuis --- src/cares_wrap.cc | 5 +++-- src/env.cc | 7 ++++--- src/inspector/main_thread_interface.cc | 7 +++---- src/inspector/worker_inspector.cc | 9 ++++----- src/inspector_js_api.cc | 6 ++++-- src/node_file.cc | 6 +++--- src/node_platform.cc | 5 +++-- src/node_v8_platform-inl.h | 7 +++++-- src/node_worker.cc | 3 ++- src/tracing/node_trace_buffer.cc | 4 +++- test/cctest/node_test_fixture.h | 3 ++- test/cctest/test_inspector_socket_server.cc | 5 +++-- 12 files changed, 39 insertions(+), 28 deletions(-) diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index 4a888521fa6df3..12d712811dc28b 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -663,7 +664,7 @@ class QueryWrap : public AsyncWrap { memcpy(buf_copy, answer_buf, answer_len); } - wrap->response_data_.reset(new ResponseData()); + wrap->response_data_ = std::make_unique(); ResponseData* data = wrap->response_data_.get(); data->status = status; data->is_host = false; @@ -683,7 +684,7 @@ class QueryWrap : public AsyncWrap { cares_wrap_hostent_cpy(host_copy, host); } - wrap->response_data_.reset(new ResponseData()); + wrap->response_data_ = std::make_unique(); ResponseData* data = wrap->response_data_.get(); data->status = status; data->host.reset(host_copy); diff --git a/src/env.cc b/src/env.cc index 2e56d216aa203d..9feab1c0ca8448 100644 --- a/src/env.cc +++ b/src/env.cc @@ -19,6 +19,7 @@ #include #include #include +#include namespace node { @@ -217,8 +218,7 @@ Environment::Environment(IsolateData* isolate_data, #if HAVE_INSPECTOR // We can only create the inspector agent after having cloned the options. - inspector_agent_ = - std::unique_ptr(new inspector::Agent(this)); + inspector_agent_ = std::make_unique(this); #endif AssignToContext(context, ContextInfo("")); @@ -238,7 +238,8 @@ Environment::Environment(IsolateData* isolate_data, }, this); - performance_state_.reset(new performance::performance_state(isolate())); + performance_state_ = + std::make_unique(isolate()); performance_state_->Mark( performance::NODE_PERFORMANCE_MILESTONE_ENVIRONMENT); performance_state_->Mark(performance::NODE_PERFORMANCE_MILESTONE_NODE_START, diff --git a/src/inspector/main_thread_interface.cc b/src/inspector/main_thread_interface.cc index af123d9ac5b549..5b339a39ae9eaf 100644 --- a/src/inspector/main_thread_interface.cc +++ b/src/inspector/main_thread_interface.cc @@ -7,6 +7,7 @@ #include #include +#include namespace node { namespace inspector { @@ -114,8 +115,7 @@ class AnotherThreadObjectReference { ~AnotherThreadObjectReference() { // Disappearing thread may cause a memory leak - thread_->Post( - std::unique_ptr(new DeleteRequest(object_id_))); + thread_->Post(std::make_unique(object_id_)); } template @@ -151,8 +151,7 @@ class MainThreadSessionState { static std::unique_ptr Create( MainThreadInterface* thread, bool prevent_shutdown) { - return std::unique_ptr( - new MainThreadSessionState(thread, prevent_shutdown)); + return std::make_unique(thread, prevent_shutdown); } void Connect(std::unique_ptr delegate) { diff --git a/src/inspector/worker_inspector.cc b/src/inspector/worker_inspector.cc index 52e71a562daeb6..b7fab6ea6b5721 100644 --- a/src/inspector/worker_inspector.cc +++ b/src/inspector/worker_inspector.cc @@ -1,7 +1,8 @@ #include "worker_inspector.h" - #include "main_thread_interface.h" +#include + namespace node { namespace inspector { namespace { @@ -88,8 +89,7 @@ void WorkerManager::WorkerStarted(int session_id, std::unique_ptr WorkerManager::NewParentHandle(int thread_id, const std::string& url) { bool wait = !delegates_waiting_on_start_.empty(); - return std::unique_ptr( - new ParentInspectorHandle(thread_id, url, thread_, wait)); + return std::make_unique(thread_id, url, thread_, wait); } void WorkerManager::RemoveAttachDelegate(int id) { @@ -106,8 +106,7 @@ std::unique_ptr WorkerManager::SetAutoAttach( // Waiting is only reported when a worker is started, same as browser Report(delegate, worker.second, false); } - return std::unique_ptr( - new WorkerManagerEventHandle(shared_from_this(), id)); + return std::make_unique(shared_from_this(), id); } void WorkerManager::SetWaitOnStartForDelegate(int id, bool wait) { diff --git a/src/inspector_js_api.cc b/src/inspector_js_api.cc index 48a89cb2d7de1f..750c4301c3154e 100644 --- a/src/inspector_js_api.cc +++ b/src/inspector_js_api.cc @@ -4,6 +4,8 @@ #include "v8.h" #include "v8-inspector.h" +#include + namespace node { namespace inspector { namespace { @@ -65,8 +67,8 @@ class JSBindingsConnection : public AsyncWrap { : AsyncWrap(env, wrap, PROVIDER_INSPECTORJSBINDING), callback_(env->isolate(), callback) { Agent* inspector = env->inspector_agent(); - session_ = inspector->Connect(std::unique_ptr( - new JSBindingsSessionDelegate(env, this)), false); + session_ = inspector->Connect(std::make_unique( + env, this), false); } void OnMessage(Local value) { diff --git a/src/node_file.cc b/src/node_file.cc index 8511664b852005..6e957b1eca84ed 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -344,7 +344,7 @@ int FileHandle::ReadStart() { .ToLocal(&wrap_obj)) { return UV_EBUSY; } - read_wrap.reset(new FileHandleReadWrap(this, wrap_obj)); + read_wrap = std::make_unique(this, wrap_obj); } } int64_t recommended_read = 65536; @@ -1288,8 +1288,8 @@ int MKDirpAsync(uv_loop_t* loop, FSReqBase* req_wrap = FSReqBase::from_req(req); // on the first iteration of algorithm, stash state information. if (req_wrap->continuation_data == nullptr) { - req_wrap->continuation_data = std::unique_ptr{ - new FSContinuationData(req, mode, cb)}; + req_wrap->continuation_data = + std::make_unique(req, mode, cb); req_wrap->continuation_data->PushPath(std::move(path)); } diff --git a/src/node_platform.cc b/src/node_platform.cc index b96d5d3a1a8d70..ba5ca794c06927 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -5,6 +5,7 @@ #include "debug_utils.h" #include "util.h" #include +#include namespace node { @@ -172,8 +173,8 @@ WorkerThreadsTaskRunner::WorkerThreadsTaskRunner(int thread_pool_size) { Mutex::ScopedLock lock(platform_workers_mutex); int pending_platform_workers = thread_pool_size; - delayed_task_scheduler_.reset( - new DelayedTaskScheduler(&pending_worker_tasks_)); + delayed_task_scheduler_ = std::make_unique( + &pending_worker_tasks_); threads_.push_back(delayed_task_scheduler_->Start()); for (int i = 0; i < thread_pool_size; i++) { diff --git a/src/node_v8_platform-inl.h b/src/node_v8_platform-inl.h index 83594724aed4e6..8b642caf938d2b 100644 --- a/src/node_v8_platform-inl.h +++ b/src/node_v8_platform-inl.h @@ -3,6 +3,8 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#include + #include "env-inl.h" #include "node.h" #include "node_metadata.h" @@ -79,11 +81,12 @@ class NodeTraceStateObserver struct V8Platform { #if NODE_USE_V8_PLATFORM inline void Initialize(int thread_pool_size) { - tracing_agent_.reset(new tracing::Agent()); + tracing_agent_ = std::make_unique(); node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get()); node::tracing::TracingController* controller = tracing_agent_->GetTracingController(); - trace_state_observer_.reset(new NodeTraceStateObserver(controller)); + trace_state_observer_ = + std::make_unique(controller); controller->AddTraceStateObserver(trace_state_observer_.get()); tracing_file_writer_ = tracing_agent_->DefaultHandle(); // Only start the tracing agent if we enabled any tracing categories. diff --git a/src/node_worker.cc b/src/node_worker.cc index a821915e689e2c..a407cb956df2da 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -10,6 +10,7 @@ #include "inspector/worker_inspector.h" // ParentInspectorHandle #endif +#include #include #include @@ -77,7 +78,7 @@ Worker::Worker(Environment* env, return; } - child_port_data_.reset(new MessagePortData(nullptr)); + child_port_data_ = std::make_unique(nullptr); MessagePort::Entangle(parent_port_, child_port_data_.get()); object()->Set(env->context(), diff --git a/src/tracing/node_trace_buffer.cc b/src/tracing/node_trace_buffer.cc index d2cfd02366583b..e187a1d78c8197 100644 --- a/src/tracing/node_trace_buffer.cc +++ b/src/tracing/node_trace_buffer.cc @@ -1,4 +1,6 @@ #include "tracing/node_trace_buffer.h" + +#include #include "util-inl.h" namespace node { @@ -19,7 +21,7 @@ TraceObject* InternalTraceBuffer::AddTraceEvent(uint64_t* handle) { if (chunk) { chunk->Reset(current_chunk_seq_++); } else { - chunk.reset(new TraceBufferChunk(current_chunk_seq_++)); + chunk = std::make_unique(current_chunk_seq_++); } } auto& chunk = chunks_[total_chunks_ - 1]; diff --git a/test/cctest/node_test_fixture.h b/test/cctest/node_test_fixture.h index acfadab47e61a5..0359ec3c76a939 100644 --- a/test/cctest/node_test_fixture.h +++ b/test/cctest/node_test_fixture.h @@ -2,6 +2,7 @@ #define TEST_CCTEST_NODE_TEST_FIXTURE_H_ #include +#include #include "gtest/gtest.h" #include "node.h" #include "node_platform.h" @@ -77,7 +78,7 @@ class NodeTestFixture : public ::testing::Test { node::Init(&argc, &argv0, &exec_argc, &exec_argv); } - tracing_agent.reset(new node::tracing::Agent()); + tracing_agent = std::make_unique(); node::tracing::TraceEventHelper::SetAgent(tracing_agent.get()); CHECK_EQ(0, uv_loop_init(¤t_loop)); platform.reset(static_cast( diff --git a/test/cctest/test_inspector_socket_server.cc b/test/cctest/test_inspector_socket_server.cc index 5797708483b6f8..087ecb74a1893a 100644 --- a/test/cctest/test_inspector_socket_server.cc +++ b/test/cctest/test_inspector_socket_server.cc @@ -4,6 +4,7 @@ #include "gtest/gtest.h" #include +#include #include static uv_loop_t loop; @@ -356,8 +357,8 @@ ServerHolder::ServerHolder(bool has_targets, uv_loop_t* loop, targets = { MAIN_TARGET_ID }; std::unique_ptr delegate( new TestSocketServerDelegate(this, targets)); - server_.reset( - new InspectorSocketServer(std::move(delegate), loop, host, port, out)); + server_ = std::make_unique( + std::move(delegate), loop, host, port, out); } static void TestHttpRequest(int port, const std::string& path, From 7671a65dbbc9a8e08ed5f19bb308b391e71af771 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 8 Mar 2019 16:19:33 +0100 Subject: [PATCH 010/133] embedding: refactor public `ArrayBufferAllocator` API Use a RAII approach by default, and make it possible for embedders to use the `ArrayBufferAllocator` directly as a V8 `ArrayBuffer::Allocator`, e.g. when passing to `Isolate::CreateParams` manually. PR-URL: https://github.com/nodejs/node/pull/26525 Reviewed-By: Gireesh Punathil Reviewed-By: Joyee Cheung --- src/api/environment.cc | 22 +++++++++++++--------- src/env-inl.h | 2 +- src/env.cc | 3 ++- src/env.h | 4 ++-- src/node.h | 26 +++++++++++++++++++++++++- src/node_buffer.cc | 3 ++- src/node_internals.h | 6 ++++-- 7 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/api/environment.cc b/src/api/environment.cc index 3476f4355b3084..ab320f41103a90 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -71,7 +71,7 @@ static void OnMessage(Local message, Local error) { } } -void* ArrayBufferAllocator::Allocate(size_t size) { +void* NodeArrayBufferAllocator::Allocate(size_t size) { if (zero_fill_field_ || per_process::cli_options->zero_fill_all_buffers) return UncheckedCalloc(size); else @@ -84,14 +84,14 @@ DebuggingArrayBufferAllocator::~DebuggingArrayBufferAllocator() { void* DebuggingArrayBufferAllocator::Allocate(size_t size) { Mutex::ScopedLock lock(mutex_); - void* data = ArrayBufferAllocator::Allocate(size); + void* data = NodeArrayBufferAllocator::Allocate(size); RegisterPointerInternal(data, size); return data; } void* DebuggingArrayBufferAllocator::AllocateUninitialized(size_t size) { Mutex::ScopedLock lock(mutex_); - void* data = ArrayBufferAllocator::AllocateUninitialized(size); + void* data = NodeArrayBufferAllocator::AllocateUninitialized(size); RegisterPointerInternal(data, size); return data; } @@ -99,14 +99,14 @@ void* DebuggingArrayBufferAllocator::AllocateUninitialized(size_t size) { void DebuggingArrayBufferAllocator::Free(void* data, size_t size) { Mutex::ScopedLock lock(mutex_); UnregisterPointerInternal(data, size); - ArrayBufferAllocator::Free(data, size); + NodeArrayBufferAllocator::Free(data, size); } void* DebuggingArrayBufferAllocator::Reallocate(void* data, size_t old_size, size_t size) { Mutex::ScopedLock lock(mutex_); - void* ret = ArrayBufferAllocator::Reallocate(data, old_size, size); + void* ret = NodeArrayBufferAllocator::Reallocate(data, old_size, size); if (ret == nullptr) { if (size == 0) // i.e. equivalent to free(). UnregisterPointerInternal(data, old_size); @@ -149,11 +149,15 @@ void DebuggingArrayBufferAllocator::RegisterPointerInternal(void* data, allocations_[data] = size; } -ArrayBufferAllocator* CreateArrayBufferAllocator() { - if (per_process::cli_options->debug_arraybuffer_allocations) - return new DebuggingArrayBufferAllocator(); +std::unique_ptr ArrayBufferAllocator::Create(bool debug) { + if (debug || per_process::cli_options->debug_arraybuffer_allocations) + return std::make_unique(); else - return new ArrayBufferAllocator(); + return std::make_unique(); +} + +ArrayBufferAllocator* CreateArrayBufferAllocator() { + return ArrayBufferAllocator::Create().release(); } void FreeArrayBufferAllocator(ArrayBufferAllocator* allocator) { diff --git a/src/env-inl.h b/src/env-inl.h index 7c35b4e43feb05..afa744e0281667 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -56,7 +56,7 @@ inline v8::ArrayBuffer::Allocator* IsolateData::allocator() const { return allocator_; } -inline ArrayBufferAllocator* IsolateData::node_allocator() const { +inline NodeArrayBufferAllocator* IsolateData::node_allocator() const { return node_allocator_; } diff --git a/src/env.cc b/src/env.cc index 9feab1c0ca8448..302b0223830604 100644 --- a/src/env.cc +++ b/src/env.cc @@ -80,7 +80,8 @@ IsolateData::IsolateData(Isolate* isolate, : isolate_(isolate), event_loop_(event_loop), allocator_(isolate->GetArrayBufferAllocator()), - node_allocator_(node_allocator), + node_allocator_(node_allocator == nullptr ? + nullptr : node_allocator->GetImpl()), uses_node_allocator_(allocator_ == node_allocator_), platform_(platform) { CHECK_NOT_NULL(allocator_); diff --git a/src/env.h b/src/env.h index 2890da725c5e02..36f0d555819497 100644 --- a/src/env.h +++ b/src/env.h @@ -408,7 +408,7 @@ class IsolateData { inline bool uses_node_allocator() const; inline v8::ArrayBuffer::Allocator* allocator() const; - inline ArrayBufferAllocator* node_allocator() const; + inline NodeArrayBufferAllocator* node_allocator() const; #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) #define VY(PropertyName, StringValue) V(v8::Symbol, PropertyName) @@ -445,7 +445,7 @@ class IsolateData { v8::Isolate* const isolate_; uv_loop_t* const event_loop_; v8::ArrayBuffer::Allocator* const allocator_; - ArrayBufferAllocator* const node_allocator_; + NodeArrayBufferAllocator* const node_allocator_; const bool uses_node_allocator_; MultiIsolatePlatform* platform_; std::shared_ptr options_; diff --git a/src/node.h b/src/node.h index 68cc41f3170a39..d4cde16e45e9c3 100644 --- a/src/node.h +++ b/src/node.h @@ -64,6 +64,8 @@ #include "v8-platform.h" // NOLINT(build/include_order) #include "node_version.h" // NODE_MODULE_VERSION +#include + #define NODE_MAKE_VERSION(major, minor, patch) \ ((major) * 0x1000 + (minor) * 0x100 + (patch)) @@ -217,8 +219,30 @@ NODE_EXTERN void Init(int* argc, int* exec_argc, const char*** exec_argv); -class ArrayBufferAllocator; +class NodeArrayBufferAllocator; + +// An ArrayBuffer::Allocator class with some Node.js-specific tweaks. If you do +// not have to use another allocator, using this class is recommended: +// - It supports Buffer.allocUnsafe() and Buffer.allocUnsafeSlow() with +// uninitialized memory. +// - It supports transferring, rather than copying, ArrayBuffers when using +// MessagePorts. +class NODE_EXTERN ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { + public: + // If `always_debug` is true, create an ArrayBuffer::Allocator instance + // that performs additional integrity checks (e.g. make sure that only memory + // that was allocated by the it is also freed by it). + // This can also be set using the --debug-arraybuffer-allocations flag. + static std::unique_ptr Create( + bool always_debug = false); + + private: + virtual NodeArrayBufferAllocator* GetImpl() = 0; + + friend class IsolateData; +}; +// Legacy equivalents for ArrayBufferAllocator::Create(). NODE_EXTERN ArrayBufferAllocator* CreateArrayBufferAllocator(); NODE_EXTERN void FreeArrayBufferAllocator(ArrayBufferAllocator* allocator); diff --git a/src/node_buffer.cc b/src/node_buffer.cc index dfaa3541611b60..9379a4680c5454 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -1099,7 +1099,8 @@ void Initialize(Local target, // It can be a nullptr when running inside an isolate where we // do not own the ArrayBuffer allocator. - if (ArrayBufferAllocator* allocator = env->isolate_data()->node_allocator()) { + if (NodeArrayBufferAllocator* allocator = + env->isolate_data()->node_allocator()) { uint32_t* zero_fill_field = allocator->zero_fill_field(); Local array_buffer = ArrayBuffer::New( env->isolate(), zero_fill_field, sizeof(*zero_fill_field)); diff --git a/src/node_internals.h b/src/node_internals.h index 0a25d9a1a97c0f..cf796178a4dd82 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -101,7 +101,7 @@ namespace task_queue { void PromiseRejectCallback(v8::PromiseRejectMessage message); } // namespace task_queue -class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { +class NodeArrayBufferAllocator : public ArrayBufferAllocator { public: inline uint32_t* zero_fill_field() { return &zero_fill_field_; } @@ -116,11 +116,13 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { virtual void RegisterPointer(void* data, size_t size) {} virtual void UnregisterPointer(void* data, size_t size) {} + NodeArrayBufferAllocator* GetImpl() final { return this; } + private: uint32_t zero_fill_field_ = 1; // Boolean but exposed as uint32 to JS land. }; -class DebuggingArrayBufferAllocator final : public ArrayBufferAllocator { +class DebuggingArrayBufferAllocator final : public NodeArrayBufferAllocator { public: ~DebuggingArrayBufferAllocator() override; void* Allocate(size_t size) override; From 5e64acd66b4d0cd7373b962b7c592638bc068315 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 8 Mar 2019 16:55:40 +0100 Subject: [PATCH 011/133] embedding: make `NewIsolate()` API more flexible Split the API up into its essential parts, namely setting up the creation parameters for the Isolate, creating it, and performing Node.js-specific customization afterwards. PR-URL: https://github.com/nodejs/node/pull/26525 Reviewed-By: Gireesh Punathil Reviewed-By: Joyee Cheung --- src/api/environment.cc | 42 ++++++++++++++++++++++++++++++------------ src/env.cc | 4 ---- src/node.h | 15 +++++++++++++++ 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/api/environment.cc b/src/api/environment.cc index ab320f41103a90..c6da872ae95fc0 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -164,21 +164,17 @@ void FreeArrayBufferAllocator(ArrayBufferAllocator* allocator) { delete allocator; } -Isolate* NewIsolate(ArrayBufferAllocator* allocator, uv_loop_t* event_loop) { - Isolate::CreateParams params; - params.array_buffer_allocator = allocator; +void SetIsolateCreateParams(Isolate::CreateParams* params, + ArrayBufferAllocator* allocator) { + if (allocator != nullptr) + params->array_buffer_allocator = allocator; + #ifdef NODE_ENABLE_VTUNE_PROFILING - params.code_event_handler = vTune::GetVtuneCodeEventHandler(); + params->code_event_handler = vTune::GetVtuneCodeEventHandler(); #endif +} - Isolate* isolate = Isolate::Allocate(); - if (isolate == nullptr) return nullptr; - - // Register the isolate on the platform before the isolate gets initialized, - // so that the isolate can access the platform during initialization. - per_process::v8_platform.Platform()->RegisterIsolate(isolate, event_loop); - Isolate::Initialize(isolate, params); - +void SetIsolateUpForNode(v8::Isolate* isolate) { isolate->AddMessageListenerWithErrorLevel( OnMessage, Isolate::MessageErrorLevel::kMessageError | @@ -187,7 +183,29 @@ Isolate* NewIsolate(ArrayBufferAllocator* allocator, uv_loop_t* event_loop) { isolate->SetMicrotasksPolicy(MicrotasksPolicy::kExplicit); isolate->SetFatalErrorHandler(OnFatalError); isolate->SetAllowWasmCodeGenerationCallback(AllowWasmCodeGenerationCallback); + isolate->SetPromiseRejectCallback(task_queue::PromiseRejectCallback); v8::CpuProfiler::UseDetailedSourcePositionsForProfiling(isolate); +} + +Isolate* NewIsolate(ArrayBufferAllocator* allocator, uv_loop_t* event_loop) { + return NewIsolate(allocator, event_loop, GetMainThreadMultiIsolatePlatform()); +} + +Isolate* NewIsolate(ArrayBufferAllocator* allocator, + uv_loop_t* event_loop, + MultiIsolatePlatform* platform) { + Isolate::CreateParams params; + SetIsolateCreateParams(¶ms, allocator); + + Isolate* isolate = Isolate::Allocate(); + if (isolate == nullptr) return nullptr; + + // Register the isolate on the platform before the isolate gets initialized, + // so that the isolate can access the platform during initialization. + platform->RegisterIsolate(isolate, event_loop); + Isolate::Initialize(isolate, params); + + SetIsolateUpForNode(isolate); return isolate; } diff --git a/src/env.cc b/src/env.cc index 302b0223830604..f9118c6fbfce80 100644 --- a/src/env.cc +++ b/src/env.cc @@ -261,10 +261,6 @@ Environment::Environment(IsolateData* isolate_data, if (options_->no_force_async_hooks_checks) { async_hooks_.no_force_checks(); } - - // TODO(addaleax): the per-isolate state should not be controlled by - // a single Environment. - isolate()->SetPromiseRejectCallback(task_queue::PromiseRejectCallback); } CompileFnEntry::CompileFnEntry(Environment* env, uint32_t id) diff --git a/src/node.h b/src/node.h index d4cde16e45e9c3..3717ab08490616 100644 --- a/src/node.h +++ b/src/node.h @@ -262,9 +262,24 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform { virtual void UnregisterIsolate(v8::Isolate* isolate) = 0; }; +// Set up some Node.js-specific defaults for `params`, in particular +// the ArrayBuffer::Allocator if it is provided, memory limits, and +// possibly a code event handler. +NODE_EXTERN void SetIsolateCreateParams(v8::Isolate::CreateParams* params, + ArrayBufferAllocator* allocator + = nullptr); +// Set a number of callbacks for the `isolate`, in particular the Node.js +// uncaught exception listener. +NODE_EXTERN void SetIsolateUpForNode(v8::Isolate* isolate); // Creates a new isolate with Node.js-specific settings. +// This is a convenience method equivalent to using SetIsolateCreateParams(), +// Isolate::Allocate(), MultiIsolatePlatform::RegisterIsolate(), +// Isolate::Initialize(), and SetIsolateUpForNode(). NODE_EXTERN v8::Isolate* NewIsolate(ArrayBufferAllocator* allocator, struct uv_loop_s* event_loop); +NODE_EXTERN v8::Isolate* NewIsolate(ArrayBufferAllocator* allocator, + struct uv_loop_s* event_loop, + MultiIsolatePlatform* platform); // Creates a new context with Node.js-specific tweaks. NODE_EXTERN v8::Local NewContext( From 1b45704c197434fd21f63bf4fc8c008bf7baf8dd Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 12 Mar 2019 04:28:51 +0800 Subject: [PATCH 012/133] inspector: patch C++ debug options instead of process._breakFirstLine Instead of patching process._breakFirstLine to inform the JS land to wait for the debugger, check that the JS land has not yet serialized the options and then patch the debug options from C++. The changes will be carried into JS later during option serialization. PR-URL: https://github.com/nodejs/node/pull/26602 Reviewed-By: Anna Henningsen Reviewed-By: Eugene Ostroukhov Reviewed-By: Ruben Bridgewater --- src/env-inl.h | 8 ++++++++ src/env.h | 5 +++++ src/inspector_agent.cc | 16 +++++----------- src/node_options.cc | 1 + src/node_options.h | 6 ++++++ 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/env-inl.h b/src/env-inl.h index afa744e0281667..c42a643908a3c7 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -684,6 +684,14 @@ inline void Environment::set_has_run_bootstrapping_code(bool value) { has_run_bootstrapping_code_ = value; } +inline bool Environment::has_serialized_options() const { + return has_serialized_options_; +} + +inline void Environment::set_has_serialized_options(bool value) { + has_serialized_options_ = value; +} + inline bool Environment::is_main_thread() const { return flags_ & kIsMainThread; } diff --git a/src/env.h b/src/env.h index 36f0d555819497..29f84f4ffe4001 100644 --- a/src/env.h +++ b/src/env.h @@ -887,6 +887,9 @@ class Environment { inline bool has_run_bootstrapping_code() const; inline void set_has_run_bootstrapping_code(bool has_run_bootstrapping_code); + inline bool has_serialized_options() const; + inline void set_has_serialized_options(bool has_serialized_options); + static uint64_t AllocateThreadId(); static constexpr uint64_t kNoThreadId = -1; @@ -1104,6 +1107,8 @@ class Environment { std::unordered_map performance_marks_; bool has_run_bootstrapping_code_ = false; + bool has_serialized_options_ = false; + bool can_call_into_js_ = true; Flags flags_; uint64_t thread_id_; diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 7b4dec90fc9548..90ed2857815e60 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -728,18 +728,12 @@ bool Agent::Start(const std::string& path, return false; } - // TODO(joyeecheung): we should not be using process as a global object - // to transport --inspect-brk. Instead, the JS land can get this through - // require('internal/options') since it should be set once CLI parsing - // is done. + // Patch the debug options to implement waitForDebuggerOnStart for + // the NodeWorker.enable method. if (wait_for_connect) { - HandleScope scope(parent_env_->isolate()); - parent_env_->process_object()->DefineOwnProperty( - parent_env_->context(), - FIXED_ONE_BYTE_STRING(parent_env_->isolate(), "_breakFirstLine"), - True(parent_env_->isolate()), - static_cast(v8::ReadOnly | v8::DontEnum)) - .FromJust(); + CHECK(!parent_env_->has_serialized_options()); + debug_options_.EnableBreakFirstLine(); + parent_env_->options()->get_debug_options()->EnableBreakFirstLine(); client_->waitForFrontend(); } return true; diff --git a/src/node_options.cc b/src/node_options.cc index fb9b6c59788a73..16880ecda95eeb 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -553,6 +553,7 @@ void GetOptions(const FunctionCallbackInfo& args) { return env->ThrowError( "Should not query options before bootstrapping is done"); } + env->set_has_serialized_options(true); Isolate* isolate = env->isolate(); Local context = env->context(); diff --git a/src/node_options.h b/src/node_options.h index 5c9dbe77ab47ef..441b8a43c645df 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -85,6 +85,12 @@ class DebugOptions : public Options { return deprecated_debug && !inspector_enabled; } + // Used to patch the options as if --inspect-brk is passed. + void EnableBreakFirstLine() { + inspector_enabled = true; + break_first_line = true; + } + bool wait_for_connect() const { return break_first_line || break_node_first_line; } From 169f3f716693eb960d3c38dcde2d94b69ea93982 Mon Sep 17 00:00:00 2001 From: ZYSzys Date: Tue, 19 Mar 2019 13:09:42 +0800 Subject: [PATCH 013/133] util: require `isNativeError` from internalBinding PR-URL: https://github.com/nodejs/node/pull/23081 Reviewed-By: Ruben Bridgewater Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Weijia Wang Reviewed-By: Joyee Cheung Reviewed-By: Refael Ackermann Reviewed-By: Denys Otrishko Reviewed-By: John-David Dalton Reviewed-By: Anna Henningsen --- lib/internal/util.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/internal/util.js b/lib/internal/util.js index b3fdff27627fa8..bb2a101c4e8648 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -12,9 +12,7 @@ const { arrow_message_private_symbol: kArrowMessagePrivateSymbolIndex, decorated_private_symbol: kDecoratedPrivateSymbolIndex } = internalBinding('util'); -const { - isNativeError -} = require('internal/util/types'); +const { isNativeError } = internalBinding('types'); const noCrypto = !process.versions.openssl; From 21486e5c97cb449f2e9a6dffc7240dcf796e0231 Mon Sep 17 00:00:00 2001 From: ZYSzys Date: Tue, 19 Mar 2019 14:00:49 +0800 Subject: [PATCH 014/133] util: extract uncurryThis function for reuse PR-URL: https://github.com/nodejs/node/pull/23081 Reviewed-By: Ruben Bridgewater Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Weijia Wang Reviewed-By: Joyee Cheung Reviewed-By: Refael Ackermann Reviewed-By: Denys Otrishko Reviewed-By: John-David Dalton Reviewed-By: Anna Henningsen --- lib/internal/util.js | 12 ++++++++++++ lib/internal/util/comparisons.js | 7 +------ lib/internal/util/inspect.js | 14 ++------------ lib/internal/util/types.js | 11 +---------- lib/util.js | 6 +----- 5 files changed, 17 insertions(+), 33 deletions(-) diff --git a/lib/internal/util.js b/lib/internal/util.js index bb2a101c4e8648..f5b5fbedd46b4f 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -385,6 +385,17 @@ function once(callback) { }; } +const ReflectApply = Reflect.apply; + +// This function is borrowed from the function with the same name on V8 Extras' +// `utils` object. V8 implements Reflect.apply very efficiently in conjunction +// with the spread syntax, such that no additional special case is needed for +// function calls w/o arguments. +// Refs: https://github.com/v8/v8/blob/d6ead37d265d7215cf9c5f768f279e21bd170212/src/js/prologue.js#L152-L156 +function uncurryThis(func) { + return (thisArg, ...args) => ReflectApply(func, thisArg, args); +} + module.exports = { assertCrypto, cachedResult, @@ -405,6 +416,7 @@ module.exports = { promisify, spliceOne, removeColors, + uncurryThis, // Symbol used to customize promisify conversion customPromisifyArgs: kCustomPromisifyArgsSymbol, diff --git a/lib/internal/util/comparisons.js b/lib/internal/util/comparisons.js index d0726089063852..f99260f13a7125 100644 --- a/lib/internal/util/comparisons.js +++ b/lib/internal/util/comparisons.js @@ -22,12 +22,7 @@ const { ONLY_ENUMERABLE } } = internalBinding('util'); - -const ReflectApply = Reflect.apply; - -function uncurryThis(func) { - return (thisArg, ...args) => ReflectApply(func, thisArg, args); -} +const { uncurryThis } = require('internal/util'); const kStrict = true; const kLoose = false; diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index b330b5905d0784..d52e976c0bb449 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -17,7 +17,8 @@ const { customInspectSymbol, isError, join, - removeColors + removeColors, + uncurryThis } = require('internal/util'); const { @@ -63,17 +64,6 @@ const { isBigUint64Array } = require('internal/util/types'); -const ReflectApply = Reflect.apply; - -// This function is borrowed from the function with the same name on V8 Extras' -// `utils` object. V8 implements Reflect.apply very efficiently in conjunction -// with the spread syntax, such that no additional special case is needed for -// function calls w/o arguments. -// Refs: https://github.com/v8/v8/blob/d6ead37d265d7215cf9c5f768f279e21bd170212/src/js/prologue.js#L152-L156 -function uncurryThis(func) { - return (thisArg, ...args) => ReflectApply(func, thisArg, args); -} - const propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable); const regExpToString = uncurryThis(RegExp.prototype.toString); const dateToISOString = uncurryThis(Date.prototype.toISOString); diff --git a/lib/internal/util/types.js b/lib/internal/util/types.js index 865818c661b78d..f41d11443f2bb5 100644 --- a/lib/internal/util/types.js +++ b/lib/internal/util/types.js @@ -1,15 +1,6 @@ 'use strict'; -const ReflectApply = Reflect.apply; - -// This function is borrowed from the function with the same name on V8 Extras' -// `utils` object. V8 implements Reflect.apply very efficiently in conjunction -// with the spread syntax, such that no additional special case is needed for -// function calls w/o arguments. -// Refs: https://github.com/v8/v8/blob/d6ead37d265d7215cf9c5f768f279e21bd170212/src/js/prologue.js#L152-L156 -function uncurryThis(func) { - return (thisArg, ...args) => ReflectApply(func, thisArg, args); -} +const { uncurryThis } = require('internal/util'); const TypedArrayPrototype = Object.getPrototypeOf(Uint8Array.prototype); diff --git a/lib/util.js b/lib/util.js index 6a3936856940ee..c292758d1fae3c 100644 --- a/lib/util.js +++ b/lib/util.js @@ -42,13 +42,9 @@ const { deprecate, getSystemErrorName: internalErrorName, promisify, + uncurryThis } = require('internal/util'); -const ReflectApply = Reflect.apply; - -function uncurryThis(func) { - return (thisArg, ...args) => ReflectApply(func, thisArg, args); -} const objectToString = uncurryThis(Object.prototype.toString); let internalDeepEqual; From 4defe4722828ef0170d3898c942d86551e52fb32 Mon Sep 17 00:00:00 2001 From: toshi1127 Date: Tue, 19 Mar 2019 17:56:07 +0900 Subject: [PATCH 015/133] child_process: reduce internal usage of public require of util PR-URL: https://github.com/nodejs/node/pull/26769 Reviewed-By: Masashi Hirano Reviewed-By: James M Snell Reviewed-By: Yongsheng Zhang Reviewed-By: Ruben Bridgewater --- lib/child_process.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/child_process.js b/lib/child_process.js index 28f10bc66f3ce2..f1b5006242dab5 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -21,12 +21,14 @@ 'use strict'; -const util = require('util'); const { - deprecate, convertToValidSignal, getSystemErrorName + deprecate, + promisify, + convertToValidSignal, + getSystemErrorName } = require('internal/util'); const { isArrayBufferView } = require('internal/util/types'); -const debug = util.debuglog('child_process'); +const debug = require('internal/util/debuglog').debuglog('child_process'); const { Buffer } = require('buffer'); const { Pipe, constants: PipeConstants } = internalBinding('pipe_wrap'); const { @@ -170,7 +172,7 @@ const customPromiseExecFunction = (orig) => { }; }; -Object.defineProperty(exports.exec, util.promisify.custom, { +Object.defineProperty(exports.exec, promisify.custom, { enumerable: false, value: customPromiseExecFunction(exports.exec) }); @@ -391,7 +393,7 @@ exports.execFile = function execFile(file /* , args, options, callback */) { return child; }; -Object.defineProperty(exports.execFile, util.promisify.custom, { +Object.defineProperty(exports.execFile, promisify.custom, { enumerable: false, value: customPromiseExecFunction(exports.execFile) }); From 44450efa6b3a081eb3dbd589fea5e3a0bd585637 Mon Sep 17 00:00:00 2001 From: toshi1127 Date: Wed, 20 Mar 2019 21:52:50 +0900 Subject: [PATCH 016/133] worker: remove usage of require('util') MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26810 Refs: https://github.com/nodejs/node/issues/26546 Reviewed-By: Anna Henningsen Reviewed-By: Yongsheng Zhang Reviewed-By: Michaël Zasso Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater --- lib/internal/worker/io.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/worker/io.js b/lib/internal/worker/io.js index 664055b5c5b9af..ece0f2741a3811 100644 --- a/lib/internal/worker/io.js +++ b/lib/internal/worker/io.js @@ -18,7 +18,7 @@ const { const { Readable, Writable } = require('stream'); const EventEmitter = require('events'); -const util = require('util'); +const { inspect } = require('internal/util/inspect'); let debuglog; function debug(...args) { @@ -122,7 +122,7 @@ MessagePort.prototype.close = function(cb) { MessagePortPrototype.close.call(this); }; -Object.defineProperty(MessagePort.prototype, util.inspect.custom, { +Object.defineProperty(MessagePort.prototype, inspect.custom, { enumerable: false, writable: false, value: function inspect() { // eslint-disable-line func-name-matching From b24e45ab8dbb0b385888f4de9163b5bf50d4092c Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Mon, 18 Mar 2019 15:56:49 -0700 Subject: [PATCH 017/133] timers: deprecate active() and _unrefActive() Another nail in the coffin here, farewell ye ol C-style apis. These apis caused numerous other issues that required far too many safeguards. This gets us one step closer to not having to worry about those issues anymore. Refs: https://github.com/nodejs/node/pull/18066 Refs: https://github.com/nodejs/node/pull/20298 PR-URL: https://github.com/nodejs/node/pull/26760 Reviewed-By: Ruben Bridgewater Reviewed-By: Anatoli Papirovski Reviewed-By: Matteo Collina Reviewed-By: Joyee Cheung --- doc/api/deprecations.md | 35 +++++++++++++++++++ lib/timers.js | 11 ++++-- .../test-timers-max-duration-warning.js | 2 +- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 20ef6ad7169d64..4e68e2e46157c8 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -2267,6 +2267,38 @@ undocumented `COUNTER_NET_SERVER_CONNECTION()`, `COUNTER_HTTP_CLIENT_RESPONSE()` functions have been deprecated. + +### DEP0126: timers.active() + + +Type: Runtime + +The previously undocumented `timers.active()` is deprecated. +Please use the publicly documented [`timeout.refresh()`][] instead. +If re-referencing the timeout is necessary, [`timeout.ref()`][] can be used +with no performance impact since Node.js 10. + + +### DEP0127: timers._unrefActive() + + +Type: Runtime + +The previously undocumented and "private" `timers._unrefActive()` is deprecated. +Please use the publicly documented [`timeout.refresh()`][] instead. +If unreferencing the timeout is necessary, [`timeout.unref()`][] can be used +with no performance impact since Node.js 10. + [`--pending-deprecation`]: cli.html#cli_pending_deprecation [`Buffer.allocUnsafeSlow(size)`]: buffer.html#buffer_class_method_buffer_allocunsafeslow_size [`Buffer.from(array)`]: buffer.html#buffer_class_method_buffer_from_array @@ -2322,6 +2354,9 @@ undocumented `COUNTER_NET_SERVER_CONNECTION()`, [`script.createCachedData()`]: vm.html#vm_script_createcacheddata [`setInterval()`]: timers.html#timers_setinterval_callback_delay_args [`setTimeout()`]: timers.html#timers_settimeout_callback_delay_args +[`timeout.ref()`]: timers.html#timers_timeout_ref +[`timeout.refresh()`]: timers.html#timers_timeout_refresh +[`timeout.unref()`]: timers.html#timers_timeout_unref [`tls.CryptoStream`]: tls.html#tls_class_cryptostream [`tls.SecureContext`]: tls.html#tls_tls_createsecurecontext_options [`tls.SecurePair`]: tls.html#tls_class_securepair diff --git a/lib/timers.js b/lib/timers.js index e9486edc5386fb..8a16532bd5def4 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -304,14 +304,21 @@ function clearImmediate(immediate) { } module.exports = { - _unrefActive: unrefActive, - active, setTimeout, clearTimeout, setImmediate, clearImmediate, setInterval, clearInterval, + _unrefActive: deprecate( + unrefActive, + 'timers._unrefActive() is deprecated.' + + ' Please use timeout.refresh() instead.', + 'DEP0127'), + active: deprecate( + active, + 'timers.active() is deprecated. Please use timeout.refresh() instead.', + 'DEP0126'), unenroll: deprecate( unenroll, 'timers.unenroll() is deprecated. Please use clearTimeout instead.', diff --git a/test/parallel/test-timers-max-duration-warning.js b/test/parallel/test-timers-max-duration-warning.js index c978cf29c3fe4d..a104c1700db81d 100644 --- a/test/parallel/test-timers-max-duration-warning.js +++ b/test/parallel/test-timers-max-duration-warning.js @@ -19,7 +19,7 @@ process.on('warning', common.mustCall((warning) => { assert.strictEqual(lines[0], `${OVERFLOW} does not fit into a 32-bit signed` + ' integer.'); assert.strictEqual(lines.length, 2); -}, 5)); +}, 6)); { From 5d9f819a14de657b08457fdf6d616ff0fcefd64f Mon Sep 17 00:00:00 2001 From: toshi1127 Date: Wed, 20 Mar 2019 22:04:00 +0900 Subject: [PATCH 018/133] worker: remove usage of require('util') in worker_thread.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26814 Refs: https://github.com/nodejs/node/issues/26546 Reviewed-By: Michaël Zasso Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Masashi Hirano Reviewed-By: Yongsheng Zhang --- lib/internal/main/worker_thread.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index c5a729b5721f94..fd3502e0784a1a 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -45,7 +45,7 @@ const publicWorker = require('worker_threads'); patchProcessObject(); setupDebugEnv(); -const debug = require('util').debuglog('worker'); +const debug = require('internal/util/debuglog').debuglog('worker'); setupWarningHandler(); From bb9f1cce420e5f7f53613aaece4487cc1da9a4eb Mon Sep 17 00:00:00 2001 From: toshi1127 Date: Mon, 25 Mar 2019 12:43:05 +0900 Subject: [PATCH 019/133] fs: reduce usage of require('util') PR-URL: https://github.com/nodejs/node/pull/26783 Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Yongsheng Zhang --- lib/internal/fs/utils.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js index 0c5ce1ecb76b91..66c28bea746b21 100644 --- a/lib/internal/fs/utils.js +++ b/lib/internal/fs/utils.js @@ -9,10 +9,13 @@ const { ERR_INVALID_OPT_VALUE_ENCODING, ERR_OUT_OF_RANGE } = require('internal/errors').codes; -const { isUint8Array, isArrayBufferView } = require('internal/util/types'); +const { + isUint8Array, + isArrayBufferView, + isDate +} = require('internal/util/types'); const { once } = require('internal/util'); const pathModule = require('path'); -const util = require('util'); const kType = Symbol('type'); const kStats = Symbol('stats'); @@ -392,7 +395,7 @@ function toUnixTimestamp(time, name = 'time') { } return time; } - if (util.isDate(time)) { + if (isDate(time)) { // Convert to 123.456 UNIX timestamp return time.getTime() / 1000; } From a03552d24622e482d21561d83fe02d6bc94ce4fb Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 19 Mar 2019 06:11:44 +0800 Subject: [PATCH 020/133] process: handle --expose-internals during pre-execution Instead of relying on the value of the CLI option when executing bootstrap/loaders.js. PR-URL: https://github.com/nodejs/node/pull/26759 Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater --- lib/internal/bootstrap/loaders.js | 21 ++++++++++++--------- lib/internal/bootstrap/pre_execution.js | 3 +++ src/node.cc | 3 --- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index d4f70f2270786b..d8dcd653920818 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -41,8 +41,7 @@ // This file is compiled as if it's wrapped in a function with arguments // passed by node::RunBootstrapping() -/* global process, getLinkedBinding, getInternalBinding */ -/* global exposeInternals, primordials */ +/* global process, getLinkedBinding, getInternalBinding, primordials */ const { Reflect, @@ -157,15 +156,19 @@ function NativeModule(id) { this.exportKeys = undefined; this.loaded = false; this.loading = false; - if (id === loaderId) { + this.canBeRequiredByUsers = !id.startsWith('internal/'); +} + +// To be called during pre-execution when --expose-internals is on. +// Enables the user-land module loader to access internal modules. +NativeModule.exposeInternals = function() { + for (const [id, mod] of NativeModule.map) { // Do not expose this to user land even with --expose-internals. - this.canBeRequiredByUsers = false; - } else if (id.startsWith('internal/')) { - this.canBeRequiredByUsers = exposeInternals; - } else { - this.canBeRequiredByUsers = true; + if (id !== loaderId) { + mod.canBeRequiredByUsers = true; + } } -} +}; const { moduleIds, diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index 4c5fc2d6747339..f10397df79c870 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -146,6 +146,9 @@ function initializeReport() { function setupDebugEnv() { require('internal/util/debuglog').initializeDebugEnv(process.env.NODE_DEBUG); + if (getOptionValue('--expose-internals')) { + require('internal/bootstrap/loaders').NativeModule.exposeInternals(); + } } function setupSignalHandlers() { diff --git a/src/node.cc b/src/node.cc index f3784ec34c3301..ae4465aa2ae23e 100644 --- a/src/node.cc +++ b/src/node.cc @@ -296,8 +296,6 @@ MaybeLocal RunBootstrapping(Environment* env) { env->process_string(), FIXED_ONE_BYTE_STRING(isolate, "getLinkedBinding"), FIXED_ONE_BYTE_STRING(isolate, "getInternalBinding"), - // --expose-internals - FIXED_ONE_BYTE_STRING(isolate, "exposeInternals"), env->primordials_string()}; std::vector> loaders_args = { process, @@ -307,7 +305,6 @@ MaybeLocal RunBootstrapping(Environment* env) { env->NewFunctionTemplate(binding::GetInternalBinding) ->GetFunction(context) .ToLocalChecked(), - Boolean::New(isolate, env->options()->expose_internals), env->primordials()}; // Bootstrap internal loaders From e43dbaaba4ae44d35898794284c73985df5889c5 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Mon, 25 Mar 2019 10:37:57 -0700 Subject: [PATCH 021/133] console: remove unreachable code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the current code, line 497 checks if `item` is `null` or `undefined`. However, `item` is guaranteed to be a non-null object or function at that point. * Lines 484/485 set `primitive` to `true` if `item` is null or undefined. * Line 486 skips line 497 if `primitive` is true (which it will always be if `item` is null or undefined) and `properties` is undefined. So the only way to get to line 497 when `item` is null or undefined is if `properties` is specified. * Line 494 skips line 497 if `primitive` is true (which it will always be if `item` is null or undefined) and `properties` are specified (which will always be the case or else this `else` block is skipped.) Here are the current lines 484 through 497: const primitive = item === null || (typeof item !== 'function' && typeof item !== 'object'); if (properties === undefined && primitive) { hasPrimitives = true; valuesKeyArray[i] = _inspect(item); } else { const keys = properties || ObjectKeys(item); for (const key of keys) { if (map[key] === undefined) map[key] = []; if ((primitive && properties) || !hasOwnProperty(item, key)) map[key][i] = ''; else map[key][i] = item == null ? item : _inspect(item[key]); This change removes the unnecessary ternary in that final line, simplifying it to: map[key][i] = _inspect(item[key]); PR-URL: https://github.com/nodejs/node/pull/26906 Reviewed-By: Ruben Bridgewater Reviewed-By: Michaël Zasso Reviewed-By: Tobias Nießen Reviewed-By: Yuta Hiroto Reviewed-By: Colin Ihrig Reviewed-By: Yongsheng Zhang --- lib/internal/console/constructor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/console/constructor.js b/lib/internal/console/constructor.js index af0874c3b2905a..12dcee7c7715ff 100644 --- a/lib/internal/console/constructor.js +++ b/lib/internal/console/constructor.js @@ -492,7 +492,7 @@ const consoleMethods = { if ((primitive && properties) || !hasOwnProperty(item, key)) map[key][i] = ''; else - map[key][i] = item == null ? item : _inspect(item[key]); + map[key][i] = _inspect(item[key]); } } } From 80e845e7870067feded4c4db20449ff5a47117ae Mon Sep 17 00:00:00 2001 From: Daiki Ihara Date: Mon, 25 Mar 2019 12:08:09 +0900 Subject: [PATCH 022/133] test: add test about unencrypted PKCS#8 private key for RSA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26898 Refs: https://github.com/nodejs/node/issues/24928 Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Tobias Nießen --- test/fixtures/test_dsa_pkcs8_privkey.pem | 15 ++++++++ test/fixtures/test_rsa_pkcs8_privkey.pem | 16 +++++++++ test/parallel/test-crypto-rsa-dsa.js | 46 ++++++++++++++++++++++-- 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/test_dsa_pkcs8_privkey.pem create mode 100644 test/fixtures/test_rsa_pkcs8_privkey.pem diff --git a/test/fixtures/test_dsa_pkcs8_privkey.pem b/test/fixtures/test_dsa_pkcs8_privkey.pem new file mode 100644 index 00000000000000..3d15aa1162a97d --- /dev/null +++ b/test/fixtures/test_dsa_pkcs8_privkey.pem @@ -0,0 +1,15 @@ +-----BEGIN PRIVATE KEY----- +MIICZAIBADCCAjkGByqGSM44BAEwggIsAoIBAQC5CYW1vZHbx/Ytm+/m+oseHbre +kOd40VOSybqo6Us2NysFq+46rNlnR28Lkolg4nv+XK6YTlB3XbEwbibYa1uwCuAE +io/Zs2rfOpGNwp31Fg3pb8ZhFrnjmhrQhZfRT6bXXw3hvyXitjgQkwIsRL5OUYlQ +CEIbf+LsogikQez2+xaYYkqUqSYdb48IkVtDTMweWslpDKUmIfH1cy0osqMC97GR +8EXXvhK7sig2hhHtj+NFGA7majfEFmTd0mafZBlEFodqvkwV1q7TTMrDWgkO2lcc +2DEMjZ9on9xVszRhNCGIwuFJLhWBKfNZ59X7LUxEfkelpce0Kr5eFmxwN4n3AiEA +pK7pu7TqHqiIoGDmAyUm71gx3V5T3mNaih8Y/9h7dMsCggEAJNtfC6LqpU84UMz+ +nsxSch/ylDx1lyh3rOGZ9Wn+2tIhahI+hqDwmPeHvymzDHh2QjuXgzeZmo1753CB +CtYdU0GnumSEEUUCiTBbSsX6Zy0VI4w/Qy3WV5IoXXkF9YsbkC8JhPq9jHLa5Qt5 +59TF+347OFso5ae+XkkZ8C112UyKnYzvniqlbj0Cb4E7FadCzSggC9c2drYE12Mx +QEEbddAVNty5wpjh3Qd2y8kKPDSn4OCrSIXAL8WDXJk507RL5moqKnwis/3iPUXi +U7s8QmJP4B8Mn4vDM1O0rORCmz9KXz0f5M0lw39jdA/AG0fNNz86KCFTPdXz/Iz1 +ThphTQQiAiAhjvXffKp1V3nMiUUUsYzS2Msn14bBFiBwSdNgitRwEA== +-----END PRIVATE KEY----- diff --git a/test/fixtures/test_rsa_pkcs8_privkey.pem b/test/fixtures/test_rsa_pkcs8_privkey.pem new file mode 100644 index 00000000000000..0d8d1e5cdae916 --- /dev/null +++ b/test/fixtures/test_rsa_pkcs8_privkey.pem @@ -0,0 +1,16 @@ +-----BEGIN PRIVATE KEY----- +MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMIUQ0bDffIaKHL3 +akONlCGXQLfqs8mP4K99ILz6rbyHEDXrVAU1R3XfC4JNRyrRB3aqwF7/aEXJzYMI +kmDSHUvvz7pnhQxHsQ5yl91QT0d/eb+Gz4VRHjm4El4MrUdIUcPxscoPqS/wU8Z8 +lOi1z7bGMnChiL7WGqnV8h6RrGzJAgMBAAECgYEAlHxmQJS/HmTO/6612XtPkyei +t1PVO+hdckZcrtln5S68w1QJ03ZA9ziwGIBBa8vDVxIq3kOwpnxQROlg/Lyk9iec +MTPZ0NiJp7D37ESm5vJ5bagfhnHvXCoG04qSrCtdr+nN2mK5xFGOTq8TphjsQEGz ++Du5qdWkaJs5UASyofUCQQDsOSNUfbxYNSB/Weq9+fYqPoJPuchwTeMYmxlnvOVm +YGYcUM40wtStdH9mbelHmbS0KYGprlEr3m7jXaO3V08jAkEA0lPe/ymeS2HjxtCj +98p6Xq4RjJuhG0Dn+4e4eRnoVAXs5SQaiByZImW451zm3qEjVWwufRBkSNBkwQ5a +v7ApIwJBAILiRckSwcC97vug/oe0b8iISfuSnJRdE28WwMTRzOkkkG8v9pEVQnG5 +Er3WOGMLrywDs2wowaDk5dvkjkmPfrECQQCAhPtoU5gEXAaBABCRY0ou/JKApsBl +FN4sFpykcy5B2XUN92e28DKqkBnSVjREqZYbpoUpqpB85coLJahSJWSdAkBeuWDJ +IVyL/a54qUgTVCoiItJnxXw6WkUtGdvWnMjtTXJBedMAQVgznrTImXNSk5vVXhxJ +wZ3frm2JIy/Es69M +-----END PRIVATE KEY----- diff --git a/test/parallel/test-crypto-rsa-dsa.js b/test/parallel/test-crypto-rsa-dsa.js index 348fd15b74d495..589fa57a1c9e77 100644 --- a/test/parallel/test-crypto-rsa-dsa.js +++ b/test/parallel/test-crypto-rsa-dsa.js @@ -21,6 +21,8 @@ const dsaPubPem = fixtures.readSync('test_dsa_pubkey.pem', 'ascii'); const dsaKeyPem = fixtures.readSync('test_dsa_privkey.pem', 'ascii'); const dsaKeyPemEncrypted = fixtures.readSync('test_dsa_privkey_encrypted.pem', 'ascii'); +const rsaPkcs8KeyPem = fixtures.readSync('test_rsa_pkcs8_privkey.pem'); +const dsaPkcs8KeyPem = fixtures.readSync('test_dsa_pkcs8_privkey.pem'); const decryptError = /^Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt$/; @@ -35,6 +37,9 @@ const decryptError = let decryptedBuffer = crypto.privateDecrypt(rsaKeyPem, encryptedBuffer); assert.strictEqual(decryptedBuffer.toString(), input); + decryptedBuffer = crypto.privateDecrypt(rsaPkcs8KeyPem, encryptedBuffer); + assert.strictEqual(decryptedBuffer.toString(), input); + let decryptedBufferWithPassword = crypto.privateDecrypt({ key: rsaKeyPemEncrypted, passphrase: 'password' @@ -119,11 +124,17 @@ function test_rsa(padding) { padding: padding }, bufferToEncrypt); - const decryptedBuffer = crypto.privateDecrypt({ + let decryptedBuffer = crypto.privateDecrypt({ key: rsaKeyPem, padding: padding }, encryptedBuffer); assert.deepStrictEqual(decryptedBuffer, input); + + decryptedBuffer = crypto.privateDecrypt({ + key: rsaPkcs8KeyPem, + padding: padding + }, encryptedBuffer); + assert.deepStrictEqual(decryptedBuffer, input); } test_rsa('RSA_NO_PADDING'); @@ -150,6 +161,16 @@ assert.strictEqual(rsaSignature, expectedSignature); rsaVerify.update(rsaPubPem); assert.strictEqual(rsaVerify.verify(rsaPubPem, rsaSignature, 'hex'), true); +// Test RSA PKCS#8 key signing/verification +rsaSign = crypto.createSign('SHA1'); +rsaSign.update(rsaPubPem); +rsaSignature = rsaSign.sign(rsaPkcs8KeyPem, 'hex'); +assert.strictEqual(rsaSignature, expectedSignature); + +rsaVerify = crypto.createVerify('SHA1'); +rsaVerify.update(rsaPubPem); +assert.strictEqual(rsaVerify.verify(rsaPubPem, rsaSignature, 'hex'), true); + // Test RSA key signing/verification with encrypted key rsaSign = crypto.createSign('SHA1'); rsaSign.update(rsaPubPem); @@ -216,7 +237,7 @@ assert.throws(() => { const input = 'I AM THE WALRUS'; // DSA signatures vary across runs so there is no static string to verify - // against + // against. const sign = crypto.createSign('SHA1'); sign.update(input); const signature = sign.sign(dsaKeyPem, 'hex'); @@ -238,6 +259,25 @@ assert.throws(() => { } +// +// Test DSA signing and verification with PKCS#8 private key +// +{ + const input = 'I AM THE WALRUS'; + + // DSA signatures vary across runs so there is no static string to verify + // against. + const sign = crypto.createSign('SHA1'); + sign.update(input); + const signature = sign.sign(dsaPkcs8KeyPem, 'hex'); + + const verify = crypto.createVerify('SHA1'); + verify.update(input); + + assert.strictEqual(verify.verify(dsaPubPem, signature, 'hex'), true); +} + + // // Test DSA signing and verification with encrypted key // @@ -253,7 +293,7 @@ const input = 'I AM THE WALRUS'; { // DSA signatures vary across runs so there is no static string to verify - // against + // against. const sign = crypto.createSign('SHA1'); sign.update(input); const signOptions = { key: dsaKeyPemEncrypted, passphrase: 'password' }; From c1def0701eb9e2ddb353e9857a84c257d40ff226 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 20 Mar 2019 21:15:38 +0800 Subject: [PATCH 023/133] src: delete unreachable code in heap_utils.cc PR-URL: https://github.com/nodejs/node/pull/26815 Reviewed-By: Refael Ackermann --- src/heap_utils.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/heap_utils.cc b/src/heap_utils.cc index 6ce8c1dbdbb945..d5b5afa4d5be9e 100644 --- a/src/heap_utils.cc +++ b/src/heap_utils.cc @@ -280,7 +280,6 @@ class HeapSnapshotStream : public AsyncWrap, int DoShutdown(ShutdownWrap* req_wrap) override { UNREACHABLE(); - return 0; } int DoWrite(WriteWrap* w, @@ -288,7 +287,6 @@ class HeapSnapshotStream : public AsyncWrap, size_t count, uv_stream_t* send_handle) override { UNREACHABLE(); - return 0; } bool IsAlive() override { return snapshot_ != nullptr; } From ea7e2c0666d55a32b8f634342805d8fd6d79b4ca Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 20 Mar 2019 21:16:47 +0800 Subject: [PATCH 024/133] src: tidy up include headers in env.cc PR-URL: https://github.com/nodejs/node/pull/26815 Reviewed-By: Refael Ackermann --- src/env.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/env.cc b/src/env.cc index f9118c6fbfce80..4dc14fa1df3811 100644 --- a/src/env.cc +++ b/src/env.cc @@ -8,7 +8,6 @@ #include "node_internals.h" #include "node_native_module.h" #include "node_options-inl.h" -#include "node_platform.h" #include "node_process.h" #include "node_v8_platform-inl.h" #include "node_worker.h" From c82412775641f1b949a4d6e3d2f2a1a3dd9fb0c9 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 20 Mar 2019 21:18:01 +0800 Subject: [PATCH 025/133] src: delete unused field in class ModuleWrap PR-URL: https://github.com/nodejs/node/pull/26815 Reviewed-By: Refael Ackermann --- src/module_wrap.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/module_wrap.h b/src/module_wrap.h index dc34685fedadbc..0fdd9b39abe296 100644 --- a/src/module_wrap.h +++ b/src/module_wrap.h @@ -36,7 +36,6 @@ v8::Maybe Resolve(Environment* env, class ModuleWrap : public BaseObject { public: - static const std::string EXTENSIONS[]; static void Initialize(v8::Local target, v8::Local unused, v8::Local context, From c9697317558691bc30172097048bdf92891729e3 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 20 Mar 2019 21:21:30 +0800 Subject: [PATCH 026/133] src: use deleted function for class BaseObject PR-URL: https://github.com/nodejs/node/pull/26815 Reviewed-By: Refael Ackermann --- src/base_object.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/base_object.h b/src/base_object.h index 4796a052c0b5c1..091c3d5af01954 100644 --- a/src/base_object.h +++ b/src/base_object.h @@ -40,6 +40,8 @@ class BaseObject : public MemoryRetainer { inline BaseObject(Environment* env, v8::Local object); inline ~BaseObject() override; + BaseObject() = delete; + // Returns the wrapped object. Returns an empty handle when // persistent.IsEmpty() is true. inline v8::Local object() const; @@ -83,8 +85,6 @@ class BaseObject : public MemoryRetainer { const v8::PropertyCallbackInfo& info); private: - BaseObject(); - v8::Local WrappedObject() const override; bool IsRootNode() const override; static void DeleteMe(void* data); From 6bfb17f52872826d88141ae6ebe61df009535cda Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 20 Mar 2019 22:50:35 +0800 Subject: [PATCH 027/133] src: fix task release in cares_wrap.cc PR-URL: https://github.com/nodejs/node/pull/26815 Reviewed-By: Refael Ackermann --- src/cares_wrap.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index 12d712811dc28b..683d9c9728b7e8 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -307,7 +307,7 @@ node_ares_task* ares_task_create(ChannelWrap* channel, ares_socket_t sock) { if (uv_poll_init_socket(channel->env()->event_loop(), &task->poll_watcher, sock) < 0) { /* This should never happen. */ - free(task); + delete task; return nullptr; } From 0427354a9829ccb87572517fd099101dd1a8bf2d Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 20 Mar 2019 22:54:11 +0800 Subject: [PATCH 028/133] src: delete useless code in cares_wrap.cc PR-URL: https://github.com/nodejs/node/pull/26815 Reviewed-By: Refael Ackermann --- src/cares_wrap.cc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index 683d9c9728b7e8..aeb525b33e7efa 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -296,11 +296,6 @@ void node_ares_task::MemoryInfo(MemoryTracker* tracker) const { node_ares_task* ares_task_create(ChannelWrap* channel, ares_socket_t sock) { auto task = new node_ares_task(); - if (task == nullptr) { - /* Out of memory. */ - return nullptr; - } - task->channel = channel; task->sock = sock; From a1cf7453d8b6070d08cbcde9342a92b251c5e8e6 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 02:42:50 +0100 Subject: [PATCH 029/133] test: refactor path parse test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use destructuring and arrow functions and make one test stricter. Also inline the error object as there's only a sinlge error that can currently be thrown in the path module. PR-URL: https://github.com/nodejs/node/pull/26912 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso --- test/parallel/test-path-parse-format.js | 53 +++++++++++-------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/test/parallel/test-path-parse-format.js b/test/parallel/test-path-parse-format.js index c50093301f1edf..0487ece8c43b58 100644 --- a/test/parallel/test-path-parse-format.js +++ b/test/parallel/test-path-parse-format.js @@ -51,7 +51,7 @@ const winPaths = [ ]; const winSpecialCaseParseTests = [ - ['/foo/bar', { root: '/' }], + ['/foo/bar', { root: '/', dir: '/foo', base: 'bar', ext: '', name: 'bar' }], ]; const winSpecialCaseFormatTests = [ @@ -98,21 +98,16 @@ const unixSpecialCaseFormatTests = [ [{}, ''] ]; -const expectedMessage = common.expectsError({ - code: 'ERR_INVALID_ARG_TYPE', - type: TypeError -}, 18); - const errors = [ - { method: 'parse', input: [null], message: expectedMessage }, - { method: 'parse', input: [{}], message: expectedMessage }, - { method: 'parse', input: [true], message: expectedMessage }, - { method: 'parse', input: [1], message: expectedMessage }, - { method: 'parse', input: [], message: expectedMessage }, - { method: 'format', input: [null], message: expectedMessage }, - { method: 'format', input: [''], message: expectedMessage }, - { method: 'format', input: [true], message: expectedMessage }, - { method: 'format', input: [1], message: expectedMessage }, + { method: 'parse', input: [null] }, + { method: 'parse', input: [{}] }, + { method: 'parse', input: [true] }, + { method: 'parse', input: [1] }, + { method: 'parse', input: [] }, + { method: 'format', input: [null] }, + { method: 'format', input: [''] }, + { method: 'format', input: [true] }, + { method: 'format', input: [1] }, ]; checkParseFormat(path.win32, winPaths); @@ -153,10 +148,10 @@ const trailingTests = [ ] ]; const failures = []; -trailingTests.forEach(function(test) { +trailingTests.forEach((test) => { const parse = test[0]; const os = parse === path.win32.parse ? 'win32' : 'posix'; - test[1].forEach(function(test) { + test[1].forEach((test) => { const actual = parse(test[0]); const expected = test[1]; const message = `path.${os}.parse(${JSON.stringify(test[0])})\n expect=${ @@ -180,15 +175,18 @@ trailingTests.forEach(function(test) { assert.strictEqual(failures.length, 0, failures.join('')); function checkErrors(path) { - errors.forEach(function(errorCase) { + errors.forEach(({ method, input }) => { assert.throws(() => { - path[errorCase.method].apply(path, errorCase.input); - }, errorCase.message); + path[method].apply(path, input); + }, { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError [ERR_INVALID_ARG_TYPE]' + }); }); } function checkParseFormat(path, paths) { - paths.forEach(function([element, root]) { + paths.forEach(([element, root]) => { const output = path.parse(element); assert.strictEqual(typeof output.root, 'string'); assert.strictEqual(typeof output.dir, 'string'); @@ -205,19 +203,14 @@ function checkParseFormat(path, paths) { } function checkSpecialCaseParseFormat(path, testCases) { - testCases.forEach(function(testCase) { - const element = testCase[0]; - const expect = testCase[1]; - const output = path.parse(element); - Object.keys(expect).forEach(function(key) { - assert.strictEqual(output[key], expect[key]); - }); + testCases.forEach(([element, expect]) => { + assert.deepStrictEqual(path.parse(element), expect); }); } function checkFormat(path, testCases) { - testCases.forEach(function(testCase) { - assert.strictEqual(path.format(testCase[0]), testCase[1]); + testCases.forEach(([element, expect]) => { + assert.strictEqual(path.format(element), expect); }); [null, undefined, 1, true, false, 'string'].forEach((pathObject) => { From bd006e1002c634e1c80065f6de10c9c1989270c2 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 02:45:59 +0100 Subject: [PATCH 030/133] path: fix win32 parse regression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes the parse function for single character input that are not a path separator. PR-URL: https://github.com/nodejs/node/pull/26912 Fixes: https://github.com/nodejs/node/issues/26911 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso --- lib/path.js | 1 + test/parallel/test-path-parse-format.js | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/path.js b/lib/path.js index 6ac65cfe4a7a3f..9ac877eabcaf44 100644 --- a/lib/path.js +++ b/lib/path.js @@ -830,6 +830,7 @@ const win32 = { ret.root = ret.dir = path; return ret; } + ret.base = ret.name = path; return ret; } // Try to match a root diff --git a/test/parallel/test-path-parse-format.js b/test/parallel/test-path-parse-format.js index 0487ece8c43b58..5d6c8c6953cfcc 100644 --- a/test/parallel/test-path-parse-format.js +++ b/test/parallel/test-path-parse-format.js @@ -51,6 +51,7 @@ const winPaths = [ ]; const winSpecialCaseParseTests = [ + ['t', { base: 't', name: 't', root: '', dir: '', ext: '' }], ['/foo/bar', { root: '/', dir: '/foo', base: 'bar', ext: '', name: 'bar' }], ]; From 1b08e622aa999294b6e0191853eab05f28af3315 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 09:15:10 +0100 Subject: [PATCH 031/133] util: improve proxy inspection This makes sure the brace is actually handled as any other brace. It was handled differently so far than any other brace and that had an impact on how the output would be formatted. PR-URL: https://github.com/nodejs/node/pull/26919 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell --- lib/internal/util/inspect.js | 3 +-- test/parallel/test-util-inspect-proxy.js | 15 +++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index d52e976c0bb449..f26b35b2874846 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -404,8 +404,7 @@ function formatProxy(ctx, proxy, recurseTimes) { formatValue(ctx, proxy[1], recurseTimes) ]; ctx.indentationLvl -= 2; - const str = reduceToSingleString(ctx, res, '', ['[', ']']); - return `Proxy ${str}`; + return reduceToSingleString(ctx, res, '', ['Proxy [', ']']); } function findTypedConstructor(value) { diff --git a/test/parallel/test-util-inspect-proxy.js b/test/parallel/test-util-inspect-proxy.js index adc0810722d553..0d6ebc6271af40 100644 --- a/test/parallel/test-util-inspect-proxy.js +++ b/test/parallel/test-util-inspect-proxy.js @@ -50,12 +50,15 @@ const expected1 = 'Proxy [ {}, {} ]'; const expected2 = 'Proxy [ Proxy [ {}, {} ], {} ]'; const expected3 = 'Proxy [ Proxy [ Proxy [ {}, {} ], {} ], Proxy [ {}, {} ] ]'; const expected4 = 'Proxy [ Proxy [ {}, {} ], Proxy [ Proxy [ {}, {} ], {} ] ]'; -const expected5 = 'Proxy [ Proxy [ Proxy [ Proxy [Array], {} ],' + - ' Proxy [ {}, {} ] ],\n Proxy [ Proxy [ {}, {} ]' + - ', Proxy [ Proxy [Array], {} ] ] ]'; -const expected6 = 'Proxy [ Proxy [ Proxy [ Proxy [Array], Proxy [Array]' + - ' ],\n Proxy [ Proxy [Array], Proxy [Array] ] ],\n' + - ' Proxy [ Proxy [ Proxy [Array], Proxy [Array] ],\n' + +const expected5 = 'Proxy [\n ' + + 'Proxy [ Proxy [ Proxy [Array], {} ], Proxy [ {}, {} ] ],\n' + + ' Proxy [ Proxy [ {}, {} ], Proxy [ Proxy [Array], {} ] ] ]'; +const expected6 = 'Proxy [\n' + + ' Proxy [\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ],\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ] ],\n' + + ' Proxy [\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ],\n' + ' Proxy [ Proxy [Array], Proxy [Array] ] ] ]'; assert.strictEqual( util.inspect(proxy1, { showProxy: true, depth: null }), From 682b41058164d07271463d0ec6e7596034816387 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 8 Mar 2019 19:39:55 +0100 Subject: [PATCH 032/133] worker: allow execArgv and eval in combination MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was likely an oversight that `execArgv` was only read when no filename/URL was provided. PR-URL: https://github.com/nodejs/node/pull/26533 Reviewed-By: Michaël Zasso Reviewed-By: Joyee Cheung Reviewed-By: James M Snell --- src/node_worker.cc | 97 ++++++++++++++------------- test/parallel/test-worker-execargv.js | 7 ++ 2 files changed, 56 insertions(+), 48 deletions(-) diff --git a/src/node_worker.cc b/src/node_worker.cc index a407cb956df2da..cc3a8cdd1c9425 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -400,63 +400,64 @@ void Worker::New(const FunctionCallbackInfo& args) { std::vector exec_argv_out; bool has_explicit_exec_argv = false; + CHECK_EQ(args.Length(), 2); // Argument might be a string or URL - if (args.Length() > 0 && !args[0]->IsNullOrUndefined()) { + if (!args[0]->IsNullOrUndefined()) { Utf8Value value( args.GetIsolate(), args[0]->ToString(env->context()).FromMaybe(v8::Local())); url.append(value.out(), value.length()); + } - if (args.Length() > 1 && args[1]->IsArray()) { - v8::Local array = args[1].As(); - // The first argument is reserved for program name, but we don't need it - // in workers. - has_explicit_exec_argv = true; - std::vector exec_argv = {""}; - uint32_t length = array->Length(); - for (uint32_t i = 0; i < length; i++) { - v8::Local arg; - if (!array->Get(env->context(), i).ToLocal(&arg)) { - return; - } - v8::MaybeLocal arg_v8_string = - arg->ToString(env->context()); - if (arg_v8_string.IsEmpty()) { - return; - } - Utf8Value arg_utf8_value( - args.GetIsolate(), - arg_v8_string.FromMaybe(v8::Local())); - std::string arg_string(arg_utf8_value.out(), arg_utf8_value.length()); - exec_argv.push_back(arg_string); + if (args[1]->IsArray()) { + v8::Local array = args[1].As(); + // The first argument is reserved for program name, but we don't need it + // in workers. + has_explicit_exec_argv = true; + std::vector exec_argv = {""}; + uint32_t length = array->Length(); + for (uint32_t i = 0; i < length; i++) { + v8::Local arg; + if (!array->Get(env->context(), i).ToLocal(&arg)) { + return; } - - std::vector invalid_args{}; - std::vector errors{}; - per_isolate_opts.reset(new PerIsolateOptions()); - - // Using invalid_args as the v8_args argument as it stores unknown - // options for the per isolate parser. - options_parser::Parse( - &exec_argv, - &exec_argv_out, - &invalid_args, - per_isolate_opts.get(), - kDisallowedInEnvironment, - &errors); - - // The first argument is program name. - invalid_args.erase(invalid_args.begin()); - if (errors.size() > 0 || invalid_args.size() > 0) { - v8::Local error = - ToV8Value(env->context(), - errors.size() > 0 ? errors : invalid_args) - .ToLocalChecked(); - Local key = - FIXED_ONE_BYTE_STRING(env->isolate(), "invalidExecArgv"); - USE(args.This()->Set(env->context(), key, error).FromJust()); + v8::MaybeLocal arg_v8_string = + arg->ToString(env->context()); + if (arg_v8_string.IsEmpty()) { return; } + Utf8Value arg_utf8_value( + args.GetIsolate(), + arg_v8_string.FromMaybe(v8::Local())); + std::string arg_string(arg_utf8_value.out(), arg_utf8_value.length()); + exec_argv.push_back(arg_string); + } + + std::vector invalid_args{}; + std::vector errors{}; + per_isolate_opts.reset(new PerIsolateOptions()); + + // Using invalid_args as the v8_args argument as it stores unknown + // options for the per isolate parser. + options_parser::Parse( + &exec_argv, + &exec_argv_out, + &invalid_args, + per_isolate_opts.get(), + kDisallowedInEnvironment, + &errors); + + // The first argument is program name. + invalid_args.erase(invalid_args.begin()); + if (errors.size() > 0 || invalid_args.size() > 0) { + v8::Local error = + ToV8Value(env->context(), + errors.size() > 0 ? errors : invalid_args) + .ToLocalChecked(); + Local key = + FIXED_ONE_BYTE_STRING(env->isolate(), "invalidExecArgv"); + USE(args.This()->Set(env->context(), key, error).FromJust()); + return; } } if (!has_explicit_exec_argv) diff --git a/test/parallel/test-worker-execargv.js b/test/parallel/test-worker-execargv.js index 16e46f2468dfe4..a2b52216165d77 100644 --- a/test/parallel/test-worker-execargv.js +++ b/test/parallel/test-worker-execargv.js @@ -19,6 +19,13 @@ if (!process.env.HAS_STARTED_WORKER) { /Warning: some warning[\s\S]*at Object\./.test(error) ); })); + + new Worker( + "require('worker_threads').parentPort.postMessage(process.execArgv)", + { eval: true, execArgv: ['--trace-warnings'] }) + .on('message', common.mustCall((data) => { + assert.deepStrictEqual(data, ['--trace-warnings']); + })); } else { process.emitWarning('some warning'); assert.deepStrictEqual(process.execArgv, ['--trace-warnings']); From c756b8444705c9a7c02ec79463ae9ba5fc135297 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 15:23:27 +0100 Subject: [PATCH 033/133] errors: make range mandatory in ERR_OUT_OF_RANGE So far the range argument was allowed to be undefined. This is not used in the codebase anymore and therefore it is best to make it mandatory for the best user experience. PR-URL: https://github.com/nodejs/node/pull/26924 Reviewed-By: James M Snell Reviewed-By: Yongsheng Zhang Reviewed-By: Ben Noordhuis --- lib/internal/errors.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 3e1921c01340d4..6791deffbdfa26 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -933,10 +933,10 @@ E('ERR_NO_ICU', E('ERR_NO_LONGER_SUPPORTED', '%s is no longer supported', Error); E('ERR_OUT_OF_RANGE', (str, range, input, replaceDefaultBoolean = false) => { + assert(range, 'Missing "range" argument'); let msg = replaceDefaultBoolean ? str : `The value of "${str}" is out of range.`; - if (range !== undefined) msg += ` It must be ${range}.`; - msg += ` Received ${input}`; + msg += ` It must be ${range}. Received ${input}`; return msg; }, RangeError); E('ERR_REQUIRE_ESM', 'Must use import to load ES Module: %s', Error); From 17bff5ca0d1486b29ac67db8ee4ee23117b7951c Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Mon, 25 Mar 2019 12:12:17 -0700 Subject: [PATCH 034/133] doc: remove reference to "credentials object" The reference is confusing because the object is actually of class SecureContext. There is no object with class "credentials". See: https://github.com/nodejs/node/issues/20432#issuecomment-441819285 PR-URL: https://github.com/nodejs/node/pull/26908 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Reviewed-By: Ben Noordhuis --- doc/api/tls.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/api/tls.md b/doc/api/tls.md index 35f95d6405696b..9476b6e2aaa9b0 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -1341,7 +1341,9 @@ to `true`, other APIs that create secure contexts leave it unset. from `process.argv` as the default value of the `sessionIdContext` option, other APIs that create secure contexts have no default value. -The `tls.createSecureContext()` method creates a credentials object. +The `tls.createSecureContext()` method creates a `SecureContext` object. It is +usable as an argument to several `tls` APIs, such as [`tls.createServer()`][] +and [`server.addContext()`][], but has no public methods. A key is *required* for ciphers that make use of certificates. Either `key` or `pfx` can be used to provide it. @@ -1588,6 +1590,7 @@ where `secureSocket` has the same API as `pair.cleartext`. [`net.Server.address()`]: net.html#net_server_address [`net.Server`]: net.html#net_class_net_server [`net.Socket`]: net.html#net_class_net_socket +[`server.addContext()`]: #tls_server_addcontext_hostname_context [`server.getConnections()`]: net.html#net_server_getconnections_callback [`server.getTicketKeys()`]: #tls_server_getticketkeys [`server.listen()`]: net.html#net_server_listen From a821a96b504c6c82b39be1576379f2708d13d527 Mon Sep 17 00:00:00 2001 From: "Steven R. Loomis" Date: Tue, 26 Mar 2019 12:55:21 -0700 Subject: [PATCH 035/133] doc: correct typo: cert.issuerCertificate - docs incorrectly mention issuerCert, should be issuerCertificate Fix for Commit: https://github.com/nodejs/node/commit/a856406c2dc#diff-f6e3a86962eaf0897ab59e88b418e64fR678 Fix for PR: https://github.com/nodejs/node/pull/24358 --- doc/api/tls.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/tls.md b/doc/api/tls.md index 9476b6e2aaa9b0..96590d1850d4ba 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -813,7 +813,7 @@ certificate. alternative to the `subject` names. * `infoAccess` {Array} (Optional) An array describing the AuthorityInfoAccess, used with OCSP. -* `issuerCert` {Object} (Optional) The issuer certificate object. For +* `issuerCertificate` {Object} (Optional) The issuer certificate object. For self-signed certificates, this may be a circular reference. The certificate may contain information about the public key, depending on From 98552f3630576c108a350a5784a904bfc1d05e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Tue, 26 Mar 2019 12:16:30 +0100 Subject: [PATCH 036/133] crypto: allow undefined for saltLength and padding PR-URL: https://github.com/nodejs/node/pull/26921 Reviewed-By: Sam Roberts Reviewed-By: James M Snell Reviewed-By: Ben Noordhuis Signed-off-by: Beth Griggs --- lib/internal/crypto/sig.js | 4 ++-- test/parallel/test-crypto-sign-verify.js | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/internal/crypto/sig.js b/lib/internal/crypto/sig.js index aa70126029dcee..10c044f82d0a2e 100644 --- a/lib/internal/crypto/sig.js +++ b/lib/internal/crypto/sig.js @@ -60,8 +60,8 @@ function getSaltLength(options) { } function getIntOption(name, defaultValue, options) { - if (options.hasOwnProperty(name)) { - const value = options[name]; + const value = options[name]; + if (value !== undefined) { if (value === value >> 0) { return value; } else { diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js index da4e8aa331aaa4..06f1d85f90f9a8 100644 --- a/test/parallel/test-crypto-sign-verify.js +++ b/test/parallel/test-crypto-sign-verify.js @@ -32,23 +32,23 @@ const modSize = 1024; common.expectsError( () => crypto.createVerify('SHA256').verify({ key: certPem, - padding: undefined, + padding: null, }, ''), { code: 'ERR_INVALID_OPT_VALUE', type: TypeError, - message: 'The value "undefined" is invalid for option "padding"' + message: 'The value "null" is invalid for option "padding"' }); common.expectsError( () => crypto.createVerify('SHA256').verify({ key: certPem, - saltLength: undefined, + saltLength: null, }, ''), { code: 'ERR_INVALID_OPT_VALUE', type: TypeError, - message: 'The value "undefined" is invalid for option "saltLength"' + message: 'The value "null" is invalid for option "saltLength"' }); // Test signing and verifying @@ -233,7 +233,7 @@ common.expectsError( // Test exceptions for invalid `padding` and `saltLength` values { - [null, undefined, NaN, 'boom', {}, [], true, false] + [null, NaN, 'boom', {}, [], true, false] .forEach((invalidValue) => { common.expectsError(() => { crypto.createSign('SHA256') From de937375e4dac792b30c4bde4fce1fd9dd9160f2 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Tue, 26 Mar 2019 22:35:15 +0800 Subject: [PATCH 037/133] benchmark: remove unused field in class BenchmarkProgress PR-URL: https://github.com/nodejs/node/pull/26925 Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott Signed-off-by: Beth Griggs --- benchmark/_benchmark_progress.js | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmark/_benchmark_progress.js b/benchmark/_benchmark_progress.js index 935b1f24d49673..1b7ac738f6de0d 100644 --- a/benchmark/_benchmark_progress.js +++ b/benchmark/_benchmark_progress.js @@ -35,7 +35,6 @@ class BenchmarkProgress { // Number of times each file will be run (roughly). this.runsPerFile = queue.length / benchmarks.length; this.currentFile = ''; // Filename of current benchmark. - this.currentFileConfig; // Configurations for current file // Number of configurations already run for the current file. this.completedConfig = 0; // Total number of configurations for the current file From 25d5198001934e1ed353c3c919f6d9f636b53572 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Tue, 26 Mar 2019 22:36:55 +0800 Subject: [PATCH 038/133] doc: change links to https in benchmark guide PR-URL: https://github.com/nodejs/node/pull/26925 Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott Signed-off-by: Beth Griggs --- doc/guides/writing-and-running-benchmarks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/guides/writing-and-running-benchmarks.md b/doc/guides/writing-and-running-benchmarks.md index 5838449612b541..e6ccf163d3e27a 100644 --- a/doc/guides/writing-and-running-benchmarks.md +++ b/doc/guides/writing-and-running-benchmarks.md @@ -470,6 +470,6 @@ Supported options keys are: [autocannon]: https://github.com/mcollina/autocannon [wrk]: https://github.com/wg/wrk [t-test]: https://en.wikipedia.org/wiki/Student%27s_t-test#Equal_or_unequal_sample_sizes.2C_unequal_variances -[git-for-windows]: http://git-scm.com/download/win -[nghttp2.org]: http://nghttp2.org +[git-for-windows]: https://git-scm.com/download/win +[nghttp2.org]: https://nghttp2.org [benchmark-ci]: https://github.com/nodejs/benchmarking/blob/master/docs/core_benchmarks.md From 5512ecb5b07d8bedcf8fcf4904aff37c649f85de Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Wed, 27 Mar 2019 00:23:31 +0800 Subject: [PATCH 039/133] benchmark: tidy up eslint ignore in foreach-bench.js PR-URL: https://github.com/nodejs/node/pull/26925 Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott Signed-off-by: Beth Griggs --- benchmark/es/foreach-bench.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/benchmark/es/foreach-bench.js b/benchmark/es/foreach-bench.js index 25ea97b44d5695..f424ca7a2552b2 100644 --- a/benchmark/es/foreach-bench.js +++ b/benchmark/es/foreach-bench.js @@ -12,19 +12,18 @@ function useFor(n, items, count) { bench.start(); for (var i = 0; i < n; i++) { for (var j = 0; j < count; j++) { - /* eslint-disable no-unused-vars */ + // eslint-disable-next-line no-unused-vars const item = items[j]; - /* esline-enable no-unused-vars */ } } bench.end(n); } function useForOf(n, items) { - var item; bench.start(); for (var i = 0; i < n; i++) { - for (item of items) {} + // eslint-disable-next-line no-unused-vars + for (const item of items) {} } bench.end(n); } @@ -33,9 +32,8 @@ function useForIn(n, items) { bench.start(); for (var i = 0; i < n; i++) { for (var j in items) { - /* eslint-disable no-unused-vars */ + // eslint-disable-next-line no-unused-vars const item = items[j]; - /* esline-enable no-unused-vars */ } } bench.end(n); From 2ef1bd97c6b384f937d0557fd5fe52a0b40f4843 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Fri, 22 Mar 2019 16:39:39 +0100 Subject: [PATCH 040/133] test: do not require flags when executing a file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of throwing an error in case a flag is missing, just start a `child_process` that includes all flags. This improves the situation for all developers in case they want to just plainly run a test. Co-authored-by: Rich Trott PR-URL: https://github.com/nodejs/node/pull/26858 Reviewed-By: James M Snell Reviewed-By: Tobias Nießen Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- test/common/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/common/index.js b/test/common/index.js index 8076c287de7a99..7a172b3b308f95 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -80,7 +80,18 @@ if (process.argv.length === 2 && // If the binary is build without `intl` the inspect option is // invalid. The test itself should handle this case. (process.features.inspector || !flag.startsWith('--inspect'))) { - throw new Error(`Test has to be started with the flag: '${flag}'`); + console.log( + 'NOTE: The test started as a child_process using these flags:', + util.inspect(flags) + ); + const args = [...flags, ...process.execArgv, ...process.argv.slice(1)]; + const options = { encoding: 'utf8', stdio: 'inherit' }; + const result = spawnSync(process.execPath, args, options); + if (result.signal) { + process.kill(0, result.signal); + } else { + process.exit(result.status); + } } } } From edad9afaf808d5c88765882762b2438370a7c251 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 27 Mar 2019 13:13:24 +0100 Subject: [PATCH 041/133] test: move hasCrypto check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hasCrypto check should be checked before anything else to prevent overhead in case it's not falsy. Otherwise the file would be read without any further benefit. PR-URL: https://github.com/nodejs/node/pull/26858 Reviewed-By: James M Snell Reviewed-By: Tobias Nießen Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- test/common/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/common/index.js b/test/common/index.js index 7a172b3b308f95..b95753b0212ae4 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -48,8 +48,11 @@ const hasCrypto = Boolean(process.versions.openssl); // Check for flags. Skip this for workers (both, the `cluster` module and // `worker_threads`) and child processes. +// If the binary was built without-ssl then the crypto flags are +// invalid (bad option). The test itself should handle this case. if (process.argv.length === 2 && isMainThread && + hasCrypto && module.parent && require('cluster').isMaster) { // The copyright notice is relatively big and the flags could come afterwards. @@ -74,9 +77,6 @@ if (process.argv.length === 2 && const args = process.execArgv.map((arg) => arg.replace(/_/g, '-')); for (const flag of flags) { if (!args.includes(flag) && - // If the binary was built without-ssl then the crypto flags are - // invalid (bad option). The test itself should handle this case. - hasCrypto && // If the binary is build without `intl` the inspect option is // invalid. The test itself should handle this case. (process.features.inspector || !flag.startsWith('--inspect'))) { From fd6381b056e1f65026e583e8894f5634a4d584d4 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 02:51:13 +0100 Subject: [PATCH 042/133] test: remove test-path-parse-6229.js from known issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test precedented the official documentation that states that this is an expected behavior. PR-URL: https://github.com/nodejs/node/pull/26913 Refs: https://github.com/nodejs/node/issues/6229 Refs: https://github.com/nodejs/node/pull/12181 Reviewed-By: Rich Trott Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- test/known_issues/test-path-parse-6229.js | 34 ----------------------- 1 file changed, 34 deletions(-) delete mode 100644 test/known_issues/test-path-parse-6229.js diff --git a/test/known_issues/test-path-parse-6229.js b/test/known_issues/test-path-parse-6229.js deleted file mode 100644 index 5096a97333159d..00000000000000 --- a/test/known_issues/test-path-parse-6229.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; -// Refs: https://github.com/nodejs/node/issues/6229 - -require('../common'); -const assert = require('assert'); -const path = require('path'); - -{ - // The path `/foo/bar` is not the same path as `/foo/bar/` - const parsed1 = path.posix.parse('/foo/bar'); - const parsed2 = path.posix.parse('/foo/bar/'); - - assert.strictEqual(parsed1.root, '/'); - assert.strictEqual(parsed1.dir, '/foo'); - assert.strictEqual(parsed1.base, 'bar'); - - assert.strictEqual(parsed2.root, '/'); - assert.strictEqual(parsed2.dir, '/foo/bar'); - assert.strictEqual(parsed2.base, ''); -} - -{ - // The path `\\foo\\bar` is not the same path as `\\foo\\bar\\` - const parsed1 = path.win32.parse('\\foo\\bar'); - const parsed2 = path.win32.parse('\\foo\\bar\\'); - - assert.strictEqual(parsed1.root, '\\'); - assert.strictEqual(parsed1.dir, '\\foo'); - assert.strictEqual(parsed1.base, 'bar'); - - assert.strictEqual(parsed2.root, '\\'); - assert.strictEqual(parsed2.dir, '\\foo\\bar'); - assert.strictEqual(parsed2.base, ''); -} From 1aa6e993e327d8546ccc6107cd9dc1a7c720cd7d Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 08:39:07 +0100 Subject: [PATCH 043/133] util: fix map entries inspection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes sure the arrays returned by Map#entries() are handled as any other array instead of just visualizing the entries as array. Therefore options should have an impact on the arrays. PR-URL: https://github.com/nodejs/node/pull/26918 Reviewed-By: Anna Henningsen Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- lib/internal/util/inspect.js | 29 +++++++++++++++-------------- test/parallel/test-util-inspect.js | 5 ++++- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index f26b35b2874846..510b290ca35696 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -1156,27 +1156,28 @@ function formatMapIterInner(ctx, recurseTimes, entries, state) { const remaining = len - maxArrayLength; const maxLength = Math.min(maxArrayLength, len); let output = new Array(maxLength); - let start = ''; - let end = ''; - let middle = ' => '; let i = 0; - if (state === kMapEntries) { - start = '[ '; - end = ' ]'; - middle = ', '; - } ctx.indentationLvl += 2; - for (; i < maxLength; i++) { - const pos = i * 2; - output[i] = `${start}${formatValue(ctx, entries[pos], recurseTimes)}` + - `${middle}${formatValue(ctx, entries[pos + 1], recurseTimes)}${end}`; - } - ctx.indentationLvl -= 2; if (state === kWeak) { + for (; i < maxLength; i++) { + const pos = i * 2; + output[i] = `${formatValue(ctx, entries[pos], recurseTimes)}` + + ` => ${formatValue(ctx, entries[pos + 1], recurseTimes)}`; + } // Sort all entries to have a halfway reliable output (if more entries // than retrieved ones exist, we can not reliably return the same output). output = output.sort(); + } else { + for (; i < maxLength; i++) { + const pos = i * 2; + const res = [ + formatValue(ctx, entries[pos], recurseTimes), + formatValue(ctx, entries[pos + 1], recurseTimes) + ]; + output[i] = reduceToSingleString(ctx, res, '', ['[', ']']); + } } + ctx.indentationLvl -= 2; if (remaining > 0) { output.push(`... ${remaining} more item${remaining > 1 ? 's' : ''}`); } diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 6c6d210dfe7fc6..282c31213c7e72 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -997,7 +997,10 @@ if (typeof Symbol !== 'undefined') { // Test Set iterators. { - const aSet = new Set([1, 3]); + const aSet = new Set([1]); + assert.strictEqual(util.inspect(aSet.entries(), { compact: false }), + '[Set Entries] {\n [\n 1,\n 1\n ]\n}'); + aSet.add(3); assert.strictEqual(util.inspect(aSet.keys()), '[Set Iterator] { 1, 3 }'); assert.strictEqual(util.inspect(aSet.values()), '[Set Iterator] { 1, 3 }'); const setEntries = aSet.entries(); From b62739c85ce059dddb984a21999ae5888cc66804 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 06:48:17 +0100 Subject: [PATCH 044/133] path: remove dead code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A couple of code parts could not be reached due to resolving the path in the beginning. That "normalizes" the path in a way that some code branches became obsolete. PR-URL: https://github.com/nodejs/node/pull/26916 Reviewed-By: Sam Roberts Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- lib/path.js | 51 ++++++++++++++------------------------------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/lib/path.js b/lib/path.js index 9ac877eabcaf44..a41787dd66f61e 100644 --- a/lib/path.js +++ b/lib/path.js @@ -1054,29 +1054,18 @@ const posix = { if (from === to) return ''; + // Trim leading forward slashes. from = posix.resolve(from); to = posix.resolve(to); if (from === to) return ''; - // Trim any leading backslashes - let fromStart = 1; - while (fromStart < from.length && - from.charCodeAt(fromStart) === CHAR_FORWARD_SLASH) { - fromStart++; - } + const fromStart = 1; const fromEnd = from.length; - const fromLen = (fromEnd - fromStart); - - // Trim any leading backslashes - let toStart = 1; - while (toStart < to.length && - to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) { - toStart++; - } - const toEnd = to.length; - const toLen = (toEnd - toStart); + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; // Compare paths to find the longest common path from root const length = (fromLen < toLen ? fromLen : toLen); @@ -1101,38 +1090,26 @@ const posix = { // For example: from='/'; to='/foo' return to.slice(toStart + i); } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0; - } + } else if (fromLen > length && + from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; } } - var out = ''; + let out = ''; // Generate the relative path based on the path difference between `to` - // and `from` + // and `from`. for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { out += out.length === 0 ? '..' : '/..'; } } - toStart += lastCommonSep; - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) - return `${out}${to.slice(toStart)}`; - - if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) - ++toStart; - return to.slice(toStart); + // the common path parts. + return `${out}${to.slice(toStart + lastCommonSep)}`; }, toNamespacedPath(path) { From d3c1de313e7c45ed9751c45b62db55b0babfedca Mon Sep 17 00:00:00 2001 From: cjihrig Date: Mon, 11 Mar 2019 12:49:59 -0400 Subject: [PATCH 045/133] dns: remove dns.promises experimental warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26592 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- lib/dns.js | 2 -- test/parallel/test-dns-lookup.js | 2 -- 2 files changed, 4 deletions(-) diff --git a/lib/dns.js b/lib/dns.js index 952ef39006c8e4..be52d545a0c873 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -321,8 +321,6 @@ Object.defineProperties(module.exports, { if (promises === null) { promises = require('internal/dns/promises'); promises.setServers = defaultResolverSetServers; - process.emitWarning('The dns.promises API is experimental', - 'ExperimentalWarning'); } return promises; } diff --git a/test/parallel/test-dns-lookup.js b/test/parallel/test-dns-lookup.js index 951e7e17a98b82..4fdfa1f4c22712 100644 --- a/test/parallel/test-dns-lookup.js +++ b/test/parallel/test-dns-lookup.js @@ -27,8 +27,6 @@ common.expectWarning({ 'internal/test/binding': [ 'These APIs are for internal testing only. Do not use them.' ], - // For dns.promises. - 'ExperimentalWarning': 'The dns.promises API is experimental', // For calling `dns.lookup` with falsy `hostname`. 'DeprecationWarning': { DEP0118: 'The provided hostname "false" is not a valid ' + From ac12109d1422eddc24de7a734a515552bab6ba82 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Wed, 27 Mar 2019 13:21:25 -0400 Subject: [PATCH 046/133] dns: make dns.promises enumerable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26592 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- lib/dns.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dns.js b/lib/dns.js index be52d545a0c873..df19807d60206d 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -316,7 +316,7 @@ bindDefaultResolver(module.exports, getDefaultResolver()); Object.defineProperties(module.exports, { promises: { configurable: true, - enumerable: false, + enumerable: true, get() { if (promises === null) { promises = require('internal/dns/promises'); From 4a7a84a6befe9e6693344b10a0c85569bab400f6 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Wed, 27 Mar 2019 13:23:27 -0400 Subject: [PATCH 047/133] doc: move dns.promises to stable status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26592 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- doc/api/dns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/dns.md b/doc/api/dns.md index b405dd1078c784..1dc4f50ef668d2 100644 --- a/doc/api/dns.md +++ b/doc/api/dns.md @@ -588,7 +588,7 @@ earlier ones time out or result in some other error. ## DNS Promises API -> Stability: 1 - Experimental +> Stability: 2 - Stable The `dns.promises` API provides an alternative set of asynchronous DNS methods that return `Promise` objects rather than using callbacks. The API is accessible From d76c30c0825426e0e98fab3c688938aff223a89d Mon Sep 17 00:00:00 2001 From: cjihrig Date: Wed, 27 Mar 2019 10:38:57 -0400 Subject: [PATCH 048/133] doc: add note about mkdtemp() platform differences PR-URL: https://github.com/nodejs/node/pull/26944 Fixes: https://github.com/nodejs/node/issues/26435 Reviewed-By: Ruben Bridgewater Reviewed-By: Luigi Pinca Reviewed-By: Anatoli Papirovski Signed-off-by: Beth Griggs --- doc/api/fs.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/api/fs.md b/doc/api/fs.md index 5df0c5a5bfda2e..e65f6c7d4d2885 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -2274,7 +2274,10 @@ changes: Creates a unique temporary directory. Generates six random characters to be appended behind a required -`prefix` to create a unique temporary directory. +`prefix` to create a unique temporary directory. Due to platform +inconsistencies, avoid trailing `X` characters in `prefix`. Some platforms, +notably the BSDs, can return more than six random characters, and replace +trailing `X` characters in `prefix` with random characters. The created folder path is passed as a string to the callback's second parameter. @@ -4267,7 +4270,10 @@ added: v10.0.0 Creates a unique temporary directory and resolves the `Promise` with the created folder path. A unique directory name is generated by appending six random -characters to the end of the provided `prefix`. +characters to the end of the provided `prefix`. Due to platform +inconsistencies, avoid trailing `X` characters in `prefix`. Some platforms, +notably the BSDs, can return more than six random characters, and replace +trailing `X` characters in `prefix` with random characters. The optional `options` argument can be a string specifying an encoding, or an object with an `encoding` property specifying the character encoding to use. From 9330d7e4bf01c611fccd16d1444aba81ffaa91a1 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 26 Mar 2019 23:32:20 -0700 Subject: [PATCH 049/133] test: add known_issues test for fs.copyFile() On macOS, fs.copyFile() may not respect file permissions. There is a PR for libuv that should fix this, but until it lands and we can either float a patch or upgrade libuv, have a known_issues test. Ref: https://github.com/nodejs/node/issues/26936 Ref: https://github.com/libuv/libuv/pull/2233 PR-URL: https://github.com/nodejs/node/pull/26939 Refs: https://github.com/nodejs/node/issues/26936 Refs: https://github.com/libuv/libuv/pull/2233 Reviewed-By: Ruben Bridgewater Reviewed-By: Anto Aravinth Reviewed-By: Sakthipriyan Vairamani Signed-off-by: Beth Griggs --- test/known_issues/known_issues.status | 6 +++ .../test-fs-copyfile-respect-permissions.js | 50 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 test/known_issues/test-fs-copyfile-respect-permissions.js diff --git a/test/known_issues/known_issues.status b/test/known_issues/known_issues.status index 3463f0a0ecfc6a..d7e0b546d43ff8 100644 --- a/test/known_issues/known_issues.status +++ b/test/known_issues/known_issues.status @@ -7,18 +7,24 @@ prefix known_issues [true] # This section applies to all platforms [$system==win32] +test-fs-copyfile-respect-permissions: SKIP [$system==linux] test-vm-timeout-escape-promise: PASS,FLAKY +test-fs-copyfile-respect-permissions: SKIP [$system==macos] [$system==solaris] +test-fs-copyfile-respect-permissions: SKIP [$system==freebsd] +test-fs-copyfile-respect-permissions: SKIP [$system==aix] +test-fs-copyfile-respect-permissions: SKIP [$arch==arm] # https://github.com/nodejs/node/issues/24120 test-vm-timeout-escape-nexttick: PASS,FLAKY +test-fs-copyfile-respect-permissions: SKIP diff --git a/test/known_issues/test-fs-copyfile-respect-permissions.js b/test/known_issues/test-fs-copyfile-respect-permissions.js new file mode 100644 index 00000000000000..0ebc5fbfc1dbed --- /dev/null +++ b/test/known_issues/test-fs-copyfile-respect-permissions.js @@ -0,0 +1,50 @@ +'use strict'; + +// Test that fs.copyFile() respects file permissions. +// Ref: https://github.com/nodejs/node/issues/26936 + +const common = require('../common'); + +const tmpdir = require('../common/tmpdir'); +tmpdir.refresh(); + +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); + +let n = 0; + +function beforeEach() { + n++; + const source = path.join(tmpdir.path, `source${n}`); + const dest = path.join(tmpdir.path, `dest${n}`); + fs.writeFileSync(source, 'source'); + fs.writeFileSync(dest, 'dest'); + fs.chmodSync(dest, '444'); + + const check = (err) => { + assert.strictEqual(err.code, 'EACCESS'); + assert.strictEqual(fs.readFileSync(dest, 'utf8'), 'dest'); + }; + + return { source, dest, check }; +} + +// Test synchronous API. +{ + const { source, dest, check } = beforeEach(); + assert.throws(() => { fs.copyFileSync(source, dest); }, check); +} + +// Test promises API. +{ + const { source, dest, check } = beforeEach(); + assert.throws(async () => { await fs.promises.copyFile(source, dest); }, + check); +} + +// Test callback API. +{ + const { source, dest, check } = beforeEach(); + fs.copyFile(source, dest, common.mustCall(check)); +} From 769d12ca9f0a8083bd9e57e8689a2352bf03805e Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Fri, 29 Mar 2019 12:42:11 -0400 Subject: [PATCH 050/133] build: add a `Prepare ccache` job in Travis Combined compile and test of Node.js where lots of files need to be compiled (e.g. after a V8 update) is exceeding the time limit for Travis jobs (50 minutes). Add a job to Travis that compiles Node.js but doesnt run any tests to populate the ccache. Introduce staging and move the `Test Suite` job into a later stage so that it can use the populated ccache. PR-URL: https://github.com/nodejs/node/pull/27002 Reviewed-By: Refael Ackermann Reviewed-By: Rich Trott Signed-off-by: Beth Griggs --- .travis.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2569b44ec39e83..4ab46e5b1bd0c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,13 @@ language: cpp cache: ccache os: linux dist: xenial +stages: + - check + - test matrix: include: - name: "First commit message adheres to guidelines at https://goo.gl/p2fr5Q" + stage: check if: type = pull_request language: node_js node_js: "node" @@ -13,13 +17,27 @@ matrix: bash -x tools/lint-pr-commit-message.sh ${TRAVIS_PULL_REQUEST}; fi - name: "Linter" + stage: check language: node_js node_js: "node" - env: - - NODE=$(which node) script: - - make lint + - NODE=$(which node) make lint + - name: "Prepare ccache" + stage: check + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-6 + install: + - export CC='ccache gcc-6' CXX='ccache g++-6' JOBS=2 + - ./configure + - make -j2 V= + script: + - true - name: "Test Suite" + stage: test addons: apt: sources: From 6cbd6b5d570f2723f25fe5cb14db61a625ac4b05 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Thu, 28 Mar 2019 21:07:19 +0000 Subject: [PATCH 051/133] build: fix skipping of flaky tests on Travis `PARALLEL_ARGS` is overwritten in the Makefile if `JOBS` is set. Use `CI_JS_SUITES` instead. PR-URL: https://github.com/nodejs/node/pull/27002 Reviewed-By: Refael Ackermann Reviewed-By: Rich Trott Signed-off-by: Beth Griggs --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4ab46e5b1bd0c9..87f4c38687be86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,4 +49,4 @@ matrix: - ./configure - make -j2 V= script: - - PARALLEL_ARGS='--flaky-tests=skip' make -j1 test + - CI_JS_SUITES='--flaky-tests=skip default' make -j1 test From e776b013ad2826342a45bfeaaccc379e5e2cf628 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 26 Mar 2019 16:03:27 -0400 Subject: [PATCH 052/133] src: do not call into JS in the maxAsyncCallStackDepthChanged interrupt If Debugger.setAsyncCallStackDepth is sent during bootstrap, we cannot immediately call into JS to enable the hooks, which could interrupt the JS execution of bootstrap. So instead we save the notification in the inspector agent if it's sent in the middle of bootstrap, and process the notification later here. Refs: https://github.com/nodejs/node/issues/26798 PR-URL: https://github.com/nodejs/node/pull/26935 Reviewed-By: Anna Henningsen Reviewed-By: Eugene Ostroukhov Reviewed-By: Minwoo Jung Signed-off-by: Beth Griggs --- lib/internal/bootstrap/node.js | 11 ----------- lib/internal/bootstrap/pre_execution.js | 18 +++++++++++++++++- lib/internal/main/worker_thread.js | 2 ++ src/inspector_agent.cc | 1 + 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index 2b5d2ee3f41ee8..be8512bb93511b 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -157,17 +157,6 @@ if (isMainThread) { const { nativeHooks } = require('internal/async_hooks'); internalBinding('async_wrap').setupHooks(nativeHooks); -// XXX(joyeecheung): this has to be done after the initial load of -// `internal/async_hooks` otherwise `async_hooks` cannot require -// `internal/async_hooks`. Investigate why. -if (config.hasInspector) { - const { - enable, - disable - } = require('internal/inspector_async_hook'); - internalBinding('inspector').registerAsyncHook(enable, disable); -} - const { setupTaskQueue, queueMicrotask diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index f10397df79c870..719b6c8de0e497 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -6,7 +6,7 @@ function prepareMainThreadExecution() { // Patch the process object with legacy properties and normalizations patchProcessObject(); setupTraceCategoryState(); - + setupInspectorHooks(); setupWarningHandler(); // Resolve the coverage directory to an absolute path, and @@ -181,6 +181,21 @@ function setupTraceCategoryState() { toggleTraceCategoryState(isTraceCategoryEnabled('node.async_hooks')); } +function setupInspectorHooks() { + // If Debugger.setAsyncCallStackDepth is sent during bootstrap, + // we cannot immediately call into JS to enable the hooks, which could + // interrupt the JS execution of bootstrap. So instead we save the + // notification in the inspector agent if it's sent in the middle of + // bootstrap, and process the notification later here. + if (internalBinding('config').hasInspector) { + const { + enable, + disable + } = require('internal/inspector_async_hook'); + internalBinding('inspector').registerAsyncHook(enable, disable); + } +} + // In general deprecations are intialized wherever the APIs are implemented, // this is used to deprecate APIs implemented in C++ where the deprecation // utitlities are not easily accessible. @@ -360,5 +375,6 @@ module.exports = { initializeFrozenIntrinsics, loadPreloadModules, setupTraceCategoryState, + setupInspectorHooks, initializeReport }; diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index fd3502e0784a1a..71babafd0e867e 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -6,6 +6,7 @@ const { patchProcessObject, setupCoverageHooks, + setupInspectorHooks, setupWarningHandler, setupDebugEnv, initializeDeprecations, @@ -43,6 +44,7 @@ const { const publicWorker = require('worker_threads'); patchProcessObject(); +setupInspectorHooks(); setupDebugEnv(); const debug = require('internal/util/debuglog').debuglog('worker'); diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 90ed2857815e60..91a57b9944ec4c 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -835,6 +835,7 @@ void Agent::DisableAsyncHook() { void Agent::ToggleAsyncHook(Isolate* isolate, const node::Persistent& fn) { + CHECK(parent_env_->has_run_bootstrapping_code()); HandleScope handle_scope(isolate); CHECK(!fn.IsEmpty()); auto context = parent_env_->context(); From 760d089e92b2dc19febff19ce6d847a90e83f355 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 23 Mar 2019 00:07:46 +0800 Subject: [PATCH 053/133] inspector: display error when ToggleAsyncHook fails This patch refactors `AppendExceptionLine` and `PrintSyncTrace` to reuse the error formatting logic and use them to print uncaught error in ``ToggleAsyncHook` PR-URL: https://github.com/nodejs/node/pull/26859 Refs: https://github.com/nodejs/node/issues/26798 Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- src/env.cc | 47 ++----------- src/inspector_agent.cc | 11 +-- src/node_errors.cc | 154 ++++++++++++++++++++++++++++++----------- src/node_internals.h | 5 ++ 4 files changed, 129 insertions(+), 88 deletions(-) diff --git a/src/env.cc b/src/env.cc index 4dc14fa1df3811..f6a9c76d398cc8 100644 --- a/src/env.cc +++ b/src/env.cc @@ -33,14 +33,12 @@ using v8::HandleScope; using v8::Integer; using v8::Isolate; using v8::Local; -using v8::Message; using v8::NewStringType; using v8::Number; using v8::Object; using v8::Private; using v8::Promise; using v8::PromiseHookType; -using v8::StackFrame; using v8::StackTrace; using v8::String; using v8::Symbol; @@ -492,48 +490,15 @@ void Environment::StopProfilerIdleNotifier() { } void Environment::PrintSyncTrace() const { - if (!options_->trace_sync_io) - return; + if (!options_->trace_sync_io) return; HandleScope handle_scope(isolate()); - Local stack = - StackTrace::CurrentStackTrace(isolate(), 10, StackTrace::kDetailed); - - fprintf(stderr, "(node:%d) WARNING: Detected use of sync API\n", - uv_os_getpid()); - - for (int i = 0; i < stack->GetFrameCount() - 1; i++) { - Local stack_frame = stack->GetFrame(isolate(), i); - node::Utf8Value fn_name_s(isolate(), stack_frame->GetFunctionName()); - node::Utf8Value script_name(isolate(), stack_frame->GetScriptName()); - const int line_number = stack_frame->GetLineNumber(); - const int column = stack_frame->GetColumn(); - - if (stack_frame->IsEval()) { - if (stack_frame->GetScriptId() == Message::kNoScriptIdInfo) { - fprintf(stderr, " at [eval]:%i:%i\n", line_number, column); - } else { - fprintf(stderr, - " at [eval] (%s:%i:%i)\n", - *script_name, - line_number, - column); - } - break; - } - if (fn_name_s.length() == 0) { - fprintf(stderr, " at %s:%i:%i\n", *script_name, line_number, column); - } else { - fprintf(stderr, - " at %s (%s:%i:%i)\n", - *fn_name_s, - *script_name, - line_number, - column); - } - } - fflush(stderr); + fprintf( + stderr, "(node:%d) WARNING: Detected use of sync API\n", uv_os_getpid()); + PrintStackTrace( + isolate(), + StackTrace::CurrentStackTrace(isolate(), 10, StackTrace::kDetailed)); } void Environment::RunCleanup() { diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 91a57b9944ec4c..57228ed953302f 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -839,11 +839,12 @@ void Agent::ToggleAsyncHook(Isolate* isolate, HandleScope handle_scope(isolate); CHECK(!fn.IsEmpty()); auto context = parent_env_->context(); - auto result = fn.Get(isolate)->Call(context, Undefined(isolate), 0, nullptr); - if (result.IsEmpty()) { - FatalError( - "node::inspector::Agent::ToggleAsyncHook", - "Cannot toggle Inspector's AsyncHook, please report this."); + v8::TryCatch try_catch(isolate); + USE(fn.Get(isolate)->Call(context, Undefined(isolate), 0, nullptr)); + if (try_catch.HasCaught()) { + PrintCaughtException(isolate, context, try_catch); + FatalError("\nnode::inspector::Agent::ToggleAsyncHook", + "Cannot toggle Inspector's AsyncHook, please report this."); } } diff --git a/src/node_errors.cc b/src/node_errors.cc index 1923cb6a22f427..3c04152974339e 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -21,10 +21,11 @@ using v8::Local; using v8::Maybe; using v8::MaybeLocal; using v8::Message; -using v8::NewStringType; using v8::Number; using v8::Object; using v8::ScriptOrigin; +using v8::StackFrame; +using v8::StackTrace; using v8::String; using v8::Undefined; using v8::Value; @@ -44,30 +45,20 @@ namespace per_process { static Mutex tty_mutex; } // namespace per_process -void AppendExceptionLine(Environment* env, - Local er, - Local message, - enum ErrorHandlingMode mode) { - if (message.IsEmpty()) return; +static const int kMaxErrorSourceLength = 1024; - HandleScope scope(env->isolate()); - Local err_obj; - if (!er.IsEmpty() && er->IsObject()) { - err_obj = er.As(); - } +static std::string GetErrorSource(Isolate* isolate, + Local context, + Local message, + bool* added_exception_line) { + MaybeLocal source_line_maybe = message->GetSourceLine(context); + node::Utf8Value encoded_source(isolate, source_line_maybe.ToLocalChecked()); + std::string sourceline(*encoded_source, encoded_source.length()); - // Print (filename):(line number): (message). - ScriptOrigin origin = message->GetScriptOrigin(); - node::Utf8Value filename(env->isolate(), message->GetScriptResourceName()); - const char* filename_string = *filename; - int linenum = message->GetLineNumber(env->context()).FromJust(); - // Print line of source code. - MaybeLocal source_line_maybe = message->GetSourceLine(env->context()); - node::Utf8Value sourceline(env->isolate(), - source_line_maybe.ToLocalChecked()); - const char* sourceline_string = *sourceline; - if (strstr(sourceline_string, "node-do-not-add-exception-line") != nullptr) - return; + if (sourceline.find("node-do-not-add-exception-line") != std::string::npos) { + *added_exception_line = false; + return sourceline; + } // Because of how node modules work, all scripts are wrapped with a // "function (module, exports, __filename, ...) {" @@ -90,26 +81,32 @@ void AppendExceptionLine(Environment* env, // sourceline to 78 characters, and we end up not providing very much // useful debugging info to the user if we remove 62 characters. + // Print (filename):(line number): (message). + ScriptOrigin origin = message->GetScriptOrigin(); + node::Utf8Value filename(isolate, message->GetScriptResourceName()); + const char* filename_string = *filename; + int linenum = message->GetLineNumber(context).FromJust(); + int script_start = (linenum - origin.ResourceLineOffset()->Value()) == 1 ? origin.ResourceColumnOffset()->Value() : 0; - int start = message->GetStartColumn(env->context()).FromMaybe(0); - int end = message->GetEndColumn(env->context()).FromMaybe(0); + int start = message->GetStartColumn(context).FromMaybe(0); + int end = message->GetEndColumn(context).FromMaybe(0); if (start >= script_start) { CHECK_GE(end, start); start -= script_start; end -= script_start; } - char arrow[1024]; - int max_off = sizeof(arrow) - 2; + int max_off = kMaxErrorSourceLength - 2; - int off = snprintf(arrow, - sizeof(arrow), + char buf[kMaxErrorSourceLength]; + int off = snprintf(buf, + kMaxErrorSourceLength, "%s:%i\n%s\n", filename_string, linenum, - sourceline_string); + sourceline.c_str()); CHECK_GE(off, 0); if (off > max_off) { off = max_off; @@ -117,26 +114,98 @@ void AppendExceptionLine(Environment* env, // Print wavy underline (GetUnderline is deprecated). for (int i = 0; i < start; i++) { - if (sourceline_string[i] == '\0' || off >= max_off) { + if (sourceline[i] == '\0' || off >= max_off) { break; } CHECK_LT(off, max_off); - arrow[off++] = (sourceline_string[i] == '\t') ? '\t' : ' '; + buf[off++] = (sourceline[i] == '\t') ? '\t' : ' '; } for (int i = start; i < end; i++) { - if (sourceline_string[i] == '\0' || off >= max_off) { + if (sourceline[i] == '\0' || off >= max_off) { break; } CHECK_LT(off, max_off); - arrow[off++] = '^'; + buf[off++] = '^'; } CHECK_LE(off, max_off); - arrow[off] = '\n'; - arrow[off + 1] = '\0'; + buf[off] = '\n'; + buf[off + 1] = '\0'; + + *added_exception_line = true; + return std::string(buf); +} + +void PrintStackTrace(Isolate* isolate, Local stack) { + for (int i = 0; i < stack->GetFrameCount() - 1; i++) { + Local stack_frame = stack->GetFrame(isolate, i); + node::Utf8Value fn_name_s(isolate, stack_frame->GetFunctionName()); + node::Utf8Value script_name(isolate, stack_frame->GetScriptName()); + const int line_number = stack_frame->GetLineNumber(); + const int column = stack_frame->GetColumn(); + + if (stack_frame->IsEval()) { + if (stack_frame->GetScriptId() == Message::kNoScriptIdInfo) { + fprintf(stderr, " at [eval]:%i:%i\n", line_number, column); + } else { + fprintf(stderr, + " at [eval] (%s:%i:%i)\n", + *script_name, + line_number, + column); + } + break; + } + + if (fn_name_s.length() == 0) { + fprintf(stderr, " at %s:%i:%i\n", *script_name, line_number, column); + } else { + fprintf(stderr, + " at %s (%s:%i:%i)\n", + *fn_name_s, + *script_name, + line_number, + column); + } + } + fflush(stderr); +} + +void PrintCaughtException(Isolate* isolate, + Local context, + const v8::TryCatch& try_catch) { + CHECK(try_catch.HasCaught()); + Local err = try_catch.Exception(); + Local message = try_catch.Message(); + Local stack = message->GetStackTrace(); + node::Utf8Value reason(isolate, + err->ToDetailString(context).ToLocalChecked()); + bool added_exception_line = false; + std::string source = + GetErrorSource(isolate, context, message, &added_exception_line); + fprintf(stderr, "%s\n", source.c_str()); + fprintf(stderr, "%s\n", *reason); + PrintStackTrace(isolate, stack); +} + +void AppendExceptionLine(Environment* env, + Local er, + Local message, + enum ErrorHandlingMode mode) { + if (message.IsEmpty()) return; + + HandleScope scope(env->isolate()); + Local err_obj; + if (!er.IsEmpty() && er->IsObject()) { + err_obj = er.As(); + } - Local arrow_str = - String::NewFromUtf8(env->isolate(), arrow, NewStringType::kNormal) - .ToLocalChecked(); + bool added_exception_line = false; + std::string source = GetErrorSource( + env->isolate(), env->context(), message, &added_exception_line); + if (!added_exception_line) { + return; + } + MaybeLocal arrow_str = ToV8Value(env->context(), source); const bool can_set_arrow = !arrow_str.IsEmpty() && !err_obj.IsEmpty(); // If allocating arrow_str failed, print it out. There's not much else to do. @@ -150,13 +219,14 @@ void AppendExceptionLine(Environment* env, env->set_printed_error(true); uv_tty_reset_mode(); - PrintErrorString("\n%s", arrow); + PrintErrorString("\n%s", source.c_str()); return; } CHECK(err_obj - ->SetPrivate( - env->context(), env->arrow_message_private_symbol(), arrow_str) + ->SetPrivate(env->context(), + env->arrow_message_private_symbol(), + arrow_str.ToLocalChecked()) .FromMaybe(false)); } diff --git a/src/node_internals.h b/src/node_internals.h index cf796178a4dd82..b685fd2498ddb3 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -86,6 +86,11 @@ void GetSockOrPeerName(const v8::FunctionCallbackInfo& args) { args.GetReturnValue().Set(err); } +void PrintStackTrace(v8::Isolate* isolate, v8::Local stack); +void PrintCaughtException(v8::Isolate* isolate, + v8::Local context, + const v8::TryCatch& try_catch); + void WaitForInspectorDisconnect(Environment* env); void SignalExit(int signo); #ifdef __POSIX__ From 28efecccd50a077721f6ce819f1900c9dc19fef8 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Wed, 27 Mar 2019 22:35:43 -0700 Subject: [PATCH 054/133] doc: remove "How is an LTS release cut?" section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The release process is in the Release plan, linked earlier in the doc. Don't include information here because duplicated information is likely to drift apart, resulting in contradictions and a lack of clarity about which document is correct. (I think the text removed is already out-of-date. I could be wrong, and it doesn't much matter, as it should be removed anyway.) It's also not entirely clear what the utility/relevance of this information is in this particular document. PR-URL: https://github.com/nodejs/node/pull/26955 Reviewed-By: Michaël Zasso Reviewed-By: Ruben Bridgewater Reviewed-By: Anatoli Papirovski Reviewed-By: Luigi Pinca Signed-off-by: Beth Griggs --- COLLABORATOR_GUIDE.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 09d11eb9691073..6e85bdc02eef95 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -30,11 +30,8 @@ - [I Made a Mistake](#i-made-a-mistake) - [Long Term Support](#long-term-support) - [What is LTS?](#what-is-lts) - - [How does LTS work?](#how-does-lts-work) - - [Landing semver-minor commits in LTS](#landing-semver-minor-commits-in-lts) - [How are LTS Branches Managed?](#how-are-lts-branches-managed) - [How can I help?](#how-can-i-help) - - [How is an LTS release cut?](#how-is-an-lts-release-cut) * [Who to CC in the issue tracker](#who-to-cc-in-the-issue-tracker) This document explains how Collaborators manage the Node.js project. @@ -681,13 +678,6 @@ label. Attach the appropriate `lts-watch-` label to any PR that may impact an LTS release. -#### How is an LTS release cut? - -When the LTS working group determines that a new LTS release is required, -selected commits will be picked from the staging branch to be included in the -release. This process of making a release will be a collaboration between the -LTS working group and the Release team. - ## Who to CC in the issue tracker | Subsystem | Maintainers | From 8798db3bf3e77a1891692ddc7dd963effbe06c86 Mon Sep 17 00:00:00 2001 From: Luigi Pinca Date: Wed, 27 Mar 2019 08:53:15 +0100 Subject: [PATCH 055/133] url: add ws: and wss: to slashedProtocol set Fix cases where the pathname is incorrectly parsed as `null`. PR-URL: https://github.com/nodejs/node/pull/26941 Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Reviewed-By: Yongsheng Zhang Signed-off-by: Beth Griggs --- lib/url.js | 6 +++++- test/parallel/test-url-parse-format.js | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/url.js b/lib/url.js index ade0007171ee48..a51e98ceb82a21 100644 --- a/lib/url.js +++ b/lib/url.js @@ -95,7 +95,11 @@ const slashedProtocol = new SafeSet([ 'gopher', 'gopher:', 'file', - 'file:' + 'file:', + 'ws', + 'ws:', + 'wss', + 'wss:' ]); const { CHAR_SPACE, diff --git a/test/parallel/test-url-parse-format.js b/test/parallel/test-url-parse-format.js index b318658febbaea..6d50be0e8b7c63 100644 --- a/test/parallel/test-url-parse-format.js +++ b/test/parallel/test-url-parse-format.js @@ -923,6 +923,26 @@ const parseTests = { pathname: "alert(1);a='@white-listed.com'", path: "alert(1);a='@white-listed.com'", href: "javascript:alert(1);a='@white-listed.com'" + }, + + 'ws://www.example.com': { + protocol: 'ws:', + slashes: true, + hostname: 'www.example.com', + host: 'www.example.com', + pathname: '/', + path: '/', + href: 'ws://www.example.com/' + }, + + 'wss://www.example.com': { + protocol: 'wss:', + slashes: true, + hostname: 'www.example.com', + host: 'www.example.com', + pathname: '/', + path: '/', + href: 'wss://www.example.com/' } }; From 17cc117f4ac80b17a129e331e3c25e7add6e94be Mon Sep 17 00:00:00 2001 From: Beth Griggs Date: Tue, 26 Mar 2019 17:44:18 +0000 Subject: [PATCH 056/133] doc: update changelog for v10.x LTS PR-URL: https://github.com/nodejs/node/pull/26931 Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6aaf39b20ff87..1b8815bd0e2479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ release. - + From 0f615d421687a3f0474d07d9e0a46027b0114d74 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 14:45:40 +0100 Subject: [PATCH 057/133] util: add subclass and null prototype support for errors in inspect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support to visualize the difference between errors with null prototype or subclassed errors. This has a couple safeguards to be sure that the output is not intrusive. PR-URL: https://github.com/nodejs/node/pull/26923 Reviewed-By: James M Snell Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- lib/internal/util/inspect.js | 68 +++++++++++++++++++++--------- test/parallel/test-util-inspect.js | 64 ++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 21 deletions(-) diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 510b290ca35696..6cbae6f73970f1 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -643,25 +643,9 @@ function formatRaw(ctx, value, recurseTimes, typedArray) { return ctx.stylize(base, 'date'); } } else if (isError(value)) { - // Make error with message first say the error. - base = formatError(value); - // Wrap the error in brackets in case it has no stack trace. - const stackStart = base.indexOf('\n at'); - if (stackStart === -1) { - base = `[${base}]`; - } - // The message and the stack have to be indented as well! - if (ctx.indentationLvl !== 0) { - const indentation = ' '.repeat(ctx.indentationLvl); - base = formatError(value).replace(/\n/g, `\n${indentation}`); - } + base = formatError(value, constructor, tag, ctx); if (keys.length === 0) return base; - - if (ctx.compact === false && stackStart !== -1) { - braces[0] += `${base.slice(stackStart)}`; - base = `[${base.slice(0, stackStart)}]`; - } } else if (isAnyArrayBuffer(value)) { // Fast path for ArrayBuffer and SharedArrayBuffer. // Can't do the same for DataView because it has a non-primitive @@ -821,6 +805,52 @@ function formatRaw(ctx, value, recurseTimes, typedArray) { return res; } +function formatError(err, constructor, tag, ctx) { + // TODO(BridgeAR): Always show the error code if present. + let stack = err.stack || errorToString(err); + + // A stack trace may contain arbitrary data. Only manipulate the output + // for "regular errors" (errors that "look normal") for now. + const name = err.name || 'Error'; + let len = name.length; + if (constructor === null || + name.endsWith('Error') && + stack.startsWith(name) && + (stack.length === len || stack[len] === ':' || stack[len] === '\n')) { + let fallback = 'Error'; + if (constructor === null) { + const start = stack.match(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/) || + stack.match(/^([a-z_A-Z0-9-]*Error)$/); + fallback = start && start[1] || ''; + len = fallback.length; + fallback = fallback || 'Error'; + } + const prefix = getPrefix(constructor, tag, fallback).slice(0, -1); + if (name !== prefix) { + if (prefix.includes(name)) { + if (len === 0) { + stack = `${prefix}: ${stack}`; + } else { + stack = `${prefix}${stack.slice(len)}`; + } + } else { + stack = `${prefix} [${name}]${stack.slice(len)}`; + } + } + } + // Wrap the error in brackets in case it has no stack trace. + const stackStart = stack.indexOf('\n at'); + if (stackStart === -1) { + stack = `[${stack}]`; + } + // The message and the stack have to be indented as well! + if (ctx.indentationLvl !== 0) { + const indentation = ' '.repeat(ctx.indentationLvl); + stack = stack.replace(/\n/g, `\n${indentation}`); + } + return stack; +} + function groupArrayElements(ctx, output) { let totalLength = 0; let maxLength = 0; @@ -968,10 +998,6 @@ function formatPrimitive(fn, value, ctx) { return fn(value.toString(), 'symbol'); } -function formatError(value) { - return value.stack || errorToString(value); -} - function formatNamespaceObject(ctx, value, recurseTimes, keys) { const output = new Array(keys.length); for (var i = 0; i < keys.length; i++) { diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 282c31213c7e72..5f4779095c98b9 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -1643,6 +1643,70 @@ assert.strictEqual(util.inspect('"\''), '`"\'`'); // eslint-disable-next-line no-template-curly-in-string assert.strictEqual(util.inspect('"\'${a}'), "'\"\\'${a}'"); +// Errors should visualize as much information as possible. +// If the name is not included in the stack, visualize it as well. +[ + [class Foo extends TypeError {}, 'test'], + [class Foo extends TypeError {}, undefined], + [class BarError extends Error {}, 'test'], + [class BazError extends Error { + get name() { + return 'BazError'; + } + }, undefined] +].forEach(([Class, message, messages], i) => { + console.log('Test %i', i); + const foo = new Class(message); + const name = foo.name; + const extra = Class.name.includes('Error') ? '' : ` [${foo.name}]`; + assert( + util.inspect(foo).startsWith( + `${Class.name}${extra}${message ? `: ${message}` : '\n'}`), + util.inspect(foo) + ); + Object.defineProperty(foo, Symbol.toStringTag, { + value: 'WOW', + writable: true, + configurable: true + }); + const stack = foo.stack; + foo.stack = 'This is a stack'; + assert.strictEqual( + util.inspect(foo), + '[This is a stack]' + ); + foo.stack = stack; + assert( + util.inspect(foo).startsWith( + `${Class.name} [WOW]${extra}${message ? `: ${message}` : '\n'}`), + util.inspect(foo) + ); + Object.setPrototypeOf(foo, null); + assert( + util.inspect(foo).startsWith( + `[${name}: null prototype] [WOW]${message ? `: ${message}` : '\n'}` + ), + util.inspect(foo) + ); + foo.bar = true; + delete foo[Symbol.toStringTag]; + assert( + util.inspect(foo).startsWith( + `{ [${name}: null prototype]${message ? `: ${message}` : '\n'}`), + util.inspect(foo) + ); + foo.stack = 'This is a stack'; + assert.strictEqual( + util.inspect(foo), + '{ [[Error: null prototype]: This is a stack] bar: true }' + ); + foo.stack = stack.split('\n')[0]; + assert.strictEqual( + util.inspect(foo), + `{ [[${name}: null prototype]${message ? `: ${message}` : ''}] bar: true }` + ); +}); + // Verify that throwing in valueOf and toString still produces nice results. [ [new String(55), "[String: '55']"], From 0aea4d1c7704a24c4b60bcd4ec18fad7751607af Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 05:21:27 +0100 Subject: [PATCH 058/133] benchmark,lib: change var to const MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs: https://github.com/nodejs/node/pull/26679 PR-URL: https://github.com/nodejs/node/pull/26915 Reviewed-By: Michaël Zasso Reviewed-By: Tobias Nießen Reviewed-By: Refael Ackermann Signed-off-by: Beth Griggs --- benchmark/fs/readfile-partitioned.js | 2 +- benchmark/fs/write-stream-throughput.js | 2 +- benchmark/http/_chunky_http_client.js | 2 +- .../http/http_server_for_chunky_client.js | 4 +- benchmark/http/set-header.js | 2 +- benchmark/http/simple.js | 2 +- benchmark/http/upgrade.js | 2 +- benchmark/tls/throughput.js | 3 +- benchmark/tls/tls-connect.js | 2 +- lib/_http_agent.js | 16 +++--- lib/_http_client.js | 56 +++++++++---------- lib/_http_incoming.js | 2 +- lib/_http_outgoing.js | 16 +++--- lib/_http_server.js | 28 +++++----- lib/_stream_readable.js | 47 ++++++++-------- lib/_stream_transform.js | 10 ++-- lib/_stream_writable.js | 28 +++++----- lib/_tls_common.js | 4 +- lib/_tls_wrap.js | 19 +++---- lib/child_process.js | 34 +++++------ lib/dgram.js | 34 +++++------ lib/dns.js | 20 ++++--- lib/domain.js | 12 ++-- lib/events.js | 24 ++++---- lib/http.js | 2 +- lib/internal/assert/assertion_error.js | 8 ++- lib/internal/child_process.js | 40 +++++++------ lib/internal/console/constructor.js | 2 +- lib/internal/crypto/sig.js | 4 +- lib/internal/encoding.js | 8 +-- lib/internal/modules/cjs/loader.js | 40 ++++++------- lib/internal/socket_list.js | 2 +- lib/internal/stream_base_commons.js | 8 +-- lib/internal/streams/legacy.js | 2 +- lib/internal/url.js | 26 ++++----- lib/internal/util.js | 2 +- lib/net.js | 49 ++++++++-------- lib/path.js | 2 +- lib/querystring.js | 8 +-- lib/readline.js | 49 ++++++++-------- lib/repl.js | 18 +++--- lib/tls.js | 2 +- lib/url.js | 20 +++---- lib/zlib.js | 26 ++++----- 44 files changed, 343 insertions(+), 346 deletions(-) diff --git a/benchmark/fs/readfile-partitioned.js b/benchmark/fs/readfile-partitioned.js index 2775793e0b0928..90af3754ce3de2 100644 --- a/benchmark/fs/readfile-partitioned.js +++ b/benchmark/fs/readfile-partitioned.js @@ -29,7 +29,7 @@ function main(conf) { fs.writeFileSync(filename, data); data = null; - var zipData = Buffer.alloc(1024, 'a'); + const zipData = Buffer.alloc(1024, 'a'); var reads = 0; var zips = 0; diff --git a/benchmark/fs/write-stream-throughput.js b/benchmark/fs/write-stream-throughput.js index bc88330929c2fc..3936adc7ff1b42 100644 --- a/benchmark/fs/write-stream-throughput.js +++ b/benchmark/fs/write-stream-throughput.js @@ -38,7 +38,7 @@ function main({ dur, encodingType, size }) { var started = false; var ended = false; - var f = fs.createWriteStream(filename); + const f = fs.createWriteStream(filename); f.on('drain', write); f.on('open', write); f.on('close', done); diff --git a/benchmark/http/_chunky_http_client.js b/benchmark/http/_chunky_http_client.js index 21418a7c26b584..5164f8c6199e35 100644 --- a/benchmark/http/_chunky_http_client.js +++ b/benchmark/http/_chunky_http_client.js @@ -54,7 +54,7 @@ function main({ len, n }) { const add = 11; var count = 0; const PIPE = process.env.PIPE_NAME; - var socket = net.connect(PIPE, () => { + const socket = net.connect(PIPE, () => { bench.start(); WriteHTTPHeaders(socket, 1, len); socket.setEncoding('utf8'); diff --git a/benchmark/http/http_server_for_chunky_client.js b/benchmark/http/http_server_for_chunky_client.js index edcacf5d124e8f..ef0a23a02928ef 100644 --- a/benchmark/http/http_server_for_chunky_client.js +++ b/benchmark/http/http_server_for_chunky_client.js @@ -10,9 +10,7 @@ process.env.PIPE_NAME = PIPE; tmpdir.refresh(); -var server; - -server = http.createServer((req, res) => { +const server = http.createServer((req, res) => { const headers = { 'content-type': 'text/plain', 'content-length': '2' diff --git a/benchmark/http/set-header.js b/benchmark/http/set-header.js index 01cd8492dff729..1909c0991dfc71 100644 --- a/benchmark/http/set-header.js +++ b/benchmark/http/set-header.js @@ -17,7 +17,7 @@ const c = 50; // setHeaderWH: setHeader(...), writeHead(status, ...) function main({ res }) { process.env.PORT = PORT; - var server = require('../fixtures/simple-http-server.js') + const server = require('../fixtures/simple-http-server.js') .listen(PORT) .on('listening', () => { const path = `/${type}/${len}/${chunks}/normal/${chunkedEnc}`; diff --git a/benchmark/http/simple.js b/benchmark/http/simple.js index c6faaaa9efdfd2..acb613ef036583 100644 --- a/benchmark/http/simple.js +++ b/benchmark/http/simple.js @@ -11,7 +11,7 @@ const bench = common.createBenchmark(main, { }); function main({ type, len, chunks, c, chunkedEnc, res }) { - var server = require('../fixtures/simple-http-server.js') + const server = require('../fixtures/simple-http-server.js') .listen(common.PORT) .on('listening', () => { const path = `/${type}/${len}/${chunks}/normal/${chunkedEnc}`; diff --git a/benchmark/http/upgrade.js b/benchmark/http/upgrade.js index c286cdb2644d0c..8d365fe46df24e 100644 --- a/benchmark/http/upgrade.js +++ b/benchmark/http/upgrade.js @@ -19,7 +19,7 @@ const resData = 'HTTP/1.1 101 Web Socket Protocol Handshake\r\n' + '\r\n\r\n'; function main({ n }) { - var server = require('../fixtures/simple-http-server.js') + const server = require('../fixtures/simple-http-server.js') .listen(common.PORT) .on('listening', () => { bench.start(); diff --git a/benchmark/tls/throughput.js b/benchmark/tls/throughput.js index 3c0c2d4ea18099..cd957ff1edf495 100644 --- a/benchmark/tls/throughput.js +++ b/benchmark/tls/throughput.js @@ -14,7 +14,6 @@ const tls = require('tls'); function main({ dur, type, size }) { var encoding; - var server; var chunk; switch (type) { case 'buf': @@ -39,7 +38,7 @@ function main({ dur, type, size }) { ciphers: 'AES256-GCM-SHA384' }; - server = tls.createServer(options, onConnection); + const server = tls.createServer(options, onConnection); var conn; server.listen(common.PORT, () => { const opt = { port: common.PORT, rejectUnauthorized: false }; diff --git a/benchmark/tls/tls-connect.js b/benchmark/tls/tls-connect.js index 470d536f87e6b2..fa6e2cb80abf06 100644 --- a/benchmark/tls/tls-connect.js +++ b/benchmark/tls/tls-connect.js @@ -46,7 +46,7 @@ function makeConnection() { port: common.PORT, rejectUnauthorized: false }; - var conn = tls.connect(options, () => { + const conn = tls.connect(options, () => { clientConn++; conn.on('error', (er) => { console.error('client error', er); diff --git a/lib/_http_agent.js b/lib/_http_agent.js index 65a538f3c8684a..b506767ab2c751 100644 --- a/lib/_http_agent.js +++ b/lib/_http_agent.js @@ -61,7 +61,7 @@ function Agent(options) { this.maxFreeSockets = this.options.maxFreeSockets || 256; this.on('free', (socket, options) => { - var name = this.getName(options); + const name = this.getName(options); debug('agent.on(free)', name); if (socket.writable && @@ -153,13 +153,13 @@ Agent.prototype.addRequest = function addRequest(req, options, port/* legacy */, if (!options.servername) options.servername = calculateServerName(options, req); - var name = this.getName(options); + const name = this.getName(options); if (!this.sockets[name]) { this.sockets[name] = []; } - var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0; - var sockLen = freeLen + this.sockets[name].length; + const freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0; + const sockLen = freeLen + this.sockets[name].length; if (freeLen) { // We have a free socket, so use that. @@ -200,7 +200,7 @@ Agent.prototype.createSocket = function createSocket(req, options, cb) { if (!options.servername) options.servername = calculateServerName(options, req); - var name = this.getName(options); + const name = this.getName(options); options._agentKey = name; debug('createConnection', name, options); @@ -280,9 +280,9 @@ function installListeners(agent, s, options) { } Agent.prototype.removeSocket = function removeSocket(s, options) { - var name = this.getName(options); + const name = this.getName(options); debug('removeSocket', name, 'writable:', s.writable); - var sets = [this.sockets]; + const sets = [this.sockets]; // If the socket was destroyed, remove it from the free buffers too. if (!s.writable) @@ -324,7 +324,7 @@ Agent.prototype.reuseSocket = function reuseSocket(socket, req) { }; Agent.prototype.destroy = function destroy() { - var sets = [this.freeSockets, this.sockets]; + const sets = [this.freeSockets, this.sockets]; for (var s = 0; s < sets.length; s++) { var set = sets[s]; var keys = Object.keys(set); diff --git a/lib/_http_client.js b/lib/_http_client.js index f29f5b3333811c..c281a4dbdacbb0 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -99,7 +99,7 @@ function ClientRequest(input, options, cb) { } var agent = options.agent; - var defaultAgent = options._defaultAgent || Agent.globalAgent; + const defaultAgent = options._defaultAgent || Agent.globalAgent; if (agent === false) { agent = new defaultAgent.constructor(); } else if (agent === null || agent === undefined) { @@ -115,7 +115,7 @@ function ClientRequest(input, options, cb) { } this.agent = agent; - var protocol = options.protocol || defaultAgent.protocol; + const protocol = options.protocol || defaultAgent.protocol; var expectedProtocol = defaultAgent.protocol; if (this.agent && this.agent.protocol) expectedProtocol = this.agent.protocol; @@ -131,20 +131,20 @@ function ClientRequest(input, options, cb) { throw new ERR_INVALID_PROTOCOL(protocol, expectedProtocol); } - var defaultPort = options.defaultPort || + const defaultPort = options.defaultPort || this.agent && this.agent.defaultPort; - var port = options.port = options.port || defaultPort || 80; - var host = options.host = validateHost(options.hostname, 'hostname') || + const port = options.port = options.port || defaultPort || 80; + const host = options.host = validateHost(options.hostname, 'hostname') || validateHost(options.host, 'host') || 'localhost'; - var setHost = (options.setHost === undefined || Boolean(options.setHost)); + const setHost = (options.setHost === undefined || Boolean(options.setHost)); this.socketPath = options.socketPath; this.timeout = options.timeout; var method = options.method; - var methodIsString = (typeof method === 'string'); + const methodIsString = (typeof method === 'string'); if (method !== null && method !== undefined && !methodIsString) { throw new ERR_INVALID_ARG_TYPE('method', 'string', method); } @@ -197,7 +197,7 @@ function ClientRequest(input, options, cb) { } } - var headersArray = Array.isArray(options.headers); + const headersArray = Array.isArray(options.headers); if (!headersArray) { if (options.headers) { var keys = Object.keys(options.headers); @@ -244,7 +244,7 @@ function ClientRequest(input, options, cb) { options.headers); } - var oncreate = (err, socket) => { + const oncreate = (err, socket) => { if (called) return; called = true; @@ -327,15 +327,15 @@ function emitAbortNT() { function createHangUpError() { // eslint-disable-next-line no-restricted-syntax - var error = new Error('socket hang up'); + const error = new Error('socket hang up'); error.code = 'ECONNRESET'; return error; } function socketCloseListener() { - var socket = this; - var req = socket._httpMessage; + const socket = this; + const req = socket._httpMessage; debug('HTTP socket close'); // Pull through final chunk, if anything is buffered. @@ -386,8 +386,8 @@ function socketCloseListener() { } function socketErrorListener(err) { - var socket = this; - var req = socket._httpMessage; + const socket = this; + const req = socket._httpMessage; debug('SOCKET ERROR:', err.message, err.stack); if (req) { @@ -400,7 +400,7 @@ function socketErrorListener(err) { // Handle any pending data socket.read(); - var parser = socket.parser; + const parser = socket.parser; if (parser) { parser.finish(); freeParser(parser, req, socket); @@ -413,16 +413,16 @@ function socketErrorListener(err) { } function freeSocketErrorListener(err) { - var socket = this; + const socket = this; debug('SOCKET ERROR on FREE socket:', err.message, err.stack); socket.destroy(); socket.emit('agentRemove'); } function socketOnEnd() { - var socket = this; - var req = this._httpMessage; - var parser = this.parser; + const socket = this; + const req = this._httpMessage; + const parser = this.parser; if (!req.res && !req.socket._hadError) { // If we don't have a response then we know that the socket @@ -438,13 +438,13 @@ function socketOnEnd() { } function socketOnData(d) { - var socket = this; - var req = this._httpMessage; - var parser = this.parser; + const socket = this; + const req = this._httpMessage; + const parser = this.parser; assert(parser && parser.socket === socket); - var ret = parser.execute(d); + const ret = parser.execute(d); if (ret instanceof Error) { debug('parse error', ret); freeParser(parser, req, socket); @@ -506,8 +506,8 @@ function statusIsInformational(status) { // client function parserOnIncomingClient(res, shouldKeepAlive) { - var socket = this.socket; - var req = socket._httpMessage; + const socket = this.socket; + const req = socket._httpMessage; debug('AGENT incoming response!'); @@ -557,7 +557,7 @@ function parserOnIncomingClient(res, shouldKeepAlive) { // Add our listener first, so that we guarantee socket cleanup res.on('end', responseOnEnd); req.on('prefinish', requestOnPrefinish); - var handled = req.emit('response', res); + const handled = req.emit('response', res); // If the user did not listen for the 'response' event, then they // can't possibly read the data, so we ._dump() it into the void @@ -573,7 +573,7 @@ function parserOnIncomingClient(res, shouldKeepAlive) { // client function responseKeepAlive(res, req) { - var socket = req.socket; + const socket = req.socket; if (!req.shouldKeepAlive) { if (socket.writable) { @@ -627,7 +627,7 @@ function emitFreeNT(socket) { } function tickOnSocket(req, socket) { - var parser = parsers.alloc(); + const parser = parsers.alloc(); req.socket = socket; req.connection = socket; parser.reinitialize(HTTPParser.RESPONSE, parser[is_reused_symbol]); diff --git a/lib/_http_incoming.js b/lib/_http_incoming.js index 9ad3b8eb0d725a..372b6c784b8809 100644 --- a/lib/_http_incoming.js +++ b/lib/_http_incoming.js @@ -244,7 +244,7 @@ function matchKnownFields(field, lowercased) { IncomingMessage.prototype._addHeaderLine = _addHeaderLine; function _addHeaderLine(field, value, dest) { field = matchKnownFields(field); - var flag = field.charCodeAt(0); + const flag = field.charCodeAt(0); if (flag === 0 || flag === 2) { field = field.slice(1); // Make a delimited list diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index 3be6cd2e96daf1..3d5a4c32e15f7f 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -53,8 +53,8 @@ const kIsCorked = Symbol('isCorked'); const hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); -var RE_CONN_CLOSE = /(?:^|\W)close(?:$|\W)/i; -var RE_TE_CHUNKED = common.chunkExpression; +const RE_CONN_CLOSE = /(?:^|\W)close(?:$|\W)/i; +const RE_TE_CHUNKED = common.chunkExpression; // isCookieField performs a case-insensitive comparison of a provided string // against the word "cookie." As of V8 6.6 this is faster than handrolling or @@ -161,7 +161,7 @@ OutgoingMessage.prototype._renderHeaders = function _renderHeaders() { throw new ERR_HTTP_HEADERS_SENT('render'); } - var headersMap = this[outHeadersKey]; + const headersMap = this[outHeadersKey]; const headers = {}; if (headersMap !== null) { @@ -540,7 +540,7 @@ OutgoingMessage.prototype.removeHeader = function removeHeader(name) { throw new ERR_HTTP_HEADERS_SENT('remove'); } - var key = name.toLowerCase(); + const key = name.toLowerCase(); switch (key) { case 'connection': @@ -656,8 +656,8 @@ function connectionCorkNT(msg, conn) { OutgoingMessage.prototype.addTrailers = function addTrailers(headers) { this._trailer = ''; - var keys = Object.keys(headers); - var isArray = Array.isArray(headers); + const keys = Object.keys(headers); + const isArray = Array.isArray(headers); var field, value; for (var i = 0, l = keys.length; i < l; i++) { var key = keys[i]; @@ -720,7 +720,7 @@ OutgoingMessage.prototype.end = function end(chunk, encoding, callback) { if (typeof callback === 'function') this.once('finish', callback); - var finish = onFinish.bind(undefined, this); + const finish = onFinish.bind(undefined, this); if (this._hasBody && this.chunkedEncoding) { this._send('0\r\n' + this._trailer + '\r\n', 'latin1', finish); @@ -773,7 +773,7 @@ OutgoingMessage.prototype._finish = function _finish() { // This function, outgoingFlush(), is called by both the Server and Client // to attempt to flush any pending messages out to the socket. OutgoingMessage.prototype._flush = function _flush() { - var socket = this.socket; + const socket = this.socket; var ret; if (socket && socket.writable) { diff --git a/lib/_http_server.js b/lib/_http_server.js index 282b3a8227d43b..79f56bc19c9da2 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -201,7 +201,7 @@ ServerResponse.prototype._implicitHeader = function _implicitHeader() { ServerResponse.prototype.writeHead = writeHead; function writeHead(statusCode, reason, obj) { - var originalStatusCode = statusCode; + const originalStatusCode = statusCode; statusCode |= 0; if (statusCode < 100 || statusCode > 999) { @@ -244,7 +244,7 @@ function writeHead(statusCode, reason, obj) { if (checkInvalidHeaderChar(this.statusMessage)) throw new ERR_INVALID_CHAR('statusMessage'); - var statusLine = `HTTP/1.1 ${statusCode} ${this.statusMessage}${CRLF}`; + const statusLine = `HTTP/1.1 ${statusCode} ${this.statusMessage}${CRLF}`; if (statusCode === 204 || statusCode === 304 || (statusCode >= 100 && statusCode <= 199)) { @@ -340,7 +340,7 @@ function connectionListenerInternal(server, socket) { socket.setTimeout(server.timeout); socket.on('timeout', socketOnTimeout); - var parser = parsers.alloc(); + const parser = parsers.alloc(); parser.reinitialize(HTTPParser.REQUEST, parser[is_reused_symbol]); parser.socket = socket; @@ -353,7 +353,7 @@ function connectionListenerInternal(server, socket) { parser.maxHeaderPairs = server.maxHeadersCount << 1; } - var state = { + const state = { onData: null, onEnd: null, onClose: null, @@ -408,7 +408,7 @@ function updateOutgoingData(socket, state, delta) { } function socketOnDrain(socket, state) { - var needPause = state.outgoingData > socket.writableHighWaterMark; + const needPause = state.outgoingData > socket.writableHighWaterMark; // If we previously paused, then start reading again. if (socket._paused && !needPause) { @@ -420,11 +420,11 @@ function socketOnDrain(socket, state) { } function socketOnTimeout() { - var req = this.parser && this.parser.incoming; - var reqTimeout = req && !req.complete && req.emit('timeout', this); - var res = this._httpMessage; - var resTimeout = res && res.emit('timeout', this); - var serverTimeout = this.server.emit('timeout', this); + const req = this.parser && this.parser.incoming; + const reqTimeout = req && !req.complete && req.emit('timeout', this); + const res = this._httpMessage; + const resTimeout = res && res.emit('timeout', this); + const serverTimeout = this.server.emit('timeout', this); if (!reqTimeout && !resTimeout && !serverTimeout) this.destroy(); @@ -451,7 +451,7 @@ function abortIncoming(incoming) { } function socketOnEnd(server, socket, parser, state) { - var ret = parser.finish(); + const ret = parser.finish(); if (ret instanceof Error) { debug('parse error'); @@ -475,7 +475,7 @@ function socketOnData(server, socket, parser, state, d) { assert(!socket._paused); debug('SERVER socketOnData %d', d.length); - var ret = parser.execute(d); + const ret = parser.execute(d); onParserExecuteCommon(server, socket, parser, state, ret, d); } @@ -641,7 +641,7 @@ function parserOnIncoming(server, socket, state, req, keepAlive) { } } - var res = new server[kServerResponse](req); + const res = new server[kServerResponse](req); res._onPendingData = updateOutgoingData.bind(undefined, socket, state); res.shouldKeepAlive = keepAlive; @@ -726,7 +726,7 @@ function unconsume(parser, socket) { } function socketOnWrap(ev, fn) { - var res = net.Socket.prototype.on.call(this, ev, fn); + const res = net.Socket.prototype.on.call(this, ev, fn); if (!this.parser) { this.on = net.Socket.prototype.on; return res; diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index d0bc95496a2b12..d1929f0e2f4bc7 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -213,7 +213,7 @@ Readable.prototype._destroy = function(err, cb) { // similar to how Writable.write() returns true if you should // write() some more. Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; + const state = this._readableState; var skipChunkCheck; if (!state.objectMode) { @@ -239,7 +239,7 @@ Readable.prototype.unshift = function(chunk) { function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { debug('readableAddChunk', chunk); - var state = stream._readableState; + const state = stream._readableState; if (chunk === null) { state.reading = false; onEofChunk(stream, state); @@ -383,8 +383,8 @@ function howMuchToRead(n, state) { Readable.prototype.read = function(n) { debug('read', n); n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; + const state = this._readableState; + const nOrig = n; if (n !== 0) state.emittedReadable = false; @@ -534,7 +534,7 @@ function onEofChunk(stream, state) { // another read() call => stack overflow. This way, it might trigger // a nextTick recursion warning, but that's not so bad. function emitReadable(stream) { - var state = stream._readableState; + const state = stream._readableState; debug('emitReadable', state.needReadable, state.emittedReadable); state.needReadable = false; if (!state.emittedReadable) { @@ -545,7 +545,7 @@ function emitReadable(stream) { } function emitReadable_(stream) { - var state = stream._readableState; + const state = stream._readableState; debug('emitReadable_', state.destroyed, state.length, state.ended); if (!state.destroyed && (state.length || state.ended)) { stream.emit('readable'); @@ -625,8 +625,8 @@ Readable.prototype._read = function(n) { }; Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; + const src = this; + const state = this._readableState; switch (state.pipesCount) { case 0: @@ -642,11 +642,11 @@ Readable.prototype.pipe = function(dest, pipeOpts) { state.pipesCount += 1; debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && + const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; + const endFn = doEnd ? onend : unpipe; if (state.endEmitted) process.nextTick(endFn); else @@ -672,7 +672,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) { // on the source. This would be more elegant with a .once() // handler in flow(), but adding and removing repeatedly is // too slow. - var ondrain = pipeOnDrain(src); + const ondrain = pipeOnDrain(src); dest.on('drain', ondrain); var cleanedUp = false; @@ -703,7 +703,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) { src.on('data', ondata); function ondata(chunk) { debug('ondata'); - var ret = dest.write(chunk); + const ret = dest.write(chunk); debug('dest.write', ret); if (ret === false) { // If the user unpiped during `dest.write()`, it is possible @@ -765,7 +765,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) { function pipeOnDrain(src) { return function pipeOnDrainFunctionResult() { - var state = src._readableState; + const state = src._readableState; debug('pipeOnDrain', state.awaitDrain); if (state.awaitDrain) state.awaitDrain--; @@ -778,8 +778,8 @@ function pipeOnDrain(src) { Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - var unpipeInfo = { hasUnpiped: false }; + const state = this._readableState; + const unpipeInfo = { hasUnpiped: false }; // If we're not piping anywhere, then do nothing. if (state.pipesCount === 0) @@ -818,8 +818,8 @@ Readable.prototype.unpipe = function(dest) { return this; } - // try to find the right one. - var index = state.pipes.indexOf(dest); + // Try to find the right one. + const index = state.pipes.indexOf(dest); if (index === -1) return this; @@ -920,7 +920,7 @@ function nReadingNextTick(self) { // pause() and resume() are remnants of the legacy readable stream API // If the user uses them, then switch into old mode. Readable.prototype.resume = function() { - var state = this._readableState; + const state = this._readableState; if (!state.flowing) { debug('resume'); // We flow only if there is no one listening @@ -974,7 +974,7 @@ function flow(stream) { // This is *not* part of the readable stream interface. // It is an ugly unfortunate mess of history. Readable.prototype.wrap = function(stream) { - var state = this._readableState; + const state = this._readableState; var paused = false; stream.on('end', () => { @@ -999,16 +999,15 @@ Readable.prototype.wrap = function(stream) { else if (!state.objectMode && (!chunk || !chunk.length)) return; - var ret = this.push(chunk); + const ret = this.push(chunk); if (!ret) { paused = true; stream.pause(); } }); - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { + // Proxy all the other methods. Important when wrapping filters and duplexes. + for (const i in stream) { if (this[i] === undefined && typeof stream[i] === 'function') { this[i] = function methodWrap(method) { return function methodWrapReturnFunction() { @@ -1123,7 +1122,7 @@ function fromList(n, state) { } function endReadable(stream) { - var state = stream._readableState; + const state = stream._readableState; debug('endReadable', state.endEmitted); if (!state.endEmitted) { diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js index 7393dddbabc329..e123b05ee85270 100644 --- a/lib/_stream_transform.js +++ b/lib/_stream_transform.js @@ -76,10 +76,10 @@ util.inherits(Transform, Duplex); function afterTransform(er, data) { - var ts = this._transformState; + const ts = this._transformState; ts.transforming = false; - var cb = ts.writecb; + const cb = ts.writecb; if (cb === null) { return this.emit('error', new ERR_MULTIPLE_CALLBACK()); @@ -93,7 +93,7 @@ function afterTransform(er, data) { cb(er); - var rs = this._readableState; + const rs = this._readableState; rs.reading = false; if (rs.needReadable || rs.length < rs.highWaterMark) { this._read(rs.highWaterMark); @@ -163,7 +163,7 @@ Transform.prototype._transform = function(chunk, encoding, cb) { }; Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; + const ts = this._transformState; ts.writecb = cb; ts.writechunk = chunk; ts.writeencoding = encoding; @@ -180,7 +180,7 @@ Transform.prototype._write = function(chunk, encoding, cb) { // _transform does all the work. // That we got here means that the readable side wants more data. Transform.prototype._read = function(n) { - var ts = this._transformState; + const ts = this._transformState; if (ts.writechunk !== null && !ts.transforming) { ts.transforming = true; diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index e5b11d06a19b39..d6d86cc8596f0a 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -93,7 +93,7 @@ function WritableState(options, stream, isDuplex) { // Should we decode strings into buffers before passing to _write? // this is here so that some node-core streams can optimize string // handling at a lower level. - var noDecode = options.decodeStrings === false; + const noDecode = options.decodeStrings === false; this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string @@ -157,14 +157,14 @@ function WritableState(options, stream, isDuplex) { // Allocate the first CorkedRequest, there is always // one allocated and free to use, and we maintain at most two - var corkReq = { next: null, entry: null, finish: undefined }; + const corkReq = { next: null, entry: null, finish: undefined }; corkReq.finish = onCorkedFinish.bind(undefined, corkReq, this); this.corkedRequestsFree = corkReq; } WritableState.prototype.getBuffer = function getBuffer() { var current = this.bufferedRequest; - var out = []; + const out = []; while (current) { out.push(current); current = current.next; @@ -245,7 +245,7 @@ Writable.prototype.pipe = function() { function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); + const er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb errorOrDestroy(stream, er); process.nextTick(cb, er); @@ -271,9 +271,9 @@ function validChunk(stream, state, chunk, cb) { } Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; + const state = this._writableState; var ret = false; - var isBuf = !state.objectMode && Stream._isUint8Array(chunk); + const isBuf = !state.objectMode && Stream._isUint8Array(chunk); if (isBuf && Object.getPrototypeOf(chunk) !== Buffer.prototype) { chunk = Stream._uint8ArrayToBuffer(chunk); @@ -307,7 +307,7 @@ Writable.prototype.cork = function() { }; Writable.prototype.uncork = function() { - var state = this._writableState; + const state = this._writableState; if (state.corked) { state.corked--; @@ -371,11 +371,11 @@ function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { chunk = newChunk; } } - var len = state.objectMode ? 1 : chunk.length; + const len = state.objectMode ? 1 : chunk.length; state.length += len; - var ret = state.length < state.highWaterMark; + const ret = state.length < state.highWaterMark; // We must ensure that previous needDrain will not be reset to false. if (!ret) state.needDrain = true; @@ -448,9 +448,9 @@ function onwriteStateUpdate(state) { } function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; + const state = stream._writableState; + const sync = state.sync; + const cb = state.writecb; if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); @@ -569,7 +569,7 @@ Writable.prototype._write = function(chunk, encoding, cb) { Writable.prototype._writev = null; Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; + const state = this._writableState; if (typeof chunk === 'function') { cb = chunk; @@ -638,7 +638,7 @@ function prefinish(stream, state) { } function finishMaybe(stream, state) { - var need = needFinish(state); + const need = needFinish(state); if (need) { prefinish(stream, state); if (state.pendingcb === 0) { diff --git a/lib/_tls_common.js b/lib/_tls_common.js index 29b4cc78a8fc84..78e67af23d46f0 100644 --- a/lib/_tls_common.js +++ b/lib/_tls_common.js @@ -139,8 +139,8 @@ exports.createSecureContext = function createSecureContext(options, context) { // `ssl_set_pkey` returns `0` when the key does not match the cert, but // `ssl_set_cert` returns `1` and nullifies the key in the SSL structure // which leads to the crash later on. - var key = options.key; - var passphrase = options.passphrase; + const key = options.key; + const passphrase = options.passphrase; if (key) { if (Array.isArray(key)) { for (i = 0; i < key.length; ++i) { diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index 37f9f84ed95a96..98f9fc98fbaa02 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -370,7 +370,7 @@ function TLSSocket(socket, opts) { util.inherits(TLSSocket, net.Socket); exports.TLSSocket = TLSSocket; -var proxiedMethods = [ +const proxiedMethods = [ 'ref', 'unref', 'open', 'bind', 'listen', 'connect', 'bind6', 'connect6', 'getsockname', 'getpeername', 'setNoDelay', 'setKeepAlive', 'setSimultaneousAccepts', 'setBlocking', @@ -429,7 +429,7 @@ TLSSocket.prototype._wrapHandle = function(wrap) { if (wrap) handle = wrap._handle; - var options = this._tlsOptions; + const options = this._tlsOptions; if (!handle) { handle = options.pipe ? new Pipe(PipeConstants.SOCKET) : @@ -491,9 +491,8 @@ TLSSocket.prototype._destroySSL = function _destroySSL() { }; TLSSocket.prototype._init = function(socket, wrap) { - var options = this._tlsOptions; - var ssl = this._handle; - + const options = this._tlsOptions; + const ssl = this._handle; this.server = options.server; // Clients (!isServer) always request a cert, servers request a client cert @@ -638,7 +637,7 @@ TLSSocket.prototype._handleTimeout = function() { }; TLSSocket.prototype._emitTLSError = function(err) { - var e = this._tlsError(err); + const e = this._tlsError(err); if (e) this.emit('error', e); }; @@ -1082,7 +1081,7 @@ Server.prototype.setOptions = function(options) { if (options.dhparam) this.dhparam = options.dhparam; if (options.sessionTimeout) this.sessionTimeout = options.sessionTimeout; if (options.ticketKeys) this.ticketKeys = options.ticketKeys; - var secureOptions = options.secureOptions || 0; + const secureOptions = options.secureOptions || 0; if (options.honorCipherOrder !== undefined) this.honorCipherOrder = !!options.honorCipherOrder; else @@ -1106,7 +1105,7 @@ Server.prototype.addContext = function(servername, context) { throw new ERR_TLS_REQUIRED_SERVER_NAME(); } - var re = new RegExp('^' + + const re = new RegExp('^' + servername.replace(/([.^$+?\-\\[\]{}])/g, '\\$1') .replace(/\*/g, '[^.]*') + '$'); @@ -1228,7 +1227,7 @@ let warnOnAllowUnauthorized = true; exports.connect = function connect(...args) { args = normalizeConnectArgs(args); var options = args[0]; - var cb = args[1]; + const cb = args[1]; const allowUnauthorized = process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0'; if (allowUnauthorized && warnOnAllowUnauthorized) { @@ -1259,7 +1258,7 @@ exports.connect = function connect(...args) { const context = options.secureContext || tls.createSecureContext(options); - var tlssock = new TLSSocket(options.socket, { + const tlssock = new TLSSocket(options.socket, { pipe: !!options.path, secureContext: context, isServer: false, diff --git a/lib/child_process.js b/lib/child_process.js index f1b5006242dab5..3be928061e92a1 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -118,7 +118,7 @@ exports.fork = function fork(modulePath /* , args, options */) { exports._forkChild = function _forkChild(fd) { // set process.send() - var p = new Pipe(PipeConstants.IPC); + const p = new Pipe(PipeConstants.IPC); p.open(fd); p.unref(); const control = setupChannel(process, p); @@ -223,7 +223,7 @@ exports.execFile = function execFile(file /* , args, options, callback */) { options.killSignal = sanitizeKillSignal(options.killSignal); - var child = spawn(file, args, { + const child = spawn(file, args, { cwd: options.cwd, env: options.env, gid: options.gid, @@ -234,8 +234,8 @@ exports.execFile = function execFile(file /* , args, options, callback */) { }); var encoding; - var _stdout = []; - var _stderr = []; + const _stdout = []; + const _stderr = []; if (options.encoding !== 'buffer' && Buffer.isEncoding(options.encoding)) { encoding = options.encoding; } else { @@ -346,7 +346,7 @@ exports.execFile = function execFile(file /* , args, options, callback */) { child.stdout.setEncoding(encoding); child.stdout.on('data', function onChildStdout(chunk) { - var encoding = child.stdout._readableState.encoding; + const encoding = child.stdout._readableState.encoding; const length = encoding ? Buffer.byteLength(chunk, encoding) : chunk.length; @@ -369,7 +369,7 @@ exports.execFile = function execFile(file /* , args, options, callback */) { child.stderr.setEncoding(encoding); child.stderr.on('data', function onChildStderr(chunk) { - var encoding = child.stderr._readableState.encoding; + const encoding = child.stderr._readableState.encoding; const length = encoding ? Buffer.byteLength(chunk, encoding) : chunk.length; @@ -521,8 +521,8 @@ function normalizeSpawnArguments(file, args, options) { args.unshift(file); } - var env = options.env || process.env; - var envPairs = []; + const env = options.env || process.env; + const envPairs = []; // process.env.NODE_V8_COVERAGE always propagates, making it possible to // collect coverage for programs that spawn with white-listed environment. @@ -533,7 +533,7 @@ function normalizeSpawnArguments(file, args, options) { } // Prototype values are intentionally included. - for (var key in env) { + for (const key in env) { const value = env[key]; if (value !== undefined) { envPairs.push(`${key}=${value}`); @@ -646,15 +646,15 @@ function checkExecSyncError(ret, args, cmd) { function execFileSync(command, args, options) { - var opts = normalizeSpawnArguments(command, args, options); - var inheritStderr = !opts.options.stdio; + const opts = normalizeSpawnArguments(command, args, options); + const inheritStderr = !opts.options.stdio; - var ret = spawnSync(opts.file, opts.args.slice(1), opts.options); + const ret = spawnSync(opts.file, opts.args.slice(1), opts.options); if (inheritStderr && ret.stderr) process.stderr.write(ret.stderr); - var err = checkExecSyncError(ret, opts.args, undefined); + const err = checkExecSyncError(ret, opts.args, undefined); if (err) throw err; @@ -665,15 +665,15 @@ exports.execFileSync = execFileSync; function execSync(command, options) { - var opts = normalizeExecArgs(command, options, null); - var inheritStderr = !opts.options.stdio; + const opts = normalizeExecArgs(command, options, null); + const inheritStderr = !opts.options.stdio; - var ret = spawnSync(opts.file, opts.options); + const ret = spawnSync(opts.file, opts.options); if (inheritStderr && ret.stderr) process.stderr.write(ret.stderr); - var err = checkExecSyncError(ret, opts.args, command); + const err = checkExecSyncError(ret, opts.args, command); if (err) throw err; diff --git a/lib/dgram.js b/lib/dgram.js index da94e1a9cda01b..ba4524bab2a0fc 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -89,7 +89,7 @@ function Socket(type, listener) { sendBufferSize = options.sendBufferSize; } - var handle = newHandle(type, lookup); + const handle = newHandle(type, lookup); handle[owner_symbol] = this; this[async_id_symbol] = handle.getAsyncId(); @@ -498,7 +498,7 @@ function doSend(ex, self, ip, list, address, port, callback) { return; } - var req = new SendWrap(); + const req = new SendWrap(); req.list = list; // Keep reference alive. req.address = address; req.port = port; @@ -507,12 +507,12 @@ function doSend(ex, self, ip, list, address, port, callback) { req.oncomplete = afterSend; } - var err = state.handle.send(req, - list, - list.length, - port, - ip, - !!callback); + const err = state.handle.send(req, + list, + list.length, + port, + ip, + !!callback); if (err && callback) { // Don't emit as error, dgram_legacy.js compatibility @@ -564,8 +564,8 @@ function socketCloseNT(self) { Socket.prototype.address = function() { healthCheck(this); - var out = {}; - var err = this[kStateSymbol].handle.getsockname(out); + const out = {}; + const err = this[kStateSymbol].handle.getsockname(out); if (err) { throw errnoException(err, 'getsockname'); } @@ -575,7 +575,7 @@ Socket.prototype.address = function() { Socket.prototype.setBroadcast = function(arg) { - var err = this[kStateSymbol].handle.setBroadcast(arg ? 1 : 0); + const err = this[kStateSymbol].handle.setBroadcast(arg ? 1 : 0); if (err) { throw errnoException(err, 'setBroadcast'); } @@ -585,7 +585,7 @@ Socket.prototype.setBroadcast = function(arg) { Socket.prototype.setTTL = function(ttl) { validateNumber(ttl, 'ttl'); - var err = this[kStateSymbol].handle.setTTL(ttl); + const err = this[kStateSymbol].handle.setTTL(ttl); if (err) { throw errnoException(err, 'setTTL'); } @@ -597,7 +597,7 @@ Socket.prototype.setTTL = function(ttl) { Socket.prototype.setMulticastTTL = function(ttl) { validateNumber(ttl, 'ttl'); - var err = this[kStateSymbol].handle.setMulticastTTL(ttl); + const err = this[kStateSymbol].handle.setMulticastTTL(ttl); if (err) { throw errnoException(err, 'setMulticastTTL'); } @@ -607,7 +607,7 @@ Socket.prototype.setMulticastTTL = function(ttl) { Socket.prototype.setMulticastLoopback = function(arg) { - var err = this[kStateSymbol].handle.setMulticastLoopback(arg ? 1 : 0); + const err = this[kStateSymbol].handle.setMulticastLoopback(arg ? 1 : 0); if (err) { throw errnoException(err, 'setMulticastLoopback'); } @@ -635,7 +635,7 @@ Socket.prototype.addMembership = function(multicastAddress, } const { handle } = this[kStateSymbol]; - var err = handle.addMembership(multicastAddress, interfaceAddress); + const err = handle.addMembership(multicastAddress, interfaceAddress); if (err) { throw errnoException(err, 'addMembership'); } @@ -651,7 +651,7 @@ Socket.prototype.dropMembership = function(multicastAddress, } const { handle } = this[kStateSymbol]; - var err = handle.dropMembership(multicastAddress, interfaceAddress); + const err = handle.dropMembership(multicastAddress, interfaceAddress); if (err) { throw errnoException(err, 'dropMembership'); } @@ -678,7 +678,7 @@ function stopReceiving(socket) { function onMessage(nread, handle, buf, rinfo) { - var self = handle[owner_symbol]; + const self = handle[owner_symbol]; if (nread < 0) { return self.emit('error', errnoException(nread, 'recvmsg')); } diff --git a/lib/dns.js b/lib/dns.js index df19807d60206d..3d057d6b50081d 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -70,7 +70,7 @@ function onlookupall(err, addresses) { return this.callback(dnsException(err, 'getaddrinfo', this.hostname)); } - var family = this.family; + const family = this.family; for (var i = 0; i < addresses.length; i++) { const addr = addresses[i]; addresses[i] = { @@ -123,7 +123,7 @@ function lookup(hostname, options, callback) { return {}; } - var matchedFamily = isIP(hostname); + const matchedFamily = isIP(hostname); if (matchedFamily) { if (all) { process.nextTick( @@ -134,13 +134,15 @@ function lookup(hostname, options, callback) { return {}; } - var req = new GetAddrInfoReqWrap(); + const req = new GetAddrInfoReqWrap(); req.callback = callback; req.family = family; req.hostname = hostname; req.oncomplete = all ? onlookupall : onlookup; - var err = cares.getaddrinfo(req, toASCII(hostname), family, hints, verbatim); + const err = cares.getaddrinfo( + req, toASCII(hostname), family, hints, verbatim + ); if (err) { process.nextTick(callback, dnsException(err, 'getaddrinfo', hostname)); return {}; @@ -176,13 +178,13 @@ function lookupService(hostname, port, callback) { port = +port; - var req = new GetNameInfoReqWrap(); + const req = new GetNameInfoReqWrap(); req.callback = callback; req.hostname = hostname; req.port = port; req.oncomplete = onlookupservice; - var err = cares.getnameinfo(req, hostname, port); + const err = cares.getnameinfo(req, hostname, port); if (err) throw dnsException(err, 'getnameinfo', hostname); return req; } @@ -214,13 +216,13 @@ function resolver(bindingName) { throw new ERR_INVALID_CALLBACK(); } - var req = new QueryReqWrap(); + const req = new QueryReqWrap(); req.bindingName = bindingName; req.callback = callback; req.hostname = name; req.oncomplete = onresolve; req.ttl = !!(options && options.ttl); - var err = this._handle[bindingName](req, toASCII(name)); + const err = this._handle[bindingName](req, toASCII(name)); if (err) throw dnsException(err, bindingName, name); return req; } @@ -228,7 +230,7 @@ function resolver(bindingName) { return query; } -var resolveMap = Object.create(null); +const resolveMap = Object.create(null); Resolver.prototype.resolveAny = resolveMap.ANY = resolver('queryAny'); Resolver.prototype.resolve4 = resolveMap.A = resolver('queryA'); Resolver.prototype.resolve6 = resolveMap.AAAA = resolver('queryAaaa'); diff --git a/lib/domain.js b/lib/domain.js index 9c505a5025a9e0..8d7882c3694e25 100644 --- a/lib/domain.js +++ b/lib/domain.js @@ -41,7 +41,7 @@ const { WeakReference } = internalBinding('util'); // Overwrite process.domain with a getter/setter that will allow for more // effective optimizations -var _domain = [null]; +const _domain = [null]; Object.defineProperty(process, 'domain', { enumerable: true, get: function() { @@ -298,7 +298,7 @@ Domain.prototype.enter = function() { Domain.prototype.exit = function() { // Don't do anything if this domain is not on the stack. - var index = stack.lastIndexOf(this); + const index = stack.lastIndexOf(this); if (index === -1) return; // Exit all domains until this one. @@ -347,7 +347,7 @@ Domain.prototype.add = function(ee) { Domain.prototype.remove = function(ee) { ee.domain = null; - var index = this.members.indexOf(ee); + const index = this.members.indexOf(ee); if (index !== -1) this.members.splice(index, 1); }; @@ -389,7 +389,7 @@ function intercepted(_this, self, cb, fnargs) { return; } - var args = []; + const args = []; var i, ret; self.enter(); @@ -407,7 +407,7 @@ function intercepted(_this, self, cb, fnargs) { Domain.prototype.intercept = function(cb) { - var self = this; + const self = this; function runIntercepted() { return intercepted(this, self, cb, arguments); @@ -432,7 +432,7 @@ function bound(_this, self, cb, fnargs) { Domain.prototype.bind = function(cb) { - var self = this; + const self = this; function runBound() { return bound(this, self, cb, arguments); diff --git a/lib/events.js b/lib/events.js index 8a676773b6507a..fd36e20881fe3f 100644 --- a/lib/events.js +++ b/lib/events.js @@ -283,8 +283,8 @@ function onceWrapper(...args) { } function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target, type, listener }; - var wrapped = onceWrapper.bind(state); + const state = { fired: false, wrapFn: undefined, target, type, listener }; + const wrapped = onceWrapper.bind(state); wrapped.listener = listener; state.wrapFn = wrapped; return wrapped; @@ -308,15 +308,15 @@ EventEmitter.prototype.prependOnceListener = // Emits a 'removeListener' event if and only if the listener was removed. EventEmitter.prototype.removeListener = function removeListener(type, listener) { - var list, events, position, i, originalListener; + let originalListener; checkListener(listener); - events = this._events; + const events = this._events; if (events === undefined) return this; - list = events[type]; + const list = events[type]; if (list === undefined) return this; @@ -329,9 +329,9 @@ EventEmitter.prototype.removeListener = this.emit('removeListener', type, list.listener || listener); } } else if (typeof list !== 'function') { - position = -1; + let position = -1; - for (i = list.length - 1; i >= 0; i--) { + for (var i = list.length - 1; i >= 0; i--) { if (list[i] === listener || list[i].listener === listener) { originalListener = list[i].listener; position = i; @@ -364,9 +364,7 @@ EventEmitter.prototype.off = EventEmitter.prototype.removeListener; EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events, i; - - events = this._events; + const events = this._events; if (events === undefined) return this; @@ -396,13 +394,13 @@ EventEmitter.prototype.removeAllListeners = return this; } - listeners = events[type]; + const listeners = events[type]; if (typeof listeners === 'function') { this.removeListener(type, listeners); } else if (listeners !== undefined) { // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { + for (var i = listeners.length - 1; i >= 0; i--) { this.removeListener(type, listeners[i]); } } @@ -465,7 +463,7 @@ EventEmitter.prototype.eventNames = function eventNames() { }; function arrayClone(arr, n) { - var copy = new Array(n); + const copy = new Array(n); for (var i = 0; i < n; ++i) copy[i] = arr[i]; return copy; diff --git a/lib/http.js b/lib/http.js index 5f2fe6dc68f571..5f0b383a480440 100644 --- a/lib/http.js +++ b/lib/http.js @@ -43,7 +43,7 @@ function request(url, options, cb) { } function get(url, options, cb) { - var req = request(url, options, cb); + const req = request(url, options, cb); req.end(); return req; } diff --git a/lib/internal/assert/assertion_error.js b/lib/internal/assert/assertion_error.js index 0e7e8c68954726..2d272907f6b650 100644 --- a/lib/internal/assert/assertion_error.js +++ b/lib/internal/assert/assertion_error.js @@ -292,13 +292,15 @@ class AssertionError extends Error { if (typeof options !== 'object' || options === null) { throw new ERR_INVALID_ARG_TYPE('options', 'Object', options); } - var { - actual, - expected, + const { message, operator, stackStartFn } = options; + let { + actual, + expected + } = options; if (message != null) { super(String(message)); diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index 503564df787172..a8c81eae45a495 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -86,7 +86,7 @@ const handleConversion = { }, got(message, handle, emit) { - var server = new net.Server(); + const server = new net.Server(); server.listen(handle, () => { emit(server); }); @@ -116,7 +116,7 @@ const handleConversion = { socket.server._connections--; } - var handle = socket._handle; + const handle = socket._handle; // Remove handle from socket object, it will be closed when the socket // will be sent @@ -161,7 +161,7 @@ const handleConversion = { }, got(message, handle, emit) { - var socket = new net.Socket({ + const socket = new net.Socket({ handle: handle, readable: true, writable: true @@ -203,7 +203,7 @@ const handleConversion = { }, got(message, handle, emit) { - var socket = new dgram.Socket(message.dgramType); + const socket = new dgram.Socket(message.dgramType); socket.bind(handle, () => { emit(socket); @@ -304,21 +304,19 @@ function closePendingHandle(target) { ChildProcess.prototype.spawn = function(options) { - var ipc; - var ipcFd; - var i; + let i = 0; if (options === null || typeof options !== 'object') { throw new ERR_INVALID_ARG_TYPE('options', 'Object', options); } // If no `stdio` option was given - use default - var stdio = options.stdio || 'pipe'; + let stdio = options.stdio || 'pipe'; stdio = _validateStdio(stdio, false); - ipc = stdio.ipc; - ipcFd = stdio.ipcFd; + const ipc = stdio.ipc; + const ipcFd = stdio.ipcFd; stdio = options.stdio = stdio.stdio; if (ipc !== undefined) { @@ -344,7 +342,7 @@ ChildProcess.prototype.spawn = function(options) { else throw new ERR_INVALID_ARG_TYPE('options.args', 'Array', options.args); - var err = this._handle.spawn(options); + const err = this._handle.spawn(options); // Run-time errors should emit an error, not throw an exception. if (err === UV_EACCES || @@ -505,7 +503,7 @@ function setupChannel(target, channel) { if (StringDecoder === undefined) StringDecoder = require('string_decoder').StringDecoder; - var decoder = new StringDecoder('utf8'); + const decoder = new StringDecoder('utf8'); var jsonBuffer = ''; var pendingHandle = null; channel.buffering = false; @@ -619,7 +617,7 @@ function setupChannel(target, channel) { // a message. target._send({ cmd: 'NODE_HANDLE_ACK' }, null, true); - var obj = handleConversion[message.type]; + const obj = handleConversion[message.type]; // Update simultaneous accepts on Windows if (process.platform === 'win32') { @@ -747,11 +745,11 @@ function setupChannel(target, channel) { return this._handleQueue.length === 1; } - var req = new WriteWrap(); + const req = new WriteWrap(); - var string = JSON.stringify(message) + '\n'; - var err = channel.writeUtf8String(req, string, handle); - var wasAsyncWrite = streamBaseState[kLastWriteWasAsync]; + const string = JSON.stringify(message) + '\n'; + const err = channel.writeUtf8String(req, string, handle); + const wasAsyncWrite = streamBaseState[kLastWriteWasAsync]; if (err === 0) { if (handle) { @@ -854,7 +852,7 @@ function setupChannel(target, channel) { if (!target.channel) return; - var eventName = (internal ? 'internalMessage' : 'message'); + const eventName = (internal ? 'internalMessage' : 'message'); process.nextTick(emit, eventName, message, handle); } @@ -984,7 +982,7 @@ function _validateStdio(stdio, sync) { function getSocketList(type, worker, key) { - var sockets = worker.channel.sockets[type]; + const sockets = worker.channel.sockets[type]; var socketList = sockets[key]; if (!socketList) { var Construct = type === 'send' ? SocketListSend : SocketListReceive; @@ -1003,8 +1001,8 @@ function maybeClose(subprocess) { } function spawnSync(opts) { - var options = opts.options; - var result = spawn_sync.spawn(options); + const options = opts.options; + const result = spawn_sync.spawn(options); if (result.output && options.encoding && options.encoding !== 'buffer') { for (var i = 0; i < result.output.length; i++) { diff --git a/lib/internal/console/constructor.js b/lib/internal/console/constructor.js index 12dcee7c7715ff..d329710c88787d 100644 --- a/lib/internal/console/constructor.js +++ b/lib/internal/console/constructor.js @@ -106,7 +106,7 @@ function Console(options /* or: stdout, stderr, ignoreErrors = true */) { } // Bind the prototype functions to this Console instance - var keys = Object.keys(Console.prototype); + const keys = Object.keys(Console.prototype); for (var v = 0; v < keys.length; v++) { var k = keys[v]; // We have to bind the methods grabbed from the instance instead of from diff --git a/lib/internal/crypto/sig.js b/lib/internal/crypto/sig.js index 10c044f82d0a2e..2c3ebc80c4ba36 100644 --- a/lib/internal/crypto/sig.js +++ b/lib/internal/crypto/sig.js @@ -118,9 +118,9 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) { sigEncoding = sigEncoding || getDefaultEncoding(); // Options specific to RSA - var rsaPadding = getPadding(options); + const rsaPadding = getPadding(options); - var pssSaltLength = getSaltLength(options); + const pssSaltLength = getSaltLength(options); signature = validateArrayBufferView(toBuf(signature, sigEncoding), 'signature'); diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index 33cfcf9d53a4c4..30458784fbddc8 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -321,8 +321,8 @@ class TextEncoder { validateEncoder(this); if (typeof depth === 'number' && depth < 0) return opts.stylize('[Object]', 'special'); - var ctor = getConstructorOf(this); - var obj = Object.create({ + const ctor = getConstructorOf(this); + const obj = Object.create({ constructor: ctor === null ? TextEncoder : ctor }); obj.encoding = this.encoding; @@ -516,8 +516,8 @@ function makeTextDecoderJS() { validateDecoder(this); if (typeof depth === 'number' && depth < 0) return opts.stylize('[Object]', 'special'); - var ctor = getConstructorOf(this); - var obj = Object.create({ + const ctor = getConstructorOf(this); + const obj = Object.create({ constructor: ctor === null ? TextDecoder : ctor }); obj.encoding = this.encoding; diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index c796371ef242ed..fcbe16ca4893f8 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -97,7 +97,7 @@ function stat(filename) { } function updateChildren(parent, child, scan) { - var children = parent && parent.children; + const children = parent && parent.children; if (children && !(scan && children.includes(child))) children.push(child); } @@ -294,9 +294,9 @@ Module._findPath = function(request, paths, isMain) { return false; } - var cacheKey = request + '\x00' + + const cacheKey = request + '\x00' + (paths.length === 1 ? paths[0] : paths.join('\x00')); - var entry = Module._pathCache[cacheKey]; + const entry = Module._pathCache[cacheKey]; if (entry) return entry; @@ -378,8 +378,8 @@ Module._findPath = function(request, paths, isMain) { }; // 'node_modules' character codes reversed -var nmChars = [ 115, 101, 108, 117, 100, 111, 109, 95, 101, 100, 111, 110 ]; -var nmLen = nmChars.length; +const nmChars = [ 115, 101, 108, 117, 100, 111, 109, 95, 101, 100, 111, 110 ]; +const nmLen = nmChars.length; if (isWindows) { // 'from' is the __dirname of the module. Module._nodeModulePaths = function(from) { @@ -465,8 +465,8 @@ if (isWindows) { // 'index.' character codes -var indexChars = [ 105, 110, 100, 101, 120, 46 ]; -var indexLen = indexChars.length; +const indexChars = [ 105, 110, 100, 101, 120, 46 ]; +const indexLen = indexChars.length; Module._resolveLookupPaths = function(request, parent, newReturn) { if (NativeModule.canBeRequiredByUsers(request)) { debug('looking for %j in []', request); @@ -560,7 +560,7 @@ Module._resolveLookupPaths = function(request, parent, newReturn) { debug('RELATIVE: requested: %s set ID to: %s from %s', request, id, parent.id); - var parentDir = [path.dirname(parent.filename)]; + const parentDir = [path.dirname(parent.filename)]; debug('looking for %j in %j', id, parentDir); return (newReturn ? parentDir : [id, parentDir]); }; @@ -577,9 +577,9 @@ Module._load = function(request, parent, isMain) { debug('Module._load REQUEST %s parent: %s', request, parent.id); } - var filename = Module._resolveFilename(request, parent, isMain); + const filename = Module._resolveFilename(request, parent, isMain); - var cachedModule = Module._cache[filename]; + const cachedModule = Module._cache[filename]; if (cachedModule) { updateChildren(parent, cachedModule, true); return cachedModule.exports; @@ -592,7 +592,7 @@ Module._load = function(request, parent, isMain) { } // Don't call updateChildren(), Module constructor already does. - var module = new Module(filename, parent); + const module = new Module(filename, parent); if (isMain) { process.mainModule = module; @@ -649,7 +649,7 @@ Module._resolveFilename = function(request, parent, isMain, options) { } // Look up the filename first, since that's the cache key. - var filename = Module._findPath(request, paths, isMain); + const filename = Module._findPath(request, paths, isMain); if (!filename) { // eslint-disable-next-line no-restricted-syntax var err = new Error(`Cannot find module '${request}'`); @@ -668,7 +668,7 @@ Module.prototype.load = function(filename) { this.filename = filename; this.paths = Module._nodeModulePaths(path.dirname(filename)); - var extension = findLongestRegisteredExtension(filename); + const extension = findLongestRegisteredExtension(filename); Module._extensions[extension](this, filename); this.loaded = true; @@ -792,12 +792,12 @@ Module.prototype._compile = function(content, filename) { inspectorWrapper = internalBinding('inspector').callAndPauseOnStart; } } - var dirname = path.dirname(filename); - var require = makeRequireFunction(this); + const dirname = path.dirname(filename); + const require = makeRequireFunction(this); var result; - var exports = this.exports; - var thisValue = exports; - var module = this; + const exports = this.exports; + const thisValue = exports; + const module = this; if (inspectorWrapper) { result = inspectorWrapper(compiledWrapper, thisValue, exports, require, module, filename, dirname); @@ -812,7 +812,7 @@ Module.prototype._compile = function(content, filename) { // Native extension for .js Module._extensions['.js'] = function(module, filename) { - var content = fs.readFileSync(filename, 'utf8'); + const content = fs.readFileSync(filename, 'utf8'); module._compile(stripBOM(content), filename); }; @@ -924,7 +924,7 @@ Module._preloadModules = function(requests) { // Preloaded modules have a dummy parent module which is deemed to exist // in the current working directory. This seeds the search path for // preloaded modules. - var parent = new Module('internal/preload', null); + const parent = new Module('internal/preload', null); try { parent.paths = Module._nodeModulePaths(process.cwd()); } catch (e) { diff --git a/lib/internal/socket_list.js b/lib/internal/socket_list.js index 8cd7b1e0ed9057..e6b2a1d7c6a84d 100644 --- a/lib/internal/socket_list.js +++ b/lib/internal/socket_list.js @@ -14,7 +14,7 @@ class SocketListSend extends EventEmitter { } _request(msg, cmd, swallowErrors, callback) { - var self = this; + const self = this; if (!this.child.connected) return onclose(); this.child._send(msg, undefined, swallowErrors); diff --git a/lib/internal/stream_base_commons.js b/lib/internal/stream_base_commons.js index 4f52553692a402..a6805e39be8390 100644 --- a/lib/internal/stream_base_commons.js +++ b/lib/internal/stream_base_commons.js @@ -77,7 +77,7 @@ function onWriteComplete(status) { } function createWriteWrap(handle) { - var req = new WriteWrap(); + const req = new WriteWrap(); req.handle = handle; req.oncomplete = onWriteComplete; @@ -90,7 +90,7 @@ function createWriteWrap(handle) { function writevGeneric(self, data, cb) { const req = createWriteWrap(self[kHandle]); - var allBuffers = data.allBuffers; + const allBuffers = data.allBuffers; var chunks; var i; if (allBuffers) { @@ -105,7 +105,7 @@ function writevGeneric(self, data, cb) { chunks[i * 2 + 1] = entry.encoding; } } - var err = req.handle.writev(req, chunks, allBuffers); + const err = req.handle.writev(req, chunks, allBuffers); // Retain chunks if (err === 0) req._chunks = chunks; @@ -116,7 +116,7 @@ function writevGeneric(self, data, cb) { function writeGeneric(self, data, encoding, cb) { const req = createWriteWrap(self[kHandle]); - var err = handleWriteReq(req, data, encoding); + const err = handleWriteReq(req, data, encoding); afterWriteDispatched(self, req, err, cb); return req; diff --git a/lib/internal/streams/legacy.js b/lib/internal/streams/legacy.js index 41f39cc5f441bf..3898fde80a7f5a 100644 --- a/lib/internal/streams/legacy.js +++ b/lib/internal/streams/legacy.js @@ -9,7 +9,7 @@ function Stream() { util.inherits(Stream, EE); Stream.prototype.pipe = function(dest, options) { - var source = this; + const source = this; function ondata(chunk) { if (dest.writable && dest.write(chunk) === false && source.pause) { diff --git a/lib/internal/url.js b/lib/internal/url.js index f5295e98dfb52e..c066059f2c31fc 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -192,19 +192,19 @@ class URLSearchParams { if (typeof recurseTimes === 'number' && recurseTimes < 0) return ctx.stylize('[Object]', 'special'); - var separator = ', '; - var innerOpts = { ...ctx }; + const separator = ', '; + const innerOpts = { ...ctx }; if (recurseTimes !== null) { innerOpts.depth = recurseTimes - 1; } - var innerInspect = (v) => inspect(v, innerOpts); + const innerInspect = (v) => inspect(v, innerOpts); - var list = this[searchParams]; - var output = []; + const list = this[searchParams]; + const output = []; for (var i = 0; i < list.length; i += 2) output.push(`${innerInspect(list[i])} => ${innerInspect(list[i + 1])}`); - var length = output.reduce( + const length = output.reduce( (prev, cur) => prev + removeColors(cur).length + separator.length, -separator.length ); @@ -220,7 +220,7 @@ class URLSearchParams { function onParseComplete(flags, protocol, username, password, host, port, path, query, fragment) { - var ctx = this[context]; + const ctx = this[context]; ctx.flags = flags; ctx.scheme = protocol; ctx.username = (flags & URL_FLAGS_HAS_USERNAME) !== 0 ? username : ''; @@ -343,9 +343,9 @@ class URL { if (typeof depth === 'number' && depth < 0) return opts.stylize('[Object]', 'special'); - var ctor = getConstructorOf(this); + const ctor = getConstructorOf(this); - var obj = Object.create({ + const obj = Object.create({ constructor: ctor === null ? URL : ctor }); @@ -1253,7 +1253,7 @@ function domainToUnicode(domain) { // options object as expected by the http.request and https.request // APIs. function urlToOptions(url) { - var options = { + const options = { protocol: url.protocol, hostname: typeof url.hostname === 'string' && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : @@ -1276,7 +1276,7 @@ function urlToOptions(url) { const forwardSlashRegEx = /\//g; function getPathFromURLWin32(url) { - var hostname = url.hostname; + const hostname = url.hostname; var pathname = url.pathname; for (var n = 0; n < pathname.length; n++) { if (pathname[n] === '%') { @@ -1315,7 +1315,7 @@ function getPathFromURLPosix(url) { if (url.hostname !== '') { throw new ERR_INVALID_FILE_URL_HOST(platform); } - var pathname = url.pathname; + const pathname = url.pathname; for (var n = 0; n < pathname.length; n++) { if (pathname[n] === '%') { var third = pathname.codePointAt(n + 2) | 0x20; @@ -1389,7 +1389,7 @@ function toPathIfFileURL(fileURLOrPath) { function constructUrl(flags, protocol, username, password, host, port, path, query, fragment) { - var ctx = new URLContext(); + const ctx = new URLContext(); ctx.flags = flags; ctx.scheme = protocol; ctx.username = (flags & URL_FLAGS_HAS_USERNAME) !== 0 ? username : ''; diff --git a/lib/internal/util.js b/lib/internal/util.js index f5b5fbedd46b4f..2800f6122f8441 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -212,7 +212,7 @@ function getSignalsToNamesMapping() { return signalsToNamesMapping; signalsToNamesMapping = Object.create(null); - for (var key in signals) { + for (const key in signals) { signalsToNamesMapping[signals[key]] = key; } diff --git a/lib/net.js b/lib/net.js index d6d5327f7c513a..fb74e7eb6b0f35 100644 --- a/lib/net.js +++ b/lib/net.js @@ -153,10 +153,10 @@ function createServer(options, connectionListener) { // connect(path, [cb]); // function connect(...args) { - var normalized = normalizeArgs(args); - var options = normalized[0]; + const normalized = normalizeArgs(args); + const options = normalized[0]; debug('createConnection', normalized); - var socket = new Socket(options); + const socket = new Socket(options); if (options.timeout) { socket.setTimeout(options.timeout); @@ -201,7 +201,7 @@ function normalizeArgs(args) { } } - var cb = args[args.length - 1]; + const cb = args[args.length - 1]; if (typeof cb !== 'function') arr = [options, null]; else @@ -359,11 +359,11 @@ Socket.prototype._final = function(cb) { debug('_final: not ended, call shutdown()'); - var req = new ShutdownWrap(); + const req = new ShutdownWrap(); req.oncomplete = afterShutdown; req.handle = this._handle; req.callback = cb; - var err = this._handle.shutdown(req); + const err = this._handle.shutdown(req); if (err === 1) // synchronous finish return afterShutdown.call(req, 0); @@ -373,7 +373,7 @@ Socket.prototype._final = function(cb) { function afterShutdown(status) { - var self = this.handle[owner_symbol]; + const self = this.handle[owner_symbol]; debug('afterShutdown destroyed=%j', self.destroyed, self._readableState); @@ -400,7 +400,7 @@ function writeAfterFIN(chunk, encoding, cb) { } // eslint-disable-next-line no-restricted-syntax - var er = new Error('This socket has been ended by the other party'); + const er = new Error('This socket has been ended by the other party'); er.code = 'EPIPE'; // TODO: defer error events consistently everywhere, not just the cb this.emit('error', er); @@ -875,8 +875,8 @@ Socket.prototype.connect = function(...args) { } else { normalized = normalizeArgs(args); } - var options = normalized[0]; - var cb = normalized[1]; + const options = normalized[0]; + const cb = normalized[1]; if (this.write !== Socket.prototype.write) this.write = Socket.prototype.write; @@ -889,7 +889,7 @@ Socket.prototype.connect = function(...args) { } const { path } = options; - var pipe = !!path; + const pipe = !!path; debug('pipe', pipe, path); if (!this._handle) { @@ -921,8 +921,9 @@ Socket.prototype.connect = function(...args) { function lookupAndConnect(self, options) { - var { port, localAddress, localPort } = options; - var host = options.host || 'localhost'; + const { localAddress, localPort } = options; + const host = options.host || 'localhost'; + let { port } = options; if (localAddress && !isIP(localAddress)) { throw new ERR_INVALID_IP_ADDRESS(localAddress); @@ -944,7 +945,7 @@ function lookupAndConnect(self, options) { port |= 0; // If host is an IP, skip performing a lookup - var addressType = isIP(host); + const addressType = isIP(host); if (addressType) { defaultTriggerAsyncIdScope(self[async_id_symbol], process.nextTick, () => { if (self.connecting) @@ -963,7 +964,7 @@ function lookupAndConnect(self, options) { if (dns === undefined) dns = require('dns'); - var dnsopts = { + const dnsopts = { family: options.family, hints: options.hints || 0 }; @@ -978,7 +979,7 @@ function lookupAndConnect(self, options) { debug('connect: find host', host); debug('connect: dns options', dnsopts); self._host = host; - var lookup = options.lookup || dns.lookup; + const lookup = options.lookup || dns.lookup; defaultTriggerAsyncIdScope(self[async_id_symbol], function() { lookup(host, dnsopts, function emitLookup(err, ip, addressType) { self.emit('lookup', err, ip, addressType, host); @@ -1051,7 +1052,7 @@ Socket.prototype.unref = function() { function afterConnect(status, handle, req, readable, writable) { - var self = handle[owner_symbol]; + const self = handle[owner_symbol]; // Callback may come after call to destroy if (self.destroyed) { @@ -1252,7 +1253,7 @@ function setupListenHandle(address, port, addressType, backlog, fd, flags) { // Use a backlog of 512 entries. We pass 511 to the listen() call because // the kernel does: backlogsize = roundup_pow_of_two(backlogsize + 1); // which will thus give us a backlog of 512 entries. - var err = this._handle.listen(backlog || 511); + const err = this._handle.listen(backlog || 511); if (err) { var ex = uvExceptionWithHostPort(err, 'listen', address, port); @@ -1336,9 +1337,9 @@ function listenInCluster(server, address, port, addressType, Server.prototype.listen = function(...args) { - var normalized = normalizeArgs(args); + const normalized = normalizeArgs(args); var options = normalized[0]; - var cb = normalized[1]; + const cb = normalized[1]; if (this._handle) { throw new ERR_SERVER_ALREADY_LISTEN(); @@ -1347,7 +1348,7 @@ Server.prototype.listen = function(...args) { if (cb !== null) { this.once('listening', cb); } - var backlogFromArgs = + const backlogFromArgs = // (handle, backlog) or (path, backlog) or (port, backlog) toNumber(args.length > 1 && args[1]) || toNumber(args.length > 2 && args[2]); // (port, host, backlog) @@ -1472,8 +1473,8 @@ Server.prototype.address = function() { }; function onconnection(err, clientHandle) { - var handle = this; - var self = handle[owner_symbol]; + const handle = this; + const self = handle[owner_symbol]; debug('onconnection'); @@ -1487,7 +1488,7 @@ function onconnection(err, clientHandle) { return; } - var socket = new Socket({ + const socket = new Socket({ handle: clientHandle, allowHalfOpen: self.allowHalfOpen, pauseOnCreate: self.pauseOnConnect, diff --git a/lib/path.js b/lib/path.js index a41787dd66f61e..3bfb746251b05b 100644 --- a/lib/path.js +++ b/lib/path.js @@ -819,7 +819,7 @@ const win32 = { if (path.length === 0) return ret; - var len = path.length; + const len = path.length; var rootEnd = 0; let code = path.charCodeAt(0); diff --git a/lib/querystring.js b/lib/querystring.js index bfb6fa33327d0c..240e2e70d6a3f8 100644 --- a/lib/querystring.js +++ b/lib/querystring.js @@ -64,14 +64,14 @@ const unhexTable = [ ]; // A safe fast alternative to decodeURIComponent function unescapeBuffer(s, decodeSpaces) { - var out = Buffer.allocUnsafe(s.length); + const out = Buffer.allocUnsafe(s.length); var index = 0; var outIndex = 0; var currentChar; var nextChar; var hexHigh; var hexLow; - var maxLength = s.length - 2; + const maxLength = s.length - 2; // Flag to know if some hex chars have been decoded var hasHex = false; while (index < s.length) { @@ -214,8 +214,8 @@ function parse(qs, sep, eq, options) { return obj; } - var sepCodes = (!sep ? defSepCodes : charCodes(sep + '')); - var eqCodes = (!eq ? defEqCodes : charCodes(eq + '')); + const sepCodes = (!sep ? defSepCodes : charCodes(sep + '')); + const eqCodes = (!eq ? defEqCodes : charCodes(eq + '')); const sepLen = sepCodes.length; const eqLen = eqCodes.length; diff --git a/lib/readline.js b/lib/readline.js index ffd7cf187411ff..b419c0e12fe760 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -140,7 +140,7 @@ function Interface(input, output, completer, terminal) { terminal = !!output.isTTY; } - var self = this; + const self = this; this.output = output; this.input = input; @@ -346,16 +346,16 @@ Interface.prototype._addHistory = function() { Interface.prototype._refreshLine = function() { // line length - var line = this._prompt + this.line; - var dispPos = this._getDisplayPos(line); - var lineCols = dispPos.cols; - var lineRows = dispPos.rows; + const line = this._prompt + this.line; + const dispPos = this._getDisplayPos(line); + const lineCols = dispPos.cols; + const lineRows = dispPos.rows; // cursor position - var cursorPos = this._getCursorPos(); + const cursorPos = this._getCursorPos(); // First move to the bottom of the current line, based on cursor pos - var prevRows = this.prevRows || 0; + const prevRows = this.prevRows || 0; if (prevRows > 0) { moveCursor(this.output, 0, -prevRows); } @@ -376,7 +376,7 @@ Interface.prototype._refreshLine = function() { // Move cursor to original position. cursorTo(this.output, cursorPos.cols); - var diff = lineRows - cursorPos.rows; + const diff = lineRows - cursorPos.rows; if (diff > 0) { moveCursor(this.output, 0, -diff); } @@ -431,7 +431,7 @@ Interface.prototype._normalWrite = function(b) { } // Run test() on the new string chunk, not on the entire line buffer. - var newPartContainsEnding = lineEnding.test(string); + const newPartContainsEnding = lineEnding.test(string); if (this._line_buffer) { string = this._line_buffer + string; @@ -476,7 +476,7 @@ Interface.prototype._insertString = function(c) { }; Interface.prototype._tabComplete = function(lastKeypressWasTab) { - var self = this; + const self = this; self.pause(); self.completer(self.line.slice(0, self.cursor), function onComplete(err, rv) { @@ -530,7 +530,7 @@ function handleGroup(self, group, width, maxColumns) { if (group.length === 0) { return; } - var minRows = Math.ceil(group.length / maxColumns); + const minRows = Math.ceil(group.length / maxColumns); for (var row = 0; row < minRows; row++) { for (var col = 0; col < maxColumns; col++) { var idx = row * maxColumns + col; @@ -555,9 +555,9 @@ function commonPrefix(strings) { return ''; } if (strings.length === 1) return strings[0]; - var sorted = strings.slice().sort(); - var min = sorted[0]; - var max = sorted[sorted.length - 1]; + const sorted = strings.slice().sort(); + const min = sorted[0]; + const max = sorted[sorted.length - 1]; for (var i = 0, len = min.length; i < len; i++) { if (min[i] !== max[i]) { return min.slice(0, i); @@ -670,7 +670,7 @@ Interface.prototype.clearLine = function() { Interface.prototype._line = function() { - var line = this._addHistory(); + const line = this._addHistory(); this.clearLine(); this._onLine(line); }; @@ -706,7 +706,7 @@ Interface.prototype._historyPrev = function() { // Returns the last character's display position of the given string Interface.prototype._getDisplayPos = function(str) { var offset = 0; - var col = this.columns; + const col = this.columns; var row = 0; var code; str = stripVTControlCharacters(str); @@ -730,17 +730,18 @@ Interface.prototype._getDisplayPos = function(str) { offset += 2; } } - var cols = offset % col; - var rows = row + (offset - cols) / col; + const cols = offset % col; + const rows = row + (offset - cols) / col; return { cols: cols, rows: rows }; }; // Returns current cursor's position and line Interface.prototype._getCursorPos = function() { - var columns = this.columns; - var strBeforeCursor = this._prompt + this.line.substring(0, this.cursor); - var dispPos = this._getDisplayPos(stripVTControlCharacters(strBeforeCursor)); + const columns = this.columns; + const strBeforeCursor = this._prompt + this.line.substring(0, this.cursor); + const dispPos = this._getDisplayPos( + stripVTControlCharacters(strBeforeCursor)); var cols = dispPos.cols; var rows = dispPos.rows; // If the cursor is on a full-width character which steps over the line, @@ -758,15 +759,15 @@ Interface.prototype._getCursorPos = function() { // This function moves cursor dx places to the right // (-dx for left) and refreshes the line if it is needed Interface.prototype._moveCursor = function(dx) { - var oldcursor = this.cursor; - var oldPos = this._getCursorPos(); + const oldcursor = this.cursor; + const oldPos = this._getCursorPos(); this.cursor += dx; // bounds check if (this.cursor < 0) this.cursor = 0; else if (this.cursor > this.line.length) this.cursor = this.line.length; - var newPos = this._getCursorPos(); + const newPos = this._getCursorPos(); // Check if cursors are in the same line if (oldPos.rows === newPos.rows) { diff --git a/lib/repl.js b/lib/repl.js index 2770478e83ce2a..28c18859697655 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -548,7 +548,7 @@ function REPLServer(prompt, } function _parseREPLKeyword(keyword, rest) { - var cmd = this.commands[keyword]; + const cmd = this.commands[keyword]; if (cmd) { cmd.action.call(this, rest); return true; @@ -580,7 +580,7 @@ function REPLServer(prompt, return; } - var empty = self.line.length === 0; + const empty = self.line.length === 0; self.clearLine(); _turnOffEditorMode(self); @@ -774,12 +774,12 @@ exports.start = function(prompt, useGlobal, ignoreUndefined, replMode) { - var repl = new REPLServer(prompt, - source, - eval_, - useGlobal, - ignoreUndefined, - replMode); + const repl = new REPLServer(prompt, + source, + eval_, + useGlobal, + ignoreUndefined, + replMode); if (!exports.repl) exports.repl = repl; replMap.set(repl, repl); return repl; @@ -835,7 +835,7 @@ REPLServer.prototype.createContext = function() { }); } - var module = new CJSModule(''); + const module = new CJSModule(''); module.paths = CJSModule._resolveLookupPaths('', parentModule, true) || []; diff --git a/lib/tls.js b/lib/tls.js index b1bb591760f10c..2be6a15bc5c5e6 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -66,7 +66,7 @@ exports.getCiphers = internalUtil.cachedResult( function convertProtocols(protocols) { const lens = new Array(protocols.length); const buff = Buffer.allocUnsafe(protocols.reduce((p, c, i) => { - var len = Buffer.byteLength(c); + const len = Buffer.byteLength(c); if (len > 255) { throw new ERR_OUT_OF_RANGE('The byte length of the protocol at index ' + `${i} exceeds the maximum length.`, '<= 255', len, true); diff --git a/lib/url.js b/lib/url.js index a51e98ceb82a21..079e54b94dfdd3 100644 --- a/lib/url.js +++ b/lib/url.js @@ -145,7 +145,7 @@ let querystring; function urlParse(url, parseQueryString, slashesDenoteHost) { if (url instanceof Url) return url; - var urlObject = new Url(); + const urlObject = new Url(); urlObject.parse(url, parseQueryString, slashesDenoteHost); return urlObject; } @@ -675,8 +675,8 @@ Url.prototype.resolveObject = function resolveObject(relative) { relative = rel; } - var result = new Url(); - var tkeys = Object.keys(this); + const result = new Url(); + const tkeys = Object.keys(this); for (var tk = 0; tk < tkeys.length; tk++) { var tkey = tkeys[tk]; result[tkey] = this[tkey]; @@ -762,16 +762,16 @@ Url.prototype.resolveObject = function resolveObject(relative) { return result; } - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'); - var isRelAbs = ( + const isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'); + const isRelAbs = ( relative.host || relative.pathname && relative.pathname.charAt(0) === '/' ); var mustEndAbs = (isRelAbs || isSourceAbs || (result.host && relative.pathname)); - var removeAllDots = mustEndAbs; + const removeAllDots = mustEndAbs; var srcPath = result.pathname && result.pathname.split('/') || []; - var relPath = relative.pathname && relative.pathname.split('/') || []; - var noLeadingSlashes = result.protocol && + const relPath = relative.pathname && relative.pathname.split('/') || []; + const noLeadingSlashes = result.protocol && !slashedProtocol.has(result.protocol); // If the url is a non-slashed url, then relative @@ -868,7 +868,7 @@ Url.prototype.resolveObject = function resolveObject(relative) { // however, if it ends in anything else non-slashy, // then it must NOT get a trailing slash. var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( + const hasTrailingSlash = ( (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''); @@ -904,7 +904,7 @@ Url.prototype.resolveObject = function resolveObject(relative) { srcPath.push(''); } - var isAbsolute = srcPath[0] === '' || + const isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/'); // put the host back diff --git a/lib/zlib.js b/lib/zlib.js index 09c3419b4d0b7c..116c89d674fef5 100644 --- a/lib/zlib.js +++ b/lib/zlib.js @@ -152,7 +152,7 @@ function zlibBufferSync(engine, buffer) { } function zlibOnError(message, errno, code) { - var self = this[owner_symbol]; + const self = this[owner_symbol]; // There is no way to cleanly recover. // Continuing only obscures problems. _close(self); @@ -322,7 +322,7 @@ function maxFlush(a, b) { const flushBuffer = Buffer.alloc(0); ZlibBase.prototype.flush = function(kind, callback) { - var ws = this._writableState; + const ws = this._writableState; if (typeof kind === 'function' || (kind === undefined && !callback)) { callback = kind; @@ -365,7 +365,7 @@ ZlibBase.prototype._transform = function(chunk, encoding, cb) { } // For the last chunk, also apply `_finishFlushFlag`. - var ws = this._writableState; + const ws = this._writableState; if ((ws.ending || ws.ended) && ws.length === chunk.byteLength) { flushFlag = maxFlush(flushFlag, this._finishFlushFlag); } @@ -390,11 +390,11 @@ function processChunkSync(self, chunk, flushFlag) { var buffers = null; var nread = 0; var inputRead = 0; - var state = self._writeState; - var handle = self._handle; + const state = self._writeState; + const handle = self._handle; var buffer = self._outBuffer; var offset = self._outOffset; - var chunkSize = self._chunkSize; + const chunkSize = self._chunkSize; var error; self.on('error', function onError(er) { @@ -464,7 +464,7 @@ function processChunkSync(self, chunk, flushFlag) { } function processChunk(self, chunk, flushFlag, cb) { - var handle = self._handle; + const handle = self._handle; assert(handle, 'zlib binding closed'); handle.buffer = chunk; @@ -487,9 +487,9 @@ function processCallback() { // This callback's context (`this`) is the `_handle` (ZCtx) object. It is // important to null out the values once they are no longer needed since // `_handle` can stay in memory long after the buffer is needed. - var handle = this; - var self = this[owner_symbol]; - var state = self._writeState; + const handle = this; + const self = this[owner_symbol]; + const state = self._writeState; if (self._hadError) { this.buffer = null; @@ -501,13 +501,13 @@ function processCallback() { return; } - var availOutAfter = state[0]; - var availInAfter = state[1]; + const availOutAfter = state[0]; + const availInAfter = state[1]; const inDelta = handle.availInBefore - availInAfter; self.bytesWritten += inDelta; - var have = handle.availOutBefore - availOutAfter; + const have = handle.availOutBefore - availOutAfter; if (have > 0) { var out = self._outBuffer.slice(self._outOffset, self._outOffset + have); self._outOffset += have; From 7fe43bd81af9435b03965d890931b53feeb7be85 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 25 Mar 2019 11:43:21 +0100 Subject: [PATCH 059/133] build: remove unused label from vcbuild.bat Remove the :wix-not-found label and harmonize the spelling of "WiX". PR-URL: https://github.com/nodejs/node/pull/26901 Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Reviewed-By: Beth Griggs Reviewed-By: Richard Lau Signed-off-by: Beth Griggs --- vcbuild.bat | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/vcbuild.bat b/vcbuild.bat index 18c187b62e024f..852ddd4088e310 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -243,7 +243,7 @@ if defined msi ( goto msbuild-not-found ) if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the Wix Toolset Visual Studio 2017 Extension + echo Failed to find the WiX Toolset Visual Studio 2017 Extension goto msbuild-not-found ) ) @@ -270,10 +270,6 @@ echo Try to run in a "Developer Command Prompt" or consult echo https://github.com/nodejs/node/blob/master/BUILDING.md#windows-1 goto exit -:wix-not-found -echo Build skipped. To generate installer, you need to install Wix. -goto install-doctools - :msbuild-found set project_generated= From dc9ce86aaab5d97b36b44a0dc40800912be75a7c Mon Sep 17 00:00:00 2001 From: Daijiro Wachi Date: Sun, 24 Mar 2019 23:06:04 +0900 Subject: [PATCH 060/133] tools: update dependencies in lint-md-cli-rollup Summary + Update `@zeit/ncc` to `^0.16.1` from `^0.15.2` + Update `unified-engine` to `^6.0.1` from `^5.1.0` + Run `npm audit fix` + Run `npm run build-node` Refs: + https://github.com/unifiedjs/unified-engine/releases/tag/6.0.0 + https://github.com/unifiedjs/unified-engine/releases/tag/6.0.1 + https://github.com/zeit/ncc/releases/tag/0.16.0 + https://github.com/zeit/ncc/releases/tag/0.16.1 PR-URL: https://github.com/nodejs/node/pull/26889 Refs: https://github.com/unifiedjs/unified-engine/releases/tag/6.0.0 Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott Reviewed-By: Yuta Hiroto Signed-off-by: Beth Griggs --- tools/lint-md.js | 2 +- .../node-lint-md-cli-rollup/package-lock.json | 318 ++++++++---------- tools/node-lint-md-cli-rollup/package.json | 4 +- 3 files changed, 146 insertions(+), 178 deletions(-) diff --git a/tools/lint-md.js b/tools/lint-md.js index b8feabc18697b9..2211575706cd72 100644 --- a/tools/lint-md.js +++ b/tools/lint-md.js @@ -1 +1 @@ -module.exports=function(e,r){"use strict";var t={};function __webpack_require__(r){if(t[r]){return t[r].exports}var i=t[r]={i:r,l:false,exports:{}};e[r].call(i.exports,i,i.exports,__webpack_require__);i.l=true;return i.exports}function startup(){return __webpack_require__(21)}r(__webpack_require__);return startup()}([,,,,function(e){"use strict";e.exports=tableCell;function tableCell(e){return this.all(e).join("")}},,,function(e,r,t){var i=t(887);var n=t(589).join;var a=t(531);var u="/etc";var s=process.platform==="win32";var o=s?process.env.USERPROFILE:process.env.HOME;e.exports=function(e,r,f,l){if("string"!==typeof e)throw new Error("rc(name): name *must* be string");if(!f)f=t(20)(process.argv.slice(2));r=("string"===typeof r?i.json(r):r)||{};l=l||i.parse;var c=i.env(e+"_");var h=[r];var p=[];function addConfigFile(e){if(p.indexOf(e)>=0)return;var r=i.file(e);if(r){h.push(l(r));p.push(e)}}if(!s)[n(u,e,"config"),n(u,e+"rc")].forEach(addConfigFile);if(o)[n(o,".config",e,"config"),n(o,".config",e),n(o,"."+e,"config"),n(o,"."+e+"rc")].forEach(addConfigFile);addConfigFile(i.find("."+e+"rc"));if(c.config)addConfigFile(c.config);if(f.config)addConfigFile(f.config);return a.apply(null,h.concat([c,f,p.length?{configs:p,config:p[p.length-1]}:undefined]))}},function(e){"use strict";if(!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){e.exports={nextTick:nextTick}}else{e.exports=process}function nextTick(e,r,t,i){if(typeof e!=="function"){throw new TypeError('"callback" argument must be a function')}var n=arguments.length;var a,u;switch(n){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick(function afterTickOne(){e.call(null,r)});case 3:return process.nextTick(function afterTickTwo(){e.call(null,r,t)});case 4:return process.nextTick(function afterTickThree(){e.call(null,r,t,i)});default:a=new Array(n-1);u=0;while(u{if(typeof r==="string"){t=r;r=null}try{try{return JSON.parse(e,r)}catch(t){n(e,r);throw t}}catch(e){e.message=e.message.replace(/\n/g,"");const r=new a(e);if(t){r.fileName=t}throw r}})},,,,,,function(e){e.exports=function(e,r){if(!r)r={};var t={bools:{},strings:{},unknownFn:null};if(typeof r["unknown"]==="function"){t.unknownFn=r["unknown"]}if(typeof r["boolean"]==="boolean"&&r["boolean"]){t.allBools=true}else{[].concat(r["boolean"]).filter(Boolean).forEach(function(e){t.bools[e]=true})}var i={};Object.keys(r.alias||{}).forEach(function(e){i[e]=[].concat(r.alias[e]);i[e].forEach(function(r){i[r]=[e].concat(i[e].filter(function(e){return r!==e}))})});[].concat(r.string).filter(Boolean).forEach(function(e){t.strings[e]=true;if(i[e]){t.strings[i[e]]=true}});var n=r["default"]||{};var a={_:[]};Object.keys(t.bools).forEach(function(e){setArg(e,n[e]===undefined?false:n[e])});var u=[];if(e.indexOf("--")!==-1){u=e.slice(e.indexOf("--")+1);e=e.slice(0,e.indexOf("--"))}function argDefined(e,r){return t.allBools&&/^--[^=]+$/.test(r)||t.strings[e]||t.bools[e]||i[e]}function setArg(e,r,n){if(n&&t.unknownFn&&!argDefined(e,n)){if(t.unknownFn(n)===false)return}var u=!t.strings[e]&&isNumber(r)?Number(r):r;setKey(a,e.split("."),u);(i[e]||[]).forEach(function(e){setKey(a,e.split("."),u)})}function setKey(e,r,i){var n=e;r.slice(0,-1).forEach(function(e){if(n[e]===undefined)n[e]={};n=n[e]});var a=r[r.length-1];if(n[a]===undefined||t.bools[a]||typeof n[a]==="boolean"){n[a]=i}else if(Array.isArray(n[a])){n[a].push(i)}else{n[a]=[n[a],i]}}function aliasIsBoolean(e){return i[e].some(function(e){return t.bools[e]})}for(var s=0;s{if(e)console.error(e);process.exit(r)})},function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);e.exports=i("remark-lint:definition-spacing",definitionSpacing);var s=/^\s*\[((?:\\[\s\S]|[^[\]])+)]/;var o="Do not use consecutive white-space in definition labels";function definitionSpacing(e,r){var t=String(r);n(e,["definition","footnoteDefinition"],validate);function validate(e){var i=a.start(e).offset;var n=a.end(e).offset;if(!u(e)&&/[ \t\n]{2,}/.test(t.slice(i,n).match(s)[1])){r.message(o,e)}}}},function(e,r,t){"use strict";function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError("Cannot call a class as a function")}}var i=t(757).Buffer;var n=t(64);function copyBuffer(e,r,t){e.copy(r,t)}e.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}BufferList.prototype.push=function push(e){var r={data:e,next:null};if(this.length>0)this.tail.next=r;else this.head=r;this.tail=r;++this.length};BufferList.prototype.unshift=function unshift(e){var r={data:e,next:this.head};if(this.length===0)this.tail=r;this.head=r;++this.length};BufferList.prototype.shift=function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e};BufferList.prototype.clear=function clear(){this.head=this.tail=null;this.length=0};BufferList.prototype.join=function join(e){if(this.length===0)return"";var r=this.head;var t=""+r.data;while(r=r.next){t+=e+r.data}return t};BufferList.prototype.concat=function concat(e){if(this.length===0)return i.alloc(0);if(this.length===1)return this.head.data;var r=i.allocUnsafe(e>>>0);var t=this.head;var n=0;while(t){copyBuffer(t.data,r,n);n+=t.data.length;t=t.next}return r};return BufferList}();if(n&&n.inspect&&n.inspect.custom){e.exports.prototype[n.inspect.custom]=function(){var e=n.inspect({length:this.length});return this.constructor.name+" "+e}}},,,,,,,,,function(e){"use strict";e.exports=emphasis;var r="_";var t="*";function emphasis(e){var i=this.options.emphasis;var n=this.all(e).join("");if(this.options.pedantic&&i===r&&n.indexOf(i)!==-1){i=t}return i+n+i}},function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(97);e.exports=i("remark-lint:first-heading-level",firstHeadingLevel);var u=/i){i=t}}else{t=1}n=a+1;a=e.indexOf(r,n)}return i}},,,function(e,r,t){"use strict";var i=t(400);var n=new RegExp("^([0-9][0-9][0-9][0-9])"+"-([0-9][0-9])"+"-([0-9][0-9])$");var a=new RegExp("^([0-9][0-9][0-9][0-9])"+"-([0-9][0-9]?)"+"-([0-9][0-9]?)"+"(?:[Tt]|[ \\t]+)"+"([0-9][0-9]?)"+":([0-9][0-9])"+":([0-9][0-9])"+"(?:\\.([0-9]*))?"+"(?:[ \\t]*(Z|([-+])([0-9][0-9]?)"+"(?::([0-9][0-9]))?))?$");function resolveYamlTimestamp(e){if(e===null)return false;if(n.exec(e)!==null)return true;if(a.exec(e)!==null)return true;return false}function constructYamlTimestamp(e){var r,t,i,u,s,o,f,l=0,c=null,h,p,v;r=n.exec(e);if(r===null)r=a.exec(e);if(r===null)throw new Error("Date resolve error");t=+r[1];i=+r[2]-1;u=+r[3];if(!r[4]){return new Date(Date.UTC(t,i,u))}s=+r[4];o=+r[5];f=+r[6];if(r[7]){l=r[7].slice(0,3);while(l.length<3){l+="0"}l=+l}if(r[9]){h=+r[10];p=+(r[11]||0);c=(h*60+p)*6e4;if(r[9]==="-")c=-c}v=new Date(Date.UTC(t,i,u,s,o,f,l));if(c)v.setTime(v.getTime()-c);return v}function representYamlTimestamp(e){return e.toISOString()}e.exports=new i("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:resolveYamlTimestamp,construct:constructYamlTimestamp,instanceOf:Date,represent:representYamlTimestamp})},function(e,r,t){e.exports=minimatch;minimatch.Minimatch=Minimatch;var i={sep:"/"};try{i=t(589)}catch(e){}var n=minimatch.GLOBSTAR=Minimatch.GLOBSTAR={};var a=t(918);var u={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}};var s="[^/]";var o=s+"*?";var f="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";var l="(?:(?!(?:\\/|^)\\.).)*?";var c=charSet("().*{}+?[]^$\\!");function charSet(e){return e.split("").reduce(function(e,r){e[r]=true;return e},{})}var h=/\/+/;minimatch.filter=filter;function filter(e,r){r=r||{};return function(t,i,n){return minimatch(t,e,r)}}function ext(e,r){e=e||{};r=r||{};var t={};Object.keys(r).forEach(function(e){t[e]=r[e]});Object.keys(e).forEach(function(r){t[r]=e[r]});return t}minimatch.defaults=function(e){if(!e||!Object.keys(e).length)return minimatch;var r=minimatch;var t=function minimatch(t,i,n){return r.minimatch(t,i,ext(e,n))};t.Minimatch=function Minimatch(t,i){return new r.Minimatch(t,ext(e,i))};return t};Minimatch.defaults=function(e){if(!e||!Object.keys(e).length)return Minimatch;return minimatch.defaults(e).Minimatch};function minimatch(e,r,t){if(typeof r!=="string"){throw new TypeError("glob pattern string required")}if(!t)t={};if(!t.nocomment&&r.charAt(0)==="#"){return false}if(r.trim()==="")return e==="";return new Minimatch(r,t).match(e)}function Minimatch(e,r){if(!(this instanceof Minimatch)){return new Minimatch(e,r)}if(typeof e!=="string"){throw new TypeError("glob pattern string required")}if(!r)r={};e=e.trim();if(i.sep!=="/"){e=e.split(i.sep).join("/")}this.options=r;this.set=[];this.pattern=e;this.regexp=null;this.negate=false;this.comment=false;this.empty=false;this.make()}Minimatch.prototype.debug=function(){};Minimatch.prototype.make=make;function make(){if(this._made)return;var e=this.pattern;var r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=true;return}if(!e){this.empty=true;return}this.parseNegate();var t=this.globSet=this.braceExpand();if(r.debug)this.debug=console.error;this.debug(this.pattern,t);t=this.globParts=t.map(function(e){return e.split(h)});this.debug(this.pattern,t);t=t.map(function(e,r,t){return e.map(this.parse,this)},this);this.debug(this.pattern,t);t=t.filter(function(e){return e.indexOf(false)===-1});this.debug(this.pattern,t);this.set=t}Minimatch.prototype.parseNegate=parseNegate;function parseNegate(){var e=this.pattern;var r=false;var t=this.options;var i=0;if(t.nonegate)return;for(var n=0,a=e.length;n1024*64){throw new TypeError("pattern is too long")}var t=this.options;if(!t.noglobstar&&e==="**")return n;if(e==="")return"";var i="";var a=!!t.nocase;var f=false;var l=[];var h=[];var v;var d=false;var D=-1;var m=-1;var g=e.charAt(0)==="."?"":t.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)";var E=this;function clearStateChar(){if(v){switch(v){case"*":i+=o;a=true;break;case"?":i+=s;a=true;break;default:i+="\\"+v;break}E.debug("clearStateChar %j %j",v,i);v=false}}for(var A=0,C=e.length,y;A-1;k--){var O=h[k];var P=i.slice(0,O.reStart);var T=i.slice(O.reStart,O.reEnd-8);var I=i.slice(O.reEnd-8,O.reEnd);var M=i.slice(O.reEnd);I+=M;var L=P.split("(").length-1;var R=M;for(A=0;A=0;u--){a=e[u];if(a)break}for(u=0;u>> no match, partial?",e,c,r,h);if(c===s)return true}return false}var v;if(typeof f==="string"){if(i.nocase){v=l.toLowerCase()===f.toLowerCase()}else{v=l===f}this.debug("string match",f,l,v)}else{v=l.match(f);this.debug("pattern match",f,l,v)}if(!v)return false}if(a===s&&u===o){return true}else if(a===s){return t}else if(u===o){var d=a===s-1&&e[a]==="";return d}throw new Error("wtf?")};function globUnescape(e){return e.replace(/\\(.)/g,"$1")}function regExpEscape(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}},,,,,function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);e.exports=i("remark-lint:table-cell-padding",tableCellPadding);var s=a.start;var o=a.end;var f={null:true,padded:true,compact:true};function tableCellPadding(e,r,t){var i=String(r);t=typeof t==="string"&&t!=="consistent"?t:null;if(f[t]!==true){r.fail("Invalid table-cell-padding style `"+t+"`")}n(e,"table",visitor);function visitor(e){var r=e.children;var a=new Array(e.align.length);var f=u(e)?-1:r.length;var l=-1;var c=[];var h;var p;var v;var d;var D;var m;var g;var E;var A;var C;var y;while(++li){o+=" with 1 space, not "+u;if(size(a)-1?setImmediate:i.nextTick;var a;Writable.WritableState=WritableState;var u=t(554);u.inherits=t(9);var s={deprecate:t(800)};var o=t(443);var f=t(757).Buffer;var l=global.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return f.from(e)}function _isUint8Array(e){return f.isBuffer(e)||e instanceof l}var c=t(510);u.inherits(Writable,o);function nop(){}function WritableState(e,r){a=a||t(921);e=e||{};var i=r instanceof a;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.writableObjectMode;var n=e.highWaterMark;var u=e.writableHighWaterMark;var s=this.objectMode?16:16*1024;if(n||n===0)this.highWaterMark=n;else if(i&&(u||u===0))this.highWaterMark=u;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var o=e.decodeStrings===false;this.decodeStrings=!o;this.defaultEncoding=e.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(r,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var r=[];while(e){r.push(e);e=e.next}return r};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:s.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(e){}})();var h;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){h=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function(e){if(h.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{h=function(e){return e instanceof this}}function Writable(e){a=a||t(921);if(!h.call(Writable,this)&&!(this instanceof a)){return new Writable(e)}this._writableState=new WritableState(e,this);this.writable=true;if(e){if(typeof e.write==="function")this._write=e.write;if(typeof e.writev==="function")this._writev=e.writev;if(typeof e.destroy==="function")this._destroy=e.destroy;if(typeof e.final==="function")this._final=e.final}o.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(e,r){var t=new Error("write after end");e.emit("error",t);i.nextTick(r,t)}function validChunk(e,r,t,n){var a=true;var u=false;if(t===null){u=new TypeError("May not write null values to stream")}else if(typeof t!=="string"&&t!==undefined&&!r.objectMode){u=new TypeError("Invalid non-string/buffer chunk")}if(u){e.emit("error",u);i.nextTick(n,u);a=false}return a}Writable.prototype.write=function(e,r,t){var i=this._writableState;var n=false;var a=!i.objectMode&&_isUint8Array(e);if(a&&!f.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof r==="function"){t=r;r=null}if(a)r="buffer";else if(!r)r=i.defaultEncoding;if(typeof t!=="function")t=nop;if(i.ended)writeAfterEnd(this,t);else if(a||validChunk(this,i,e,t)){i.pendingcb++;n=writeOrBuffer(this,i,a,e,r,t)}return n};Writable.prototype.cork=function(){var e=this._writableState;e.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e==="string")e=e.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e;return this};function decodeChunk(e,r,t){if(!e.objectMode&&e.decodeStrings!==false&&typeof r==="string"){r=f.from(r,t)}return r}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(e,r,t,i,n,a){if(!t){var u=decodeChunk(r,i,n);if(i!==u){t=true;n="buffer";i=u}}var s=r.objectMode?1:i.length;r.length+=s;var o=r.length"){break}if(v!==" "&&v!=="\t"){r.message(o,d);break}}}}}},,,,function(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");r.code="MODULE_NOT_FOUND";throw r}webpackEmptyContext.keys=function(){return[]};webpackEmptyContext.resolve=webpackEmptyContext;e.exports=webpackEmptyContext;webpackEmptyContext.id=73},,,,,,function(e){"use strict";e.exports=is;function is(e,r,t,i,n){var a=i!==null&&i!==undefined;var u=t!==null&&t!==undefined;var s=convert(e);if(u&&(typeof t!=="number"||t<0||t===Infinity)){throw new Error("Expected positive finite index or child node")}if(a&&(!is(null,i)||!i.children)){throw new Error("Expected parent node")}if(!r||!r.type||typeof r.type!=="string"){return false}if(a!==u){throw new Error("Expected both parent and index")}return Boolean(s.call(n,r,t,i))}function convert(e){if(typeof e==="string"){return typeFactory(e)}if(e===null||e===undefined){return ok}if(typeof e==="object"){return("length"in e?anyFactory:matchesFactory)(e)}if(typeof e==="function"){return e}throw new Error("Expected function, string, or object as test")}function convertAll(e){var r=[];var t=e.length;var i=-1;while(++in){return false}}return check(e,i,t)&&check(e,m)}function isKnown(e,r,t){var i=o?o.indexOf(e)!==-1:true;if(!i){h.warn("Unknown rule: cannot "+r+" `'"+e+"'`",t)}return i}function getState(e){var r=e?D[e]:m;if(r&&r.length!==0){return r[r.length-1].state}if(!e){return!f}if(f){return l.indexOf(e)!==-1}return c.indexOf(e)===-1}function toggle(e,r,t){var i=t?D[t]:m;var n;var a;if(!i){i=[];D[t]=i}a=getState(t);n=r;if(n!==a){i.push({state:n,position:e})}if(!t){for(t in D){toggle(e,r,t)}}}function check(e,r,t){var i=r&&r.length;var n=-1;var a;while(--i>n){a=r[i];if(!a.position||!a.position.line||!a.position.column){continue}if(a.position.line=e){return}if(u){s.push({start:n,end:e});u=false}n=e}}},function(e,r,t){"use strict";var i=t(136)("unified-engine:file-pipeline:stdout");var n=t(356);e.exports=stdout;function stdout(e,r,t,a){if(!r.data.unifiedEngineGiven){i("Ignoring programmatically added file");a()}else if(n(r).fatal||e.output||!e.out){i("Ignoring writing to `streamOut`");a()}else{i("Writing document to `streamOut`");e.streamOut.write(r.toString(),a)}}},,,,,,,,,,,function(e,r,t){"use strict";var i=t(400);function resolveYamlBoolean(e){if(e===null)return false;var r=e.length;return r===4&&(e==="true"||e==="True"||e==="TRUE")||r===5&&(e==="false"||e==="False"||e==="FALSE")}function constructYamlBoolean(e){return e==="true"||e==="True"||e==="TRUE"}function isBoolean(e){return Object.prototype.toString.call(e)==="[object Boolean]"}e.exports=new i("tag:yaml.org,2002:bool",{kind:"scalar",resolve:resolveYamlBoolean,construct:constructYamlBoolean,predicate:isBoolean,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},,,,function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(506);var n=_interopRequireDefault(i);var a=t(379);var u=_interopRequireDefault(a);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}r.default={parse:n.default,stringify:u.default};e.exports=r["default"]},function(e){"use strict";e.exports=generated;function generated(e){var r=optional(optional(e).position);var t=optional(r.start);var i=optional(r.end);return!t.line||!t.column||!i.line||!i.column}function optional(e){return e&&typeof e==="object"?e:{}}},,,function(e,r,t){"use strict";var i=t(291);e.exports=factory;function factory(e,r){var t=e.split(":");var n=t[0];var a=t[1];var u=i(r);if(!a){a=n;n=null}attacher.displayName=e;return attacher;function attacher(e){var r=coerce(a,e);var t=r[0];var i=r[1];var s=t===2;return t?transformer:undefined;function transformer(e,r,t){var o=r.messages.length;u(e,r,i,done);function done(e){var i=r.messages;var u;if(e&&i.indexOf(e)===-1){try{r.fail(e)}catch(e){}}while(o2){throw new Error("Invalid severity `"+n+"` for `"+e+"`, "+"expected 0, 1, or 2")}i[0]=n;return i}},,,,,,,,function(e){"use strict";e.exports=interrupt;function interrupt(e,r,t,i){var n=e.length;var a=-1;var u;var s;while(++a/i;function inlineHTML(e,r,t){var n=this;var h=r.length;var p;var v;if(r.charAt(0)!==u||h<3){return}p=r.charAt(1);if(!i(p)&&p!==s&&p!==o&&p!==f){return}v=r.match(a);if(!v){return}if(t){return true}v=v[0];if(!n.inLink&&l.test(v)){n.inLink=true}else if(n.inLink&&c.test(v)){n.inLink=false}return e(v)({type:"html",value:v})}},,function(e){"use strict";e.exports=lineBreak;var r="\\";var t="\n";var i=" ";var n=r+t;var a=i+i+t;function lineBreak(){return this.options.commonmark?n:a}},,,function(e){e.exports=["cent","copy","divide","gt","lt","not","para","times"]},,function(e){e.exports=function(e,r,t){var i=[];var n=e.length;if(0===n)return i;var a=r<0?Math.max(0,r+n):r||0;if(t!==undefined){n=t<0?t+n:t}while(n-- >a){i[n-a]=e[n]}return i}},function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(97);e.exports=i("remark-lint:no-shortcut-reference-image",noShortcutReferenceImage);var u="Use the trailing [] on reference images";function noShortcutReferenceImage(e,r){n(e,"imageReference",visitor);function visitor(e){if(!a(e)&&e.referenceType==="shortcut"){r.message(u,e)}}}},,function(e){"use strict";e.exports=hidden;function hidden(e){if(typeof e!=="string"){throw new Error("Expected string")}return e.charAt(0)==="."}},,function(e,r,t){"use strict";var i=t(757).Buffer;var n=i.isEncoding||function(e){e=""+e;switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return true;default:return false}};function _normalizeEncoding(e){if(!e)return"utf8";var r;while(true){switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(r)return;e=(""+e).toLowerCase();r=true}}}function normalizeEncoding(e){var r=_normalizeEncoding(e);if(typeof r!=="string"&&(i.isEncoding===n||!n(e)))throw new Error("Unknown encoding: "+e);return r||e}r.StringDecoder=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var r;switch(this.encoding){case"utf16le":this.text=utf16Text;this.end=utf16End;r=4;break;case"utf8":this.fillLast=utf8FillLast;r=4;break;case"base64":this.text=base64Text;this.end=base64End;r=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=i.allocUnsafe(r)}StringDecoder.prototype.write=function(e){if(e.length===0)return"";var r;var t;if(this.lastNeed){r=this.fillLast(e);if(r===undefined)return"";t=this.lastNeed;this.lastNeed=0}else{t=0}if(t>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,r,t){var i=r.length-1;if(i=0){if(n>0)e.lastNeed=n-1;return n}if(--i=0){if(n>0)e.lastNeed=n-2;return n}if(--i=0){if(n>0){if(n===2)n=0;else e.lastNeed=n-3}return n}return 0}function utf8CheckExtraBytes(e,r,t){if((r[0]&192)!==128){e.lastNeed=0;return"�"}if(e.lastNeed>1&&r.length>1){if((r[1]&192)!==128){e.lastNeed=1;return"�"}if(e.lastNeed>2&&r.length>2){if((r[2]&192)!==128){e.lastNeed=2;return"�"}}}}function utf8FillLast(e){var r=this.lastTotal-this.lastNeed;var t=utf8CheckExtraBytes(this,e,r);if(t!==undefined)return t;if(this.lastNeed<=e.length){e.copy(this.lastChar,r,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,r,0,e.length);this.lastNeed-=e.length}function utf8Text(e,r){var t=utf8CheckIncomplete(this,e,r);if(!this.lastNeed)return e.toString("utf8",r);this.lastTotal=t;var i=e.length-(t-this.lastNeed);e.copy(this.lastChar,0,i);return e.toString("utf8",r,i)}function utf8End(e){var r=e&&e.length?this.write(e):"";if(this.lastNeed)return r+"�";return r}function utf16Text(e,r){if((e.length-r)%2===0){var t=e.toString("utf16le",r);if(t){var i=t.charCodeAt(t.length-1);if(i>=55296&&i<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return t.slice(0,-1)}}return t}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString("utf16le",r,e.length-1)}function utf16End(e){var r=e&&e.length?this.write(e):"";if(this.lastNeed){var t=this.lastTotal-this.lastNeed;return r+this.lastChar.toString("utf16le",0,t)}return r}function base64Text(e,r){var t=(e.length-r)%3;if(t===0)return e.toString("base64",r);this.lastNeed=3-t;this.lastTotal=3;if(t===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString("base64",r,e.length-t)}function base64End(e){var r=e&&e.length?this.write(e):"";if(this.lastNeed)return r+this.lastChar.toString("base64",0,3-this.lastNeed);return r}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):""}},,,,function(e,r,t){"use strict";var i=t(64);var n=t(936);var a=function errorEx(e,r){if(!e||e.constructor!==String){r=e||{};e=Error.name}var t=function ErrorEXError(i){if(!this){return new ErrorEXError(i)}i=i instanceof Error?i.message:i||this.message;Error.call(this,i);Error.captureStackTrace(this,t);this.name=e;Object.defineProperty(this,"message",{configurable:true,enumerable:false,get:function(){var e=i.split(/\r?\n/g);for(var t in r){if(!r.hasOwnProperty(t)){continue}var a=r[t];if("message"in a){e=a.message(this[t],e)||e;if(!n(e)){e=[e]}}}return e.join("\n")},set:function(e){i=e}});var a=null;var u=Object.getOwnPropertyDescriptor(this,"stack");var s=u.get;var o=u.value;delete u.value;delete u.writable;u.set=function(e){a=e};u.get=function(){var e=(a||(s?s.call(this):o)).split(/\r?\n+/g);if(!a){e[0]=this.name+": "+this.message}var t=1;for(var i in r){if(!r.hasOwnProperty(i)){continue}var n=r[i];if("line"in n){var u=n.line(this[i]);if(u){e.splice(t++,0," "+u)}}if("stack"in n){n.stack(this[i],e)}}return e.join("\n")};Object.defineProperty(this,"stack",u)};if(Object.setPrototypeOf){Object.setPrototypeOf(t.prototype,Error.prototype);Object.setPrototypeOf(t,Error)}else{i.inherits(t,Error)}return t};a.append=function(e,r){return{message:function(t,i){t=t||r;if(t){i[0]+=" "+e.replace("%s",t.toString())}return i}}};a.line=function(e,r){return{line:function(t){t=t||r;if(t){return e.replace("%s",t.toString())}return null}}};e.exports=a},,,,,,function(e,r,t){"use strict";var i=t(589);function replaceExt(e,r){if(typeof e!=="string"){return e}if(e.length===0){return e}var t=i.basename(e,i.extname(e))+r;return i.join(i.dirname(e),t)}e.exports=replaceExt},,,function(e,r,t){"use strict";if(typeof process==="undefined"||process.type==="renderer"||process.browser===true||process.__nwjs){e.exports=t(892)}else{e.exports=t(239)}},,function(e){"use strict";e.exports=paragraph;function paragraph(e){return this.all(e).join("")}},function(e,r,t){"use strict";var i=t(400);e.exports=new i("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}})},,function(e){"use strict";e.exports=locate;function locate(e,r){return e.indexOf("\\",r)}},function(e){(function webpackUniversalModuleDefinition(r,t){if(true)e.exports=t();else{}})(this,function(){return function(e){var r={};function __webpack_require__(t){if(r[t])return r[t].exports;var i=r[t]={exports:{},id:t,loaded:false};e[t].call(i.exports,i,i.exports,__webpack_require__);i.loaded=true;return i.exports}__webpack_require__.m=e;__webpack_require__.c=r;__webpack_require__.p="";return __webpack_require__(0)}([function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(1);var n=t(3);var a=t(8);var u=t(15);function parse(e,r,t){var u=null;var s=function(e,r){if(t){t(e,r)}if(u){u.visit(e,r)}};var o=typeof t==="function"?s:null;var f=false;if(r){f=typeof r.comment==="boolean"&&r.comment;var l=typeof r.attachComment==="boolean"&&r.attachComment;if(f||l){u=new i.CommentHandler;u.attach=l;r.comment=true;o=s}}var c=false;if(r&&typeof r.sourceType==="string"){c=r.sourceType==="module"}var h;if(r&&typeof r.jsx==="boolean"&&r.jsx){h=new n.JSXParser(e,r,o)}else{h=new a.Parser(e,r,o)}var p=c?h.parseModule():h.parseScript();var v=p;if(f&&u){v.comments=u.comments}if(h.config.tokens){v.tokens=h.tokens}if(h.config.tolerant){v.errors=h.errorHandler.errors}return v}r.parse=parse;function parseModule(e,r,t){var i=r||{};i.sourceType="module";return parse(e,i,t)}r.parseModule=parseModule;function parseScript(e,r,t){var i=r||{};i.sourceType="script";return parse(e,i,t)}r.parseScript=parseScript;function tokenize(e,r,t){var i=new u.Tokenizer(e,r);var n;n=[];try{while(true){var a=i.getNextToken();if(!a){break}if(t){a=t(a)}n.push(a)}}catch(e){i.errorHandler.tolerate(e)}if(i.errorHandler.tolerant){n.errors=i.errors()}return n}r.tokenize=tokenize;var s=t(2);r.Syntax=s.Syntax;r.version="4.0.1"},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(2);var n=function(){function CommentHandler(){this.attach=false;this.comments=[];this.stack=[];this.leading=[];this.trailing=[]}CommentHandler.prototype.insertInnerComments=function(e,r){if(e.type===i.Syntax.BlockStatement&&e.body.length===0){var t=[];for(var n=this.leading.length-1;n>=0;--n){var a=this.leading[n];if(r.end.offset>=a.start){t.unshift(a.comment);this.leading.splice(n,1);this.trailing.splice(n,1)}}if(t.length){e.innerComments=t}}};CommentHandler.prototype.findTrailingComments=function(e){var r=[];if(this.trailing.length>0){for(var t=this.trailing.length-1;t>=0;--t){var i=this.trailing[t];if(i.start>=e.end.offset){r.unshift(i.comment)}}this.trailing.length=0;return r}var n=this.stack[this.stack.length-1];if(n&&n.node.trailingComments){var a=n.node.trailingComments[0];if(a&&a.range[0]>=e.end.offset){r=n.node.trailingComments;delete n.node.trailingComments}}return r};CommentHandler.prototype.findLeadingComments=function(e){var r=[];var t;while(this.stack.length>0){var i=this.stack[this.stack.length-1];if(i&&i.start>=e.start.offset){t=i.node;this.stack.pop()}else{break}}if(t){var n=t.leadingComments?t.leadingComments.length:0;for(var a=n-1;a>=0;--a){var u=t.leadingComments[a];if(u.range[1]<=e.start.offset){r.unshift(u);t.leadingComments.splice(a,1)}}if(t.leadingComments&&t.leadingComments.length===0){delete t.leadingComments}return r}for(var a=this.leading.length-1;a>=0;--a){var i=this.leading[a];if(i.start<=e.start.offset){r.unshift(i.comment);this.leading.splice(a,1)}}return r};CommentHandler.prototype.visitNode=function(e,r){if(e.type===i.Syntax.Program&&e.body.length>0){return}this.insertInnerComments(e,r);var t=this.findTrailingComments(r);var n=this.findLeadingComments(r);if(n.length>0){e.leadingComments=n}if(t.length>0){e.trailingComments=t}this.stack.push({node:e,start:r.start.offset})};CommentHandler.prototype.visitComment=function(e,r){var t=e.type[0]==="L"?"Line":"Block";var i={type:t,value:e.value};if(e.range){i.range=e.range}if(e.loc){i.loc=e.loc}this.comments.push(i);if(this.attach){var n={comment:{type:t,value:e.value,range:[r.start.offset,r.end.offset]},start:r.start.offset};if(e.loc){n.comment.loc=e.loc}e.type=t;this.leading.push(n);this.trailing.push(n)}};CommentHandler.prototype.visit=function(e,r){if(e.type==="LineComment"){this.visitComment(e,r)}else if(e.type==="BlockComment"){this.visitComment(e,r)}else if(this.attach){this.visitNode(e,r)}};return CommentHandler}();r.CommentHandler=n},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(e,r,t){"use strict";var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)if(r.hasOwnProperty(t))e[t]=r[t]};return function(r,t){e(r,t);function __(){this.constructor=r}r.prototype=t===null?Object.create(t):(__.prototype=t.prototype,new __)}}();Object.defineProperty(r,"__esModule",{value:true});var n=t(4);var a=t(5);var u=t(6);var s=t(7);var o=t(8);var f=t(13);var l=t(14);f.TokenName[100]="JSXIdentifier";f.TokenName[101]="JSXText";function getQualifiedElementName(e){var r;switch(e.type){case u.JSXSyntax.JSXIdentifier:var t=e;r=t.name;break;case u.JSXSyntax.JSXNamespacedName:var i=e;r=getQualifiedElementName(i.namespace)+":"+getQualifiedElementName(i.name);break;case u.JSXSyntax.JSXMemberExpression:var n=e;r=getQualifiedElementName(n.object)+"."+getQualifiedElementName(n.property);break;default:break}return r}var c=function(e){i(JSXParser,e);function JSXParser(r,t,i){return e.call(this,r,t,i)||this}JSXParser.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():e.prototype.parsePrimaryExpression.call(this)};JSXParser.prototype.startJSX=function(){this.scanner.index=this.startMarker.index;this.scanner.lineNumber=this.startMarker.line;this.scanner.lineStart=this.startMarker.index-this.startMarker.column};JSXParser.prototype.finishJSX=function(){this.nextToken()};JSXParser.prototype.reenterJSX=function(){this.startJSX();this.expectJSX("}");if(this.config.tokens){this.tokens.pop()}};JSXParser.prototype.createJSXNode=function(){this.collectComments();return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}};JSXParser.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}};JSXParser.prototype.scanXHTMLEntity=function(e){var r="&";var t=true;var i=false;var a=false;var u=false;while(!this.scanner.eof()&&t&&!i){var s=this.scanner.source[this.scanner.index];if(s===e){break}i=s===";";r+=s;++this.scanner.index;if(!i){switch(r.length){case 2:a=s==="#";break;case 3:if(a){u=s==="x";t=u||n.Character.isDecimalDigit(s.charCodeAt(0));a=a&&!u}break;default:t=t&&!(a&&!n.Character.isDecimalDigit(s.charCodeAt(0)));t=t&&!(u&&!n.Character.isHexDigit(s.charCodeAt(0)));break}}}if(t&&i&&r.length>2){var o=r.substr(1,r.length-2);if(a&&o.length>1){r=String.fromCharCode(parseInt(o.substr(1),10))}else if(u&&o.length>2){r=String.fromCharCode(parseInt("0"+o.substr(1),16))}else if(!a&&!u&&l.XHTMLEntities[o]){r=l.XHTMLEntities[o]}}return r};JSXParser.prototype.lexJSX=function(){var e=this.scanner.source.charCodeAt(this.scanner.index);if(e===60||e===62||e===47||e===58||e===61||e===123||e===125){var r=this.scanner.source[this.scanner.index++];return{type:7,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index}}if(e===34||e===39){var t=this.scanner.index;var i=this.scanner.source[this.scanner.index++];var a="";while(!this.scanner.eof()){var u=this.scanner.source[this.scanner.index++];if(u===i){break}else if(u==="&"){a+=this.scanXHTMLEntity(i)}else{a+=u}}return{type:8,value:a,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(e===46){var s=this.scanner.source.charCodeAt(this.scanner.index+1);var o=this.scanner.source.charCodeAt(this.scanner.index+2);var r=s===46&&o===46?"...":".";var t=this.scanner.index;this.scanner.index+=r.length;return{type:7,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(e===96){return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index}}if(n.Character.isIdentifierStart(e)&&e!==92){var t=this.scanner.index;++this.scanner.index;while(!this.scanner.eof()){var u=this.scanner.source.charCodeAt(this.scanner.index);if(n.Character.isIdentifierPart(u)&&u!==92){++this.scanner.index}else if(u===45){++this.scanner.index}else{break}}var f=this.scanner.source.slice(t,this.scanner.index);return{type:100,value:f,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}return this.scanner.lex()};JSXParser.prototype.nextJSXToken=function(){this.collectComments();this.startMarker.index=this.scanner.index;this.startMarker.line=this.scanner.lineNumber;this.startMarker.column=this.scanner.index-this.scanner.lineStart;var e=this.lexJSX();this.lastMarker.index=this.scanner.index;this.lastMarker.line=this.scanner.lineNumber;this.lastMarker.column=this.scanner.index-this.scanner.lineStart;if(this.config.tokens){this.tokens.push(this.convertToken(e))}return e};JSXParser.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index;this.startMarker.line=this.scanner.lineNumber;this.startMarker.column=this.scanner.index-this.scanner.lineStart;var e=this.scanner.index;var r="";while(!this.scanner.eof()){var t=this.scanner.source[this.scanner.index];if(t==="{"||t==="<"){break}++this.scanner.index;r+=t;if(n.Character.isLineTerminator(t.charCodeAt(0))){++this.scanner.lineNumber;if(t==="\r"&&this.scanner.source[this.scanner.index]==="\n"){++this.scanner.index}this.scanner.lineStart=this.scanner.index}}this.lastMarker.index=this.scanner.index;this.lastMarker.line=this.scanner.lineNumber;this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var i={type:101,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:e,end:this.scanner.index};if(r.length>0&&this.config.tokens){this.tokens.push(this.convertToken(i))}return i};JSXParser.prototype.peekJSXToken=function(){var e=this.scanner.saveState();this.scanner.scanComments();var r=this.lexJSX();this.scanner.restoreState(e);return r};JSXParser.prototype.expectJSX=function(e){var r=this.nextJSXToken();if(r.type!==7||r.value!==e){this.throwUnexpectedToken(r)}};JSXParser.prototype.matchJSX=function(e){var r=this.peekJSXToken();return r.type===7&&r.value===e};JSXParser.prototype.parseJSXIdentifier=function(){var e=this.createJSXNode();var r=this.nextJSXToken();if(r.type!==100){this.throwUnexpectedToken(r)}return this.finalize(e,new a.JSXIdentifier(r.value))};JSXParser.prototype.parseJSXElementName=function(){var e=this.createJSXNode();var r=this.parseJSXIdentifier();if(this.matchJSX(":")){var t=r;this.expectJSX(":");var i=this.parseJSXIdentifier();r=this.finalize(e,new a.JSXNamespacedName(t,i))}else if(this.matchJSX(".")){while(this.matchJSX(".")){var n=r;this.expectJSX(".");var u=this.parseJSXIdentifier();r=this.finalize(e,new a.JSXMemberExpression(n,u))}}return r};JSXParser.prototype.parseJSXAttributeName=function(){var e=this.createJSXNode();var r;var t=this.parseJSXIdentifier();if(this.matchJSX(":")){var i=t;this.expectJSX(":");var n=this.parseJSXIdentifier();r=this.finalize(e,new a.JSXNamespacedName(i,n))}else{r=t}return r};JSXParser.prototype.parseJSXStringLiteralAttribute=function(){var e=this.createJSXNode();var r=this.nextJSXToken();if(r.type!==8){this.throwUnexpectedToken(r)}var t=this.getTokenRaw(r);return this.finalize(e,new s.Literal(r.value,t))};JSXParser.prototype.parseJSXExpressionAttribute=function(){var e=this.createJSXNode();this.expectJSX("{");this.finishJSX();if(this.match("}")){this.tolerateError("JSX attributes must only be assigned a non-empty expression")}var r=this.parseAssignmentExpression();this.reenterJSX();return this.finalize(e,new a.JSXExpressionContainer(r))};JSXParser.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()};JSXParser.prototype.parseJSXNameValueAttribute=function(){var e=this.createJSXNode();var r=this.parseJSXAttributeName();var t=null;if(this.matchJSX("=")){this.expectJSX("=");t=this.parseJSXAttributeValue()}return this.finalize(e,new a.JSXAttribute(r,t))};JSXParser.prototype.parseJSXSpreadAttribute=function(){var e=this.createJSXNode();this.expectJSX("{");this.expectJSX("...");this.finishJSX();var r=this.parseAssignmentExpression();this.reenterJSX();return this.finalize(e,new a.JSXSpreadAttribute(r))};JSXParser.prototype.parseJSXAttributes=function(){var e=[];while(!this.matchJSX("/")&&!this.matchJSX(">")){var r=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();e.push(r)}return e};JSXParser.prototype.parseJSXOpeningElement=function(){var e=this.createJSXNode();this.expectJSX("<");var r=this.parseJSXElementName();var t=this.parseJSXAttributes();var i=this.matchJSX("/");if(i){this.expectJSX("/")}this.expectJSX(">");return this.finalize(e,new a.JSXOpeningElement(r,i,t))};JSXParser.prototype.parseJSXBoundaryElement=function(){var e=this.createJSXNode();this.expectJSX("<");if(this.matchJSX("/")){this.expectJSX("/");var r=this.parseJSXElementName();this.expectJSX(">");return this.finalize(e,new a.JSXClosingElement(r))}var t=this.parseJSXElementName();var i=this.parseJSXAttributes();var n=this.matchJSX("/");if(n){this.expectJSX("/")}this.expectJSX(">");return this.finalize(e,new a.JSXOpeningElement(t,n,i))};JSXParser.prototype.parseJSXEmptyExpression=function(){var e=this.createJSXChildNode();this.collectComments();this.lastMarker.index=this.scanner.index;this.lastMarker.line=this.scanner.lineNumber;this.lastMarker.column=this.scanner.index-this.scanner.lineStart;return this.finalize(e,new a.JSXEmptyExpression)};JSXParser.prototype.parseJSXExpressionContainer=function(){var e=this.createJSXNode();this.expectJSX("{");var r;if(this.matchJSX("}")){r=this.parseJSXEmptyExpression();this.expectJSX("}")}else{this.finishJSX();r=this.parseAssignmentExpression();this.reenterJSX()}return this.finalize(e,new a.JSXExpressionContainer(r))};JSXParser.prototype.parseJSXChildren=function(){var e=[];while(!this.scanner.eof()){var r=this.createJSXChildNode();var t=this.nextJSXText();if(t.start0){var s=this.finalize(e.node,new a.JSXElement(e.opening,e.children,e.closing));e=r[r.length-1];e.children.push(s);r.pop()}else{break}}}return e};JSXParser.prototype.parseJSXElement=function(){var e=this.createJSXNode();var r=this.parseJSXOpeningElement();var t=[];var i=null;if(!r.selfClosing){var n=this.parseComplexJSXElement({node:e,opening:r,closing:i,children:t});t=n.children;i=n.closing}return this.finalize(e,new a.JSXElement(r,t,i))};JSXParser.prototype.parseJSXRoot=function(){if(this.config.tokens){this.tokens.pop()}this.startJSX();var e=this.parseJSXElement();this.finishJSX();return e};JSXParser.prototype.isStartOfExpression=function(){return e.prototype.isStartOfExpression.call(this)||this.match("<")};return JSXParser}(o.Parser);r.JSXParser=c},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var t={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};r.Character={fromCodePoint:function(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace:function(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0},isLineTerminator:function(e){return e===10||e===13||e===8232||e===8233},isIdentifierStart:function(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&t.NonAsciiIdentifierStart.test(r.Character.fromCodePoint(e))},isIdentifierPart:function(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&t.NonAsciiIdentifierPart.test(r.Character.fromCodePoint(e))},isDecimalDigit:function(e){return e>=48&&e<=57},isHexDigit:function(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit:function(e){return e>=48&&e<=55}}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(6);var n=function(){function JSXClosingElement(e){this.type=i.JSXSyntax.JSXClosingElement;this.name=e}return JSXClosingElement}();r.JSXClosingElement=n;var a=function(){function JSXElement(e,r,t){this.type=i.JSXSyntax.JSXElement;this.openingElement=e;this.children=r;this.closingElement=t}return JSXElement}();r.JSXElement=a;var u=function(){function JSXEmptyExpression(){this.type=i.JSXSyntax.JSXEmptyExpression}return JSXEmptyExpression}();r.JSXEmptyExpression=u;var s=function(){function JSXExpressionContainer(e){this.type=i.JSXSyntax.JSXExpressionContainer;this.expression=e}return JSXExpressionContainer}();r.JSXExpressionContainer=s;var o=function(){function JSXIdentifier(e){this.type=i.JSXSyntax.JSXIdentifier;this.name=e}return JSXIdentifier}();r.JSXIdentifier=o;var f=function(){function JSXMemberExpression(e,r){this.type=i.JSXSyntax.JSXMemberExpression;this.object=e;this.property=r}return JSXMemberExpression}();r.JSXMemberExpression=f;var l=function(){function JSXAttribute(e,r){this.type=i.JSXSyntax.JSXAttribute;this.name=e;this.value=r}return JSXAttribute}();r.JSXAttribute=l;var c=function(){function JSXNamespacedName(e,r){this.type=i.JSXSyntax.JSXNamespacedName;this.namespace=e;this.name=r}return JSXNamespacedName}();r.JSXNamespacedName=c;var h=function(){function JSXOpeningElement(e,r,t){this.type=i.JSXSyntax.JSXOpeningElement;this.name=e;this.selfClosing=r;this.attributes=t}return JSXOpeningElement}();r.JSXOpeningElement=h;var p=function(){function JSXSpreadAttribute(e){this.type=i.JSXSyntax.JSXSpreadAttribute;this.argument=e}return JSXSpreadAttribute}();r.JSXSpreadAttribute=p;var v=function(){function JSXText(e,r){this.type=i.JSXSyntax.JSXText;this.value=e;this.raw=r}return JSXText}();r.JSXText=v},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(2);var n=function(){function ArrayExpression(e){this.type=i.Syntax.ArrayExpression;this.elements=e}return ArrayExpression}();r.ArrayExpression=n;var a=function(){function ArrayPattern(e){this.type=i.Syntax.ArrayPattern;this.elements=e}return ArrayPattern}();r.ArrayPattern=a;var u=function(){function ArrowFunctionExpression(e,r,t){this.type=i.Syntax.ArrowFunctionExpression;this.id=null;this.params=e;this.body=r;this.generator=false;this.expression=t;this.async=false}return ArrowFunctionExpression}();r.ArrowFunctionExpression=u;var s=function(){function AssignmentExpression(e,r,t){this.type=i.Syntax.AssignmentExpression;this.operator=e;this.left=r;this.right=t}return AssignmentExpression}();r.AssignmentExpression=s;var o=function(){function AssignmentPattern(e,r){this.type=i.Syntax.AssignmentPattern;this.left=e;this.right=r}return AssignmentPattern}();r.AssignmentPattern=o;var f=function(){function AsyncArrowFunctionExpression(e,r,t){this.type=i.Syntax.ArrowFunctionExpression;this.id=null;this.params=e;this.body=r;this.generator=false;this.expression=t;this.async=true}return AsyncArrowFunctionExpression}();r.AsyncArrowFunctionExpression=f;var l=function(){function AsyncFunctionDeclaration(e,r,t){this.type=i.Syntax.FunctionDeclaration;this.id=e;this.params=r;this.body=t;this.generator=false;this.expression=false;this.async=true}return AsyncFunctionDeclaration}();r.AsyncFunctionDeclaration=l;var c=function(){function AsyncFunctionExpression(e,r,t){this.type=i.Syntax.FunctionExpression;this.id=e;this.params=r;this.body=t;this.generator=false;this.expression=false;this.async=true}return AsyncFunctionExpression}();r.AsyncFunctionExpression=c;var h=function(){function AwaitExpression(e){this.type=i.Syntax.AwaitExpression;this.argument=e}return AwaitExpression}();r.AwaitExpression=h;var p=function(){function BinaryExpression(e,r,t){var n=e==="||"||e==="&&";this.type=n?i.Syntax.LogicalExpression:i.Syntax.BinaryExpression;this.operator=e;this.left=r;this.right=t}return BinaryExpression}();r.BinaryExpression=p;var v=function(){function BlockStatement(e){this.type=i.Syntax.BlockStatement;this.body=e}return BlockStatement}();r.BlockStatement=v;var d=function(){function BreakStatement(e){this.type=i.Syntax.BreakStatement;this.label=e}return BreakStatement}();r.BreakStatement=d;var D=function(){function CallExpression(e,r){this.type=i.Syntax.CallExpression;this.callee=e;this.arguments=r}return CallExpression}();r.CallExpression=D;var m=function(){function CatchClause(e,r){this.type=i.Syntax.CatchClause;this.param=e;this.body=r}return CatchClause}();r.CatchClause=m;var g=function(){function ClassBody(e){this.type=i.Syntax.ClassBody;this.body=e}return ClassBody}();r.ClassBody=g;var E=function(){function ClassDeclaration(e,r,t){this.type=i.Syntax.ClassDeclaration;this.id=e;this.superClass=r;this.body=t}return ClassDeclaration}();r.ClassDeclaration=E;var A=function(){function ClassExpression(e,r,t){this.type=i.Syntax.ClassExpression;this.id=e;this.superClass=r;this.body=t}return ClassExpression}();r.ClassExpression=A;var C=function(){function ComputedMemberExpression(e,r){this.type=i.Syntax.MemberExpression;this.computed=true;this.object=e;this.property=r}return ComputedMemberExpression}();r.ComputedMemberExpression=C;var y=function(){function ConditionalExpression(e,r,t){this.type=i.Syntax.ConditionalExpression;this.test=e;this.consequent=r;this.alternate=t}return ConditionalExpression}();r.ConditionalExpression=y;var w=function(){function ContinueStatement(e){this.type=i.Syntax.ContinueStatement;this.label=e}return ContinueStatement}();r.ContinueStatement=w;var x=function(){function DebuggerStatement(){this.type=i.Syntax.DebuggerStatement}return DebuggerStatement}();r.DebuggerStatement=x;var b=function(){function Directive(e,r){this.type=i.Syntax.ExpressionStatement;this.expression=e;this.directive=r}return Directive}();r.Directive=b;var F=function(){function DoWhileStatement(e,r){this.type=i.Syntax.DoWhileStatement;this.body=e;this.test=r}return DoWhileStatement}();r.DoWhileStatement=F;var S=function(){function EmptyStatement(){this.type=i.Syntax.EmptyStatement}return EmptyStatement}();r.EmptyStatement=S;var B=function(){function ExportAllDeclaration(e){this.type=i.Syntax.ExportAllDeclaration;this.source=e}return ExportAllDeclaration}();r.ExportAllDeclaration=B;var k=function(){function ExportDefaultDeclaration(e){this.type=i.Syntax.ExportDefaultDeclaration;this.declaration=e}return ExportDefaultDeclaration}();r.ExportDefaultDeclaration=k;var O=function(){function ExportNamedDeclaration(e,r,t){this.type=i.Syntax.ExportNamedDeclaration;this.declaration=e;this.specifiers=r;this.source=t}return ExportNamedDeclaration}();r.ExportNamedDeclaration=O;var P=function(){function ExportSpecifier(e,r){this.type=i.Syntax.ExportSpecifier;this.exported=r;this.local=e}return ExportSpecifier}();r.ExportSpecifier=P;var T=function(){function ExpressionStatement(e){this.type=i.Syntax.ExpressionStatement;this.expression=e}return ExpressionStatement}();r.ExpressionStatement=T;var I=function(){function ForInStatement(e,r,t){this.type=i.Syntax.ForInStatement;this.left=e;this.right=r;this.body=t;this.each=false}return ForInStatement}();r.ForInStatement=I;var M=function(){function ForOfStatement(e,r,t){this.type=i.Syntax.ForOfStatement;this.left=e;this.right=r;this.body=t}return ForOfStatement}();r.ForOfStatement=M;var L=function(){function ForStatement(e,r,t,n){this.type=i.Syntax.ForStatement;this.init=e;this.test=r;this.update=t;this.body=n}return ForStatement}();r.ForStatement=L;var R=function(){function FunctionDeclaration(e,r,t,n){this.type=i.Syntax.FunctionDeclaration;this.id=e;this.params=r;this.body=t;this.generator=n;this.expression=false;this.async=false}return FunctionDeclaration}();r.FunctionDeclaration=R;var j=function(){function FunctionExpression(e,r,t,n){this.type=i.Syntax.FunctionExpression;this.id=e;this.params=r;this.body=t;this.generator=n;this.expression=false;this.async=false}return FunctionExpression}();r.FunctionExpression=j;var N=function(){function Identifier(e){this.type=i.Syntax.Identifier;this.name=e}return Identifier}();r.Identifier=N;var U=function(){function IfStatement(e,r,t){this.type=i.Syntax.IfStatement;this.test=e;this.consequent=r;this.alternate=t}return IfStatement}();r.IfStatement=U;var J=function(){function ImportDeclaration(e,r){this.type=i.Syntax.ImportDeclaration;this.specifiers=e;this.source=r}return ImportDeclaration}();r.ImportDeclaration=J;var z=function(){function ImportDefaultSpecifier(e){this.type=i.Syntax.ImportDefaultSpecifier;this.local=e}return ImportDefaultSpecifier}();r.ImportDefaultSpecifier=z;var X=function(){function ImportNamespaceSpecifier(e){this.type=i.Syntax.ImportNamespaceSpecifier;this.local=e}return ImportNamespaceSpecifier}();r.ImportNamespaceSpecifier=X;var q=function(){function ImportSpecifier(e,r){this.type=i.Syntax.ImportSpecifier;this.local=e;this.imported=r}return ImportSpecifier}();r.ImportSpecifier=q;var G=function(){function LabeledStatement(e,r){this.type=i.Syntax.LabeledStatement;this.label=e;this.body=r}return LabeledStatement}();r.LabeledStatement=G;var _=function(){function Literal(e,r){this.type=i.Syntax.Literal;this.value=e;this.raw=r}return Literal}();r.Literal=_;var W=function(){function MetaProperty(e,r){this.type=i.Syntax.MetaProperty;this.meta=e;this.property=r}return MetaProperty}();r.MetaProperty=W;var V=function(){function MethodDefinition(e,r,t,n,a){this.type=i.Syntax.MethodDefinition;this.key=e;this.computed=r;this.value=t;this.kind=n;this.static=a}return MethodDefinition}();r.MethodDefinition=V;var H=function(){function Module(e){this.type=i.Syntax.Program;this.body=e;this.sourceType="module"}return Module}();r.Module=H;var Y=function(){function NewExpression(e,r){this.type=i.Syntax.NewExpression;this.callee=e;this.arguments=r}return NewExpression}();r.NewExpression=Y;var $=function(){function ObjectExpression(e){this.type=i.Syntax.ObjectExpression;this.properties=e}return ObjectExpression}();r.ObjectExpression=$;var Z=function(){function ObjectPattern(e){this.type=i.Syntax.ObjectPattern;this.properties=e}return ObjectPattern}();r.ObjectPattern=Z;var Q=function(){function Property(e,r,t,n,a,u){this.type=i.Syntax.Property;this.key=r;this.computed=t;this.value=n;this.kind=e;this.method=a;this.shorthand=u}return Property}();r.Property=Q;var K=function(){function RegexLiteral(e,r,t,n){this.type=i.Syntax.Literal;this.value=e;this.raw=r;this.regex={pattern:t,flags:n}}return RegexLiteral}();r.RegexLiteral=K;var ee=function(){function RestElement(e){this.type=i.Syntax.RestElement;this.argument=e}return RestElement}();r.RestElement=ee;var re=function(){function ReturnStatement(e){this.type=i.Syntax.ReturnStatement;this.argument=e}return ReturnStatement}();r.ReturnStatement=re;var te=function(){function Script(e){this.type=i.Syntax.Program;this.body=e;this.sourceType="script"}return Script}();r.Script=te;var ie=function(){function SequenceExpression(e){this.type=i.Syntax.SequenceExpression;this.expressions=e}return SequenceExpression}();r.SequenceExpression=ie;var ne=function(){function SpreadElement(e){this.type=i.Syntax.SpreadElement;this.argument=e}return SpreadElement}();r.SpreadElement=ne;var ae=function(){function StaticMemberExpression(e,r){this.type=i.Syntax.MemberExpression;this.computed=false;this.object=e;this.property=r}return StaticMemberExpression}();r.StaticMemberExpression=ae;var ue=function(){function Super(){this.type=i.Syntax.Super}return Super}();r.Super=ue;var se=function(){function SwitchCase(e,r){this.type=i.Syntax.SwitchCase;this.test=e;this.consequent=r}return SwitchCase}();r.SwitchCase=se;var oe=function(){function SwitchStatement(e,r){this.type=i.Syntax.SwitchStatement;this.discriminant=e;this.cases=r}return SwitchStatement}();r.SwitchStatement=oe;var fe=function(){function TaggedTemplateExpression(e,r){this.type=i.Syntax.TaggedTemplateExpression;this.tag=e;this.quasi=r}return TaggedTemplateExpression}();r.TaggedTemplateExpression=fe;var le=function(){function TemplateElement(e,r){this.type=i.Syntax.TemplateElement;this.value=e;this.tail=r}return TemplateElement}();r.TemplateElement=le;var ce=function(){function TemplateLiteral(e,r){this.type=i.Syntax.TemplateLiteral;this.quasis=e;this.expressions=r}return TemplateLiteral}();r.TemplateLiteral=ce;var he=function(){function ThisExpression(){this.type=i.Syntax.ThisExpression}return ThisExpression}();r.ThisExpression=he;var pe=function(){function ThrowStatement(e){this.type=i.Syntax.ThrowStatement;this.argument=e}return ThrowStatement}();r.ThrowStatement=pe;var ve=function(){function TryStatement(e,r,t){this.type=i.Syntax.TryStatement;this.block=e;this.handler=r;this.finalizer=t}return TryStatement}();r.TryStatement=ve;var de=function(){function UnaryExpression(e,r){this.type=i.Syntax.UnaryExpression;this.operator=e;this.argument=r;this.prefix=true}return UnaryExpression}();r.UnaryExpression=de;var De=function(){function UpdateExpression(e,r,t){this.type=i.Syntax.UpdateExpression;this.operator=e;this.argument=r;this.prefix=t}return UpdateExpression}();r.UpdateExpression=De;var me=function(){function VariableDeclaration(e,r){this.type=i.Syntax.VariableDeclaration;this.declarations=e;this.kind=r}return VariableDeclaration}();r.VariableDeclaration=me;var ge=function(){function VariableDeclarator(e,r){this.type=i.Syntax.VariableDeclarator;this.id=e;this.init=r}return VariableDeclarator}();r.VariableDeclarator=ge;var Ee=function(){function WhileStatement(e,r){this.type=i.Syntax.WhileStatement;this.test=e;this.body=r}return WhileStatement}();r.WhileStatement=Ee;var Ae=function(){function WithStatement(e,r){this.type=i.Syntax.WithStatement;this.object=e;this.body=r}return WithStatement}();r.WithStatement=Ae;var Ce=function(){function YieldExpression(e,r){this.type=i.Syntax.YieldExpression;this.argument=e;this.delegate=r}return YieldExpression}();r.YieldExpression=Ce},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(9);var n=t(10);var a=t(11);var u=t(7);var s=t(12);var o=t(2);var f=t(13);var l="ArrowParameterPlaceHolder";var c=function(){function Parser(e,r,t){if(r===void 0){r={}}this.config={range:typeof r.range==="boolean"&&r.range,loc:typeof r.loc==="boolean"&&r.loc,source:null,tokens:typeof r.tokens==="boolean"&&r.tokens,comment:typeof r.comment==="boolean"&&r.comment,tolerant:typeof r.tolerant==="boolean"&&r.tolerant};if(this.config.loc&&r.source&&r.source!==null){this.config.source=String(r.source)}this.delegate=t;this.errorHandler=new n.ErrorHandler;this.errorHandler.tolerant=this.config.tolerant;this.scanner=new s.Scanner(e,this.errorHandler);this.scanner.trackComment=this.config.comment;this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11};this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0};this.hasLineTerminator=false;this.context={isModule:false,await:false,allowIn:true,allowStrictDirective:true,allowYield:true,firstCoverInitializedNameError:null,isAssignmentTarget:false,isBindingElement:false,inFunctionBody:false,inIteration:false,inSwitch:false,labelSet:{},strict:false};this.tokens=[];this.startMarker={index:0,line:this.scanner.lineNumber,column:0};this.lastMarker={index:0,line:this.scanner.lineNumber,column:0};this.nextToken();this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}Parser.prototype.throwError=function(e){var r=[];for(var t=1;t0&&this.delegate){for(var r=0;r>="||e===">>>="||e==="&="||e==="^="||e==="|="};Parser.prototype.isolateCoverGrammar=function(e){var r=this.context.isBindingElement;var t=this.context.isAssignmentTarget;var i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=true;this.context.isAssignmentTarget=true;this.context.firstCoverInitializedNameError=null;var n=e.call(this);if(this.context.firstCoverInitializedNameError!==null){this.throwUnexpectedToken(this.context.firstCoverInitializedNameError)}this.context.isBindingElement=r;this.context.isAssignmentTarget=t;this.context.firstCoverInitializedNameError=i;return n};Parser.prototype.inheritCoverGrammar=function(e){var r=this.context.isBindingElement;var t=this.context.isAssignmentTarget;var i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=true;this.context.isAssignmentTarget=true;this.context.firstCoverInitializedNameError=null;var n=e.call(this);this.context.isBindingElement=this.context.isBindingElement&&r;this.context.isAssignmentTarget=this.context.isAssignmentTarget&&t;this.context.firstCoverInitializedNameError=i||this.context.firstCoverInitializedNameError;return n};Parser.prototype.consumeSemicolon=function(){if(this.match(";")){this.nextToken()}else if(!this.hasLineTerminator){if(this.lookahead.type!==2&&!this.match("}")){this.throwUnexpectedToken(this.lookahead)}this.lastMarker.index=this.startMarker.index;this.lastMarker.line=this.startMarker.line;this.lastMarker.column=this.startMarker.column}};Parser.prototype.parsePrimaryExpression=function(){var e=this.createNode();var r;var t,i;switch(this.lookahead.type){case 3:if((this.context.isModule||this.context.await)&&this.lookahead.value==="await"){this.tolerateUnexpectedToken(this.lookahead)}r=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(e,new u.Identifier(this.nextToken().value));break;case 6:case 8:if(this.context.strict&&this.lookahead.octal){this.tolerateUnexpectedToken(this.lookahead,a.Messages.StrictOctalLiteral)}this.context.isAssignmentTarget=false;this.context.isBindingElement=false;t=this.nextToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.Literal(t.value,i));break;case 1:this.context.isAssignmentTarget=false;this.context.isBindingElement=false;t=this.nextToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.Literal(t.value==="true",i));break;case 5:this.context.isAssignmentTarget=false;this.context.isBindingElement=false;t=this.nextToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.Literal(null,i));break;case 10:r=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=false;r=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":r=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":r=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=false;this.context.isBindingElement=false;this.scanner.index=this.startMarker.index;t=this.nextRegexToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.RegexLiteral(t.regex,i,t.pattern,t.flags));break;default:r=this.throwUnexpectedToken(this.nextToken())}break;case 4:if(!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")){r=this.parseIdentifierName()}else if(!this.context.strict&&this.matchKeyword("let")){r=this.finalize(e,new u.Identifier(this.nextToken().value))}else{this.context.isAssignmentTarget=false;this.context.isBindingElement=false;if(this.matchKeyword("function")){r=this.parseFunctionExpression()}else if(this.matchKeyword("this")){this.nextToken();r=this.finalize(e,new u.ThisExpression)}else if(this.matchKeyword("class")){r=this.parseClassExpression()}else{r=this.throwUnexpectedToken(this.nextToken())}}break;default:r=this.throwUnexpectedToken(this.nextToken())}return r};Parser.prototype.parseSpreadElement=function(){var e=this.createNode();this.expect("...");var r=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(e,new u.SpreadElement(r))};Parser.prototype.parseArrayInitializer=function(){var e=this.createNode();var r=[];this.expect("[");while(!this.match("]")){if(this.match(",")){this.nextToken();r.push(null)}else if(this.match("...")){var t=this.parseSpreadElement();if(!this.match("]")){this.context.isAssignmentTarget=false;this.context.isBindingElement=false;this.expect(",")}r.push(t)}else{r.push(this.inheritCoverGrammar(this.parseAssignmentExpression));if(!this.match("]")){this.expect(",")}}}this.expect("]");return this.finalize(e,new u.ArrayExpression(r))};Parser.prototype.parsePropertyMethod=function(e){this.context.isAssignmentTarget=false;this.context.isBindingElement=false;var r=this.context.strict;var t=this.context.allowStrictDirective;this.context.allowStrictDirective=e.simple;var i=this.isolateCoverGrammar(this.parseFunctionSourceElements);if(this.context.strict&&e.firstRestricted){this.tolerateUnexpectedToken(e.firstRestricted,e.message)}if(this.context.strict&&e.stricted){this.tolerateUnexpectedToken(e.stricted,e.message)}this.context.strict=r;this.context.allowStrictDirective=t;return i};Parser.prototype.parsePropertyMethodFunction=function(){var e=false;var r=this.createNode();var t=this.context.allowYield;this.context.allowYield=true;var i=this.parseFormalParameters();var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(r,new u.FunctionExpression(null,i.params,n,e))};Parser.prototype.parsePropertyMethodAsyncFunction=function(){var e=this.createNode();var r=this.context.allowYield;var t=this.context.await;this.context.allowYield=false;this.context.await=true;var i=this.parseFormalParameters();var n=this.parsePropertyMethod(i);this.context.allowYield=r;this.context.await=t;return this.finalize(e,new u.AsyncFunctionExpression(null,i.params,n))};Parser.prototype.parseObjectPropertyKey=function(){var e=this.createNode();var r=this.nextToken();var t;switch(r.type){case 8:case 6:if(this.context.strict&&r.octal){this.tolerateUnexpectedToken(r,a.Messages.StrictOctalLiteral)}var i=this.getTokenRaw(r);t=this.finalize(e,new u.Literal(r.value,i));break;case 3:case 1:case 5:case 4:t=this.finalize(e,new u.Identifier(r.value));break;case 7:if(r.value==="["){t=this.isolateCoverGrammar(this.parseAssignmentExpression);this.expect("]")}else{t=this.throwUnexpectedToken(r)}break;default:t=this.throwUnexpectedToken(r)}return t};Parser.prototype.isPropertyKey=function(e,r){return e.type===o.Syntax.Identifier&&e.name===r||e.type===o.Syntax.Literal&&e.value===r};Parser.prototype.parseObjectProperty=function(e){var r=this.createNode();var t=this.lookahead;var i;var n=null;var s=null;var o=false;var f=false;var l=false;var c=false;if(t.type===3){var h=t.value;this.nextToken();o=this.match("[");c=!this.hasLineTerminator&&h==="async"&&!this.match(":")&&!this.match("(")&&!this.match("*")&&!this.match(",");n=c?this.parseObjectPropertyKey():this.finalize(r,new u.Identifier(h))}else if(this.match("*")){this.nextToken()}else{o=this.match("[");n=this.parseObjectPropertyKey()}var p=this.qualifiedPropertyName(this.lookahead);if(t.type===3&&!c&&t.value==="get"&&p){i="get";o=this.match("[");n=this.parseObjectPropertyKey();this.context.allowYield=false;s=this.parseGetterMethod()}else if(t.type===3&&!c&&t.value==="set"&&p){i="set";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseSetterMethod()}else if(t.type===7&&t.value==="*"&&p){i="init";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseGeneratorMethod();f=true}else{if(!n){this.throwUnexpectedToken(this.lookahead)}i="init";if(this.match(":")&&!c){if(!o&&this.isPropertyKey(n,"__proto__")){if(e.value){this.tolerateError(a.Messages.DuplicateProtoProperty)}e.value=true}this.nextToken();s=this.inheritCoverGrammar(this.parseAssignmentExpression)}else if(this.match("(")){s=c?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction();f=true}else if(t.type===3){var h=this.finalize(r,new u.Identifier(t.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead;this.nextToken();l=true;var v=this.isolateCoverGrammar(this.parseAssignmentExpression);s=this.finalize(r,new u.AssignmentPattern(h,v))}else{l=true;s=h}}else{this.throwUnexpectedToken(this.nextToken())}}return this.finalize(r,new u.Property(i,n,o,s,f,l))};Parser.prototype.parseObjectInitializer=function(){var e=this.createNode();this.expect("{");var r=[];var t={value:false};while(!this.match("}")){r.push(this.parseObjectProperty(t));if(!this.match("}")){this.expectCommaSeparator()}}this.expect("}");return this.finalize(e,new u.ObjectExpression(r))};Parser.prototype.parseTemplateHead=function(){i.assert(this.lookahead.head,"Template literal must start with a template head");var e=this.createNode();var r=this.nextToken();var t=r.value;var n=r.cooked;return this.finalize(e,new u.TemplateElement({raw:t,cooked:n},r.tail))};Parser.prototype.parseTemplateElement=function(){if(this.lookahead.type!==10){this.throwUnexpectedToken()}var e=this.createNode();var r=this.nextToken();var t=r.value;var i=r.cooked;return this.finalize(e,new u.TemplateElement({raw:t,cooked:i},r.tail))};Parser.prototype.parseTemplateLiteral=function(){var e=this.createNode();var r=[];var t=[];var i=this.parseTemplateHead();t.push(i);while(!i.tail){r.push(this.parseExpression());i=this.parseTemplateElement();t.push(i)}return this.finalize(e,new u.TemplateLiteral(t,r))};Parser.prototype.reinterpretExpressionAsPattern=function(e){switch(e.type){case o.Syntax.Identifier:case o.Syntax.MemberExpression:case o.Syntax.RestElement:case o.Syntax.AssignmentPattern:break;case o.Syntax.SpreadElement:e.type=o.Syntax.RestElement;this.reinterpretExpressionAsPattern(e.argument);break;case o.Syntax.ArrayExpression:e.type=o.Syntax.ArrayPattern;for(var r=0;r")){this.expect("=>")}e={type:l,params:[],async:false}}else{var r=this.lookahead;var t=[];if(this.match("...")){e=this.parseRestElement(t);this.expect(")");if(!this.match("=>")){this.expect("=>")}e={type:l,params:[e],async:false}}else{var i=false;this.context.isBindingElement=true;e=this.inheritCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var n=[];this.context.isAssignmentTarget=false;n.push(e);while(this.lookahead.type!==2){if(!this.match(",")){break}this.nextToken();if(this.match(")")){this.nextToken();for(var a=0;a")){this.expect("=>")}this.context.isBindingElement=false;for(var a=0;a")){if(e.type===o.Syntax.Identifier&&e.name==="yield"){i=true;e={type:l,params:[e],async:false}}if(!i){if(!this.context.isBindingElement){this.throwUnexpectedToken(this.lookahead)}if(e.type===o.Syntax.SequenceExpression){for(var a=0;a")){for(var o=0;o0){this.nextToken();this.context.isAssignmentTarget=false;this.context.isBindingElement=false;var n=[e,this.lookahead];var a=r;var s=this.isolateCoverGrammar(this.parseExponentiationExpression);var o=[a,t.value,s];var f=[i];while(true){i=this.binaryPrecedence(this.lookahead);if(i<=0){break}while(o.length>2&&i<=f[f.length-1]){s=o.pop();var l=o.pop();f.pop();a=o.pop();n.pop();var c=this.startNode(n[n.length-1]);o.push(this.finalize(c,new u.BinaryExpression(l,a,s)))}o.push(this.nextToken().value);f.push(i);n.push(this.lookahead);o.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var h=o.length-1;r=o[h];var p=n.pop();while(h>1){var v=n.pop();var d=p&&p.lineStart;var c=this.startNode(v,d);var l=o[h-1];r=this.finalize(c,new u.BinaryExpression(l,o[h-2],r));h-=2;p=v}}return r};Parser.prototype.parseConditionalExpression=function(){var e=this.lookahead;var r=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var t=this.context.allowIn;this.context.allowIn=true;var i=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=t;this.expect(":");var n=this.isolateCoverGrammar(this.parseAssignmentExpression);r=this.finalize(this.startNode(e),new u.ConditionalExpression(r,i,n));this.context.isAssignmentTarget=false;this.context.isBindingElement=false}return r};Parser.prototype.checkPatternParam=function(e,r){switch(r.type){case o.Syntax.Identifier:this.validateParam(e,r,r.name);break;case o.Syntax.RestElement:this.checkPatternParam(e,r.argument);break;case o.Syntax.AssignmentPattern:this.checkPatternParam(e,r.left);break;case o.Syntax.ArrayPattern:for(var t=0;t")){this.context.isAssignmentTarget=false;this.context.isBindingElement=false;var n=e.async;var s=this.reinterpretAsCoverFormalsList(e);if(s){if(this.hasLineTerminator){this.tolerateUnexpectedToken(this.lookahead)}this.context.firstCoverInitializedNameError=null;var f=this.context.strict;var c=this.context.allowStrictDirective;this.context.allowStrictDirective=s.simple;var h=this.context.allowYield;var p=this.context.await;this.context.allowYield=true;this.context.await=n;var v=this.startNode(r);this.expect("=>");var d=void 0;if(this.match("{")){var D=this.context.allowIn;this.context.allowIn=true;d=this.parseFunctionSourceElements();this.context.allowIn=D}else{d=this.isolateCoverGrammar(this.parseAssignmentExpression)}var m=d.type!==o.Syntax.BlockStatement;if(this.context.strict&&s.firstRestricted){this.throwUnexpectedToken(s.firstRestricted,s.message)}if(this.context.strict&&s.stricted){this.tolerateUnexpectedToken(s.stricted,s.message)}e=n?this.finalize(v,new u.AsyncArrowFunctionExpression(s.params,d,m)):this.finalize(v,new u.ArrowFunctionExpression(s.params,d,m));this.context.strict=f;this.context.allowStrictDirective=c;this.context.allowYield=h;this.context.await=p}}else{if(this.matchAssign()){if(!this.context.isAssignmentTarget){this.tolerateError(a.Messages.InvalidLHSInAssignment)}if(this.context.strict&&e.type===o.Syntax.Identifier){var g=e;if(this.scanner.isRestrictedWord(g.name)){this.tolerateUnexpectedToken(t,a.Messages.StrictLHSAssignment)}if(this.scanner.isStrictModeReservedWord(g.name)){this.tolerateUnexpectedToken(t,a.Messages.StrictReservedWord)}}if(!this.match("=")){this.context.isAssignmentTarget=false;this.context.isBindingElement=false}else{this.reinterpretExpressionAsPattern(e)}t=this.nextToken();var E=t.value;var A=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(r),new u.AssignmentExpression(E,e,A));this.context.firstCoverInitializedNameError=null}}}return e};Parser.prototype.parseExpression=function(){var e=this.lookahead;var r=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var t=[];t.push(r);while(this.lookahead.type!==2){if(!this.match(",")){break}this.nextToken();t.push(this.isolateCoverGrammar(this.parseAssignmentExpression))}r=this.finalize(this.startNode(e),new u.SequenceExpression(t))}return r};Parser.prototype.parseStatementListItem=function(){var e;this.context.isAssignmentTarget=true;this.context.isBindingElement=true;if(this.lookahead.type===4){switch(this.lookahead.value){case"export":if(!this.context.isModule){this.tolerateUnexpectedToken(this.lookahead,a.Messages.IllegalExportDeclaration)}e=this.parseExportDeclaration();break;case"import":if(!this.context.isModule){this.tolerateUnexpectedToken(this.lookahead,a.Messages.IllegalImportDeclaration)}e=this.parseImportDeclaration();break;case"const":e=this.parseLexicalDeclaration({inFor:false});break;case"function":e=this.parseFunctionDeclaration();break;case"class":e=this.parseClassDeclaration();break;case"let":e=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:false}):this.parseStatement();break;default:e=this.parseStatement();break}}else{e=this.parseStatement()}return e};Parser.prototype.parseBlock=function(){var e=this.createNode();this.expect("{");var r=[];while(true){if(this.match("}")){break}r.push(this.parseStatementListItem())}this.expect("}");return this.finalize(e,new u.BlockStatement(r))};Parser.prototype.parseLexicalBinding=function(e,r){var t=this.createNode();var i=[];var n=this.parsePattern(i,e);if(this.context.strict&&n.type===o.Syntax.Identifier){if(this.scanner.isRestrictedWord(n.name)){this.tolerateError(a.Messages.StrictVarName)}}var s=null;if(e==="const"){if(!this.matchKeyword("in")&&!this.matchContextualKeyword("of")){if(this.match("=")){this.nextToken();s=this.isolateCoverGrammar(this.parseAssignmentExpression)}else{this.throwError(a.Messages.DeclarationMissingInitializer,"const")}}}else if(!r.inFor&&n.type!==o.Syntax.Identifier||this.match("=")){this.expect("=");s=this.isolateCoverGrammar(this.parseAssignmentExpression)}return this.finalize(t,new u.VariableDeclarator(n,s))};Parser.prototype.parseBindingList=function(e,r){var t=[this.parseLexicalBinding(e,r)];while(this.match(",")){this.nextToken();t.push(this.parseLexicalBinding(e,r))}return t};Parser.prototype.isLexicalDeclaration=function(){var e=this.scanner.saveState();this.scanner.scanComments();var r=this.scanner.lex();this.scanner.restoreState(e);return r.type===3||r.type===7&&r.value==="["||r.type===7&&r.value==="{"||r.type===4&&r.value==="let"||r.type===4&&r.value==="yield"};Parser.prototype.parseLexicalDeclaration=function(e){var r=this.createNode();var t=this.nextToken().value;i.assert(t==="let"||t==="const","Lexical declaration must be either let or const");var n=this.parseBindingList(t,e);this.consumeSemicolon();return this.finalize(r,new u.VariableDeclaration(n,t))};Parser.prototype.parseBindingRestElement=function(e,r){var t=this.createNode();this.expect("...");var i=this.parsePattern(e,r);return this.finalize(t,new u.RestElement(i))};Parser.prototype.parseArrayPattern=function(e,r){var t=this.createNode();this.expect("[");var i=[];while(!this.match("]")){if(this.match(",")){this.nextToken();i.push(null)}else{if(this.match("...")){i.push(this.parseBindingRestElement(e,r));break}else{i.push(this.parsePatternWithDefault(e,r))}if(!this.match("]")){this.expect(",")}}}this.expect("]");return this.finalize(t,new u.ArrayPattern(i))};Parser.prototype.parsePropertyPattern=function(e,r){var t=this.createNode();var i=false;var n=false;var a=false;var s;var o;if(this.lookahead.type===3){var f=this.lookahead;s=this.parseVariableIdentifier();var l=this.finalize(t,new u.Identifier(f.value));if(this.match("=")){e.push(f);n=true;this.nextToken();var c=this.parseAssignmentExpression();o=this.finalize(this.startNode(f),new u.AssignmentPattern(l,c))}else if(!this.match(":")){e.push(f);n=true;o=l}else{this.expect(":");o=this.parsePatternWithDefault(e,r)}}else{i=this.match("[");s=this.parseObjectPropertyKey();this.expect(":");o=this.parsePatternWithDefault(e,r)}return this.finalize(t,new u.Property("init",s,i,o,a,n))};Parser.prototype.parseObjectPattern=function(e,r){var t=this.createNode();var i=[];this.expect("{");while(!this.match("}")){i.push(this.parsePropertyPattern(e,r));if(!this.match("}")){this.expect(",")}}this.expect("}");return this.finalize(t,new u.ObjectPattern(i))};Parser.prototype.parsePattern=function(e,r){var t;if(this.match("[")){t=this.parseArrayPattern(e,r)}else if(this.match("{")){t=this.parseObjectPattern(e,r)}else{if(this.matchKeyword("let")&&(r==="const"||r==="let")){this.tolerateUnexpectedToken(this.lookahead,a.Messages.LetInLexicalBinding)}e.push(this.lookahead);t=this.parseVariableIdentifier(r)}return t};Parser.prototype.parsePatternWithDefault=function(e,r){var t=this.lookahead;var i=this.parsePattern(e,r);if(this.match("=")){this.nextToken();var n=this.context.allowYield;this.context.allowYield=true;var a=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=n;i=this.finalize(this.startNode(t),new u.AssignmentPattern(i,a))}return i};Parser.prototype.parseVariableIdentifier=function(e){var r=this.createNode();var t=this.nextToken();if(t.type===4&&t.value==="yield"){if(this.context.strict){this.tolerateUnexpectedToken(t,a.Messages.StrictReservedWord)}else if(!this.context.allowYield){this.throwUnexpectedToken(t)}}else if(t.type!==3){if(this.context.strict&&t.type===4&&this.scanner.isStrictModeReservedWord(t.value)){this.tolerateUnexpectedToken(t,a.Messages.StrictReservedWord)}else{if(this.context.strict||t.value!=="let"||e!=="var"){this.throwUnexpectedToken(t)}}}else if((this.context.isModule||this.context.await)&&t.type===3&&t.value==="await"){this.tolerateUnexpectedToken(t)}return this.finalize(r,new u.Identifier(t.value))};Parser.prototype.parseVariableDeclaration=function(e){var r=this.createNode();var t=[];var i=this.parsePattern(t,"var");if(this.context.strict&&i.type===o.Syntax.Identifier){if(this.scanner.isRestrictedWord(i.name)){this.tolerateError(a.Messages.StrictVarName)}}var n=null;if(this.match("=")){this.nextToken();n=this.isolateCoverGrammar(this.parseAssignmentExpression)}else if(i.type!==o.Syntax.Identifier&&!e.inFor){this.expect("=")}return this.finalize(r,new u.VariableDeclarator(i,n))};Parser.prototype.parseVariableDeclarationList=function(e){var r={inFor:e.inFor};var t=[];t.push(this.parseVariableDeclaration(r));while(this.match(",")){this.nextToken();t.push(this.parseVariableDeclaration(r))}return t};Parser.prototype.parseVariableStatement=function(){var e=this.createNode();this.expectKeyword("var");var r=this.parseVariableDeclarationList({inFor:false});this.consumeSemicolon();return this.finalize(e,new u.VariableDeclaration(r,"var"))};Parser.prototype.parseEmptyStatement=function(){var e=this.createNode();this.expect(";");return this.finalize(e,new u.EmptyStatement)};Parser.prototype.parseExpressionStatement=function(){var e=this.createNode();var r=this.parseExpression();this.consumeSemicolon();return this.finalize(e,new u.ExpressionStatement(r))};Parser.prototype.parseIfClause=function(){if(this.context.strict&&this.matchKeyword("function")){this.tolerateError(a.Messages.StrictFunction)}return this.parseStatement()};Parser.prototype.parseIfStatement=function(){var e=this.createNode();var r;var t=null;this.expectKeyword("if");this.expect("(");var i=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());r=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");r=this.parseIfClause();if(this.matchKeyword("else")){this.nextToken();t=this.parseIfClause()}}return this.finalize(e,new u.IfStatement(i,r,t))};Parser.prototype.parseDoWhileStatement=function(){var e=this.createNode();this.expectKeyword("do");var r=this.context.inIteration;this.context.inIteration=true;var t=this.parseStatement();this.context.inIteration=r;this.expectKeyword("while");this.expect("(");var i=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken())}else{this.expect(")");if(this.match(";")){this.nextToken()}}return this.finalize(e,new u.DoWhileStatement(t,i))};Parser.prototype.parseWhileStatement=function(){var e=this.createNode();var r;this.expectKeyword("while");this.expect("(");var t=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());r=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");var i=this.context.inIteration;this.context.inIteration=true;r=this.parseStatement();this.context.inIteration=i}return this.finalize(e,new u.WhileStatement(t,r))};Parser.prototype.parseForStatement=function(){var e=null;var r=null;var t=null;var i=true;var n,s;var f=this.createNode();this.expectKeyword("for");this.expect("(");if(this.match(";")){this.nextToken()}else{if(this.matchKeyword("var")){e=this.createNode();this.nextToken();var l=this.context.allowIn;this.context.allowIn=false;var c=this.parseVariableDeclarationList({inFor:true});this.context.allowIn=l;if(c.length===1&&this.matchKeyword("in")){var h=c[0];if(h.init&&(h.id.type===o.Syntax.ArrayPattern||h.id.type===o.Syntax.ObjectPattern||this.context.strict)){this.tolerateError(a.Messages.ForInOfLoopInitializer,"for-in")}e=this.finalize(e,new u.VariableDeclaration(c,"var"));this.nextToken();n=e;s=this.parseExpression();e=null}else if(c.length===1&&c[0].init===null&&this.matchContextualKeyword("of")){e=this.finalize(e,new u.VariableDeclaration(c,"var"));this.nextToken();n=e;s=this.parseAssignmentExpression();e=null;i=false}else{e=this.finalize(e,new u.VariableDeclaration(c,"var"));this.expect(";")}}else if(this.matchKeyword("const")||this.matchKeyword("let")){e=this.createNode();var p=this.nextToken().value;if(!this.context.strict&&this.lookahead.value==="in"){e=this.finalize(e,new u.Identifier(p));this.nextToken();n=e;s=this.parseExpression();e=null}else{var l=this.context.allowIn;this.context.allowIn=false;var c=this.parseBindingList(p,{inFor:true});this.context.allowIn=l;if(c.length===1&&c[0].init===null&&this.matchKeyword("in")){e=this.finalize(e,new u.VariableDeclaration(c,p));this.nextToken();n=e;s=this.parseExpression();e=null}else if(c.length===1&&c[0].init===null&&this.matchContextualKeyword("of")){e=this.finalize(e,new u.VariableDeclaration(c,p));this.nextToken();n=e;s=this.parseAssignmentExpression();e=null;i=false}else{this.consumeSemicolon();e=this.finalize(e,new u.VariableDeclaration(c,p))}}}else{var v=this.lookahead;var l=this.context.allowIn;this.context.allowIn=false;e=this.inheritCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=l;if(this.matchKeyword("in")){if(!this.context.isAssignmentTarget||e.type===o.Syntax.AssignmentExpression){this.tolerateError(a.Messages.InvalidLHSInForIn)}this.nextToken();this.reinterpretExpressionAsPattern(e);n=e;s=this.parseExpression();e=null}else if(this.matchContextualKeyword("of")){if(!this.context.isAssignmentTarget||e.type===o.Syntax.AssignmentExpression){this.tolerateError(a.Messages.InvalidLHSInForLoop)}this.nextToken();this.reinterpretExpressionAsPattern(e);n=e;s=this.parseAssignmentExpression();e=null;i=false}else{if(this.match(",")){var d=[e];while(this.match(",")){this.nextToken();d.push(this.isolateCoverGrammar(this.parseAssignmentExpression))}e=this.finalize(this.startNode(v),new u.SequenceExpression(d))}this.expect(";")}}}if(typeof n==="undefined"){if(!this.match(";")){r=this.parseExpression()}this.expect(";");if(!this.match(")")){t=this.parseExpression()}}var D;if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());D=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");var m=this.context.inIteration;this.context.inIteration=true;D=this.isolateCoverGrammar(this.parseStatement);this.context.inIteration=m}return typeof n==="undefined"?this.finalize(f,new u.ForStatement(e,r,t,D)):i?this.finalize(f,new u.ForInStatement(n,s,D)):this.finalize(f,new u.ForOfStatement(n,s,D))};Parser.prototype.parseContinueStatement=function(){var e=this.createNode();this.expectKeyword("continue");var r=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var t=this.parseVariableIdentifier();r=t;var i="$"+t.name;if(!Object.prototype.hasOwnProperty.call(this.context.labelSet,i)){this.throwError(a.Messages.UnknownLabel,t.name)}}this.consumeSemicolon();if(r===null&&!this.context.inIteration){this.throwError(a.Messages.IllegalContinue)}return this.finalize(e,new u.ContinueStatement(r))};Parser.prototype.parseBreakStatement=function(){var e=this.createNode();this.expectKeyword("break");var r=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var t=this.parseVariableIdentifier();var i="$"+t.name;if(!Object.prototype.hasOwnProperty.call(this.context.labelSet,i)){this.throwError(a.Messages.UnknownLabel,t.name)}r=t}this.consumeSemicolon();if(r===null&&!this.context.inIteration&&!this.context.inSwitch){this.throwError(a.Messages.IllegalBreak)}return this.finalize(e,new u.BreakStatement(r))};Parser.prototype.parseReturnStatement=function(){if(!this.context.inFunctionBody){this.tolerateError(a.Messages.IllegalReturn)}var e=this.createNode();this.expectKeyword("return");var r=!this.match(";")&&!this.match("}")&&!this.hasLineTerminator&&this.lookahead.type!==2||this.lookahead.type===8||this.lookahead.type===10;var t=r?this.parseExpression():null;this.consumeSemicolon();return this.finalize(e,new u.ReturnStatement(t))};Parser.prototype.parseWithStatement=function(){if(this.context.strict){this.tolerateError(a.Messages.StrictModeWith)}var e=this.createNode();var r;this.expectKeyword("with");this.expect("(");var t=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());r=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");r=this.parseStatement()}return this.finalize(e,new u.WithStatement(t,r))};Parser.prototype.parseSwitchCase=function(){var e=this.createNode();var r;if(this.matchKeyword("default")){this.nextToken();r=null}else{this.expectKeyword("case");r=this.parseExpression()}this.expect(":");var t=[];while(true){if(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case")){break}t.push(this.parseStatementListItem())}return this.finalize(e,new u.SwitchCase(r,t))};Parser.prototype.parseSwitchStatement=function(){var e=this.createNode();this.expectKeyword("switch");this.expect("(");var r=this.parseExpression();this.expect(")");var t=this.context.inSwitch;this.context.inSwitch=true;var i=[];var n=false;this.expect("{");while(true){if(this.match("}")){break}var s=this.parseSwitchCase();if(s.test===null){if(n){this.throwError(a.Messages.MultipleDefaultsInSwitch)}n=true}i.push(s)}this.expect("}");this.context.inSwitch=t;return this.finalize(e,new u.SwitchStatement(r,i))};Parser.prototype.parseLabelledStatement=function(){var e=this.createNode();var r=this.parseExpression();var t;if(r.type===o.Syntax.Identifier&&this.match(":")){this.nextToken();var i=r;var n="$"+i.name;if(Object.prototype.hasOwnProperty.call(this.context.labelSet,n)){this.throwError(a.Messages.Redeclaration,"Label",i.name)}this.context.labelSet[n]=true;var s=void 0;if(this.matchKeyword("class")){this.tolerateUnexpectedToken(this.lookahead);s=this.parseClassDeclaration()}else if(this.matchKeyword("function")){var f=this.lookahead;var l=this.parseFunctionDeclaration();if(this.context.strict){this.tolerateUnexpectedToken(f,a.Messages.StrictFunction)}else if(l.generator){this.tolerateUnexpectedToken(f,a.Messages.GeneratorInLegacyContext)}s=l}else{s=this.parseStatement()}delete this.context.labelSet[n];t=new u.LabeledStatement(i,s)}else{this.consumeSemicolon();t=new u.ExpressionStatement(r)}return this.finalize(e,t)};Parser.prototype.parseThrowStatement=function(){var e=this.createNode();this.expectKeyword("throw");if(this.hasLineTerminator){this.throwError(a.Messages.NewlineAfterThrow)}var r=this.parseExpression();this.consumeSemicolon();return this.finalize(e,new u.ThrowStatement(r))};Parser.prototype.parseCatchClause=function(){var e=this.createNode();this.expectKeyword("catch");this.expect("(");if(this.match(")")){this.throwUnexpectedToken(this.lookahead)}var r=[];var t=this.parsePattern(r);var i={};for(var n=0;n0){this.tolerateError(a.Messages.BadGetterArity)}var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(e,new u.FunctionExpression(null,i.params,n,r))};Parser.prototype.parseSetterMethod=function(){var e=this.createNode();var r=false;var t=this.context.allowYield;this.context.allowYield=!r;var i=this.parseFormalParameters();if(i.params.length!==1){this.tolerateError(a.Messages.BadSetterArity)}else if(i.params[0]instanceof u.RestElement){this.tolerateError(a.Messages.BadSetterRestParameter)}var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(e,new u.FunctionExpression(null,i.params,n,r))};Parser.prototype.parseGeneratorMethod=function(){var e=this.createNode();var r=true;var t=this.context.allowYield;this.context.allowYield=true;var i=this.parseFormalParameters();this.context.allowYield=false;var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(e,new u.FunctionExpression(null,i.params,n,r))};Parser.prototype.isStartOfExpression=function(){var e=true;var r=this.lookahead.value;switch(this.lookahead.type){case 7:e=r==="["||r==="("||r==="{"||r==="+"||r==="-"||r==="!"||r==="~"||r==="++"||r==="--"||r==="/"||r==="/=";break;case 4:e=r==="class"||r==="delete"||r==="function"||r==="let"||r==="new"||r==="super"||r==="this"||r==="typeof"||r==="void"||r==="yield";break;default:break}return e};Parser.prototype.parseYieldExpression=function(){var e=this.createNode();this.expectKeyword("yield");var r=null;var t=false;if(!this.hasLineTerminator){var i=this.context.allowYield;this.context.allowYield=false;t=this.match("*");if(t){this.nextToken();r=this.parseAssignmentExpression()}else if(this.isStartOfExpression()){r=this.parseAssignmentExpression()}this.context.allowYield=i}return this.finalize(e,new u.YieldExpression(r,t))};Parser.prototype.parseClassElement=function(e){var r=this.lookahead;var t=this.createNode();var i="";var n=null;var s=null;var o=false;var f=false;var l=false;var c=false;if(this.match("*")){this.nextToken()}else{o=this.match("[");n=this.parseObjectPropertyKey();var h=n;if(h.name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))){r=this.lookahead;l=true;o=this.match("[");if(this.match("*")){this.nextToken()}else{n=this.parseObjectPropertyKey()}}if(r.type===3&&!this.hasLineTerminator&&r.value==="async"){var p=this.lookahead.value;if(p!==":"&&p!=="("&&p!=="*"){c=true;r=this.lookahead;n=this.parseObjectPropertyKey();if(r.type===3&&r.value==="constructor"){this.tolerateUnexpectedToken(r,a.Messages.ConstructorIsAsync)}}}}var v=this.qualifiedPropertyName(this.lookahead);if(r.type===3){if(r.value==="get"&&v){i="get";o=this.match("[");n=this.parseObjectPropertyKey();this.context.allowYield=false;s=this.parseGetterMethod()}else if(r.value==="set"&&v){i="set";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseSetterMethod()}}else if(r.type===7&&r.value==="*"&&v){i="init";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseGeneratorMethod();f=true}if(!i&&n&&this.match("(")){i="init";s=c?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction();f=true}if(!i){this.throwUnexpectedToken(this.lookahead)}if(i==="init"){i="method"}if(!o){if(l&&this.isPropertyKey(n,"prototype")){this.throwUnexpectedToken(r,a.Messages.StaticPrototype)}if(!l&&this.isPropertyKey(n,"constructor")){if(i!=="method"||!f||s&&s.generator){this.throwUnexpectedToken(r,a.Messages.ConstructorSpecialMethod)}if(e.value){this.throwUnexpectedToken(r,a.Messages.DuplicateConstructor)}else{e.value=true}i="constructor"}}return this.finalize(t,new u.MethodDefinition(n,o,s,i,l))};Parser.prototype.parseClassElementList=function(){var e=[];var r={value:false};this.expect("{");while(!this.match("}")){if(this.match(";")){this.nextToken()}else{e.push(this.parseClassElement(r))}}this.expect("}");return e};Parser.prototype.parseClassBody=function(){var e=this.createNode();var r=this.parseClassElementList();return this.finalize(e,new u.ClassBody(r))};Parser.prototype.parseClassDeclaration=function(e){var r=this.createNode();var t=this.context.strict;this.context.strict=true;this.expectKeyword("class");var i=e&&this.lookahead.type!==3?null:this.parseVariableIdentifier();var n=null;if(this.matchKeyword("extends")){this.nextToken();n=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall)}var a=this.parseClassBody();this.context.strict=t;return this.finalize(r,new u.ClassDeclaration(i,n,a))};Parser.prototype.parseClassExpression=function(){var e=this.createNode();var r=this.context.strict;this.context.strict=true;this.expectKeyword("class");var t=this.lookahead.type===3?this.parseVariableIdentifier():null;var i=null;if(this.matchKeyword("extends")){this.nextToken();i=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall)}var n=this.parseClassBody();this.context.strict=r;return this.finalize(e,new u.ClassExpression(t,i,n))};Parser.prototype.parseModule=function(){this.context.strict=true;this.context.isModule=true;this.scanner.isModule=true;var e=this.createNode();var r=this.parseDirectivePrologues();while(this.lookahead.type!==2){r.push(this.parseStatementListItem())}return this.finalize(e,new u.Module(r))};Parser.prototype.parseScript=function(){var e=this.createNode();var r=this.parseDirectivePrologues();while(this.lookahead.type!==2){r.push(this.parseStatementListItem())}return this.finalize(e,new u.Script(r))};Parser.prototype.parseModuleSpecifier=function(){var e=this.createNode();if(this.lookahead.type!==8){this.throwError(a.Messages.InvalidModuleSpecifier)}var r=this.nextToken();var t=this.getTokenRaw(r);return this.finalize(e,new u.Literal(r.value,t))};Parser.prototype.parseImportSpecifier=function(){var e=this.createNode();var r;var t;if(this.lookahead.type===3){r=this.parseVariableIdentifier();t=r;if(this.matchContextualKeyword("as")){this.nextToken();t=this.parseVariableIdentifier()}}else{r=this.parseIdentifierName();t=r;if(this.matchContextualKeyword("as")){this.nextToken();t=this.parseVariableIdentifier()}else{this.throwUnexpectedToken(this.nextToken())}}return this.finalize(e,new u.ImportSpecifier(t,r))};Parser.prototype.parseNamedImports=function(){this.expect("{");var e=[];while(!this.match("}")){e.push(this.parseImportSpecifier());if(!this.match("}")){this.expect(",")}}this.expect("}");return e};Parser.prototype.parseImportDefaultSpecifier=function(){var e=this.createNode();var r=this.parseIdentifierName();return this.finalize(e,new u.ImportDefaultSpecifier(r))};Parser.prototype.parseImportNamespaceSpecifier=function(){var e=this.createNode();this.expect("*");if(!this.matchContextualKeyword("as")){this.throwError(a.Messages.NoAsAfterImportNamespace)}this.nextToken();var r=this.parseIdentifierName();return this.finalize(e,new u.ImportNamespaceSpecifier(r))};Parser.prototype.parseImportDeclaration=function(){if(this.context.inFunctionBody){this.throwError(a.Messages.IllegalImportDeclaration)}var e=this.createNode();this.expectKeyword("import");var r;var t=[];if(this.lookahead.type===8){r=this.parseModuleSpecifier()}else{if(this.match("{")){t=t.concat(this.parseNamedImports())}else if(this.match("*")){t.push(this.parseImportNamespaceSpecifier())}else if(this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")){t.push(this.parseImportDefaultSpecifier());if(this.match(",")){this.nextToken();if(this.match("*")){t.push(this.parseImportNamespaceSpecifier())}else if(this.match("{")){t=t.concat(this.parseNamedImports())}else{this.throwUnexpectedToken(this.lookahead)}}}else{this.throwUnexpectedToken(this.nextToken())}if(!this.matchContextualKeyword("from")){var i=this.lookahead.value?a.Messages.UnexpectedToken:a.Messages.MissingFromClause;this.throwError(i,this.lookahead.value)}this.nextToken();r=this.parseModuleSpecifier()}this.consumeSemicolon();return this.finalize(e,new u.ImportDeclaration(t,r))};Parser.prototype.parseExportSpecifier=function(){var e=this.createNode();var r=this.parseIdentifierName();var t=r;if(this.matchContextualKeyword("as")){this.nextToken();t=this.parseIdentifierName()}return this.finalize(e,new u.ExportSpecifier(r,t))};Parser.prototype.parseExportDeclaration=function(){if(this.context.inFunctionBody){this.throwError(a.Messages.IllegalExportDeclaration)}var e=this.createNode();this.expectKeyword("export");var r;if(this.matchKeyword("default")){this.nextToken();if(this.matchKeyword("function")){var t=this.parseFunctionDeclaration(true);r=this.finalize(e,new u.ExportDefaultDeclaration(t))}else if(this.matchKeyword("class")){var t=this.parseClassDeclaration(true);r=this.finalize(e,new u.ExportDefaultDeclaration(t))}else if(this.matchContextualKeyword("async")){var t=this.matchAsyncFunction()?this.parseFunctionDeclaration(true):this.parseAssignmentExpression();r=this.finalize(e,new u.ExportDefaultDeclaration(t))}else{if(this.matchContextualKeyword("from")){this.throwError(a.Messages.UnexpectedToken,this.lookahead.value)}var t=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression();this.consumeSemicolon();r=this.finalize(e,new u.ExportDefaultDeclaration(t))}}else if(this.match("*")){this.nextToken();if(!this.matchContextualKeyword("from")){var i=this.lookahead.value?a.Messages.UnexpectedToken:a.Messages.MissingFromClause;this.throwError(i,this.lookahead.value)}this.nextToken();var n=this.parseModuleSpecifier();this.consumeSemicolon();r=this.finalize(e,new u.ExportAllDeclaration(n))}else if(this.lookahead.type===4){var t=void 0;switch(this.lookahead.value){case"let":case"const":t=this.parseLexicalDeclaration({inFor:false});break;case"var":case"class":case"function":t=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}r=this.finalize(e,new u.ExportNamedDeclaration(t,[],null))}else if(this.matchAsyncFunction()){var t=this.parseFunctionDeclaration();r=this.finalize(e,new u.ExportNamedDeclaration(t,[],null))}else{var s=[];var o=null;var f=false;this.expect("{");while(!this.match("}")){f=f||this.matchKeyword("default");s.push(this.parseExportSpecifier());if(!this.match("}")){this.expect(",")}}this.expect("}");if(this.matchContextualKeyword("from")){this.nextToken();o=this.parseModuleSpecifier();this.consumeSemicolon()}else if(f){var i=this.lookahead.value?a.Messages.UnexpectedToken:a.Messages.MissingFromClause;this.throwError(i,this.lookahead.value)}else{this.consumeSemicolon()}r=this.finalize(e,new u.ExportNamedDeclaration(null,s,o))}return r};return Parser}();r.Parser=c},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});function assert(e,r){if(!e){throw new Error("ASSERT: "+r)}}r.assert=assert},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var t=function(){function ErrorHandler(){this.errors=[];this.tolerant=false}ErrorHandler.prototype.recordError=function(e){this.errors.push(e)};ErrorHandler.prototype.tolerate=function(e){if(this.tolerant){this.recordError(e)}else{throw e}};ErrorHandler.prototype.constructError=function(e,r){var t=new Error(e);try{throw t}catch(e){if(Object.create&&Object.defineProperty){t=Object.create(e);Object.defineProperty(t,"column",{value:r})}}return t};ErrorHandler.prototype.createError=function(e,r,t,i){var n="Line "+r+": "+i;var a=this.constructError(n,t);a.index=e;a.lineNumber=r;a.description=i;return a};ErrorHandler.prototype.throwError=function(e,r,t,i){throw this.createError(e,r,t,i)};ErrorHandler.prototype.tolerateError=function(e,r,t,i){var n=this.createError(e,r,t,i);if(this.tolerant){this.recordError(n)}else{throw n}};return ErrorHandler}();r.ErrorHandler=t},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(9);var n=t(4);var a=t(11);function hexValue(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function octalValue(e){return"01234567".indexOf(e)}var u=function(){function Scanner(e,r){this.source=e;this.errorHandler=r;this.trackComment=false;this.isModule=false;this.length=e.length;this.index=0;this.lineNumber=e.length>0?1:0;this.lineStart=0;this.curlyStack=[]}Scanner.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}};Scanner.prototype.restoreState=function(e){this.index=e.index;this.lineNumber=e.lineNumber;this.lineStart=e.lineStart};Scanner.prototype.eof=function(){return this.index>=this.length};Scanner.prototype.throwUnexpectedToken=function(e){if(e===void 0){e=a.Messages.UnexpectedTokenIllegal}return this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,e)};Scanner.prototype.tolerateUnexpectedToken=function(e){if(e===void 0){e=a.Messages.UnexpectedTokenIllegal}this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,e)};Scanner.prototype.skipSingleLineComment=function(e){var r=[];var t,i;if(this.trackComment){r=[];t=this.index-e;i={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{}}}while(!this.eof()){var a=this.source.charCodeAt(this.index);++this.index;if(n.Character.isLineTerminator(a)){if(this.trackComment){i.end={line:this.lineNumber,column:this.index-this.lineStart-1};var u={multiLine:false,slice:[t+e,this.index-1],range:[t,this.index-1],loc:i};r.push(u)}if(a===13&&this.source.charCodeAt(this.index)===10){++this.index}++this.lineNumber;this.lineStart=this.index;return r}}if(this.trackComment){i.end={line:this.lineNumber,column:this.index-this.lineStart};var u={multiLine:false,slice:[t+e,this.index],range:[t,this.index],loc:i};r.push(u)}return r};Scanner.prototype.skipMultiLineComment=function(){var e=[];var r,t;if(this.trackComment){e=[];r=this.index-2;t={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}}}while(!this.eof()){var i=this.source.charCodeAt(this.index);if(n.Character.isLineTerminator(i)){if(i===13&&this.source.charCodeAt(this.index+1)===10){++this.index}++this.lineNumber;++this.index;this.lineStart=this.index}else if(i===42){if(this.source.charCodeAt(this.index+1)===47){this.index+=2;if(this.trackComment){t.end={line:this.lineNumber,column:this.index-this.lineStart};var a={multiLine:true,slice:[r+2,this.index-2],range:[r,this.index],loc:t};e.push(a)}return e}++this.index}else{++this.index}}if(this.trackComment){t.end={line:this.lineNumber,column:this.index-this.lineStart};var a={multiLine:true,slice:[r+2,this.index],range:[r,this.index],loc:t};e.push(a)}this.tolerateUnexpectedToken();return e};Scanner.prototype.scanComments=function(){var e;if(this.trackComment){e=[]}var r=this.index===0;while(!this.eof()){var t=this.source.charCodeAt(this.index);if(n.Character.isWhiteSpace(t)){++this.index}else if(n.Character.isLineTerminator(t)){++this.index;if(t===13&&this.source.charCodeAt(this.index)===10){++this.index}++this.lineNumber;this.lineStart=this.index;r=true}else if(t===47){t=this.source.charCodeAt(this.index+1);if(t===47){this.index+=2;var i=this.skipSingleLineComment(2);if(this.trackComment){e=e.concat(i)}r=true}else if(t===42){this.index+=2;var i=this.skipMultiLineComment();if(this.trackComment){e=e.concat(i)}}else{break}}else if(r&&t===45){if(this.source.charCodeAt(this.index+1)===45&&this.source.charCodeAt(this.index+2)===62){this.index+=3;var i=this.skipSingleLineComment(3);if(this.trackComment){e=e.concat(i)}}else{break}}else if(t===60&&!this.isModule){if(this.source.slice(this.index+1,this.index+4)==="!--"){this.index+=4;var i=this.skipSingleLineComment(4);if(this.trackComment){e=e.concat(i)}}else{break}}else{break}}return e};Scanner.prototype.isFutureReservedWord=function(e){switch(e){case"enum":case"export":case"import":case"super":return true;default:return false}};Scanner.prototype.isStrictModeReservedWord=function(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return true;default:return false}};Scanner.prototype.isRestrictedWord=function(e){return e==="eval"||e==="arguments"};Scanner.prototype.isKeyword=function(e){switch(e.length){case 2:return e==="if"||e==="in"||e==="do";case 3:return e==="var"||e==="for"||e==="new"||e==="try"||e==="let";case 4:return e==="this"||e==="else"||e==="case"||e==="void"||e==="with"||e==="enum";case 5:return e==="while"||e==="break"||e==="catch"||e==="throw"||e==="const"||e==="yield"||e==="class"||e==="super";case 6:return e==="return"||e==="typeof"||e==="delete"||e==="switch"||e==="export"||e==="import";case 7:return e==="default"||e==="finally"||e==="extends";case 8:return e==="function"||e==="continue"||e==="debugger";case 10:return e==="instanceof";default:return false}};Scanner.prototype.codePointAt=function(e){var r=this.source.charCodeAt(e);if(r>=55296&&r<=56319){var t=this.source.charCodeAt(e+1);if(t>=56320&&t<=57343){var i=r;r=(i-55296)*1024+t-56320+65536}}return r};Scanner.prototype.scanHexEscape=function(e){var r=e==="u"?4:2;var t=0;for(var i=0;i1114111||e!=="}"){this.throwUnexpectedToken()}return n.Character.fromCodePoint(r)};Scanner.prototype.getIdentifier=function(){var e=this.index++;while(!this.eof()){var r=this.source.charCodeAt(this.index);if(r===92){this.index=e;return this.getComplexIdentifier()}else if(r>=55296&&r<57343){this.index=e;return this.getComplexIdentifier()}if(n.Character.isIdentifierPart(r)){++this.index}else{break}}return this.source.slice(e,this.index)};Scanner.prototype.getComplexIdentifier=function(){var e=this.codePointAt(this.index);var r=n.Character.fromCodePoint(e);this.index+=r.length;var t;if(e===92){if(this.source.charCodeAt(this.index)!==117){this.throwUnexpectedToken()}++this.index;if(this.source[this.index]==="{"){++this.index;t=this.scanUnicodeCodePointEscape()}else{t=this.scanHexEscape("u");if(t===null||t==="\\"||!n.Character.isIdentifierStart(t.charCodeAt(0))){this.throwUnexpectedToken()}}r=t}while(!this.eof()){e=this.codePointAt(this.index);if(!n.Character.isIdentifierPart(e)){break}t=n.Character.fromCodePoint(e);r+=t;this.index+=t.length;if(e===92){r=r.substr(0,r.length-1);if(this.source.charCodeAt(this.index)!==117){this.throwUnexpectedToken()}++this.index;if(this.source[this.index]==="{"){++this.index;t=this.scanUnicodeCodePointEscape()}else{t=this.scanHexEscape("u");if(t===null||t==="\\"||!n.Character.isIdentifierPart(t.charCodeAt(0))){this.throwUnexpectedToken()}}r+=t}}return r};Scanner.prototype.octalToDecimal=function(e){var r=e!=="0";var t=octalValue(e);if(!this.eof()&&n.Character.isOctalDigit(this.source.charCodeAt(this.index))){r=true;t=t*8+octalValue(this.source[this.index++]);if("0123".indexOf(e)>=0&&!this.eof()&&n.Character.isOctalDigit(this.source.charCodeAt(this.index))){t=t*8+octalValue(this.source[this.index++])}}return{code:t,octal:r}};Scanner.prototype.scanIdentifier=function(){var e;var r=this.index;var t=this.source.charCodeAt(r)===92?this.getComplexIdentifier():this.getIdentifier();if(t.length===1){e=3}else if(this.isKeyword(t)){e=4}else if(t==="null"){e=5}else if(t==="true"||t==="false"){e=1}else{e=3}if(e!==3&&r+t.length!==this.index){var i=this.index;this.index=r;this.tolerateUnexpectedToken(a.Messages.InvalidEscapedReservedWord);this.index=i}return{type:e,value:t,lineNumber:this.lineNumber,lineStart:this.lineStart,start:r,end:this.index}};Scanner.prototype.scanPunctuator=function(){var e=this.index;var r=this.source[this.index];switch(r){case"(":case"{":if(r==="{"){this.curlyStack.push("{")}++this.index;break;case".":++this.index;if(this.source[this.index]==="."&&this.source[this.index+1]==="."){this.index+=2;r="..."}break;case"}":++this.index;this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:r=this.source.substr(this.index,4);if(r===">>>="){this.index+=4}else{r=r.substr(0,3);if(r==="==="||r==="!=="||r===">>>"||r==="<<="||r===">>="||r==="**="){this.index+=3}else{r=r.substr(0,2);if(r==="&&"||r==="||"||r==="=="||r==="!="||r==="+="||r==="-="||r==="*="||r==="/="||r==="++"||r==="--"||r==="<<"||r===">>"||r==="&="||r==="|="||r==="^="||r==="%="||r==="<="||r===">="||r==="=>"||r==="**"){this.index+=2}else{r=this.source[this.index];if("<>=!+-*%&|^/".indexOf(r)>=0){++this.index}}}}}if(this.index===e){this.throwUnexpectedToken()}return{type:7,value:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}};Scanner.prototype.scanHexLiteral=function(e){var r="";while(!this.eof()){if(!n.Character.isHexDigit(this.source.charCodeAt(this.index))){break}r+=this.source[this.index++]}if(r.length===0){this.throwUnexpectedToken()}if(n.Character.isIdentifierStart(this.source.charCodeAt(this.index))){this.throwUnexpectedToken()}return{type:6,value:parseInt("0x"+r,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}};Scanner.prototype.scanBinaryLiteral=function(e){var r="";var t;while(!this.eof()){t=this.source[this.index];if(t!=="0"&&t!=="1"){break}r+=this.source[this.index++]}if(r.length===0){this.throwUnexpectedToken()}if(!this.eof()){t=this.source.charCodeAt(this.index);if(n.Character.isIdentifierStart(t)||n.Character.isDecimalDigit(t)){this.throwUnexpectedToken()}}return{type:6,value:parseInt(r,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}};Scanner.prototype.scanOctalLiteral=function(e,r){var t="";var i=false;if(n.Character.isOctalDigit(e.charCodeAt(0))){i=true;t="0"+this.source[this.index++]}else{++this.index}while(!this.eof()){if(!n.Character.isOctalDigit(this.source.charCodeAt(this.index))){break}t+=this.source[this.index++]}if(!i&&t.length===0){this.throwUnexpectedToken()}if(n.Character.isIdentifierStart(this.source.charCodeAt(this.index))||n.Character.isDecimalDigit(this.source.charCodeAt(this.index))){this.throwUnexpectedToken()}return{type:6,value:parseInt(t,8),octal:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:r,end:this.index}};Scanner.prototype.isImplicitOctalLiteral=function(){for(var e=this.index+1;e=0){i=i.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(e,r,i){var u=parseInt(r||i,16);if(u>1114111){n.throwUnexpectedToken(a.Messages.InvalidRegExp)}if(u<=65535){return String.fromCharCode(u)}return t}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,t)}try{RegExp(i)}catch(e){this.throwUnexpectedToken(a.Messages.InvalidRegExp)}try{return new RegExp(e,r)}catch(e){return null}};Scanner.prototype.scanRegExpBody=function(){var e=this.source[this.index];i.assert(e==="/","Regular expression literal must start with a slash");var r=this.source[this.index++];var t=false;var u=false;while(!this.eof()){e=this.source[this.index++];r+=e;if(e==="\\"){e=this.source[this.index++];if(n.Character.isLineTerminator(e.charCodeAt(0))){this.throwUnexpectedToken(a.Messages.UnterminatedRegExp)}r+=e}else if(n.Character.isLineTerminator(e.charCodeAt(0))){this.throwUnexpectedToken(a.Messages.UnterminatedRegExp)}else if(t){if(e==="]"){t=false}}else{if(e==="/"){u=true;break}else if(e==="["){t=true}}}if(!u){this.throwUnexpectedToken(a.Messages.UnterminatedRegExp)}return r.substr(1,r.length-2)};Scanner.prototype.scanRegExpFlags=function(){var e="";var r="";while(!this.eof()){var t=this.source[this.index];if(!n.Character.isIdentifierPart(t.charCodeAt(0))){break}++this.index;if(t==="\\"&&!this.eof()){t=this.source[this.index];if(t==="u"){++this.index;var i=this.index;var a=this.scanHexEscape("u");if(a!==null){r+=a;for(e+="\\u";i=55296&&e<57343){if(n.Character.isIdentifierStart(this.codePointAt(this.index))){return this.scanIdentifier()}}return this.scanPunctuator()};return Scanner}();r.Scanner=u},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.TokenName={};r.TokenName[1]="Boolean";r.TokenName[2]="";r.TokenName[3]="Identifier";r.TokenName[4]="Keyword";r.TokenName[5]="Null";r.TokenName[6]="Numeric";r.TokenName[7]="Punctuator";r.TokenName[8]="String";r.TokenName[9]="RegularExpression";r.TokenName[10]="Template"},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.XHTMLEntities={quot:'"',amp:"&",apos:"'",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:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(10);var n=t(12);var a=t(13);var u=function(){function Reader(){this.values=[];this.curly=this.paren=-1}Reader.prototype.beforeFunctionExpression=function(e){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(e)>=0};Reader.prototype.isRegexStart=function(){var e=this.values[this.values.length-1];var r=e!==null;switch(e){case"this":case"]":r=false;break;case")":var t=this.values[this.paren-1];r=t==="if"||t==="while"||t==="for"||t==="with";break;case"}":r=false;if(this.values[this.curly-3]==="function"){var i=this.values[this.curly-4];r=i?!this.beforeFunctionExpression(i):false}else if(this.values[this.curly-4]==="function"){var i=this.values[this.curly-5];r=i?!this.beforeFunctionExpression(i):true}break;default:break}return r};Reader.prototype.push=function(e){if(e.type===7||e.type===4){if(e.value==="{"){this.curly=this.values.length}else if(e.value==="("){this.paren=this.values.length}this.values.push(e.value)}else{this.values.push(null)}};return Reader}();var s=function(){function Tokenizer(e,r){this.errorHandler=new i.ErrorHandler;this.errorHandler.tolerant=r?typeof r.tolerant==="boolean"&&r.tolerant:false;this.scanner=new n.Scanner(e,this.errorHandler);this.scanner.trackComment=r?typeof r.comment==="boolean"&&r.comment:false;this.trackRange=r?typeof r.range==="boolean"&&r.range:false;this.trackLoc=r?typeof r.loc==="boolean"&&r.loc:false;this.buffer=[];this.reader=new u}Tokenizer.prototype.errors=function(){return this.errorHandler.errors};Tokenizer.prototype.getNextToken=function(){if(this.buffer.length===0){var e=this.scanner.scanComments();if(this.scanner.trackComment){for(var r=0;ri&&e[c+1]!==" ";c=a}}else if(!isPrintable(u)){return j}h=h&&isPlainSafe(u)}o=o||f&&(a-c-1>i&&e[c+1]!==" ")}if(!s&&!o){return h&&!n(e)?I:M}if(t>9&&needIndentIndicator(e)){return j}return o?R:L}function writeScalar(e,r,t,i){e.dump=function(){if(r.length===0){return"''"}if(!e.noCompatMode&&T.indexOf(r)!==-1){return"'"+r+"'"}var a=e.indent*Math.max(1,t);var u=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a);var s=i||e.flowLevel>-1&&t>=e.flowLevel;function testAmbiguity(r){return testImplicitResolving(e,r)}switch(chooseScalarStyle(r,s,e.indent,u,testAmbiguity)){case I:return r;case M:return"'"+r.replace(/'/g,"''")+"'";case L:return"|"+blockHeader(r,e.indent)+dropEndingNewline(indentString(r,a));case R:return">"+blockHeader(r,e.indent)+dropEndingNewline(indentString(foldString(r,u),a));case j:return'"'+escapeString(r,u)+'"';default:throw new n("impossible error: invalid scalar style")}}()}function blockHeader(e,r){var t=needIndentIndicator(e)?String(r):"";var i=e[e.length-1]==="\n";var n=i&&(e[e.length-2]==="\n"||e==="\n");var a=n?"+":i?"":"-";return t+a+"\n"}function dropEndingNewline(e){return e[e.length-1]==="\n"?e.slice(0,-1):e}function foldString(e,r){var t=/(\n+)([^\n]*)/g;var i=function(){var i=e.indexOf("\n");i=i!==-1?i:e.length;t.lastIndex=i;return foldLine(e.slice(0,i),r)}();var n=e[0]==="\n"||e[0]===" ";var a;var u;while(u=t.exec(e)){var s=u[1],o=u[2];a=o[0]===" ";i+=s+(!n&&!a&&o!==""?"\n":"")+foldLine(o,r);n=a}return i}function foldLine(e,r){if(e===""||e[0]===" ")return e;var t=/ [^ ]/g;var i;var n=0,a,u=0,s=0;var o="";while(i=t.exec(e)){s=i.index;if(s-n>r){a=u>n?u:s;o+="\n"+e.slice(n,a);n=a+1}u=s}o+="\n";if(e.length-n>r&&u>n){o+=e.slice(n,u)+"\n"+e.slice(u+1)}else{o+=e.slice(n)}return o.slice(1)}function escapeString(e){var r="";var t,i;var n;for(var a=0;a=55296&&t<=56319){i=e.charCodeAt(a+1);if(i>=56320&&i<=57343){r+=encodeHex((t-55296)*1024+i-56320+65536);a++;continue}}n=P[t];r+=!n&&isPrintable(t)?e[a]:n||encodeHex(t)}return r}function writeFlowSequence(e,r,t){var i="",n=e.tag,a,u;for(a=0,u=t.length;a1024)l+="? ";l+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" ");if(!writeNode(e,r,f,false,false)){continue}l+=e.dump;i+=l}e.tag=n;e.dump="{"+i+"}"}function writeBlockMapping(e,r,t,i){var a="",u=e.tag,s=Object.keys(t),o,f,c,h,p,v;if(e.sortKeys===true){s.sort()}else if(typeof e.sortKeys==="function"){s.sort(e.sortKeys)}else if(e.sortKeys){throw new n("sortKeys must be a boolean or a function")}for(o=0,f=s.length;o1024;if(p){if(e.dump&&l===e.dump.charCodeAt(0)){v+="?"}else{v+="? "}}v+=e.dump;if(p){v+=generateNextLine(e,r)}if(!writeNode(e,r+1,h,true,p)){continue}if(e.dump&&l===e.dump.charCodeAt(0)){v+=":"}else{v+=": "}v+=e.dump;a+=v}e.tag=u;e.dump=a||"{}"}function detectType(e,r,t){var i,a,u,f,l,c;a=t?e.explicitTypes:e.implicitTypes;for(u=0,f=a.length;u tag resolver accepts not "'+c+'" style')}e.dump=i}return true}}return false}function writeNode(e,r,t,i,a,u){e.tag=null;e.dump=t;if(!detectType(e,t,false)){detectType(e,t,true)}var o=s.call(e.dump);if(i){i=e.flowLevel<0||e.flowLevel>r}var f=o==="[object Object]"||o==="[object Array]",l,c;if(f){l=e.duplicates.indexOf(t);c=l!==-1}if(e.tag!==null&&e.tag!=="?"||c||e.indent!==2&&r>0){a=false}if(c&&e.usedDuplicates[l]){e.dump="*ref_"+l}else{if(f&&c&&!e.usedDuplicates[l]){e.usedDuplicates[l]=true}if(o==="[object Object]"){if(i&&Object.keys(e.dump).length!==0){writeBlockMapping(e,r,e.dump,a);if(c){e.dump="&ref_"+l+e.dump}}else{writeFlowMapping(e,r,e.dump);if(c){e.dump="&ref_"+l+" "+e.dump}}}else if(o==="[object Array]"){var h=e.noArrayIndent&&r>0?r-1:r;if(i&&e.dump.length!==0){writeBlockSequence(e,h,e.dump,a);if(c){e.dump="&ref_"+l+e.dump}}else{writeFlowSequence(e,h,e.dump);if(c){e.dump="&ref_"+l+" "+e.dump}}}else if(o==="[object String]"){if(e.tag!=="?"){writeScalar(e,e.dump,r,u)}}else{if(e.skipInvalid)return false;throw new n("unacceptable kind of an object to dump "+o)}if(e.tag!==null&&e.tag!=="?"){e.dump="!<"+e.tag+"> "+e.dump}}return true}function getDuplicateReferences(e,r){var t=[],i=[],n,a;inspectNode(e,t,i);for(n=0,a=i.length;n{if(typeof e!=="string"){throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof e}\``)}if(typeof r!=="string"){throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof r}\``)}try{e=a.realpathSync(e)}catch(r){if(r.code==="ENOENT"){e=i.resolve(e)}else if(t){return null}else{throw r}}const u=i.join(e,"noop.js");const s=()=>n._resolveFilename(r,{id:u,filename:u,paths:n._nodeModulePaths(e)});if(t){try{return s()}catch(e){return null}}return s()};e.exports=((e,r)=>u(e,r));e.exports.silent=((e,r)=>u(e,r,true))},,,,,,,function(e,r,t){"use strict";var i=t(354);var n="\n";var a=" ";var u=":";var s="[";var o="]";var f="^";var l=4;var c=n+n;var h=i(a,l);e.exports=footnoteDefinition;function footnoteDefinition(e){var r=this.all(e).join(c+h);return s+f+(e.label||e.identifier)+o+u+a+r}},,,,,function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(389);var u=t(434);var s=t(220);var o=t(97);e.exports=i("remark-lint:no-heading-content-indent",noHeadingContentIndent);var f=s.start;var l=s.end;function noHeadingContentIndent(e,r){var t=String(r);n(e,"heading",visitor);function visitor(e){var i;var n;var s;var c;var h;var p;var v;var d;var D;var m;if(o(e)){return}i=e.depth;n=e.children;s=a(e,"atx");if(s==="atx"||s==="atx-closed"){h=f(e);d=h.offset;D=t.charAt(d);while(D&&D!=="#"){D=t.charAt(++d)}if(!D){return}d=i+(d-h.offset);c=f(n[0]).column;if(!c){return}v=c-h.column-1-d;if(v){m=(v>0?"Remove":"Add")+" "+Math.abs(v)+" "+u("space",v)+" before this heading’s content";r.message(m,f(n[0]))}}if(s==="atx-closed"){p=l(n[n.length-1]);v=l(e).column-p.column-1-i;if(v){m="Remove "+v+" "+u("space",v)+" after this heading’s content";r.message(m,p)}}}}},function(e){"use strict";e.exports=function(e){if(typeof e!=="function"){throw new TypeError("Expected a function")}return e.displayName||e.name||(/function ([^\(]+)?\(/.exec(e.toString())||[])[1]||null}},,,function(e,r,t){"use strict";var i=t(532);var n=t(234);e.exports=definition;var a=" ";var u=":";var s="[";var o="]";function definition(e){var r=i(e.url);if(e.title){r+=a+n(e.title)}return s+(e.label||e.identifier)+o+u+a+r}},,function(e){if(typeof Object.create==="function"){e.exports=function inherits(e,r){e.super_=r;e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}else{e.exports=function inherits(e,r){e.super_=r;var t=function(){};t.prototype=r.prototype;e.prototype=new t;e.prototype.constructor=e}}},,,,,function(e,r,t){"use strict";var i=t(720)();e.exports=function(e){return typeof e==="string"?e.replace(i,""):e}},function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(97);var u=t(67);e.exports=i("remark-lint:no-inline-padding",noInlinePadding);function noInlinePadding(e,r){n(e,["emphasis","strong","delete","image","link"],visitor);function visitor(e){var t;if(!a(e)){t=u(e);if(t.charAt(0)===" "||t.charAt(t.length-1)===" "){r.message("Don’t pad `"+e.type+"` with inner spaces",e)}}}}},,,,,,,,,,,,,,function(e,r,t){"use strict";var i=t(775);var n=t(507);var a=t(288);var u=t(413);e.exports=log;var s="vfile-reporter";function log(e,r,t){var o=r.reporter||a;var f;if(u(o)){try{o=n(o,{cwd:r.cwd,prefix:s})}catch(e){t(new Error("Could not find reporter `"+o+"`"));return}}f=o(e.files.filter(given),i(r.reporterOptions,{quiet:r.quiet,silent:r.silent,color:r.color}));if(f){if(f.charAt(f.length-1)!=="\n"){f+="\n"}r.streamError.write(f,t)}else{t()}}function given(e){return e.data.unifiedEngineGiven}},,,,,function(e,r,t){"use strict";var i=t(308);var n=t(197);var a=t(981);var u=t(314);var s=t(116);e.exports=encode;encode.escape=escape;var o={}.hasOwnProperty;var f=['"',"'","<",">","&","`"];var l=construct();var c=toExpression(f);var h=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;var p=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function encode(e,r){var t=r||{};var i=t.subset;var n=i?toExpression(i):c;var a=t.escapeOnly;var u=t.omitOptionalSemicolons;e=e.replace(n,function(e,r,i){return one(e,i.charAt(r+1),t)});if(i||a){return e}return e.replace(h,replaceSurrogatePair).replace(p,replaceBmp);function replaceSurrogatePair(e,r,t){return toHexReference((e.charCodeAt(0)-55296)*1024+e.charCodeAt(1)-56320+65536,t.charAt(r+2),u)}function replaceBmp(e,r,i){return one(e,i.charAt(r+1),t)}}function escape(e){return encode(e,{escapeOnly:true,useNamedReferences:true})}function one(e,r,t){var i=t.useShortestReferences;var n=t.omitOptionalSemicolons;var a;var u;if((i||t.useNamedReferences)&&o.call(l,e)){a=toNamed(l[e],r,n,t.attribute)}if(i||!a){u=toHexReference(e.charCodeAt(0),r,n)}if(a&&(!i||a.length",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"}},function(e,r,t){"use strict";var i=t(347);e.exports=normalize;function normalize(e){return i(e).toLowerCase()}},,,,function(e){"use strict";e.exports=trimTrailingLines;var r="\n";function trimTrailingLines(e){var t=String(e);var i=t.length;while(t.charAt(--i)===r){}return t.slice(0,i+1)}},,,,function(e,r){r.parse=r.decode=decode;r.stringify=r.encode=encode;r.safe=safe;r.unsafe=unsafe;var t=typeof process!=="undefined"&&process.platform==="win32"?"\r\n":"\n";function encode(e,r){var i=[];var n="";if(typeof r==="string"){r={section:r,whitespace:false}}else{r=r||{};r.whitespace=r.whitespace===true}var a=r.whitespace?" = ":"=";Object.keys(e).forEach(function(r,u,s){var o=e[r];if(o&&Array.isArray(o)){o.forEach(function(e){n+=safe(r+"[]")+a+safe(e)+"\n"})}else if(o&&typeof o==="object"){i.push(r)}else{n+=safe(r)+a+safe(o)+t}});if(r.section&&n.length){n="["+safe(r.section)+"]"+t+n}i.forEach(function(i,a,u){var s=dotSplit(i).join("\\.");var o=(r.section?r.section+".":"")+s;var f=encode(e[i],{section:o,whitespace:r.whitespace});if(n.length&&f.length){n+=t}n+=f});return n}function dotSplit(e){return e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(function(e){return e.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")})}function decode(e){var r={};var t=r;var i=null;var n=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i;var a=e.split(/[\r\n]+/g);a.forEach(function(e,a,u){if(!e||e.match(/^\s*[;#]/))return;var s=e.match(n);if(!s)return;if(s[1]!==undefined){i=unsafe(s[1]);t=r[i]=r[i]||{};return}var o=unsafe(s[2]);var f=s[3]?unsafe(s[4]):true;switch(f){case"true":case"false":case"null":f=JSON.parse(f)}if(o.length>2&&o.slice(-2)==="[]"){o=o.substring(0,o.length-2);if(!t[o]){t[o]=[]}else if(!Array.isArray(t[o])){t[o]=[t[o]]}}if(Array.isArray(t[o])){t[o].push(f)}else{t[o]=f}});Object.keys(r).filter(function(e,t,i){if(!r[e]||typeof r[e]!=="object"||Array.isArray(r[e])){return false}var n=dotSplit(e);var a=r;var u=n.pop();var s=u.replace(/\\\./g,".");n.forEach(function(e,r,t){if(!a[e]||typeof a[e]!=="object")a[e]={};a=a[e]});if(a===r&&s===u){return false}a[s]=r[e];return true}).forEach(function(e,t,i){delete r[e]});return r}function isQuoted(e){return e.charAt(0)==='"'&&e.slice(-1)==='"'||e.charAt(0)==="'"&&e.slice(-1)==="'"}function safe(e){return typeof e!=="string"||e.match(/[=\r\n]/)||e.match(/^\[/)||e.length>1&&isQuoted(e)||e!==e.trim()?JSON.stringify(e):e.replace(/;/g,"\\;").replace(/#/g,"\\#")}function unsafe(e,r){e=(e||"").trim();if(isQuoted(e)){if(e.charAt(0)==="'"){e=e.substr(1,e.length-2)}try{e=JSON.parse(e)}catch(e){}}else{var t=false;var i="";for(var n=0,a=e.length;n=E){return}S=r.charAt(C);if(S===f||S===c||S===h){B=S;F=false}else{F=true;b="";while(C=E){V=true}if(J&&x>=J.indent){V=true}S=r.charAt(C);T=null;if(!V){if(S===f||S===c||S===h){T=S;C++;x++}else{b="";while(C=J.indent||x>E}P=false;C=O}M=r.slice(O,k);I=O===C?M:r.slice(C,k);if(T===f||T===l||T===h){if(g.thematicBreak.call(n,e,M,true)){break}}L=R;R=!P&&!i(I).length;if(V&&J){J.value=J.value.concat(U,M);N=N.concat(U,M);U=[]}else if(P){if(U.length!==0){q=true;J.value.push("");J.trail=U.concat()}J={value:[M],indent:x,trail:[]};j.push(J);N=N.concat(U,M);U=[]}else if(R){if(L&&!u){break}U.push(M)}else{if(L){break}if(o(A,g,n,[e,M,true])){break}J.value=J.value.concat(U,M);N=N.concat(U,M);U=[]}C=k+1}G=e(N.join(d)).reset({type:"list",ordered:F,start:w,spread:q,children:[]});z=n.enterList();X=n.enterBlock();C=-1;y=j.length;while(++C"},{no:"rfc",yes:"RFC"},{no:"v8",yes:"V8"}]],[t(387),"*"],[t(52),"padded"]]},function(e,r,t){"use strict";var i;var n;try{var a=i;n=t(142)}catch(e){if(typeof window!=="undefined")n=window.esprima}var u=t(400);function resolveJavascriptFunction(e){if(e===null)return false;try{var r="("+e+")",t=n.parse(r,{range:true});if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression"){return false}return true}catch(e){return false}}function constructJavascriptFunction(e){var r="("+e+")",t=n.parse(r,{range:true}),i=[],a;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression"){throw new Error("Failed to resolve function")}t.body[0].expression.params.forEach(function(e){i.push(e.name)});a=t.body[0].expression.body.range;if(t.body[0].expression.body.type==="BlockStatement"){return new Function(i,r.slice(a[0]+1,a[1]-1))}return new Function(i,"return "+r.slice(a[0],a[1]))}function representJavascriptFunction(e){return e.toString()}function isFunction(e){return Object.prototype.toString.call(e)==="[object Function]"}e.exports=new u("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:resolveJavascriptFunction,construct:constructJavascriptFunction,predicate:isFunction,represent:representJavascriptFunction})},function(e,r,t){r.alphasort=alphasort;r.alphasorti=alphasorti;r.setopts=setopts;r.ownProp=ownProp;r.makeAbs=makeAbs;r.finish=finish;r.mark=mark;r.isIgnored=isIgnored;r.childrenIgnored=childrenIgnored;function ownProp(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var i=t(589);var n=t(47);var a=t(877);var u=n.Minimatch;function alphasorti(e,r){return e.toLowerCase().localeCompare(r.toLowerCase())}function alphasort(e,r){return e.localeCompare(r)}function setupIgnores(e,r){e.ignore=r.ignore||[];if(!Array.isArray(e.ignore))e.ignore=[e.ignore];if(e.ignore.length){e.ignore=e.ignore.map(ignoreMap)}}function ignoreMap(e){var r=null;if(e.slice(-3)==="/**"){var t=e.replace(/(\/\*\*)+$/,"");r=new u(t,{dot:true})}return{matcher:new u(e,{dot:true}),gmatcher:r}}function setopts(e,r,t){if(!t)t={};if(t.matchBase&&-1===r.indexOf("/")){if(t.noglobstar){throw new Error("base matching requires globstar")}r="**/"+r}e.silent=!!t.silent;e.pattern=r;e.strict=t.strict!==false;e.realpath=!!t.realpath;e.realpathCache=t.realpathCache||Object.create(null);e.follow=!!t.follow;e.dot=!!t.dot;e.mark=!!t.mark;e.nodir=!!t.nodir;if(e.nodir)e.mark=true;e.sync=!!t.sync;e.nounique=!!t.nounique;e.nonull=!!t.nonull;e.nosort=!!t.nosort;e.nocase=!!t.nocase;e.stat=!!t.stat;e.noprocess=!!t.noprocess;e.absolute=!!t.absolute;e.maxLength=t.maxLength||Infinity;e.cache=t.cache||Object.create(null);e.statCache=t.statCache||Object.create(null);e.symlinks=t.symlinks||Object.create(null);setupIgnores(e,t);e.changedCwd=false;var n=process.cwd();if(!ownProp(t,"cwd"))e.cwd=n;else{e.cwd=i.resolve(t.cwd);e.changedCwd=e.cwd!==n}e.root=t.root||i.resolve(e.cwd,"/");e.root=i.resolve(e.root);if(process.platform==="win32")e.root=e.root.replace(/\\/g,"/");e.cwdAbs=a(e.cwd)?e.cwd:makeAbs(e,e.cwd);if(process.platform==="win32")e.cwdAbs=e.cwdAbs.replace(/\\/g,"/");e.nomount=!!t.nomount;t.nonegate=true;t.nocomment=true;e.minimatch=new u(r,t);e.options=e.minimatch.options}function finish(e){var r=e.nounique;var t=r?[]:Object.create(null);for(var i=0,n=e.matches.length;i=2){r.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}}catch(e){}r.inspectOpts=Object.keys(process.env).filter(function(e){return/^debug_/i.test(e)}).reduce(function(e,r){var t=r.substring(6).toLowerCase().replace(/_([a-z])/g,function(e,r){return r.toUpperCase()});var i=process.env[r];if(/^(yes|on|true|enabled)$/i.test(i)){i=true}else if(/^(no|off|false|disabled)$/i.test(i)){i=false}else if(i==="null"){i=null}else{i=Number(i)}e[t]=i;return e},{});function useColors(){return"colors"in r.inspectOpts?Boolean(r.inspectOpts.colors):i.isatty(process.stderr.fd)}function formatArgs(r){var t=this.namespace,i=this.useColors;if(i){var n=this.color;var a="[3"+(n<8?n:"8;5;"+n);var u=" ".concat(a,";1m").concat(t," ");r[0]=u+r[0].split("\n").join("\n"+u);r.push(a+"m+"+e.exports.humanize(this.diff)+"")}else{r[0]=getDate()+t+" "+r[0]}}function getDate(){if(r.inspectOpts.hideDate){return""}return(new Date).toISOString()+" "}function log(){return process.stderr.write(n.format.apply(n,arguments)+"\n")}function save(e){if(e){process.env.DEBUG=e}else{delete process.env.DEBUG}}function load(){return process.env.DEBUG}function init(e){e.inspectOpts={};var t=Object.keys(r.inspectOpts);for(var i=0;i0?"add":"remove")+" "+Math.abs(h)+" "+n("space",h);r.message(p,s)}}}}},,,,function(e,r,t){"use strict";var i=t(446);var n=t(407);e.exports=toVFile;function toVFile(e){if(typeof e==="string"||i(e)){e={path:String(e)}}return n(e)}},,function(e){"use strict";e.exports=atxHeading;var r="\n";var t="\t";var i=" ";var n="#";var a=6;function atxHeading(e,u,s){var o=this;var f=o.options.pedantic;var l=u.length+1;var c=-1;var h=e.now();var p="";var v="";var d;var D;var m;while(++ca){return}if(!m||!f&&u.charAt(c+1)===n){return}l=u.length+1;D="";while(++c="a"&&e<="z"||e>="A"&&e<="Z"||e==="$"||e==="_"||n.ID_Start.test(e)}function isIdContinueChar(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||e==="$"||e==="_"||e==="‌"||e==="‍"||n.ID_Continue.test(e)}function isDigit(e){return/[0-9]/.test(e)}function isHexDigit(e){return/[0-9A-Fa-f]/.test(e)}},function(e){"use strict";e.exports=factory;var r="\\";function factory(e,t){return unescape;function unescape(i){var n=0;var a=i.indexOf(r);var u=e[t];var s=[];var o;while(a!==-1){s.push(i.slice(n,a));n=a+1;o=i.charAt(n);if(!o||u.indexOf(o)===-1){s.push(r)}a=i.indexOf(r,n+1)}s.push(i.slice(n));return s.join("")}}},,function(e,r,t){"use strict";var i=t(400);e.exports=new i("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}})},,,,,,,,,,,function(e,r,t){var i=t(688);if(process.env.READABLE_STREAM==="disable"&&i){e.exports=i;r=e.exports=i.Readable;r.Readable=i.Readable;r.Writable=i.Writable;r.Duplex=i.Duplex;r.Transform=i.Transform;r.PassThrough=i.PassThrough;r.Stream=i}else{r=e.exports=t(454);r.Stream=i||r;r.Readable=r;r.Writable=t(57);r.Duplex=t(921);r.Transform=t(843);r.PassThrough=t(218)}},function(e,r,t){"use strict";var i=t(136)("unified-engine:file-pipeline:stringify");var n=t(356);var a=t(301);e.exports=stringify;function stringify(e,r){var t=e.processor;var u=e.tree;var s;if(n(r).fatal){i("Not compiling failed document");return}if(!e.output&&!e.out&&!e.alwaysStringify){i("Not compiling document without output settings");return}i("Compiling `%s`",r.path);if(e.inspect){if(r.path){r.extname=".txt"}s=a[e.color?"color":"noColor"](u)+"\n"}else if(e.treeOut){if(r.path){r.extname=".json"}s=JSON.stringify(u,null,2)+"\n"}else{s=t.stringify(u,r)}r.contents=s;i("Compiled document")}},,,function(e){"use strict";e.exports=text;function text(e,r){return this.encode(this.escape(e.value,e,r),e)}},,,function(e,r,t){"use strict";var i=t(646).hasBasic;var n=t(579);var a=t(475);var u=t(354);var s=t(356);e.exports=reporter;var o=process.platform==="win32";var f=o?{error:"×",warning:"‼"}:{error:"✖",warning:"⚠"};var l=/\s*$/;var c="";var h={open:"",close:""};var p={underline:{open:"",close:""},red:{open:"",close:""},yellow:{open:"",close:""},green:{open:"",close:""}};var v={underline:h,red:h,yellow:h,green:h};var d={true:"error",false:"warning",null:"info",undefined:"info"};function reporter(e,r){var t=r||{};var i;if(!e){return""}if("name"in e&&"message"in e){return String(e.stack||e)}if(!("length"in e)){i=true;e=[e]}return compile(parse(filter(e,t),t),i,t)}function filter(e,r){var t=[];var i=e.length;var n=-1;var a;if(!r.quiet&&!r.silent){return e.concat()}while(++n "+h.destination:""}if(!h.stats.total){D+=D?": ":"";if(h.stored){D+=m.yellow.open+"written"+m.yellow.close}else{D+="no issues found"}}if(D){c.push(D)}}else{g=m[h.label==="error"?"red":"yellow"];c.push(["",padLeft(h.location,e.location),padRight(g.open+h.label+g.close,e.label),padRight(h.reason,e.reason),padRight(h.ruleId,e.ruleId),h.source||""].join(" ").replace(l,""))}}if(a.fatal||a.warn){D=[];if(a.fatal){D.push([m.red.open+f.error+m.red.close,a.fatal,plural(d.true,a.fatal)].join(" "))}if(a.warn){D.push([m.yellow.open+f.warning+m.yellow.close,a.warn,plural(d.false,a.warn)].join(" "))}D=D.join(", ");if(a.total!==a.fatal&&a.total!==a.warn){D=a.total+" messages ("+D+")"}c.push("",D)}return c.join("\n")}function applicable(e,r){var t=e.messages;var i=t.length;var n=-1;var a=[];if(r.silent){while(++nr.length){try{return e.apply(u,r.concat(s))}catch(e){return s(e)}}return sync(e,s).apply(u,r)}return wrap}function sync(e,r){return function(){var t;try{t=e.apply(this,arguments)}catch(e){return r(e)}if(promise(t)){t.then(function(e){r(null,e)},r)}else{t instanceof Error?r(t):r(null,t)}}}function generator(e){return e&&e.constructor&&"GeneratorFunction"==e.constructor.name}function promise(e){return e&&"function"==typeof e.then}},,function(e,r,t){"use strict";var i=t(907);e.exports=imageReference;var n="[";var a="]";var u="!";function imageReference(e){return u+n+(this.encode(e.alt,e)||"")+a+i(e)}},,,function(e,r,t){"use strict";var i=t(398);var n=t(907);e.exports=linkReference;var a="[";var u="]";var s="shortcut";var o="collapsed";function linkReference(e){var r=this;var t=e.referenceType;var f=r.enterLinkReference(r,e);var l=r.all(e).join("");f();if(t===s||t===o){l=i(l,e.label||e.identifier)}return a+l+u+n(e)}},,,,,function(e,r,t){"use strict";var i=t(890);var n=true;try{n="inspect"in t(64)}catch(e){n=false}e.exports=n?inspect:noColor;inspect.color=inspect;noColor.color=inspect;inspect.noColor=noColor;noColor.noColor=noColor;var a=ansiColor(2,22);var u=ansiColor(33,39);var s=ansiColor(32,39);var o=new RegExp("(?:"+"(?:\\u001b\\[)|"+"\\u009b"+")"+"(?:"+"(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m]"+")|"+"\\u001b[A-M]","g");var f=["type","value","children","position"];function noColor(e,r){return stripColor(inspect(e,r))}function inspect(e,r){var t;var i;var n;var a;if(e&&Boolean(e.length)&&typeof e!=="string"){a=e.length;n=-1;t=[];while(++ni){r.message("Line must be at most "+i+" characters",{line:c+1,column:h+1})}}function inline(e,r,t){var n=t.children[r+1];var a;var f;if(u(e)){return}a=s(e);f=o(e);if(a.column>i||f.column",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"}},,,function(e){"use strict";e.exports=markdownTable;var r=/\./;var t=/\.[^.]*$/;var i="l";var n="r";var a="c";var u=".";var s="";var o=[i,n,a,u,s];var f=3;var l=":";var c="-";var h="|";var p=" ";var v="\n";function markdownTable(e,t){var d=t||{};var D=d.delimiter;var m=d.start;var g=d.end;var E=d.align;var A=d.stringLength||lengthNoop;var C=0;var y=-1;var w=e.length;var x=[];var b;var F;var S;var B;var k;var O;var P;var T;var I;var M;var L;var R;E=E?E.concat():[];if(D===null||D===undefined){D=p+h+p}if(m===null||m===undefined){m=h+p}if(g===null||g===undefined){g=p+h}while(++yC){C=B.length}while(++Ox[O]){x[O]=P}}}if(typeof E==="string"){E=pad(C,E).split("")}O=-1;while(++Ox[O]){x[O]=T}}}y=-1;while(++yf?M:f}else{M=x[O]}b=E[O];I=b===n||b===s?c:l;I+=pad(M-2,c);I+=b!==i&&b!==s?l:c;F[O]=I}S.splice(1,0,F.join(D))}return m+S.join(g+v+m)+g}function stringify(e){return e===null||e===undefined?"":String(e)}function lengthNoop(e){return String(e).length}function pad(e,r){return new Array(e+1).join(r||p)}function dotindex(e){var r=t.exec(e);return r?r.index+1:e.length}},,,function(e,r,t){"use strict";var i=t(638);var n=t(770);e.exports=alphanumerical;function alphanumerical(e){return i(e)||n(e)}},function(e){"use strict";e.exports=identity;function identity(e){return e}},,,,function(e){"use strict";e.exports=html;function html(e){return e.value}},,,,function(e){"use strict";e.exports=locate;var r=["https://","http://","mailto:"];function locate(e,t){var i=r.length;var n=-1;var a=-1;var u;if(!this.options.gfm){return-1}while(++n=0){r=r.slice(1)}if(r===".inf"){return t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY}else if(r===".nan"){return NaN}else if(r.indexOf(":")>=0){r.split(":").forEach(function(e){n.unshift(parseFloat(e,10))});r=0;i=1;n.forEach(function(e){r+=e*i;i*=60});return t*r}return t*parseFloat(r,10)}var u=/^[-+]?[0-9]+e/;function representYamlFloat(e,r){var t;if(isNaN(e)){switch(r){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}}else if(Number.POSITIVE_INFINITY===e){switch(r){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}}else if(Number.NEGATIVE_INFINITY===e){switch(r){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}}else if(i.isNegativeZero(e)){return"-0.0"}t=e.toString(10);return u.test(t)?t.replace("e",".e"):t}function isFloat(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||i.isNegativeZero(e))}e.exports=new n("tag:yaml.org,2002:float",{kind:"scalar",resolve:resolveYamlFloat,construct:constructYamlFloat,predicate:isFloat,represent:representYamlFloat,defaultStyle:"lowercase"})},,,,,,function(e,r,t){var i=t(792);var n=Object.create(null);var a=t(795);e.exports=i(inflight);function inflight(e,r){if(n[e]){n[e].push(r);return null}else{n[e]=[r];return makeres(e)}}function makeres(e){return a(function RES(){var r=n[e];var t=r.length;var i=slice(arguments);try{for(var a=0;at){r.splice(0,t);process.nextTick(function(){RES.apply(null,i)})}else{delete n[e]}}})}function slice(e){var r=e.length;var t=[];for(var i=0;i=e.length){if(r)r[u]=e;return t(null,e)}o.lastIndex=c;var i=o.exec(e);v=h;h+=i[0];p=v+i[1];c=o.lastIndex;if(l[p]||r&&r[p]===p){return process.nextTick(LOOP)}if(r&&Object.prototype.hasOwnProperty.call(r,p)){return gotResolvedLink(r[p])}return a.lstat(p,gotStat)}function gotStat(e,i){if(e)return t(e);if(!i.isSymbolicLink()){l[p]=true;if(r)r[p]=p;return process.nextTick(LOOP)}if(!n){var u=i.dev.toString(32)+":"+i.ino.toString(32);if(s.hasOwnProperty(u)){return gotTarget(null,s[u],p)}}a.stat(p,function(e){if(e)return t(e);a.readlink(p,function(e,r){if(!n)s[u]=r;gotTarget(e,r)})})}function gotTarget(e,n,a){if(e)return t(e);var u=i.resolve(v,n);if(r)r[a]=u;gotResolvedLink(u)}function gotResolvedLink(r){e=i.resolve(r,e.slice(c));start()}}},,,function(e,r,t){"use strict";var i=t(100);var n=t(903);var a=t(998);var u=t(220);var s=t(97);e.exports=i("remark-lint:checkbox-character-style",checkboxCharacterStyle);var o=u.start;var f=u.end;var l={x:true,X:true};var c={" ":true,"\t":true};var h={true:"checked",false:"unchecked"};function checkboxCharacterStyle(e,r,t){var i=String(r);var u=n(r);t=typeof t==="object"?t:{};if(t.unchecked&&c[t.unchecked]!==true){r.fail("Invalid unchecked checkbox marker `"+t.unchecked+"`: use either `'\\t'`, or `' '`")}if(t.checked&&l[t.checked]!==true){r.fail("Invalid checked checkbox marker `"+t.checked+"`: use either `'x'`, or `'X'`")}a(e,"listItem",visitor);function visitor(e){var n;var a;var l;var c;var p;var v;var d;if(typeof e.checked!=="boolean"||s(e)){return}n=h[e.checked];a=o(e).offset;l=(e.children.length?o(e.children[0]):f(e)).offset;c=i.slice(a,l).trimRight().slice(0,-1);v=c.charAt(c.length-1);p=t[n];if(p){if(v!==p){d=n.charAt(0).toUpperCase()+n.slice(1)+" checkboxes should use `"+p+"` as a marker";r.message(d,{start:u.toPosition(a+c.length-1),end:u.toPosition(a+c.length)})}}else{t[n]=v}}}},function(e,r,t){"use strict";var i=t(475);e.exports=VMessage;function VMessagePrototype(){}VMessagePrototype.prototype=Error.prototype;VMessage.prototype=new VMessagePrototype;var n=VMessage.prototype;n.file="";n.name="";n.reason="";n.message="";n.stack="";n.fatal=null;n.column=null;n.line=null;function VMessage(e,r,t){var n;var a;var u;if(typeof r==="string"){t=r;r=null}n=parseOrigin(t);a=i(r)||"1:1";u={start:{line:null,column:null},end:{line:null,column:null}};if(r&&r.position){r=r.position}if(r){if(r.start){u=r;r=r.start}else{u.start=r}}if(e.stack){this.stack=e.stack;e=e.message}this.message=e;this.name=a;this.reason=e;this.line=r?r.line:null;this.column=r?r.column:null;this.location=u;this.source=n[0];this.ruleId=n[1]}function parseOrigin(e){var r=[null,null];var t;if(typeof e==="string"){t=e.indexOf(":");if(t===-1){r[1]=e}else{r[0]=e.slice(0,t);r[1]=e.slice(t+1)}}return r}},function(e){"use strict";var r="";var t;e.exports=repeat;function repeat(e,i){if(typeof e!=="string"){throw new TypeError("expected a string")}if(i===1)return e;if(i===2)return e+e;var n=e.length*i;if(t!==e||typeof t==="undefined"){t=e;r=""}else if(r.length>=n){return r.substr(0,n)}while(n>r.length&&i>1){if(i&1){r+=e}i>>=1;e+=e}r+=e;r=r.substr(0,n);return r}},,function(e){"use strict";e.exports=statistics;function statistics(e){var r={true:0,false:0,null:0};count(e);return{fatal:r.true,nonfatal:r.false+r.null,warn:r.false,info:r.null,total:r.true+r.false+r.null};function count(e){if(e){if(e[0]&&e[0].messages){countInAll(e)}else{countAll(e.messages||e)}}}function countInAll(e){var r=e.length;var t=-1;while(++tthis.maxLength)return false;if(!this.stat&&D(this.cache,r)){var n=this.cache[r];if(Array.isArray(n))n="DIR";if(!t||n==="DIR")return n;if(t&&n==="FILE")return false}var a;var u=this.statCache[r];if(!u){var s;try{s=i.lstatSync(r)}catch(e){if(e&&(e.code==="ENOENT"||e.code==="ENOTDIR")){this.statCache[r]=false;return false}}if(s&&s.isSymbolicLink()){try{u=i.statSync(r)}catch(e){u=s}}else{u=s}}this.statCache[r]=u;var n=true;if(u)n=u.isDirectory()?"DIR":"FILE";this.cache[r]=this.cache[r]||n;if(t&&n==="FILE")return false;return n};GlobSync.prototype._mark=function(e){return h.mark(this,e)};GlobSync.prototype._makeAbs=function(e){return h.makeAbs(this,e)}},,function(e){"use strict";var r=1;var t=2;function stripWithoutWhitespace(){return""}function stripWithWhitespace(e,r,t){return e.slice(r,t).replace(/\S/g," ")}e.exports=function(e,i){i=i||{};var n;var a;var u=false;var s=false;var o=0;var f="";var l=i.whitespace===false?stripWithoutWhitespace:stripWithWhitespace;for(var c=0;c>0},ToUint32:function(e){return e>>>0}}}();var u=Math.LN2,s=Math.abs,o=Math.floor,f=Math.log,l=Math.min,c=Math.pow,h=Math.round;function configureProperties(e){if(v&&p){var r=v(e),t;for(t=0;tn)throw new RangeError("Array too large for polyfill");function makeArrayAccessor(r){p(e,r,{get:function(){return e._getter(r)},set:function(t){e._setter(r,t)},enumerable:true,configurable:false})}var r;for(r=0;r>t}function as_unsigned(e,r){var t=32-r;return e<>>t}function packI8(e){return[e&255]}function unpackI8(e){return as_signed(e[0],8)}function packU8(e){return[e&255]}function unpackU8(e){return as_unsigned(e[0],8)}function packU8Clamped(e){e=h(Number(e));return[e<0?0:e>255?255:e&255]}function packI16(e){return[e>>8&255,e&255]}function unpackI16(e){return as_signed(e[0]<<8|e[1],16)}function packU16(e){return[e>>8&255,e&255]}function unpackU16(e){return as_unsigned(e[0]<<8|e[1],16)}function packI32(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]}function unpackI32(e){return as_signed(e[0]<<24|e[1]<<16|e[2]<<8|e[3],32)}function packU32(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]}function unpackU32(e){return as_unsigned(e[0]<<24|e[1]<<16|e[2]<<8|e[3],32)}function packIEEE754(e,r,t){var i=(1<.5)return r+1;return r%2?r+1:r}if(e!==e){a=(1<=c(2,1-i)){a=l(o(f(e)/u),1023);h=roundToEven(e/c(2,a)*c(2,t));if(h/c(2,t)>=2){a=a+1;h=1}if(a>i){a=(1<>1}}i.reverse();s=i.join("");o=(1<0){return f*c(2,l-o)*(1+h/c(2,t))}else if(h!==0){return f*c(2,-(o-1))*(h/c(2,t))}else{return f<0?-0:0}}function unpackF64(e){return unpackIEEE754(e,11,52)}function packF64(e){return packIEEE754(e,11,52)}function unpackF32(e){return unpackIEEE754(e,8,23)}function packF32(e){return packIEEE754(e,8,23)}(function(){var e=function ArrayBuffer(e){e=a.ToInt32(e);if(e<0)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=e;this._bytes=[];this._bytes.length=e;var r;for(r=0;rthis.buffer.byteLength){throw new RangeError("byteOffset out of range")}if(this.byteOffset%this.BYTES_PER_ELEMENT){throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.")}if(arguments.length<3){this.byteLength=this.buffer.byteLength-this.byteOffset;if(this.byteLength%this.BYTES_PER_ELEMENT){throw new RangeError("length of buffer minus byteOffset not a multiple of the element size")}this.length=this.byteLength/this.BYTES_PER_ELEMENT}else{this.length=a.ToUint32(i);this.byteLength=this.length*this.BYTES_PER_ELEMENT}if(this.byteOffset+this.byteLength>this.buffer.byteLength){throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}}else{throw new TypeError("Unexpected argument type(s)")}this.constructor=s;configureProperties(this);makeArrayAccessors(this)};s.prototype=new r;s.prototype.BYTES_PER_ELEMENT=t;s.prototype._pack=n;s.prototype._unpack=u;s.BYTES_PER_ELEMENT=t;s.prototype._getter=function(e){if(arguments.length<1)throw new SyntaxError("Not enough arguments");e=a.ToUint32(e);if(e>=this.length){return i}var r=[],t,n;for(t=0,n=this.byteOffset+e*this.BYTES_PER_ELEMENT;t=this.length){return i}var t=this._pack(r),n,u;for(n=0,u=this.byteOffset+e*this.BYTES_PER_ELEMENT;nthis.length){throw new RangeError("Offset plus length of array is out of range")}l=this.byteOffset+n*this.BYTES_PER_ELEMENT;c=t.length*this.BYTES_PER_ELEMENT;if(t.buffer===this.buffer){h=[];for(s=0,o=t.byteOffset;sthis.length){throw new RangeError("Offset plus length of array is out of range")}for(s=0;st?t:e}e=a.ToInt32(e);r=a.ToInt32(r);if(arguments.length<1){e=0}if(arguments.length<2){r=this.length}if(e<0){e=this.length+e}if(r<0){r=this.length+r}e=clamp(e,0,this.length);r=clamp(r,0,this.length);var t=r-e;if(t<0){t=0}return new this.constructor(this.buffer,this.byteOffset+e*this.BYTES_PER_ELEMENT,t)};return s}var n=makeConstructor(1,packI8,unpackI8);var u=makeConstructor(1,packU8,unpackU8);var s=makeConstructor(1,packU8Clamped,unpackU8);var o=makeConstructor(2,packI16,unpackI16);var f=makeConstructor(2,packU16,unpackU16);var l=makeConstructor(4,packI32,unpackI32);var c=makeConstructor(4,packU32,unpackU32);var h=makeConstructor(4,packF32,unpackF32);var p=makeConstructor(8,packF64,unpackF64);t.Int8Array=t.Int8Array||n;t.Uint8Array=t.Uint8Array||u;t.Uint8ClampedArray=t.Uint8ClampedArray||s;t.Int16Array=t.Int16Array||o;t.Uint16Array=t.Uint16Array||f;t.Int32Array=t.Int32Array||l;t.Uint32Array=t.Uint32Array||c;t.Float32Array=t.Float32Array||h;t.Float64Array=t.Float64Array||p})();(function(){function r(e,r){return a.IsCallable(e.get)?e.get(r):e[r]}var e=function(){var e=new t.Uint16Array([4660]),i=new t.Uint8Array(e.buffer);return r(i,0)===18}();var i=function DataView(e,r,i){if(arguments.length===0){e=new t.ArrayBuffer(0)}else if(!(e instanceof t.ArrayBuffer||a.Class(e)==="ArrayBuffer")){throw new TypeError("TypeError")}this.buffer=e||new t.ArrayBuffer(0);this.byteOffset=a.ToUint32(r);if(this.byteOffset>this.buffer.byteLength){throw new RangeError("byteOffset out of range")}if(arguments.length<3){this.byteLength=this.buffer.byteLength-this.byteOffset}else{this.byteLength=a.ToUint32(i)}if(this.byteOffset+this.byteLength>this.buffer.byteLength){throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}configureProperties(this)};function makeGetter(i){return function(n,u){n=a.ToUint32(n);if(n+i.BYTES_PER_ELEMENT>this.byteLength){throw new RangeError("Array index out of range")}n+=this.byteOffset;var s=new t.Uint8Array(this.buffer,n,i.BYTES_PER_ELEMENT),o=[],f;for(f=0;fthis.byteLength){throw new RangeError("Array index out of range")}var o=new i([u]),f=new t.Uint8Array(o.buffer),l=[],c,h;for(c=0;c0){t=Math.min(10,Math.floor(t));f=" ".substr(0,t)}}else if(typeof t==="string"){f=t.substr(0,10)}return serializeProperty("",{"":e});function serializeProperty(e,r){var t=r[e];if(t!=null){if(typeof t.toJSON5==="function"){t=t.toJSON5(e)}else if(typeof t.toJSON==="function"){t=t.toJSON(e)}}if(o){t=o.call(r,e,t)}if(t instanceof Number){t=Number(t)}else if(t instanceof String){t=String(t)}else if(t instanceof Boolean){t=t.valueOf()}switch(t){case null:return"null";case true:return"true";case false:return"false"}if(typeof t==="string"){return quoteString(t,false)}if(typeof t==="number"){return String(t)}if((typeof t==="undefined"?"undefined":i(t))==="object"){return Array.isArray(t)?serializeArray(t):serializeObject(t)}return undefined}function quoteString(e){var r={"'":.1,'"':.2};var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};var i="";var n=true;var a=false;var u=undefined;try{for(var s=e[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var f=o.value;switch(f){case"'":case'"':r[f]++;i+=f;continue}if(t[f]){i+=t[f];continue}if(f<" "){var c=f.charCodeAt(0).toString(16);i+="\\x"+("00"+c).substring(c.length);continue}i+=f}}catch(e){a=true;u=e}finally{try{if(!n&&s.return){s.return()}}finally{if(a){throw u}}}var h=l||Object.keys(r).reduce(function(e,t){return r[e]=0){throw TypeError("Converting circular structure to JSON5")}n.push(e);var r=u;u=u+f;var t=s||Object.keys(e);var i=[];var a=true;var o=false;var l=undefined;try{for(var c=t[Symbol.iterator](),h;!(a=(h=c.next()).done);a=true){var p=h.value;var v=serializeProperty(p,e);if(v!==undefined){var d=serializeKey(p)+":";if(f!==""){d+=" "}d+=v;i.push(d)}}}catch(e){o=true;l=e}finally{try{if(!a&&c.return){c.return()}}finally{if(o){throw l}}}var D=void 0;if(i.length===0){D="{}"}else{var m=void 0;if(f===""){m=i.join(",");D="{"+m+"}"}else{var g=",\n"+u;m=i.join(g);D="{\n"+u+m+",\n"+r+"}"}}n.pop();u=r;return D}function serializeKey(e){if(e.length===0){return quoteString(e,true)}var r=String.fromCodePoint(e.codePointAt(0));if(!a.isIdStartChar(r)){return quoteString(e,true)}for(var t=r.length;t=0){throw TypeError("Converting circular structure to JSON5")}n.push(e);var r=u;u=u+f;var t=[];for(var i=0;i=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},,,,function(e,r,t){"use strict";var i=t(136)("unified-engine:file-set-pipeline:stdin");var n=t(333);var a=t(992);e.exports=stdin;function stdin(e,r,t){var u=r.streamIn;var s;if(r.files&&r.files.length!==0){i("Ignoring `streamIn`");if(r.filePath){s=new Error("Do not pass both `--file-path` and real files.\n"+"Did you mean to pass stdin instead of files?")}t(s);return}if(u.isTTY){i("Cannot read from `tty` stream");t(new Error("No input"));return}i("Reading from `streamIn`");u.pipe(a({encoding:"string"},read));function read(a){var u=n(r.filePath||undefined);i("Read from `streamIn`");u.cwd=r.cwd;u.contents=a;u.data.unifiedEngineGiven=true;u.data.unifiedEngineStreamIn=true;e.files=[u];r.out=r.out===null||r.out===undefined?true:r.out;t()}}},,,function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);e.exports=i("remark-lint:strong-marker",strongMarker);var s={"*":true,_:true,null:true};function strongMarker(e,r,t){var i=String(r);t=typeof t==="string"&&t!=="consistent"?t:null;if(s[t]!==true){r.fail("Invalid strong marker `"+t+"`: use either `'consistent'`, `'*'`, or `'_'`")}n(e,"strong",visitor);function visitor(e){var n=i.charAt(a.start(e).offset);if(!u(e)){if(t){if(n!==t){r.message("Strong should use `"+t+"` as a marker",e)}}else{t=n}}}}},,function(e){"use strict";e.exports=style;function style(e,r){var t=e.children[e.children.length-1];var i=e.depth;var n=e&&e.position&&e.position.end;var a=t&&t.position&&t.position.end;if(!n){return null}if(!t){if(n.column-1<=i*2){return consolidate(i,r)}return"atx-closed"}if(a.line+1===n.line){return"setext"}if(a.column+i64)continue;if(r<0)return false;i+=6}return i%8===0}function constructYamlBinary(e){var r,t,i=e.replace(/[\r\n=]/g,""),a=i.length,u=s,o=0,f=[];for(r=0;r>16&255);f.push(o>>8&255);f.push(o&255)}o=o<<6|u.indexOf(i.charAt(r))}t=a%4*6;if(t===0){f.push(o>>16&255);f.push(o>>8&255);f.push(o&255)}else if(t===18){f.push(o>>10&255);f.push(o>>2&255)}else if(t===12){f.push(o>>4&255)}if(n){return n.from?n.from(f):new n(f)}return f}function representYamlBinary(e){var r="",t=0,i,n,a=e.length,u=s;for(i=0;i>18&63];r+=u[t>>12&63];r+=u[t>>6&63];r+=u[t&63]}t=(t<<8)+e[i]}n=a%3;if(n===0){r+=u[t>>18&63];r+=u[t>>12&63];r+=u[t>>6&63];r+=u[t&63]}else if(n===2){r+=u[t>>10&63];r+=u[t>>4&63];r+=u[t<<2&63];r+=u[64]}else if(n===1){r+=u[t>>2&63];r+=u[t<<4&63];r+=u[64];r+=u[64]}return r}function isBinary(e){return n&&n.isBuffer(e)}e.exports=new u("tag:yaml.org,2002:binary",{kind:"scalar",resolve:resolveYamlBinary,construct:constructYamlBinary,predicate:isBinary,represent:representYamlBinary})},function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);e.exports=i("remark-lint:code-block-style",codeBlockStyle);var s=a.start;var o=a.end;var f={null:true,fenced:true,indented:true};function codeBlockStyle(e,r,t){var i=String(r);t=typeof t==="string"&&t!=="consistent"?t:null;if(f[t]!==true){r.fail("Invalid code block style `"+t+"`: use either `'consistent'`, `'fenced'`, or `'indented'`")}n(e,"code",visitor);function visitor(e){var i=check(e);if(i){if(!t){t=i}else if(t!==i){r.message("Code blocks should be "+t,e)}}}function check(e){var r=s(e).offset;var t=o(e).offset;if(u(e)){return null}return e.lang||/^\s*([~`])\1{2,}/.test(i.slice(r,t))?"fenced":"indented"}}},function(e){e.exports=require("assert")},,,function(e,r,t){"use strict";var i=t(688).PassThrough;var n=t(356);var a=t(145);e.exports=run;function run(e,r){var t={};var u=new i;var s;var o;var f;var l;var c;try{u=process.stdin}catch(e){}if(!r){throw new Error("Missing `callback`")}if(!e||!e.processor){return next(new Error("Missing `processor`"))}t.processor=e.processor;t.cwd=e.cwd||process.cwd();t.files=e.files||[];t.extensions=(e.extensions||[]).map(function(e){return e.charAt(0)==="."?e:"."+e});t.filePath=e.filePath||null;t.streamIn=e.streamIn||u;t.streamOut=e.streamOut||process.stdout;t.streamError=e.streamError||process.stderr;t.alwaysStringify=e.alwaysStringify;t.output=e.output;t.out=e.out;if(t.output===null||t.output===undefined){t.output=undefined}if(t.output&&t.out){return next(new Error("Cannot accept both `output` and `out`"))}s=e.tree||false;t.treeIn=e.treeIn;t.treeOut=e.treeOut;t.inspect=e.inspect;if(t.treeIn===null||t.treeIn===undefined){t.treeIn=s}if(t.treeOut===null||t.treeOut===undefined){t.treeOut=s}o=e.detectConfig;f=Boolean(e.rcName||e.packageField);if(o&&!f){return next(new Error("Missing `rcName` or `packageField` with `detectConfig`"))}t.detectConfig=o===null||o===undefined?f:o;t.rcName=e.rcName||null;t.rcPath=e.rcPath||null;t.packageField=e.packageField||null;t.settings=e.settings||{};t.configTransform=e.configTransform;t.defaultConfig=e.defaultConfig;l=e.detectIgnore;c=Boolean(e.ignoreName);t.detectIgnore=l===null||l===undefined?c:l;t.ignoreName=e.ignoreName||null;t.ignorePath=e.ignorePath||null;t.silentlyIgnore=Boolean(e.silentlyIgnore);if(l&&!c){return next(new Error("Missing `ignoreName` with `detectIgnore`"))}t.pluginPrefix=e.pluginPrefix||null;t.plugins=e.plugins||{};t.reporter=e.reporter||null;t.reporterOptions=e.reporterOptions||null;t.color=e.color||false;t.silent=e.silent||false;t.quiet=e.quiet||false;t.frail=e.frail||false;a.run({files:e.files||[]},t,next);function next(e,i){var a=n((i||{}).files);var u=Boolean(t.frail?a.fatal||a.warn:a.fatal);if(e){r(e)}else{r(null,u?1:0,i)}}}},function(e,r,t){"use strict";var i=t(100);e.exports=i("remark-lint:no-file-name-articles",noFileNameArticles);function noFileNameArticles(e,r){var t=r.stem&&r.stem.match(/^(the|teh|an?)\b/i);if(t){r.message("Do not start file names with `"+t[0]+"`")}}},function(e,r,t){"use strict";var i=t(980);e.exports=copy;var n="&";var a=/[-!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~_]/;function copy(e,r){var t=e.length;var u=r.length;var s=[];var o=0;var f=0;var l;while(f|$))/i;var f=/<\/(script|pre|style)>/i;var l=/^/;var h=/^<\?/;var p=/\?>/;var v=/^/;var D=/^/;var g=/^$/;var E=new RegExp(i.source+"\\s*$");function blockHtml(e,r,t){var i=this;var A=i.options.blocks.join("|");var C=new RegExp("^|$))","i");var y=r.length;var w=0;var x;var b;var F;var S;var B;var k;var O;var P=[[o,f,true],[l,c,true],[h,p,true],[v,d,true],[D,m,true],[C,g,true],[E,g,false]];while(w=b){b=0}}else if(E===v){g++;B+=r.charAt(g)}else if((!b||y)&&E===p){L++}else if((!b||y)&&E===d){if(L){L--}else{if(!A){while(g=s&&(!p||p===t)){h+=D;if(f){return true}return e(h)({type:"thematicBreak"})}else{return}}}},,,,,,function(e){e.exports=require("os")},,function(e,r,t){"use strict";var i=t(353);var n=t(844);e.exports=n;var a=n.prototype;a.message=message;a.info=info;a.fail=fail;a.warn=message;function message(e,r,t){var n=this.path;var a=new i(e,r,t);if(n){a.name=n+":"+a.name;a.file=n}a.fatal=false;this.messages.push(a);return a}function fail(){var e=this.message.apply(this,arguments);e.fatal=true;throw e}function info(){var e=this.message.apply(this,arguments);e.fatal=null;return e}},function(e,r,t){"use strict";const i=t(368);e.exports=((e,r,t)=>{if(typeof r==="number"){t=r}if(i.has(e.toLowerCase())){r=i.get(e.toLowerCase());const t=e.charAt(0);const n=t===t.toUpperCase();if(n){r=t.toUpperCase()+r.slice(1)}const a=e===e.toUpperCase();if(a){r=r.toUpperCase()}}else if(typeof r!=="string"){r=(e.replace(/(?:s|x|z|ch|sh)$/i,"$&e").replace(/([^aeiou])y$/i,"$1ie")+"s").replace(/i?e?s$/i,r=>{const t=e.slice(-1)===e.slice(-1).toLowerCase();return t?r.toLowerCase():r.toUpperCase()})}return Math.abs(t)===1?e:r})},function(e,r,t){"use strict";var i=t(136)("unified-engine:file-pipeline:parse");var n=t(356);var a=t(14);e.exports=parse;function parse(e,r){var t;if(n(r).fatal){return}if(e.treeIn){i("Not parsing already parsed document");try{e.tree=a(r.toString())}catch(e){t=r.message(new Error("Cannot read file as JSON\n"+e.message));t.fatal=true}if(r.path){r.extname=e.extensions[0]}r.contents="";return}i("Parsing `%s`",r.path);e.tree=e.processor.parse(r);i("Parsed document")}},,,,,function(e,r,t){"use strict";var i=t(315);e.exports=enter;function enter(e,r){var t=e.encode;var n=e.escape;var a=e.enterLink();if(r.referenceType!=="shortcut"&&r.referenceType!=="collapsed"){return a}e.escape=i;e.encode=i;return exit;function exit(){e.encode=t;e.escape=n;a()}}},,,function(e,r,t){e.exports=t(688)},,function(e,r,t){"use strict";var i=t(666);var n=t(775);var a=t(521);e.exports=parse;parse.Parser=a;function parse(e){var r=this.data("settings");var t=i(a);t.prototype.options=n(t.prototype.options,r,e);this.Parser=t}},function(e){e.exports=function(e){return e!=null&&(isBuffer(e)||isSlowBuffer(e)||!!e._isBuffer)};function isBuffer(e){return!!e.constructor&&typeof e.constructor.isBuffer==="function"&&e.constructor.isBuffer(e)}function isSlowBuffer(e){return typeof e.readFloatLE==="function"&&typeof e.slice==="function"&&isBuffer(e.slice(0,0))}},function(e){e.exports=["md","markdown","mdown","mkdn","mkd","mdwn","mkdown","ron"]},,,,,,,function(e,r,t){"use strict";var i=t(8);e.exports=Readable;var n=t(479);var a;Readable.ReadableState=ReadableState;var u=t(485).EventEmitter;var s=function(e,r){return e.listeners(r).length};var o=t(443);var f=t(757).Buffer;var l=global.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return f.from(e)}function _isUint8Array(e){return f.isBuffer(e)||e instanceof l}var c=t(554);c.inherits=t(9);var h=t(64);var p=void 0;if(h&&h.debuglog){p=h.debuglog("stream")}else{p=function(){}}var v=t(23);var d=t(510);var D;c.inherits(Readable,o);var m=["error","close","destroy","pause","resume"];function prependListener(e,r,t){if(typeof e.prependListener==="function")return e.prependListener(r,t);if(!e._events||!e._events[r])e.on(r,t);else if(n(e._events[r]))e._events[r].unshift(t);else e._events[r]=[t,e._events[r]]}function ReadableState(e,r){a=a||t(921);e=e||{};var i=r instanceof a;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.readableObjectMode;var n=e.highWaterMark;var u=e.readableHighWaterMark;var s=this.objectMode?16:16*1024;if(n||n===0)this.highWaterMark=n;else if(i&&(u||u===0))this.highWaterMark=u;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.buffer=new v;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||"utf8";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!D)D=t(123).StringDecoder;this.decoder=new D(e.encoding);this.encoding=e.encoding}}function Readable(e){a=a||t(921);if(!(this instanceof Readable))return new Readable(e);this._readableState=new ReadableState(e,this);this.readable=true;if(e){if(typeof e.read==="function")this._read=e.read;if(typeof e.destroy==="function")this._destroy=e.destroy}o.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{get:function(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=d.destroy;Readable.prototype._undestroy=d.undestroy;Readable.prototype._destroy=function(e,r){this.push(null);r(e)};Readable.prototype.push=function(e,r){var t=this._readableState;var i;if(!t.objectMode){if(typeof e==="string"){r=r||t.defaultEncoding;if(r!==t.encoding){e=f.from(e,r);r=""}i=true}}else{i=true}return readableAddChunk(this,e,r,false,i)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,r,t,i,n){var a=e._readableState;if(r===null){a.reading=false;onEofChunk(e,a)}else{var u;if(!n)u=chunkInvalid(a,r);if(u){e.emit("error",u)}else if(a.objectMode||r&&r.length>0){if(typeof r!=="string"&&!a.objectMode&&Object.getPrototypeOf(r)!==f.prototype){r=_uint8ArrayToBuffer(r)}if(i){if(a.endEmitted)e.emit("error",new Error("stream.unshift() after end event"));else addChunk(e,a,r,true)}else if(a.ended){e.emit("error",new Error("stream.push() after EOF"))}else{a.reading=false;if(a.decoder&&!t){r=a.decoder.write(r);if(a.objectMode||r.length!==0)addChunk(e,a,r,false);else maybeReadMore(e,a)}else{addChunk(e,a,r,false)}}}else if(!i){a.reading=false}}return needMoreData(a)}function addChunk(e,r,t,i){if(r.flowing&&r.length===0&&!r.sync){e.emit("data",t);e.read(0)}else{r.length+=r.objectMode?1:t.length;if(i)r.buffer.unshift(t);else r.buffer.push(t);if(r.needReadable)emitReadable(e)}maybeReadMore(e,r)}function chunkInvalid(e,r){var t;if(!_isUint8Array(r)&&typeof r!=="string"&&r!==undefined&&!e.objectMode){t=new TypeError("Invalid non-string/buffer chunk")}return t}function needMoreData(e){return!e.ended&&(e.needReadable||e.length=g){e=g}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,r){if(e<=0||r.length===0&&r.ended)return 0;if(r.objectMode)return 1;if(e!==e){if(r.flowing&&r.length)return r.buffer.head.data.length;else return r.length}if(e>r.highWaterMark)r.highWaterMark=computeNewHighWaterMark(e);if(e<=r.length)return e;if(!r.ended){r.needReadable=true;return 0}return r.length}Readable.prototype.read=function(e){p("read",e);e=parseInt(e,10);var r=this._readableState;var t=e;if(e!==0)r.emittedReadable=false;if(e===0&&r.needReadable&&(r.length>=r.highWaterMark||r.ended)){p("read: emitReadable",r.length,r.ended);if(r.length===0&&r.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,r);if(e===0&&r.ended){if(r.length===0)endReadable(this);return null}var i=r.needReadable;p("need readable",i);if(r.length===0||r.length-e0)n=fromList(e,r);else n=null;if(n===null){r.needReadable=true;e=0}else{r.length-=e}if(r.length===0){if(!r.ended)r.needReadable=true;if(t!==e&&r.ended)endReadable(this)}if(n!==null)this.emit("data",n);return n};function onEofChunk(e,r){if(r.ended)return;if(r.decoder){var t=r.decoder.end();if(t&&t.length){r.buffer.push(t);r.length+=r.objectMode?1:t.length}}r.ended=true;emitReadable(e)}function emitReadable(e){var r=e._readableState;r.needReadable=false;if(!r.emittedReadable){p("emitReadable",r.flowing);r.emittedReadable=true;if(r.sync)i.nextTick(emitReadable_,e);else emitReadable_(e)}}function emitReadable_(e){p("emit readable");e.emit("readable");flow(e)}function maybeReadMore(e,r){if(!r.readingMore){r.readingMore=true;i.nextTick(maybeReadMore_,e,r)}}function maybeReadMore_(e,r){var t=r.length;while(!r.reading&&!r.flowing&&!r.ended&&r.length1&&indexOf(n.pipes,e)!==-1)&&!f){p("false write response, pause",t._readableState.awaitDrain);t._readableState.awaitDrain++;l=true}t.pause()}}function onerror(r){p("onerror",r);unpipe();e.removeListener("error",onerror);if(s(e,"error")===0)e.emit("error",r)}prependListener(e,"error",onerror);function onclose(){e.removeListener("finish",onfinish);unpipe()}e.once("close",onclose);function onfinish(){p("onfinish");e.removeListener("close",onclose);unpipe()}e.once("finish",onfinish);function unpipe(){p("unpipe");t.unpipe(e)}e.emit("pipe",t);if(!n.flowing){p("pipe resume");t.resume()}return e};function pipeOnDrain(e){return function(){var r=e._readableState;p("pipeOnDrain",r.awaitDrain);if(r.awaitDrain)r.awaitDrain--;if(r.awaitDrain===0&&s(e,"data")){r.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var r=this._readableState;var t={hasUnpiped:false};if(r.pipesCount===0)return this;if(r.pipesCount===1){if(e&&e!==r.pipes)return this;if(!e)e=r.pipes;r.pipes=null;r.pipesCount=0;r.flowing=false;if(e)e.emit("unpipe",this,t);return this}if(!e){var i=r.pipes;var n=r.pipesCount;r.pipes=null;r.pipesCount=0;r.flowing=false;for(var a=0;a=r.length){if(r.decoder)t=r.buffer.join("");else if(r.buffer.length===1)t=r.buffer.head.data;else t=r.buffer.concat(r.length);r.buffer.clear()}else{t=fromListPartial(e,r.buffer,r.decoder)}return t}function fromListPartial(e,r,t){var i;if(ea.length?a.length:e;if(u===a.length)n+=a;else n+=a.slice(0,e);e-=u;if(e===0){if(u===a.length){++i;if(t.next)r.head=t.next;else r.head=r.tail=null}else{r.head=t;t.data=a.slice(u)}break}++i}r.length-=i;return n}function copyFromBuffer(e,r){var t=f.allocUnsafe(e);var i=r.head;var n=1;i.data.copy(t);e-=i.data.length;while(i=i.next){var a=i.data;var u=e>a.length?a.length:e;a.copy(t,t.length-e,0,u);e-=u;if(e===0){if(u===a.length){++n;if(i.next)r.head=i.next;else r.head=r.tail=null}else{r.head=i;i.data=a.slice(u)}break}++n}r.length-=n;return t}function endReadable(e){var r=e._readableState;if(r.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!r.endEmitted){r.ended=true;i.nextTick(endReadableNT,r,e)}}function endReadableNT(e,r){if(!e.endEmitted&&e.length===0){e.endEmitted=true;r.readable=false;r.emit("end")}}function indexOf(e,r){for(var t=0,i=e.length;t=l){continue}y="";while(vi){r.message("Move definitions to the end of the file (after the node at line `"+t+"`)",e)}}else if(t===null){t=i}}}},,function(e){"use strict";var r={}.hasOwnProperty;e.exports=stringify;function stringify(e){if(!e||typeof e!=="object"){return null}if(r.call(e,"position")||r.call(e,"type")){return position(e.position)}if(r.call(e,"start")||r.call(e,"end")){return position(e)}if(r.call(e,"line")||r.call(e,"column")){return point(e)}return null}function point(e){if(!e||typeof e!=="object"){e={}}return index(e.line)+":"+index(e.column)}function position(e){if(!e||typeof e!=="object"){e={}}return point(e.start)+"-"+point(e.end)}function index(e){return e&&typeof e==="number"?e:1}},,,function(e,r,t){"use strict";var i=t(197);var n=t(520);var a=t(770);var u=t(981);var s=t(314);var o=t(787);e.exports=parseEntities;var f={}.hasOwnProperty;var l=String.fromCharCode;var c=Function.prototype;var h={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:false,nonTerminated:true};var p="named";var v="hexadecimal";var d="decimal";var D={};D[v]=16;D[d]=10;var m={};m[p]=s;m[d]=a;m[v]=u;var g=1;var E=2;var A=3;var C=4;var y=5;var w=6;var x=7;var b={};b[g]="Named character references must be terminated by a semicolon";b[E]="Numeric character references must be terminated by a semicolon";b[A]="Named character references cannot be empty";b[C]="Numeric character references cannot be empty";b[y]="Named character references must be known";b[w]="Numeric character references cannot be disallowed";b[x]="Numeric character references cannot be outside the permissible Unicode range";function parseEntities(e,r){var t={};var i;var n;if(!r){r={}}for(n in h){i=r[n];t[n]=i===null||i===undefined?h[n]:i}if(t.position.indent||t.position.start){t.indent=t.position.indent||[];t.position=t.position.start}return parse(e,t)}function parse(e,r){var t=r.additional;var a=r.nonTerminated;var u=r.text;var h=r.reference;var F=r.warning;var S=r.textContext;var B=r.referenceContext;var k=r.warningContext;var O=r.position;var P=r.indent||[];var T=e.length;var I=0;var M=-1;var L=O.column||1;var R=O.line||1;var j="";var N=[];var U;var J;var z;var X;var q;var G;var _;var W;var V;var H;var Y;var $;var Z;var Q;var K;var ee;var re;var te;var ie;ee=now();W=F?parseError:c;I--;T++;while(++I65535){G-=65536;H+=l(G>>>(10&1023)|55296);G=56320|G&1023}G=H+l(G)}}if(!G){X=e.slice(Z-1,ie);j+=X;L+=X.length;I=ie-1}else{flush();ee=now();I=ie-1;L+=ie-Z+1;N.push(G);re=now();re.offset++;if(h){h.call(B,G,{start:ee,end:re},e.slice(Z-1,ie))}ee=re}}}return N.join("");function now(){return{line:R,column:L,offset:I+(O.offset||0)}}function parseError(e,r){var t=now();t.column+=r;t.offset+=r;F.call(k,b[e],t,e)}function at(r){return e.charAt(r)}function flush(){if(j){N.push(j);if(u){u.call(S,j,{start:ee,end:now()})}j=""}}}function prohibited(e){return e>=55296&&e<=57343||e>1114111}function disallowed(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)===65535||(e&65535)===65534}},function(e){var r={}.toString;e.exports=Array.isArray||function(e){return r.call(e)=="[object Array]"}},,function(e,r,t){"use strict";var i=t(758);var n=t(198);e.exports=definition;definition.notInList=true;definition.notInBlock=true;var a='"';var u="'";var s="\\";var o="\n";var f="\t";var l=" ";var c="[";var h="]";var p="(";var v=")";var d=":";var D="<";var m=">";function definition(e,r,t){var i=this;var m=i.options.commonmark;var g=0;var E=r.length;var A="";var C;var y;var w;var x;var b;var F;var S;var B;while(g (https://wooorm.com)",contributors:["Titus Wormer (https://wooorm.com)"],files:["index.js"],dependencies:{"remark-parse":"^6.0.0","remark-stringify":"^6.0.0",unified:"^7.0.0"},devDependencies:{tape:"^4.9.1"},scripts:{test:"tape test.js"},xo:false,_resolved:"https://registry.npmjs.org/remark/-/remark-10.0.1.tgz",_integrity:"sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==",_from:"remark@10.0.1"}},function(e){e.exports=require("events")},function(e,r,t){"use strict";e=t.nmd(e);var i=t(589);var n=t(778);var a=t(934);var u=t(14);var s=t(136)("unified-engine:configuration");var o=t(507).resolve;var f=t(693);var l=t(775);var c=t(555);var h=t(413);var p=t(817);var v=t(329);e.exports=Config;var d={}.hasOwnProperty;var D=i.extname;var m=i.basename;var g=i.dirname;var E=i.relative;var A={".json":loadJSON,".js":loadScript,".yaml":loadYAML,".yml":loadYAML};var C=loadJSON;Config.prototype.load=load;function Config(e){var r=e.rcName;var t=e.packageField;var i=[];this.cwd=e.cwd;this.packageField=e.packageField;this.pluginPrefix=e.pluginPrefix;this.configTransform=e.configTransform;this.defaultConfig=e.defaultConfig;if(r){i.push(r,r+".js",r+".yml",r+".yaml");s("Looking for `%s` configuration files",i)}if(t){i.push("package.json");s("Looking for `%s` fields in `package.json` files",t)}this.given={settings:e.settings,plugins:e.plugins};this.create=create.bind(this);this.findUp=new v({filePath:e.rcPath,cwd:e.cwd,detect:e.detectConfig,names:i,create:this.create})}function load(e,r){var t=e||i.resolve(this.cwd,"stdin.js");var n=this;n.findUp.load(t,done);function done(e,t){if(e||t){return r(e,t)}r(null,n.create())}}function create(e,r){var t=this;var i=t.configTransform;var n=t.defaultConfig;var a=r&&A[D(r)]||C;var u={prefix:t.pluginPrefix,cwd:t.cwd};var s={settings:{},plugins:[]};var o=e?a.apply(t,arguments):undefined;if(i&&o!==undefined){o=i(o,r)}if(e&&o===undefined&&m(r)==="package.json"){return}if(o===undefined){if(n){merge(s,n,null,l(u,{root:t.cwd}))}}else{merge(s,o,null,l(u,{root:g(r)}))}merge(s,t.given,null,l(u,{root:t.cwd}));return s}function loadScript(r,t){var i=n._cache[t];if(!i){i=new n(t,e);i.filename=t;i.paths=n._nodeModulePaths(g(t));i._compile(String(r),t);i.loaded=true;n._cache[t]=i}return i.exports}function loadYAML(e,r){return a.safeLoad(e,{filename:m(r)})}function loadJSON(e,r){var t=u(e,r);if(m(r)==="package.json"){t=t[this.packageField]}return t}function merge(e,r,t,n){var a=n.root;var u=n.cwd;var s=n.prefix;if(c(r)){addPreset(r)}else{throw new Error("Expected preset, not `"+r+"`")}return e;function addPreset(r){var t=r.plugins;if(t===null||t===undefined){}else if(c(t)){if("length"in t){addEach(t)}else{addIn(t)}}else{throw new Error("Expected a list or object of plugins, not `"+t+"`")}e.settings=l(e.settings,r.settings)}function addEach(e){var r=e.length;var t=-1;var i;while(++t0?"Add":"Remove")+" "+Math.abs(i)+" "+n("space",i)+" between blockquote and content";r.message(a,u.start(e.children[0]))}}else{t=check(e)}}}function check(e){var r=e.children[0];var t=u.start(r).column-u.start(e).column;var i=o(r).match(/^ +/);if(i){t+=i[0].length}return t}},function(e,r,t){"use strict";var i=t(758);var n=t(478);var a=t(773);e.exports=autoLink;autoLink.locator=a;autoLink.notInLink=true;var u="<";var s=">";var o="@";var f="/";var l="mailto:";var c=l.length;function autoLink(e,r,t){var a=this;var h="";var p=r.length;var v=0;var d="";var D=false;var m="";var g;var E;var A;var C;var y;if(r.charAt(0)!==u){return}v++;h=u;while(v0){var t=peek();if(!a.isHexDigit(t)){throw invalidChar(read())}e+=read()}return String.fromCodePoint(parseInt(e,16))}var C={start:function start(){if(h.type==="eof"){throw invalidEOF()}push()},beforePropertyName:function beforePropertyName(){switch(h.type){case"identifier":case"string":p=h.value;s="afterPropertyName";return;case"punctuator":pop();return;case"eof":throw invalidEOF()}},afterPropertyName:function afterPropertyName(){if(h.type==="eof"){throw invalidEOF()}s="beforePropertyValue"},beforePropertyValue:function beforePropertyValue(){if(h.type==="eof"){throw invalidEOF()}push()},beforeArrayValue:function beforeArrayValue(){if(h.type==="eof"){throw invalidEOF()}if(h.type==="punctuator"&&h.value==="]"){pop();return}push()},afterPropertyValue:function afterPropertyValue(){if(h.type==="eof"){throw invalidEOF()}switch(h.value){case",":s="beforePropertyName";return;case"}":pop()}},afterArrayValue:function afterArrayValue(){if(h.type==="eof"){throw invalidEOF()}switch(h.value){case",":s="beforeArrayValue";return;case"]":pop()}},end:function end(){}};function push(){var e=void 0;switch(h.type){case"punctuator":switch(h.value){case"{":e={};break;case"[":e=[];break}break;case"null":case"boolean":case"numeric":case"string":e=h.value;break}if(v===undefined){v=e}else{var r=o[o.length-1];if(Array.isArray(r)){r.push(e)}else{r[p]=e}}if(e!==null&&(typeof e==="undefined"?"undefined":i(e))==="object"){o.push(e);if(Array.isArray(e)){s="beforeArrayValue"}else{s="beforePropertyName"}}else{var t=o[o.length-1];if(t==null){s="end"}else if(Array.isArray(t)){s="afterArrayValue"}else{s="afterPropertyValue"}}}function pop(){o.pop();var e=o[o.length-1];if(e==null){s="end"}else if(Array.isArray(e)){s="afterArrayValue"}else{s="afterPropertyValue"}}function invalidChar(e){if(e===undefined){return syntaxError("JSON5: invalid end of input at "+l+":"+c)}return syntaxError("JSON5: invalid character '"+formatChar(e)+"' at "+l+":"+c)}function invalidEOF(){return syntaxError("JSON5: invalid end of input at "+l+":"+c)}function invalidIdentifier(){c-=5;return syntaxError("JSON5: invalid identifier character at "+l+":"+c)}function separatorChar(e){console.warn("JSON5: '"+e+"' is not valid ECMAScript; consider escaping")}function formatChar(e){var r={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(r[e]){return r[e]}if(e<" "){var t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function syntaxError(e){var r=new SyntaxError(e);r.lineNumber=l;r.columnNumber=c;return r}e.exports=r["default"]},function(e,r,t){"use strict";var i=t(66);var n=t(589);var a=t(151).silent;var u=t(342)();e.exports=loadPlugin;loadPlugin.resolve=resolvePlugin;var s=process.versions.electron!==undefined;var o=process.argv[1]||"";var f=process.env.NVM_BIN;var l=s||o.indexOf(u)===0;var c=process.platform==="win32";var h=c?"":"lib";var p=n.resolve(u,h,"node_modules");if(s&&f&&!i.existsSync(p)){p=n.resolve(f,"..",h,"node_modules")}function loadPlugin(e,r){return t(73)(resolvePlugin(e,r)||e)}function resolvePlugin(e,r){var t=r||{};var i=t.prefix;var n=t.cwd;var u;var s;var o;var f;var c;var h;var v="";if(n&&typeof n==="object"){s=n.concat()}else{s=[n||process.cwd()]}if(e.charAt(0)!=="."){if(t.global==null?l:t.global){s.push(p)}if(i){i=i.charAt(i.length-1)==="-"?i:i+"-";if(e.charAt(0)==="@"){h=e.indexOf("/");if(h!==-1){v=e.slice(0,h+1);e=e.slice(h+1)}}if(e.slice(0,i.length)!==i){c=v+i+e}e=v+e}}o=s.length;f=-1;while(++f2)t=r.call(arguments,1);if(e){try{i=a.throw(e)}catch(e){return exit(e)}}if(!e){try{i=a.next(t)}catch(e){return exit(e)}}if(i.done)return exit(null,i.value);i.value=toThunk(i.value,n);if("function"==typeof i.value){var u=false;try{i.value.call(n,function(){if(u)return;u=true;next.apply(n,arguments)})}catch(e){setImmediate(function(){if(u)return;u=true;next(e)})}return}next(new TypeError("You may only yield a function, promise, generator, array, or object, "+'but the following was passed: "'+String(i.value)+'"'))}}}function toThunk(e,r){if(isGeneratorFunction(e)){return co(e.call(r))}if(isGenerator(e)){return co(e)}if(isPromise(e)){return promiseToThunk(e)}if("function"==typeof e){return e}if(isObject(e)||Array.isArray(e)){return objectToThunk.call(r,e)}return e}function objectToThunk(e){var r=this;var t=Array.isArray(e);return function(i){var n=Object.keys(e);var a=n.length;var u=t?new Array(a):new e.constructor;var s;if(!a){setImmediate(function(){i(null,u)});return}if(!t){for(var o=0;o-1&&t.charAt(i)!=="\n"){r.message("Missing newline character at end of file")}}},,function(e,r,t){"use strict";var i=t(775);var n=t(194);var a=t(508);var u=t(649);var s=t(315);e.exports=setOptions;var o={entities:{true:true,false:true,numbers:true,escape:true},bullet:{"*":true,"-":true,"+":true},rule:{"-":true,_:true,"*":true},listItemIndent:{tab:true,mixed:true,1:true},emphasis:{_:true,"*":true},strong:{_:true,"*":true},fence:{"`":true,"~":true}};var f={boolean:validateBoolean,string:validateString,number:validateNumber,function:validateFunction};function setOptions(e){var r=this;var t=r.options;var n;var s;if(e==null){e={}}else if(typeof e==="object"){e=i(e)}else{throw new Error("Invalid value `"+e+"` for setting `options`")}for(s in a){f[typeof a[s]](e,s,t[s],o[s])}n=e.ruleRepetition;if(n&&n<3){raise(n,"options.ruleRepetition")}r.encode=encodeFactory(String(e.entities));r.escape=u(e);r.options=e;return r}function validateBoolean(e,r,t){var i=e[r];if(i==null){i=t}if(typeof i!=="boolean"){raise(i,"options."+r)}e[r]=i}function validateNumber(e,r,t){var i=e[r];if(i==null){i=t}if(isNaN(i)){raise(i,"options."+r)}e[r]=i}function validateString(e,r,t,i){var n=e[r];if(n==null){n=t}n=String(n);if(!(n in i)){raise(n,"options."+r)}e[r]=n}function validateFunction(e,r,t){var i=e[r];if(i==null){i=t}if(typeof i!=="function"){raise(i,"options."+r)}e[r]=i}function encodeFactory(e){var r={};if(e==="false"){return s}if(e==="true"){r.useNamedReferences=true}if(e==="escape"){r.escapeOnly=true;r.useNamedReferences=true}return wrapped;function wrapped(e){return n(e,r)}}function raise(e,r){throw new Error("Invalid value `"+e+"` for setting `"+r+"`")}},,,,,,,,,function(e){"use strict";function isNothing(e){return typeof e==="undefined"||e===null}function isObject(e){return typeof e==="object"&&e!==null}function toArray(e){if(Array.isArray(e))return e;else if(isNothing(e))return[];return[e]}function extend(e,r){var t,i,n,a;if(r){a=Object.keys(r);for(t=0,i=a.length;t"},{long:"ignore-path",description:"specify ignore file",short:"i",type:"string",value:""},{long:"setting",description:"specify settings",short:"s",type:"string",value:""},{long:"ext",description:"specify extensions",short:"e",type:"string",value:""},{long:"use",description:"use plugins",short:"u",type:"string",value:""},{long:"watch",description:"watch for changes and reprocess",short:"w",type:"boolean",default:false},{long:"quiet",description:"output only warnings and errors",short:"q",type:"boolean",default:false},{long:"silent",description:"output only errors",short:"S",type:"boolean",default:false},{long:"frail",description:"exit with 1 on warnings",short:"f",type:"boolean",default:false},{long:"tree",description:"specify input and output as syntax tree",short:"t",type:"boolean",default:false},{long:"report",description:"specify reporter",type:"string",value:""},{long:"file-path",description:"specify path to process as",type:"string",value:""},{long:"tree-in",description:"specify input as syntax tree",type:"boolean"},{long:"tree-out",description:"output syntax tree",type:"boolean"},{long:"inspect",description:"output formatted syntax tree",type:"boolean"},{long:"stdout",description:"specify writing to stdout",type:"boolean",truelike:true},{long:"color",description:"specify color in report",type:"boolean",default:true},{long:"config",description:"search for configuration files",type:"boolean",default:true},{long:"ignore",description:"search for ignore files",type:"boolean",default:true}]},,function(e){"use strict";function YAMLException(e,r){Error.call(this);this.name="YAMLException";this.reason=e;this.mark=r;this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"");if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}else{this.stack=(new Error).stack||""}}YAMLException.prototype=Object.create(Error.prototype);YAMLException.prototype.constructor=YAMLException;YAMLException.prototype.toString=function toString(e){var r=this.name+": ";r+=this.reason||"(unknown reason)";if(!e&&this.mark){r+=" "+this.mark.toString()}return r};e.exports=YAMLException},,,,,,function(e,r){function isArray(e){if(Array.isArray){return Array.isArray(e)}return objectToString(e)==="[object Array]"}r.isArray=isArray;function isBoolean(e){return typeof e==="boolean"}r.isBoolean=isBoolean;function isNull(e){return e===null}r.isNull=isNull;function isNullOrUndefined(e){return e==null}r.isNullOrUndefined=isNullOrUndefined;function isNumber(e){return typeof e==="number"}r.isNumber=isNumber;function isString(e){return typeof e==="string"}r.isString=isString;function isSymbol(e){return typeof e==="symbol"}r.isSymbol=isSymbol;function isUndefined(e){return e===void 0}r.isUndefined=isUndefined;function isRegExp(e){return objectToString(e)==="[object RegExp]"}r.isRegExp=isRegExp;function isObject(e){return typeof e==="object"&&e!==null}r.isObject=isObject;function isDate(e){return objectToString(e)==="[object Date]"}r.isDate=isDate;function isError(e){return objectToString(e)==="[object Error]"||e instanceof Error}r.isError=isError;function isFunction(e){return typeof e==="function"}r.isFunction=isFunction;function isPrimitive(e){return e===null||typeof e==="boolean"||typeof e==="number"||typeof e==="string"||typeof e==="symbol"||typeof e==="undefined"}r.isPrimitive=isPrimitive;r.isBuffer=Buffer.isBuffer;function objectToString(e){return Object.prototype.toString.call(e)}},function(e){"use strict";e.exports=function isObject(e){return typeof e==="object"&&e!==null}},,,,,,,,,,function(e,r,t){"use strict";var i=t(855);e.exports=compile;function compile(){return this.visit(i(this.tree,this.options.commonmark))}},,function(e,r,t){"use strict";var i=t(100);var n=t(97);var a=t(998);e.exports=i("remark-lint:no-unused-definitions",noUnusedDefinitions);var u="Found unused definition";function noUnusedDefinitions(e,r){var t={};var i;var s;a(e,["definition","footnoteDefinition"],find);a(e,["imageReference","linkReference","footnoteReference"],mark);for(i in t){s=t[i];if(!s.used){r.message(u,s.node)}}function find(e){if(!n(e)){t[e.identifier.toUpperCase()]={node:e,used:false}}}function mark(e){var r=t[e.identifier.toUpperCase()];if(!n(e)&&r){r.used=true}}}},,,function(e,r,t){"use strict";var i=t(544);var n=t(548);var a=t(908);var u=t(617);var s=t(501);var o=Object.prototype.hasOwnProperty;var f=1;var l=2;var c=3;var h=4;var p=1;var v=2;var d=3;var D=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;var m=/[\x85\u2028\u2029]/;var g=/[,\[\]\{\}]/;var E=/^(?:!|!!|![a-z\-]+!)$/i;var A=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function is_EOL(e){return e===10||e===13}function is_WHITE_SPACE(e){return e===9||e===32}function is_WS_OR_EOL(e){return e===9||e===32||e===10||e===13}function is_FLOW_INDICATOR(e){return e===44||e===91||e===93||e===123||e===125}function fromHexCode(e){var r;if(48<=e&&e<=57){return e-48}r=e|32;if(97<=r&&r<=102){return r-97+10}return-1}function escapedHexLen(e){if(e===120){return 2}if(e===117){return 4}if(e===85){return 8}return 0}function fromDecimalCode(e){if(48<=e&&e<=57){return e-48}return-1}function simpleEscapeSequence(e){return e===48?"\0":e===97?"":e===98?"\b":e===116?"\t":e===9?"\t":e===110?"\n":e===118?"\v":e===102?"\f":e===114?"\r":e===101?"":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"…":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}function charFromCodepoint(e){if(e<=65535){return String.fromCharCode(e)}return String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var C=new Array(256);var y=new Array(256);for(var w=0;w<256;w++){C[w]=simpleEscapeSequence(w)?1:0;y[w]=simpleEscapeSequence(w)}function State(e,r){this.input=e;this.filename=r["filename"]||null;this.schema=r["schema"]||s;this.onWarning=r["onWarning"]||null;this.legacy=r["legacy"]||false;this.json=r["json"]||false;this.listener=r["listener"]||null;this.implicitTypes=this.schema.compiledImplicit;this.typeMap=this.schema.compiledTypeMap;this.length=e.length;this.position=0;this.line=0;this.lineStart=0;this.lineIndent=0;this.documents=[]}function generateError(e,r){return new n(r,new a(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function throwError(e,r){throw generateError(e,r)}function throwWarning(e,r){if(e.onWarning){e.onWarning.call(null,generateError(e,r))}}var x={YAML:function handleYamlDirective(e,r,t){var i,n,a;if(e.version!==null){throwError(e,"duplication of %YAML directive")}if(t.length!==1){throwError(e,"YAML directive accepts exactly one argument")}i=/^([0-9]+)\.([0-9]+)$/.exec(t[0]);if(i===null){throwError(e,"ill-formed argument of the YAML directive")}n=parseInt(i[1],10);a=parseInt(i[2],10);if(n!==1){throwError(e,"unacceptable YAML version of the document")}e.version=t[0];e.checkLineBreaks=a<2;if(a!==1&&a!==2){throwWarning(e,"unsupported YAML version of the document")}},TAG:function handleTagDirective(e,r,t){var i,n;if(t.length!==2){throwError(e,"TAG directive accepts exactly two arguments")}i=t[0];n=t[1];if(!E.test(i)){throwError(e,"ill-formed tag handle (first argument) of the TAG directive")}if(o.call(e.tagMap,i)){throwError(e,'there is a previously declared suffix for "'+i+'" tag handle')}if(!A.test(n)){throwError(e,"ill-formed tag prefix (second argument) of the TAG directive")}e.tagMap[i]=n}};function captureSegment(e,r,t,i){var n,a,u,s;if(r1){e.result+=i.repeat("\n",r-1)}}function readPlainScalar(e,r,t){var i,n,a,u,s,o,f,l,c=e.kind,h=e.result,p;p=e.input.charCodeAt(e.position);if(is_WS_OR_EOL(p)||is_FLOW_INDICATOR(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96){return false}if(p===63||p===45){n=e.input.charCodeAt(e.position+1);if(is_WS_OR_EOL(n)||t&&is_FLOW_INDICATOR(n)){return false}}e.kind="scalar";e.result="";a=u=e.position;s=false;while(p!==0){if(p===58){n=e.input.charCodeAt(e.position+1);if(is_WS_OR_EOL(n)||t&&is_FLOW_INDICATOR(n)){break}}else if(p===35){i=e.input.charCodeAt(e.position-1);if(is_WS_OR_EOL(i)){break}}else if(e.position===e.lineStart&&testDocumentSeparator(e)||t&&is_FLOW_INDICATOR(p)){break}else if(is_EOL(p)){o=e.line;f=e.lineStart;l=e.lineIndent;skipSeparationSpace(e,false,-1);if(e.lineIndent>=r){s=true;p=e.input.charCodeAt(e.position);continue}else{e.position=u;e.line=o;e.lineStart=f;e.lineIndent=l;break}}if(s){captureSegment(e,a,u,false);writeFoldedLines(e,e.line-o);a=u=e.position;s=false}if(!is_WHITE_SPACE(p)){u=e.position+1}p=e.input.charCodeAt(++e.position)}captureSegment(e,a,u,false);if(e.result){return true}e.kind=c;e.result=h;return false}function readSingleQuotedScalar(e,r){var t,i,n;t=e.input.charCodeAt(e.position);if(t!==39){return false}e.kind="scalar";e.result="";e.position++;i=n=e.position;while((t=e.input.charCodeAt(e.position))!==0){if(t===39){captureSegment(e,i,e.position,true);t=e.input.charCodeAt(++e.position);if(t===39){i=e.position;e.position++;n=e.position}else{return true}}else if(is_EOL(t)){captureSegment(e,i,n,true);writeFoldedLines(e,skipSeparationSpace(e,false,r));i=n=e.position}else if(e.position===e.lineStart&&testDocumentSeparator(e)){throwError(e,"unexpected end of the document within a single quoted scalar")}else{e.position++;n=e.position}}throwError(e,"unexpected end of the stream within a single quoted scalar")}function readDoubleQuotedScalar(e,r){var t,i,n,a,u,s;s=e.input.charCodeAt(e.position);if(s!==34){return false}e.kind="scalar";e.result="";e.position++;t=i=e.position;while((s=e.input.charCodeAt(e.position))!==0){if(s===34){captureSegment(e,t,e.position,true);e.position++;return true}else if(s===92){captureSegment(e,t,e.position,true);s=e.input.charCodeAt(++e.position);if(is_EOL(s)){skipSeparationSpace(e,false,r)}else if(s<256&&C[s]){e.result+=y[s];e.position++}else if((u=escapedHexLen(s))>0){n=u;a=0;for(;n>0;n--){s=e.input.charCodeAt(++e.position);if((u=fromHexCode(s))>=0){a=(a<<4)+u}else{throwError(e,"expected hexadecimal character")}}e.result+=charFromCodepoint(a);e.position++}else{throwError(e,"unknown escape sequence")}t=i=e.position}else if(is_EOL(s)){captureSegment(e,t,i,true);writeFoldedLines(e,skipSeparationSpace(e,false,r));t=i=e.position}else if(e.position===e.lineStart&&testDocumentSeparator(e)){throwError(e,"unexpected end of the document within a double quoted scalar")}else{e.position++;i=e.position}}throwError(e,"unexpected end of the stream within a double quoted scalar")}function readFlowCollection(e,r){var t=true,i,n=e.tag,a,u=e.anchor,s,o,l,c,h,p={},v,d,D,m;m=e.input.charCodeAt(e.position);if(m===91){o=93;h=false;a=[]}else if(m===123){o=125;h=true;a={}}else{return false}if(e.anchor!==null){e.anchorMap[e.anchor]=a}m=e.input.charCodeAt(++e.position);while(m!==0){skipSeparationSpace(e,true,r);m=e.input.charCodeAt(e.position);if(m===o){e.position++;e.tag=n;e.anchor=u;e.kind=h?"mapping":"sequence";e.result=a;return true}else if(!t){throwError(e,"missed comma between flow collection entries")}d=v=D=null;l=c=false;if(m===63){s=e.input.charCodeAt(e.position+1);if(is_WS_OR_EOL(s)){l=c=true;e.position++;skipSeparationSpace(e,true,r)}}i=e.line;composeNode(e,r,f,false,true);d=e.tag;v=e.result;skipSeparationSpace(e,true,r);m=e.input.charCodeAt(e.position);if((c||e.line===i)&&m===58){l=true;m=e.input.charCodeAt(++e.position);skipSeparationSpace(e,true,r);composeNode(e,r,f,false,true);D=e.result}if(h){storeMappingPair(e,a,p,d,v,D)}else if(l){a.push(storeMappingPair(e,null,p,d,v,D))}else{a.push(v)}skipSeparationSpace(e,true,r);m=e.input.charCodeAt(e.position);if(m===44){t=true;m=e.input.charCodeAt(++e.position)}else{t=false}}throwError(e,"unexpected end of the stream within a flow collection")}function readBlockScalar(e,r){var t,n,a=p,u=false,s=false,o=r,f=0,l=false,c,h;h=e.input.charCodeAt(e.position);if(h===124){n=false}else if(h===62){n=true}else{return false}e.kind="scalar";e.result="";while(h!==0){h=e.input.charCodeAt(++e.position);if(h===43||h===45){if(p===a){a=h===43?d:v}else{throwError(e,"repeat of a chomping mode identifier")}}else if((c=fromDecimalCode(h))>=0){if(c===0){throwError(e,"bad explicit indentation width of a block scalar; it cannot be less than one")}else if(!s){o=r+c-1;s=true}else{throwError(e,"repeat of an indentation width identifier")}}else{break}}if(is_WHITE_SPACE(h)){do{h=e.input.charCodeAt(++e.position)}while(is_WHITE_SPACE(h));if(h===35){do{h=e.input.charCodeAt(++e.position)}while(!is_EOL(h)&&h!==0)}}while(h!==0){readLineBreak(e);e.lineIndent=0;h=e.input.charCodeAt(e.position);while((!s||e.lineIndento){o=e.lineIndent}if(is_EOL(h)){f++;continue}if(e.lineIndentr)&&o!==0){throwError(e,"bad indentation of a sequence entry")}else if(e.lineIndentr){if(composeNode(e,r,h,true,n)){if(D){v=e.result}else{d=e.result}}if(!D){storeMappingPair(e,f,c,p,v,d,a,u);p=v=d=null}skipSeparationSpace(e,true,-1);g=e.input.charCodeAt(e.position)}if(e.lineIndent>r&&g!==0){throwError(e,"bad indentation of a mapping entry")}else if(e.lineIndentr){p=1}else if(e.lineIndent===r){p=0}else if(e.lineIndentr){p=1}else if(e.lineIndent===r){p=0}else if(e.lineIndent tag; it should be "'+g.kind+'", not "'+e.kind+'"')}if(!g.resolve(e.result)){throwError(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}else{e.result=g.construct(e.result);if(e.anchor!==null){e.anchorMap[e.anchor]=e.result}}}else{throwError(e,"unknown tag !<"+e.tag+">")}}if(e.listener!==null){e.listener("close",e)}return e.tag!==null||e.anchor!==null||d}function readDocument(e){var r=e.position,t,i,n,a=false,u;e.version=null;e.checkLineBreaks=e.legacy;e.tagMap={};e.anchorMap={};while((u=e.input.charCodeAt(e.position))!==0){skipSeparationSpace(e,true,-1);u=e.input.charCodeAt(e.position);if(e.lineIndent>0||u!==37){break}a=true;u=e.input.charCodeAt(++e.position);t=e.position;while(u!==0&&!is_WS_OR_EOL(u)){u=e.input.charCodeAt(++e.position)}i=e.input.slice(t,e.position);n=[];if(i.length<1){throwError(e,"directive name must not be less than one character in length")}while(u!==0){while(is_WHITE_SPACE(u)){u=e.input.charCodeAt(++e.position)}if(u===35){do{u=e.input.charCodeAt(++e.position)}while(u!==0&&!is_EOL(u));break}if(is_EOL(u))break;t=e.position;while(u!==0&&!is_WS_OR_EOL(u)){u=e.input.charCodeAt(++e.position)}n.push(e.input.slice(t,e.position))}if(u!==0)readLineBreak(e);if(o.call(x,i)){x[i](e,i,n)}else{throwWarning(e,'unknown document directive "'+i+'"')}}skipSeparationSpace(e,true,-1);if(e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45){e.position+=3;skipSeparationSpace(e,true,-1)}else if(a){throwError(e,"directives end mark is expected")}composeNode(e,e.lineIndent-1,h,false,true);skipSeparationSpace(e,true,-1);if(e.checkLineBreaks&&m.test(e.input.slice(r,e.position))){throwWarning(e,"non-ASCII line breaks are interpreted as content")}e.documents.push(e.result);if(e.position===e.lineStart&&testDocumentSeparator(e)){if(e.input.charCodeAt(e.position)===46){e.position+=3;skipSeparationSpace(e,true,-1)}return}if(e.position=e.expected){e.emit("done")}}},function(e){"use strict";e.exports=function(e,r){if(e===null||e===undefined){throw TypeError()}e=String(e);var t=e.length;var i=r?Number(r):0;if(Number.isNaN(i)){i=0}if(i<0||i>=t){return undefined}var n=e.charCodeAt(i);if(n>=55296&&n<=56319&&t>i+1){var a=e.charCodeAt(i+1);if(a>=56320&&a<=57343){return(n-55296)*1024+a-56320+65536}}return n}},function(e,r,t){"use strict";var i=t(80);var n=t(712);var a=t(775);e.exports=messageControl;function messageControl(e){return i(a({marker:n,test:"html"},e))}},,function(e,r,t){"use strict";var i=t(174);var n=t(576);var a=t(991);e.exports=function(e){if(typeof e!=="string"||e.length===0){return 0}var r=0;e=i(e);for(var t=0;t=127&&u<=159){continue}if(u>=65536){t++}if(a(u)){r+=2}else{r++}}return r}},function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);e.exports=i("remark-lint:table-pipes",tablePipes);var s=a.start;var o=a.end;var f="Missing initial pipe in table fence";var l="Missing final pipe in table fence";function tablePipes(e,r){var t=String(r);n(e,"table",visitor);function visitor(e){var i=e.children;var n=i.length;var a=-1;var c;var h;var p;var v;var d;var D;while(++a{const n=testProhibited(t,i);if(n){r.message(`Use "${t.yes}" instead of "${n}"`,e)}})}}},,function(e,r,t){"use strict";var i=t(758);e.exports=newline;var n="\n";function newline(e,r,t){var a=r.charAt(0);var u;var s;var o;var f;if(a!==n){return}if(t){return true}f=1;u=r.length;s=a;o="";while(f{let r=false;let t=false;let i=false;for(let n=0;n{if(!(typeof e==="string"||Array.isArray(e))){throw new TypeError("Expected the input to be `string | string[]`")}t=Object.assign({pascalCase:false},t);const i=e=>t.pascalCase?e.charAt(0).toUpperCase()+e.slice(1):e;if(Array.isArray(e)){e=e.map(e=>e.trim()).filter(e=>e.length).join("-")}else{e=e.trim()}if(e.length===0){return""}if(e.length===1){return t.pascalCase?e.toUpperCase():e.toLowerCase()}if(/^[a-z\d]+$/.test(e)){return i(e)}const n=e!==e.toLowerCase();if(n){e=r(e)}e=e.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(e,r)=>r.toUpperCase());return i(e)})},,,,,,,,,,function(e,r,t){"use strict";var i=t(875);e.exports=new i({include:[t(12)],implicit:[t(46),t(815)],explicit:[t(391),t(684),t(211),t(781)]})},,function(e,r,t){"use strict";var i=t(765);var n=t(758);var a=t(419);e.exports=strong;strong.locator=a;var u="\\";var s="*";var o="_";function strong(e,r,t){var a=this;var f=0;var l=r.charAt(f);var c;var h;var p;var v;var d;var D;var m;if(l!==s&&l!==o||r.charAt(++f)!==l){return}h=a.options.pedantic;p=l;d=p+p;D=r.length;f++;v="";l="";if(h&&n(r.charAt(f))){return}while(f>>=0;var n=e.byteLength-r;if(n<0){throw new RangeError("'offset' is out of bounds")}if(i===undefined){i=n}else{i>>>=0;if(i>n){throw new RangeError("'length' is out of bounds")}}return t?Buffer.from(e.slice(r,r+i)):new Buffer(new Uint8Array(e.slice(r,r+i)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return t?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,i){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,i)}if(typeof e==="string"){return fromString(e,r)}return t?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},,,function(e){"use strict";e.exports=locate;function locate(e,r){var t=e.indexOf("[",r);var i=e.indexOf("![",r);if(i===-1){return t}return t=e.length?e.length:n+t;r.message+=` while parsing near '${i===0?"":"..."}${e.slice(i,a)}${a===e.length?"":"..."}'`}else{r.message+=` while parsing '${e.slice(0,t*2)}'`}throw r}}},,,,,,,function(e){"use strict";e.exports=locate;function locate(e,r){var t=e.indexOf("\n",r);while(t>r){if(e.charAt(t-1)!==" "){break}t--}return t}},function(e,r,t){"use strict";var i=t(400);function resolveYamlNull(e){if(e===null)return true;var r=e.length;return r===1&&e==="~"||r===4&&(e==="null"||e==="Null"||e==="NULL")}function constructYamlNull(){return null}function isNull(e){return e===null}e.exports=new i("tag:yaml.org,2002:null",{kind:"scalar",resolve:resolveYamlNull,construct:constructYamlNull,predicate:isNull,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},,,,function(e){"use strict";e.exports=alphabetical;function alphabetical(e){var r=typeof e==="string"?e.charCodeAt(0):e;return r>=97&&r<=122||r>=65&&r<=90}},,,,,,,,function(e,r,t){"use strict";const i=t(431);const n=t(832);const a=process.env;const u=e=>{if(e===0){return false}return{level:e,hasBasic:true,has256:e>=2,has16m:e>=3}};let s=(()=>{if(n("no-color")||n("no-colors")||n("color=false")){return 0}if(n("color=16m")||n("color=full")||n("color=truecolor")){return 3}if(n("color=256")){return 2}if(n("color")||n("colors")||n("color=true")||n("color=always")){return 1}if(process.stdout&&!process.stdout.isTTY){return 0}if(process.platform==="win32"){const e=i.release().split(".");if(Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586){return 2}return 1}if("CI"in a){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in a)||a.CI_NAME==="codeship"){return 1}return 0}if("TEAMCITY_VERSION"in a){return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(a.TEAMCITY_VERSION)?1:0}if("TERM_PROGRAM"in a){const e=parseInt((a.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(a.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(a.TERM)){return 2}if(/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(a.TERM)){return 1}if("COLORTERM"in a){return 1}if(a.TERM==="dumb"){return 0}return 0})();if("FORCE_COLOR"in a){s=parseInt(a.FORCE_COLOR,10)===0?0:s||1}e.exports=process&&u(s)},,function(e){"use strict";e.exports=factory;function factory(e,r,t){return enter;function enter(){var i=t||this;var n=i[e];i[e]=!r;return exit;function exit(){i[e]=n}}}},function(e,r,t){"use strict";var i=t(770);var n=t(694);var a=t(758);var u=t(943);var s=t(980);e.exports=factory;var o="\t";var f="\n";var l=" ";var c="#";var h="&";var p="(";var v=")";var d="*";var D="+";var m="-";var g=".";var E=":";var A="<";var C=">";var y="[";var w="\\";var x="]";var b="_";var F="`";var S="|";var B="~";var k="!";var O={"<":"<",":":":","&":"&","|":"|","~":"~"};var P="shortcut";var T="mailto";var I="https";var M="http";var L=/\n\s*$/;function factory(e){return escape;function escape(r,t,T){var I=this;var M=e.gfm;var R=e.commonmark;var j=e.pedantic;var N=R?[g,v]:[g];var U=T&&T.children;var J=U&&U.indexOf(t);var z=U&&U[J-1];var X=U&&U[J+1];var q=r.length;var G=u(e);var _=-1;var W=[];var V=W;var H;var Y;var $;var Z;var Q;var K;if(z){H=text(z)&&L.test(z.value)}else{H=!T||T.type==="root"||T.type==="paragraph"}while(++_0||Y===x&&I.inLink||M&&Y===B&&r.charAt(_+1)===B||M&&Y===S&&(I.inTable||alignment(r,_))||Y===b&&_>0&&_t.length;var a;if(n){t.push(done)}try{a=e.apply(null,t)}catch(e){if(n&&i){throw e}return done(e)}if(!n){if(a&&typeof a.then==="function"){a.then(then,done)}else if(a instanceof Error){done(a)}else{then(a)}}}function done(){if(!i){i=true;t.apply(null,arguments)}}function then(e){done(null,e)}}},function(e,r,t){"use strict";var i=t(136)("unified-engine:file-pipeline:configure");var n=t(356);var a=t(164);var u=t(555);var s=t(890);e.exports=configure;function configure(e,r,t,o){var f=e.configuration;var l=e.processor;if(n(r).fatal){return o()}f.load(r.path,handleConfiguration);function handleConfiguration(e,r){var n;var f;var c;var h;var p;var v;if(e){return o(e)}i("Using settings `%j`",r.settings);l.data("settings",r.settings);n=r.plugins;h=n.length;p=-1;i("Using `%d` plugins",h);while(++p output."+t,""," # Rewrite all applicable files"," $ "+i+" . -o"].join("\n");return{helpMessage:u,cwd:r.cwd,processor:r.processor,help:n.help,version:n.version,files:n._,watch:n.watch,extensions:l.length?l:r.extensions,output:n.output,out:n.stdout,tree:n.tree,treeIn:n.treeIn,treeOut:n.treeOut,inspect:n.inspect,rcName:r.rcName,packageField:r.packageField,rcPath:n.rcPath,detectConfig:n.config,settings:settings(n.setting),ignoreName:r.ignoreName,ignorePath:n.ignorePath,detectIgnore:n.ignore,pluginPrefix:r.pluginPrefix,plugins:plugins(n.use),reporter:c[0],reporterOptions:c[1],color:n.color,silent:n.silent,quiet:n.quiet,frail:n.frail}}function addEach(e){var r=e.default;f.default[e.long]=r===undefined?null:r;if(e.type in f){f[e.type].push(e.long)}if(e.short){f.alias[e.short]=e.long}}function extensions(e){return flatten(normalize(e).map(splitList))}function plugins(e){var r={};normalize(e).map(splitOptions).forEach(function(e){r[e[0]]=e[1]?parseConfig(e[1],{}):null});return r}function reporter(e){var r=normalize(e).map(splitOptions).map(function(e){return[e[0],e[1]?parseConfig(e[1],{}):null]});return r[r.length-1]||[]}function settings(e){var r={};normalize(e).forEach(function(e){parseConfig(e,r)});return r}function parseConfig(e,r){var t;var i;try{e=toCamelCase(parseJSON(e))}catch(r){i=r.message.replace(/at(?= position)/,"around");throw s("Cannot parse `%s` as JSON: %s",e,i)}for(t in e){r[t]=e[t]}return r}function handleUnknownArgument(e){if(e.charAt(0)!=="-"){return}if(e.charAt(1)==="-"){throw s("Unknown option `%s`, expected:\n%s",e,inspectAll(o))}e.slice(1).split("").forEach(each);function each(e){var r=o.length;var t=-1;var i;while(++t=u){v--;break}d+=g}D="";m="";while(++v=l&&C!==o){m=r.indexOf(o,m+1);continue}}A=r.slice(m+1);if(u(D,d,c,[e,A,true])){break}if(d.list.call(c,e,A,true)&&(c.inList||p||v&&!n(i.left(A).charAt(0)))){break}E=m;m=r.indexOf(o,m+1);if(m!==-1&&i(r.slice(E,m))===""){m=E;break}}A=r.slice(0,m);if(i(A)===""){e(A);return null}if(t){return true}w=e.now();A=a(A);return e(A)({type:"paragraph",children:c.tokenizeInline(A,w)})}},function(e,r,t){"use strict";var i=t(775);var n=t(9);e.exports=unherit;function unherit(e){var r;var t;var a;n(Of,e);n(From,Of);r=Of.prototype;for(t in r){a=r[t];if(a&&typeof a==="object"){r[t]="concat"in a?a.concat():i(a)}}return Of;function From(r){return e.apply(this,r)}function Of(){if(!(this instanceof Of)){return new From(arguments)}return e.apply(this,arguments)}}},function(e,r,t){"use strict";var i=t(775);var n=t(260);e.exports=parse;var a="\n";var u=/\r\n|\r/g;function parse(){var e=this;var r=String(e.file);var t={line:1,column:1,offset:0};var s=i(t);var o;r=r.replace(u,a);if(r.charCodeAt(0)===65279){r=r.slice(1);s.column++;s.offset++}o={type:"root",children:e.tokenizeBlock(r,s),position:{start:t,end:e.eof||i(t)}};if(!e.options.position){n(o,true)}return o}},function(e,r,t){"use strict";var i=t(136)("unified-engine:file-pipeline:queue");var n=t(356);var a=t(817);e.exports=queue;function queue(e,r,t,u){var s=r.history[0];var o=t.complete;var f=true;if(!o){o={};t.complete=o}i("Queueing `%s`",s);o[s]=u;t.valueOf().forEach(each);if(!f){i("Not flushing: some files cannot be flushed");return}t.complete={};t.pipeline.run(t,done);function each(e){var r=e.history[0];if(n(e).fatal){return}if(a(o[r])){i("`%s` can be flushed",r)}else{i("Interupting flush: `%s` is not finished",r);f=false}}function done(e){i("Flushing: all files can be flushed");for(s in o){o[s](e)}}}},function(e,r,t){"use strict";var i=t(100);var n=t(434);var a=t(998);var u=t(220);var s=t(97);e.exports=i("remark-lint:no-heading-indent",noHeadingIndent);var o=u.start;function noHeadingIndent(e,r){var t=String(r);var i=t.length;a(e,"heading",visitor);function visitor(e){var a;var u;var f;var l;var c;if(s(e)){return}a=o(e);u=a.offset;f=u-1;while(++f1;var p=c;var v=r.path;if(!u(p)){a("Not copying");return i()}p=f(e.cwd,p);a("Copying `%s`",v);s(p,onstatfile);function onstatfile(e,r){if(e){if(e.code!=="ENOENT"||c.charAt(c.length-1)===n.sep){return i(new Error("Cannot read output directory. Error:\n"+e.message))}s(o(p),onstatparent)}else{done(r.isDirectory())}}function onstatparent(e){if(e){i(new Error("Cannot read parent directory. Error:\n"+e.message))}else{done(false)}}function done(e){if(!e&&h){return i(new Error("Cannot write multiple files to single output: "+p))}r[e?"dirname":"path"]=l(r.cwd,p);a("Copying document from %s to %s",v,r.path);i()}}},,,function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(97);e.exports=i("remark-lint:no-shell-dollars",noShellDollars);var u="Do not use dollar signs before shell-commands";var s=["sh","bash","bats","cgi","command","fcgi","ksh","tmux","tool","zsh"];function noShellDollars(e,r){n(e,"code",visitor);function visitor(e){var t;var i;var n;var o;if(!a(e)&&e.lang&&s.indexOf(e.lang)!==-1){t=e.value.split("\n");n=t.length;o=-1;if(n<=1){return}while(++o1){r.message(s,e)}}}},,,function(e,r,t){"use strict";var i=t(43);var n=t(354);var a=t(975);e.exports=code;var u="\n";var s=" ";function code(e,r){var t=this;var o=e.value;var f=t.options;var l=f.fence;var c=e.lang||"";var h;if(c&&e.meta){c+=s+e.meta}c=t.encode(t.escape(c,e));if(!c&&!f.fences&&o){if(r&&r.type==="listItem"&&f.listItemIndent!=="tab"&&f.pedantic){t.file.fail("Cannot indent code properly. See https://git.io/fxKR8",e.position)}return a(o,1)}h=n(l,Math.max(i(o,l)+1,3));return h+c+u+o+u+h}},,function(e,r,t){"use strict";var i=t(400);var n=Object.prototype.hasOwnProperty;var a=Object.prototype.toString;function resolveYamlOmap(e){if(e===null)return true;var r=[],t,i,u,s,o,f=e;for(t=0,i=f.length;t<]/g}},function(e){e.exports={AEli:"Æ",AElig:"Æ",AM:"&",AMP:"&",Aacut:"Á",Aacute:"Á",Abreve:"Ă",Acir:"Â",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrav:"À",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Arin:"Å",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atild:"Ã",Atilde:"Ã",Aum:"Ä",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COP:"©",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedi:"Ç",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ET:"Ð",ETH:"Ð",Eacut:"É",Eacute:"É",Ecaron:"Ě",Ecir:"Ê",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrav:"È",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Eum:"Ë",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",G:">",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacut:"Í",Iacute:"Í",Icir:"Î",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrav:"Ì",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Ium:"Ï",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",L:"<",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Map:"⤅",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntild:"Ñ",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacut:"Ó",Oacute:"Ó",Ocir:"Ô",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograv:"Ò",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslas:"Ø",Oslash:"Ø",Otild:"Õ",Otilde:"Õ",Otimes:"⨷",Oum:"Ö",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUO:'"',QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",RE:"®",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THOR:"Þ",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:"\t",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacut:"Ú",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucir:"Û",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrav:"Ù",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uum:"Ü",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacut:"Ý",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacut:"á",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acir:"â",acirc:"â",acut:"´",acute:"´",acy:"а",aeli:"æ",aelig:"æ",af:"⁡",afr:"𝔞",agrav:"à",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",am:"&",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",arin:"å",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atild:"ã",atilde:"ã",aum:"ä",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvba:"¦",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedi:"ç",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedi:"¸",cedil:"¸",cemptyv:"⦲",cen:"¢",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",cop:"©",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curre:"¤",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",de:"°",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divid:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacut:"é",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"ê",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrav:"è",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",et:"ð",eth:"ð",eum:"ë",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac1:"¼",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac3:"¾",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",g:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacut:"í",iacute:"í",ic:"⁣",icir:"î",icirc:"î",icy:"и",iecy:"е",iexc:"¡",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrav:"ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iques:"¿",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",ium:"ï",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laqu:"«",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",l:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",mac:"¯",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micr:"µ",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middo:"·",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbs:" ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",no:"¬",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntild:"ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacut:"ó",oacute:"ó",oast:"⊛",ocir:"ô",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograv:"ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"º",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslas:"ø",oslash:"ø",osol:"⊘",otild:"õ",otilde:"õ",otimes:"⊗",otimesas:"⨶",oum:"ö",ouml:"ö",ovbar:"⌽",par:"¶",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusm:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",poun:"£",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quo:'"',quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raqu:"»",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",re:"®",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sec:"§",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",sh:"­",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szli:"ß",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thor:"þ",thorn:"þ",tilde:"˜",time:"×",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacut:"ú",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucir:"û",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrav:"ù",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",um:"¨",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uum:"ü",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacut:"ý",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",ye:"¥",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yum:"ÿ",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},,,function(e,r,t){"use strict";var i=t(100);var n=t(903);e.exports=i("remark-lint:no-tabs",noTabs);var a="Use spaces instead of hard-tabs";function noTabs(e,r){var t=String(r);var i=n(r).toPosition;var u=t.indexOf("\t");while(u!==-1){r.message(a,i(u));u=t.indexOf("\t",u+1)}}},,,,,function(e,r,t){"use strict";var i=t(570);var n=t(143);function deprecated(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}e.exports.Type=t(400);e.exports.Schema=t(875);e.exports.FAILSAFE_SCHEMA=t(976);e.exports.JSON_SCHEMA=t(790);e.exports.CORE_SCHEMA=t(12);e.exports.DEFAULT_SAFE_SCHEMA=t(617);e.exports.DEFAULT_FULL_SCHEMA=t(501);e.exports.load=i.load;e.exports.loadAll=i.loadAll;e.exports.safeLoad=i.safeLoad;e.exports.safeLoadAll=i.safeLoadAll;e.exports.dump=n.dump;e.exports.safeDump=n.safeDump;e.exports.YAMLException=t(548);e.exports.MINIMAL_SCHEMA=t(976);e.exports.SAFE_SCHEMA=t(617);e.exports.DEFAULT_SCHEMA=t(501);e.exports.scan=deprecated("scan");e.exports.parse=deprecated("parse");e.exports.compose=deprecated("compose");e.exports.addConstructor=deprecated("addConstructor")},function(e,r,t){"use strict";var i=t(775);var n=t(478);e.exports=factory;function factory(e){decoder.raw=decodeRaw;return decoder;function normalize(r){var t=e.offset;var i=r.line;var n=[];while(++i){if(!(i in t)){break}n.push((t[i]||0)+1)}return{start:r,indent:n}}function decoder(r,t,i){n(r,{position:normalize(t),warning:handleWarning,text:i,reference:i,textContext:e,referenceContext:e})}function decodeRaw(e,r,t){return n(e,i(t,{position:normalize(r),warning:handleWarning}))}function handleWarning(r,t,i){if(i!==3){e.file.message(r,t)}}}},function(e){(function(){var r;if(true){r=e.exports=format}else{}r.format=format;r.vsprintf=vsprintf;if(typeof console!=="undefined"&&typeof console.log==="function"){r.printf=printf}function printf(){console.log(format.apply(null,arguments))}function vsprintf(e,r){return format.apply(null,[e].concat(r))}function format(e){var r=1,t=[].slice.call(arguments),i=0,n=e.length,a="",u,s=false,o,f,l=false,c,h=function(){return t[r++]},p=function(){var r="";while(/\d/.test(e[i])){r+=e[i++];u=e[i]}return r.length>0?parseInt(r):null};for(;i1)return true;for(var a=0;athis.maxLength)return r();if(!this.stat&&m(this.cache,t)){var a=this.cache[t];if(Array.isArray(a))a="DIR";if(!n||a==="DIR")return r(null,a);if(n&&a==="FILE")return r()}var u;var s=this.statCache[t];if(s!==undefined){if(s===false)return r(null,s);else{var o=s.isDirectory()?"DIR":"FILE";if(n&&o==="FILE")return r();else return r(null,o,s)}}var f=this;var l=g("stat\0"+t,lstatcb_);if(l)i.lstat(t,l);function lstatcb_(n,a){if(a&&a.isSymbolicLink()){return i.stat(t,function(i,n){if(i)f._stat2(e,t,null,a,r);else f._stat2(e,t,i,n,r)})}else{f._stat2(e,t,n,a,r)}}};Glob.prototype._stat2=function(e,r,t,i,n){if(t&&(t.code==="ENOENT"||t.code==="ENOTDIR")){this.statCache[r]=false;return n()}var a=e.slice(-1)==="/";this.statCache[r]=i;if(r.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,false,i);var u=true;if(i)u=i.isDirectory()?"DIR":"FILE";this.cache[r]=this.cache[r]||u;if(a&&u==="FILE")return n();return n(null,u,i)}},,,,function(e,r){r=e.exports=trim;function trim(e){return e.replace(/^\s*|\s*$/g,"")}r.left=function(e){return e.replace(/^\s*/,"")};r.right=function(e){return e.replace(/\s*$/,"")}},,,,,function(e){"use strict";e.exports=decimal;function decimal(e){var r=typeof e==="string"?e.charCodeAt(0):e;return r>=48&&r<=57}},function(e,r,t){"use strict";var i=t(765);var n=t(354);var a=t(816);e.exports=indentation;var u="\t";var s="\n";var o=" ";var f="!";function indentation(e,r){var t=e.split(s);var l=t.length+1;var c=Infinity;var h=[];var p;var v;var d;var D;t.unshift(n(o,r)+f);while(l--){v=a(t[l]);h[l]=v.stops;if(i(t[l]).length===0){continue}if(v.indent){if(v.indent>0&&v.indent0){return parse(e)}else if(t==="number"&&isNaN(e)===false){return r.long?fmtLong(e):fmtShort(e)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function parse(e){e=String(e);if(e.length>100){return}var s=/^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!s){return}var o=parseFloat(s[1]);var f=(s[2]||"ms").toLowerCase();switch(f){case"years":case"year":case"yrs":case"yr":case"y":return o*u;case"weeks":case"week":case"w":return o*a;case"days":case"day":case"d":return o*n;case"hours":case"hour":case"hrs":case"hr":case"h":return o*i;case"minutes":case"minute":case"mins":case"min":case"m":return o*t;case"seconds":case"second":case"secs":case"sec":case"s":return o*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return undefined}}function fmtShort(e){var a=Math.abs(e);if(a>=n){return Math.round(e/n)+"d"}if(a>=i){return Math.round(e/i)+"h"}if(a>=t){return Math.round(e/t)+"m"}if(a>=r){return Math.round(e/r)+"s"}return e+"ms"}function fmtLong(e){var a=Math.abs(e);if(a>=n){return plural(e,a,n,"day")}if(a>=i){return plural(e,a,i,"hour")}if(a>=t){return plural(e,a,t,"minute")}if(a>=r){return plural(e,a,r,"second")}return e+" ms"}function plural(e,r,t,i){var n=r>=t*1.5;return Math.round(e/t)+" "+i+(n?"s":"")}},function(e){"use strict";e.exports=locate;function locate(e,r){return e.indexOf("<",r)}},function(e,r,t){"use strict";var i=t(758);var n=t(68);e.exports=inlineCode;inlineCode.locator=n;var a="`";function inlineCode(e,r,t){var n=r.length;var u=0;var s="";var o="";var f;var l;var c;var h;var p;var v;var d;var D;while(ut&&a3)return false;if(r[r.length-i.length-1]!=="/")return false}return true}function constructJavascriptRegExp(e){var r=e,t=/\/([gim]*)$/.exec(e),i="";if(r[0]==="/"){if(t)i=t[1];r=r.slice(1,r.length-i.length-1)}return new RegExp(r,i)}function representJavascriptRegExp(e){var r="/"+e.source+"/";if(e.global)r+="g";if(e.multiline)r+="m";if(e.ignoreCase)r+="i";return r}function isRegExp(e){return Object.prototype.toString.call(e)==="[object RegExp]"}e.exports=new i("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:resolveJavascriptRegExp,construct:constructJavascriptRegExp,predicate:isRegExp,represent:representJavascriptRegExp})},function(e,r,t){"use strict";var i=t(400);function resolveYamlMerge(e){return e==="<<"||e===null}e.exports=new i("tag:yaml.org,2002:merge",{kind:"scalar",resolve:resolveYamlMerge})},function(e){"use strict";e.exports=indentation;var r="\t";var t=" ";var i=1;var n=4;function indentation(e){var a=0;var u=0;var s=e.charAt(a);var o={};var f;while(s===r||s===t){f=s===r?n:i;u+=f;if(f>1){u=Math.floor(u/f)*f}o[u]=a;s=e.charAt(++a)}return{indent:u,stops:o}}},function(e){e.exports=function isFunction(e){return Object.prototype.toString.call(e)==="[object Function]"}},function(e){e.exports={name:"node-lint-md-cli-rollup",description:"remark packaged for node markdown linting",version:"2.0.0",devDependencies:{"@zeit/ncc":"^0.15.2"},dependencies:{"markdown-extensions":"^1.1.1",remark:"^10.0.1","remark-lint":"^6.0.4","remark-preset-lint-node":"^1.6.0","unified-args":"^6.0.0","unified-engine":"^5.1.0"},main:"src/cli-entry.js",scripts:{build:"ncc build -m","build-node":"npm run build && cp dist/index.js ../lint-md.js"}}},function(e,r,t){"use strict";var i=t(532);var n=t(234);e.exports=image;var a=" ";var u="(";var s=")";var o="[";var f="]";var l="!";function image(e){var r=this;var t=i(r.encode(e.url||"",e));var c=r.enterLink();var h=r.encode(r.escape(e.alt||"",e));c();if(e.title){t+=a+n(r.encode(e.title,e))}return l+o+h+f+u+t+s}},function(e){e.exports=function(e,r){if(!r)r={};var t=r.hsep===undefined?" ":r.hsep;var i=r.align||[];var n=r.stringLength||function(e){return String(e).length};var a=reduce(e,function(e,r){forEach(r,function(r,t){var i=dotindex(r);if(!e[t]||i>e[t])e[t]=i});return e},[]);var u=map(e,function(e){return map(e,function(e,r){var t=String(e);if(i[r]==="."){var u=dotindex(t);var s=a[r]+(/\./.test(t)?1:2)-(n(t)-u);return t+Array(s).join(" ")}else return t})});var s=reduce(u,function(e,r){forEach(r,function(r,t){var i=n(r);if(!e[t]||i>e[t])e[t]=i});return e},[]);return map(u,function(e){return map(e,function(e,r){var t=s[r]-n(e)||0;var a=Array(Math.max(t+1,1)).join(" ");if(i[r]==="r"||i[r]==="."){return a+e}if(i[r]==="c"){return Array(Math.ceil(t/2+1)).join(" ")+e+Array(Math.floor(t/2+1)).join(" ")}return e+a}).join(t).replace(/\s+$/,"")}).join("\n")};function dotindex(e){var r=/\.[^.]*$/.exec(e);return r?r.index+1:e.length}function reduce(e,r,t){if(e.reduce)return e.reduce(r,t);var i=0;var n=arguments.length>=3?t:e[i++];for(;i2){r.message(s,e)}}}}},,function(e){"use strict";e.exports=function(e,r){r=r||process.argv;var t=r.indexOf("--");var i=/^-{1,2}/.test(e)?"":"--";var n=r.indexOf(i+e);return n!==-1&&(t===-1?true:n`\\u0000-\\u0020]+";var n="'[^']*'";var a='"[^"]*"';var u="(?:"+i+"|"+n+"|"+a+")";var s="(?:\\s+"+t+"(?:\\s*=\\s*"+u+")?)";var o="<[A-Za-z][A-Za-z0-9\\-]*"+s+"*\\s*\\/?>";var f="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";var l="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e";var c="<[?].*?[?]>";var h="]*>";var p="";r.openCloseTag=new RegExp("^(?:"+o+"|"+f+")");r.tag=new RegExp("^(?:"+o+"|"+f+"|"+l+"|"+c+"|"+h+"|"+p+")")},function(e,r,t){"use strict";var i=t(544);var n=t(548);var a=t(400);function compileList(e,r,t){var i=[];e.include.forEach(function(e){t=compileList(e,r,t)});e[r].forEach(function(e){t.forEach(function(r,t){if(r.tag===e.tag&&r.kind===e.kind){i.push(t)}});t.push(e)});return t.filter(function(e,r){return i.indexOf(r)===-1})}function compileMap(){var e={scalar:{},sequence:{},mapping:{},fallback:{}},r,t;function collectType(r){e[r.kind][r.tag]=e["fallback"][r.tag]=r}for(r=0,t=arguments.length;r-1){a.splice(u,1)}var s=t;a.forEach(function _buildSubObj(e,t){if(!e||typeof s!=="object")return;if(t===a.length-1)s[e]=r[n];if(s[e]===undefined)s[e]={};s=s[e]})}}return t};var c=r.find=function(){var e=a.join.apply(null,[].slice.call(arguments));function find(e,r){var t=a.join(e,r);try{i.statSync(t);return t}catch(t){if(a.dirname(e)!==e)return find(a.dirname(e),r)}}return find(process.cwd(),e)}},function(e,r,t){"use strict";var i=t(43);var n=t(354);e.exports=inlineCode;var a=" ";var u="`";function inlineCode(e){var r=e.value;var t=n(u,i(r,u)+1);var s=t;var o=t;if(r.charAt(0)===u){s+=a}if(r.charAt(r.length-1)===u){o=a+o}return s+r+o}},,function(e){var r=Object.prototype.hasOwnProperty;var t=Object.prototype.toString;function isEmpty(e){if(e==null)return true;if("boolean"==typeof e)return false;if("number"==typeof e)return e===0;if("string"==typeof e)return e.length===0;if("function"==typeof e)return e.length===0;if(Array.isArray(e))return e.length===0;if(e instanceof Error)return e.message==="";if(e.toString==t){switch(e.toString()){case"[object File]":case"[object Map]":case"[object Set]":{return e.size===0}case"[object Object]":{for(var i in e){if(r.call(e,i))return false}return true}}}return false}e.exports=isEmpty},,function(e,r,t){"use strict";function _typeof(e){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(e){return typeof e}}else{_typeof=function _typeof(e){return e&&typeof Symbol==="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e}}return _typeof(e)}r.log=log;r.formatArgs=formatArgs;r.save=save;r.load=load;r.useColors=useColors;r.storage=localstorage();r.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window!=="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)){return true}if(typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)){return false}return typeof document!=="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!=="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(r){r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff);if(!this.useColors){return}var t="color: "+this.color;r.splice(1,0,t,"color: inherit");var i=0;var n=0;r[0].replace(/%[a-zA-Z%]/g,function(e){if(e==="%%"){return}i++;if(e==="%c"){n=i}});r.splice(n,0,t)}function log(){var e;return(typeof console==="undefined"?"undefined":_typeof(console))==="object"&&console.log&&(e=console).log.apply(e,arguments)}function save(e){try{if(e){r.storage.setItem("debug",e)}else{r.storage.removeItem("debug")}}catch(e){}}function load(){var e;try{e=r.storage.getItem("debug")}catch(e){}if(!e&&typeof process!=="undefined"&&"env"in process){e=process.env.DEBUG}return e}function localstorage(){try{return localStorage}catch(e){}}e.exports=t(519)(r);var i=e.exports.formatters;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},,,,function(e,r,t){"use strict";var i=t(575);var n=t(601);e.exports=transform;function transform(e,r,t){var a=new i;e.fileSet=a;a.on("add",add).on("done",t);if(e.files.length===0){t()}else{e.files.forEach(a.add,a)}function add(t){n.run({configuration:e.configuration,processor:r.processor(),cwd:r.cwd,extensions:r.extensions,pluginPrefix:r.pluginPrefix,treeIn:r.treeIn,treeOut:r.treeOut,inspect:r.inspect,color:r.color,out:r.out,output:r.output,streamOut:r.streamOut,alwaysStringify:r.alwaysStringify},t,a,done);function done(e){if(e){e=t.message(e);e.fatal=true}a.emit("one",t)}}}},,,,,function(e,r,t){"use strict";e.exports=t(447)},function(e){"use strict";e.exports=locate;function locate(e,r){return e.indexOf("~~",r)}},function(e){"use strict";e.exports=factory;function factory(e){var r=indices(String(e));return{toPosition:offsetToPositionFactory(r),toOffset:positionToOffsetFactory(r)}}function offsetToPositionFactory(e){return offsetToPosition;function offsetToPosition(r){var t=-1;var i=e.length;if(r<0){return{}}while(++tr){return{line:t+1,column:r-(e[t-1]||0)+1,offset:r}}}return{}}}function positionToOffsetFactory(e){return positionToOffset;function positionToOffset(r){var t=r&&r.line;var i=r&&r.column;if(!isNaN(t)&&!isNaN(i)&&t-1 in e){return(e[t-2]||0)+i-1||0}return-1}}function indices(e){var r=[];var t=e.indexOf("\n");while(t!==-1){r.push(t+1);t=e.indexOf("\n",t+1)}r.push(e.length+1);return r}},,function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);var s=t(67);e.exports=i("remark-lint:no-auto-link-without-protocol",noAutoLinkWithoutProtocol);var o=a.start;var f=a.end;var l=/^[a-z][a-z+.-]+:\/?/i;var c="All automatic links must start with a protocol";function noAutoLinkWithoutProtocol(e,r){n(e,"link",visitor);function visitor(e){var t;if(!u(e)){t=e.children;if(o(e).column===o(t[0]).column-1&&f(e).column===f(t[t.length-1]).column+1&&!l.test(s(e))){r.message(c,e)}}}}},,function(e){"use strict";e.exports=label;var r="[";var t="]";var i="shortcut";var n="collapsed";function label(e){var a=e.referenceType;if(a===i){return""}return r+(a===n?"":e.label||e.identifier)+t}},function(e,r,t){"use strict";var i=t(544);function Mark(e,r,t,i,n){this.name=e;this.buffer=r;this.position=t;this.line=i;this.column=n}Mark.prototype.getSnippet=function getSnippet(e,r){var t,n,a,u,s;if(!this.buffer)return null;e=e||4;r=r||75;t="";n=this.position;while(n>0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(n-1))===-1){n-=1;if(this.position-n>r/2-1){t=" ... ";n+=5;break}}a="";u=this.position;while(ur/2-1){a=" ... ";u-=5;break}}s=this.buffer.slice(n,u);return i.repeat(" ",e)+t+s+a+"\n"+i.repeat(" ",e+this.position-n+t.length)+"^"};Mark.prototype.toString=function toString(e){var r,t="";if(this.name){t+='in "'+this.name+'" '}t+="at line "+(this.line+1)+", column "+(this.column+1);if(!e){r=this.getSnippet();if(r){t+=":\n"+r}}return t};e.exports=Mark},,function(e){"use strict";e.exports=balanced;function balanced(e,r,t){if(e instanceof RegExp)e=maybeMatch(e,t);if(r instanceof RegExp)r=maybeMatch(r,t);var i=range(e,r,t);return i&&{start:i[0],end:i[1],pre:t.slice(0,i[0]),body:t.slice(i[0]+e.length,i[1]),post:t.slice(i[1]+r.length)}}function maybeMatch(e,r){var t=r.match(e);return t?t[0]:null}balanced.range=range;function range(e,r,t){var i,n,a,u,s;var o=t.indexOf(e);var f=t.indexOf(r,o+1);var l=o;if(o>=0&&f>0){i=[];a=t.length;while(l>=0&&!s){if(l==o){i.push(l);o=t.indexOf(e,l+1)}else if(i.length==1){s=[i.pop(),f]}else{n=i.pop();if(n=0?o:f}if(i.length){s=[a,u]}}return s}},,,,,,,,function(e,r,t){var i=t(706);var n=t(910);e.exports=expandTop;var a="\0SLASH"+Math.random()+"\0";var u="\0OPEN"+Math.random()+"\0";var s="\0CLOSE"+Math.random()+"\0";var o="\0COMMA"+Math.random()+"\0";var f="\0PERIOD"+Math.random()+"\0";function numeric(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function escapeBraces(e){return e.split("\\\\").join(a).split("\\{").join(u).split("\\}").join(s).split("\\,").join(o).split("\\.").join(f)}function unescapeBraces(e){return e.split(a).join("\\").split(u).join("{").split(s).join("}").split(o).join(",").split(f).join(".")}function parseCommaParts(e){if(!e)return[""];var r=[];var t=n("{","}",e);if(!t)return e.split(",");var i=t.pre;var a=t.body;var u=t.post;var s=i.split(",");s[s.length-1]+="{"+a+"}";var o=parseCommaParts(u);if(u.length){s[s.length-1]+=o.shift();s.push.apply(s,o)}r.push.apply(r,s);return r}function expandTop(e){if(!e)return[];if(e.substr(0,2)==="{}"){e="\\{\\}"+e.substr(2)}return expand(escapeBraces(e),true).map(unescapeBraces)}function identity(e){return e}function embrace(e){return"{"+e+"}"}function isPadded(e){return/^-?0\d/.test(e)}function lte(e,r){return e<=r}function gte(e,r){return e>=r}function expand(e,r){var t=[];var a=n("{","}",e);if(!a||/\$$/.test(a.pre))return[e];var u=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(a.body);var o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(a.body);var f=u||o;var l=a.body.indexOf(",")>=0;if(!f&&!l){if(a.post.match(/,.*\}/)){e=a.pre+"{"+a.body+s+a.post;return expand(e)}return[e]}var c;if(f){c=a.body.split(/\.\./)}else{c=parseCommaParts(a.body);if(c.length===1){c=expand(c[0],false).map(embrace);if(c.length===1){var h=a.post.length?expand(a.post,false):[""];return h.map(function(e){return a.pre+c[0]+e})}}}var p=a.pre;var h=a.post.length?expand(a.post,false):[""];var v;if(f){var d=numeric(c[0]);var D=numeric(c[1]);var m=Math.max(c[0].length,c[1].length);var g=c.length==3?Math.abs(numeric(c[2])):1;var E=lte;var A=D0){var b=new Array(x+1).join("0");if(y<0)w="-"+b+w.slice(1);else w=b+w}}}v.push(w)}}else{v=i(c,function(e){return expand(e,false)})}for(var F=0;F=0&&e.splice instanceof Function}},,,,function(e,r,t){"use strict";var i=t(758);e.exports=table;var n="\t";var a="\n";var u=" ";var s="-";var o=":";var f="\\";var l="`";var c="|";var h=1;var p=2;var v="left";var d="center";var D="right";function table(e,r,t){var m=this;var g;var E;var A;var C;var y;var w;var x;var b;var F;var S;var B;var k;var O;var P;var T;var I;var M;var L;var R;var j;var N;var U;var J;var z;if(!m.options.gfm){return}g=0;L=0;w=r.length+1;x=[];while(gU){if(L1){if(F){C+=b.slice(0,b.length-1);b=b.charAt(b.length-1)}else{C+=b;b=""}}I=e.now();e(C)({type:"tableCell",children:m.tokenizeInline(k,I)},y)}e(b+F);b="";k=""}}else{if(b){k+=b;b=""}k+=F;if(F===f&&g!==w-2){k+=R.charAt(g+1);g++}if(F===l){P=1;while(R.charAt(g+1)===F){k+=F;g++;P++}if(!T){T=P}else if(P>=T){T=0}}}O=false;g++}if(!M){e(a+E)}}return N}},,function(e){e.exports=require("buffer")},function(e){"use strict";e.exports=escapes;var r=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"];var t=r.concat(["~","|"]);var i=t.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);escapes.default=r;escapes.gfm=t;escapes.commonmark=i;function escapes(e){var n=e||{};if(n.commonmark){return i}return n.gfm?t:r}},,,,,function(e){e.exports=function isBuffer(e){return e!=null&&e.constructor!=null&&typeof e.constructor.isBuffer==="function"&&e.constructor.isBuffer(e)}},,,function(e,r,t){"use strict";var i=t(100);var n=t(998);var a=t(220);var u=t(97);e.exports=i("remark-lint:rule-style",ruleStyle);var s=a.start;var o=a.end;function ruleStyle(e,r,t){var i=String(r);t=typeof t==="string"&&t!=="consistent"?t:null;if(t!==null&&/[^-_* ]/.test(t)){r.fail("Invalid preferred rule-style: provide a valid markdown rule, or `'consistent'`")}n(e,"thematicBreak",visitor);function visitor(e){var n=s(e).offset;var a=o(e).offset;var f;if(!u(e)){f=i.slice(n,a);if(t){if(f!==t){r.message("Rules should use `"+t+"`",e)}}else{t=f}}}}},,,,function(e){"use strict";e.exports=footnoteReference;var r="[";var t="]";var i="^";function footnoteReference(e){return r+i+(e.label||e.identifier)+t}},,,,,,function(e,r,t){"use strict";var i=t(589);var n=t(471);var a=t(329);e.exports=Ignore;Ignore.prototype.check=check;var u=i.dirname;var s=i.relative;var o=i.resolve;function Ignore(e){this.cwd=e.cwd;this.findUp=new a({filePath:e.ignorePath,cwd:e.cwd,detect:e.detectIgnore,names:e.ignoreName?[e.ignoreName]:[],create:create})}function check(e,r){var t=this;t.findUp.load(e,done);function done(i,n){var a;if(i){r(i)}else if(n){a=s(n.filePath,o(t.cwd,e));r(null,a?n.ignores(a):false)}else{r(null,false)}}}function create(e,r){var t=n().add(String(e));t.filePath=u(r);return t}},,,,,function(e){"use strict";e.exports=text;function text(e,r,t){var i=this;var n;var a;var u;var s;var o;var f;var l;var c;var h;var p;if(t){return true}n=i.inlineMethods;s=n.length;a=i.inlineTokenizers;u=-1;h=r.length;while(++u=97&&r<=102||r>=65&&r<=70||r>=48&&r<=57}},,,,function(e){"use strict";var r=Object.prototype.toString;e.exports=function(e){var t;return r.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}},,,,,,function(e,r,t){"use strict";var i=t(973);e.exports=function(e){if(i(e)){return false}if(e>=4352&&(e<=4447||9001===e||9002===e||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141)){return true}return false}},function(e,r,t){var i=t(281).Writable;var n=t(9);var a=t(621);if(typeof Uint8Array==="undefined"){var u=t(372).Uint8Array}else{var u=Uint8Array}function ConcatStream(e,r){if(!(this instanceof ConcatStream))return new ConcatStream(e,r);if(typeof e==="function"){r=e;e={}}if(!e)e={};var t=e.encoding;var n=false;if(!t){n=true}else{t=String(t).toLowerCase();if(t==="u8"||t==="uint8"){t="uint8array"}}i.call(this,{objectMode:true});this.encoding=t;this.shouldInferEncoding=n;if(r)this.on("finish",function(){r(this.getBody())});this.body=[]}e.exports=ConcatStream;n(ConcatStream,i);ConcatStream.prototype._write=function(e,r,t){this.body.push(e);t()};ConcatStream.prototype.inferEncoding=function(e){var r=e===undefined?this.body[0]:e;if(Buffer.isBuffer(r))return"buffer";if(typeof Uint8Array!=="undefined"&&r instanceof Uint8Array)return"uint8array";if(Array.isArray(r))return"array";if(typeof r==="string")return"string";if(Object.prototype.toString.call(r)==="[object Object]")return"object";return"buffer"};ConcatStream.prototype.getBody=function(){if(!this.encoding&&this.body.length===0)return[];if(this.shouldInferEncoding)this.encoding=this.inferEncoding();if(this.encoding==="array")return arrayConcat(this.body);if(this.encoding==="string")return stringConcat(this.body);if(this.encoding==="buffer")return bufferConcat(this.body);if(this.encoding==="uint8array")return u8Concat(this.body);return this.body};var s=Array.isArray||function(e){return Object.prototype.toString.call(e)=="[object Array]"};function isArrayish(e){return/Array\]$/.test(Object.prototype.toString.call(e))}function isBufferish(e){return typeof e==="string"||isArrayish(e)||e&&typeof e.subarray==="function"}function stringConcat(e){var r=[];var t=false;for(var i=0;i1){u=Math.floor(u/f)*f}o[u]=a;s=e.charAt(++a)}return{indent:u,stops:o}}},function(e){"use strict";e.exports=locate;function locate(e,r){return e.indexOf("`",r)}},,,,,function(e){"use strict";e.exports=factory;function factory(e){var r=indices(String(e));return{toPosition:offsetToPositionFactory(r),toOffset:positionToOffsetFactory(r)}}function offsetToPositionFactory(e){return offsetToPosition;function offsetToPosition(r){var t=-1;var i=e.length;if(r<0){return{}}while(++tr){return{line:t+1,column:r-(e[t-1]||0)+1,offset:r}}}return{}}}function positionToOffsetFactory(e){return positionToOffset;function positionToOffset(r){var t=r&&r.line;var i=r&&r.column;if(!isNaN(t)&&!isNaN(i)&&t-1 in e){return(e[t-2]||0)+i-1||0}return-1}}function indices(e){var r=[];var t=e.indexOf("\n");while(t!==-1){r.push(t+1);t=e.indexOf("\n",t+1)}r.push(e.length+1);return r}},,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(526);var u=t(10);e.exports=i("remark-lint:no-inline-padding",noInlinePadding);function noInlinePadding(e,r){n(e,["emphasis","strong","delete","image","link"],visitor);function visitor(e){var t;if(!a(e)){t=u(e);if(t.charAt(0)===" "||t.charAt(t.length-1)===" "){r.message("Don’t pad `"+e.type+"` with inner spaces",e)}}}}},function(e){"use strict";e.exports=toString;function toString(e){return valueOf(e)||e.children&&e.children.map(toString).join("")||""}function valueOf(e){return(e&&e.value?e.value:e.alt?e.alt:e.title)||""}},,function(e){"use strict";if(!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){e.exports={nextTick:nextTick}}else{e.exports=process}function nextTick(e,r,t,i){if(typeof e!=="function"){throw new TypeError('"callback" argument must be a function')}var n=arguments.length;var a,u;switch(n){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick(function afterTickOne(){e.call(null,r)});case 3:return process.nextTick(function afterTickTwo(){e.call(null,r,t)});case 4:return process.nextTick(function afterTickThree(){e.call(null,r,t,i)});default:a=new Array(n-1);u=0;while(u=97&&r<=102||r>=65&&r<=70||r>=48&&r<=57}},,function(e,r,t){"use strict";var i=t(431);function homedir(){var e=process.env;var r=e.HOME;var t=e.LOGNAME||e.USER||e.LNAME||e.USERNAME;if(process.platform==="win32"){return e.USERPROFILE||e.HOMEDRIVE+e.HOMEPATH||r||null}if(process.platform==="darwin"){return r||(t?"/Users/"+t:null)}if(process.platform==="linux"){return r||(process.getuid()===0?"/root":t?"/home/"+t:null)}return r||null}e.exports=typeof i.homedir==="function"?i.homedir:homedir},,,,,,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(270);var u=t(704);var s=t(839);var o=t(526);e.exports=i("remark-lint:no-heading-content-indent",noHeadingContentIndent);var f=s.start;var l=s.end;function noHeadingContentIndent(e,r){var t=String(r);n(e,"heading",visitor);function visitor(e){var i;var n;var s;var c;var h;var p;var v;var d;var D;var m;if(o(e)){return}i=e.depth;n=e.children;s=a(e,"atx");if(s==="atx"||s==="atx-closed"){h=f(e);d=h.offset;D=t.charAt(d);while(D&&D!=="#"){D=t.charAt(++d)}if(!D){return}d=i+(d-h.offset);c=f(n[0]).column;if(!c){return}v=c-h.column-1-d;if(v){m=(v>0?"Remove":"Add")+" "+Math.abs(v)+" "+u("space",v)+" before this heading’s content";r.message(m,f(n[0]))}}if(s==="atx-closed"){p=l(n[n.length-1]);v=l(e).column-p.column-1-i;if(v){m="Remove "+v+" "+u("space",v)+" after this heading’s content";r.message(m,p)}}}}},function(e,r,t){"use strict";var i=t(336);var n=t(440);var a=t(901);var u=t(360);var s=t(315);e.exports=setOptions;var o={entities:{true:true,false:true,numbers:true,escape:true},bullet:{"*":true,"-":true,"+":true},rule:{"-":true,_:true,"*":true},listItemIndent:{tab:true,mixed:true,1:true},emphasis:{_:true,"*":true},strong:{_:true,"*":true},fence:{"`":true,"~":true}};var f={boolean:validateBoolean,string:validateString,number:validateNumber,function:validateFunction};function setOptions(e){var r=this;var t=r.options;var n;var s;if(e==null){e={}}else if(typeof e==="object"){e=i(e)}else{throw new Error("Invalid value `"+e+"` for setting `options`")}for(s in a){f[typeof a[s]](e,s,t[s],o[s])}n=e.ruleRepetition;if(n&&n<3){raise(n,"options.ruleRepetition")}r.encode=encodeFactory(String(e.entities));r.escape=u(e);r.options=e;return r}function validateBoolean(e,r,t){var i=e[r];if(i==null){i=t}if(typeof i!=="boolean"){raise(i,"options."+r)}e[r]=i}function validateNumber(e,r,t){var i=e[r];if(i==null){i=t}if(isNaN(i)){raise(i,"options."+r)}e[r]=i}function validateString(e,r,t,i){var n=e[r];if(n==null){n=t}n=String(n);if(!(n in i)){raise(n,"options."+r)}e[r]=n}function validateFunction(e,r,t){var i=e[r];if(i==null){i=t}if(typeof i!=="function"){raise(i,"options."+r)}e[r]=i}function encodeFactory(e){var r={};if(e==="false"){return s}if(e==="true"){r.useNamedReferences=true}if(e==="escape"){r.escapeOnly=true;r.useNamedReferences=true}return wrapped;function wrapped(e){return n(e,r)}}function raise(e,r){throw new Error("Invalid value `"+e+"` for setting `"+r+"`")}},,function(e,r){r=e.exports=trim;function trim(e){return e.replace(/^\s*|\s*$/g,"")}r.left=function(e){return e.replace(/^\s*/,"")};r.right=function(e){return e.replace(/\s*$/,"")}},function(e,r,t){"use strict";var i=t(814);e.exports=thematic;var n=" ";function thematic(){var e=this.options;var r=i(e.rule,e.ruleRepetition);return e.ruleSpaces?r.split("").join(n):r}},,,,,function(e,r,t){"use strict";var i=t(315);e.exports=enter;function enter(e,r){var t=e.encode;var n=e.escape;var a=e.enterLink();if(r.referenceType!=="shortcut"&&r.referenceType!=="collapsed"){return a}e.escape=i;e.encode=i;return exit;function exit(){e.encode=t;e.escape=n;a()}}},function(e,r,t){"use strict";var i=t(727);e.exports=new i({include:[t(234)],implicit:[t(633),t(843),t(981),t(702)]})},function(e,r,t){"use strict";var i=t(36);var n=t(814);var a=t(439);var u=t(1);var s=t(235);var o=t(724);e.exports=list;var f="*";var l="_";var c="+";var h="-";var p=".";var v=" ";var d="\n";var D="\t";var m=")";var g="x";var E=4;var A=/\n\n(?!\s*$)/;var C=/^\[([ \t]|x|X)][ \t]/;var y=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/;var w=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/;var x=/^( {1,4}|\t)?/gm;function list(e,r,t){var n=this;var u=n.options.commonmark;var s=n.options.pedantic;var g=n.blockTokenizers;var A=n.interruptList;var C=0;var y=r.length;var w=null;var x=0;var b;var F;var S;var B;var k;var O;var P;var T;var I;var M;var L;var R;var j;var N;var U;var J;var z;var X;var q=false;var G;var _;var W;var V;while(C=E){return}S=r.charAt(C);if(S===f||S===c||S===h){B=S;F=false}else{F=true;b="";while(C=E){V=true}if(J&&x>=J.indent){V=true}S=r.charAt(C);T=null;if(!V){if(S===f||S===c||S===h){T=S;C++;x++}else{b="";while(C=J.indent||x>E}P=false;C=O}M=r.slice(O,k);I=O===C?M:r.slice(C,k);if(T===f||T===l||T===h){if(g.thematicBreak.call(n,e,M,true)){break}}L=R;R=!P&&!i(I).length;if(V&&J){J.value=J.value.concat(U,M);N=N.concat(U,M);U=[]}else if(P){if(U.length!==0){q=true;J.value.push("");J.trail=U.concat()}J={value:[M],indent:x,trail:[]};j.push(J);N=N.concat(U,M);U=[]}else if(R){if(L&&!u){break}U.push(M)}else{if(L){break}if(o(A,g,n,[e,M,true])){break}J.value=J.value.concat(U,M);N=N.concat(U,M);U=[]}C=k+1}G=e(N.join(d)).reset({type:"list",ordered:F,start:w,spread:q,children:[]});z=n.enterList();X=n.enterBlock();C=-1;y=j.length;while(++C1){r.message(s,e)}}}},function(e){e.exports=function isBuffer(e){return e!=null&&e.constructor!=null&&typeof e.constructor.isBuffer==="function"&&e.constructor.isBuffer(e)}},,,,,,,,function(e){e.exports=require("util")},function(e,r,t){"use strict";var i=t(727);e.exports=i.DEFAULT=new i({include:[t(388)],explicit:[t(875),t(555),t(329)]})},function(e){e.exports=require("fs")},function(e){"use strict";e.exports=function(e){if(typeof e!=="string"){throw new TypeError("Expected a string")}return!/[^0-9a-z\xDF-\xFF]/.test(e.toLowerCase())}},,,,,function(e,r,t){"use strict";var i=t(495);var n=t(7);e.exports=i("remark-lint:no-tabs",noTabs);var a="Use spaces instead of hard-tabs";function noTabs(e,r){var t=String(r);var i=n(r).toPosition;var u=t.indexOf("\t");while(u!==-1){r.message(a,i(u));u=t.indexOf("\t",u+1)}}},function(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");r.code="MODULE_NOT_FOUND";throw r}webpackEmptyContext.keys=function(){return[]};webpackEmptyContext.resolve=webpackEmptyContext;e.exports=webpackEmptyContext;webpackEmptyContext.id=73},function(e,r,t){"use strict";var i=t(864);var n=t(97);var a=t(503);var u=t(123);var s=t(340);var o=t(951);e.exports=unified().freeze();var f=[].slice;var l={}.hasOwnProperty;var c=u().use(pipelineParse).use(pipelineRun).use(pipelineStringify);function pipelineParse(e,r){r.tree=e.parse(r.file)}function pipelineRun(e,r,t){e.run(r.tree,r.file,done);function done(e,i,n){if(e){t(e)}else{r.tree=i;r.file=n;t()}}}function pipelineStringify(e,r){r.file.contents=e.stringify(r.tree,r.file)}function unified(){var e=[];var r=u();var t={};var h=false;var p=-1;processor.data=data;processor.freeze=freeze;processor.attachers=e;processor.use=use;processor.parse=parse;processor.stringify=stringify;processor.run=run;processor.runSync=runSync;processor.process=process;processor.processSync=processSync;return processor;function processor(){var r=unified();var n=e.length;var a=-1;while(++a{if(typeof e!=="string"){throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof e}\``)}if(typeof r!=="string"){throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof r}\``)}try{e=a.realpathSync(e)}catch(r){if(r.code==="ENOENT"){e=i.resolve(e)}else if(t){return null}else{throw r}}const u=i.join(e,"noop.js");const s=()=>n._resolveFilename(r,{id:u,filename:u,paths:n._nodeModulePaths(e)});if(t){try{return s()}catch(e){return null}}return s()};e.exports=((e,r)=>u(e,r));e.exports.silent=((e,r)=>u(e,r,true))},,function(e,r,t){"use strict";var i=t(347)("unified-engine:file-pipeline:configure");var n=t(928);var a=t(623);var u=t(692);var s=t(876);e.exports=configure;function configure(e,r,t,o){var f=e.configuration;var l=e.processor;if(n(r).fatal){return o()}f.load(r.path,handleConfiguration);function handleConfiguration(e,r){var n;var f;var c;var h;var p;var v;if(e){return o(e)}i("Using settings `%j`",r.settings);l.data("settings",r.settings);n=r.plugins;h=n.length;p=-1;i("Using `%d` plugins",h);while(++p>10)+55296,(e-65536&1023)+56320)}var C=new Array(256);var y=new Array(256);for(var w=0;w<256;w++){C[w]=simpleEscapeSequence(w)?1:0;y[w]=simpleEscapeSequence(w)}function State(e,r){this.input=e;this.filename=r["filename"]||null;this.schema=r["schema"]||s;this.onWarning=r["onWarning"]||null;this.legacy=r["legacy"]||false;this.json=r["json"]||false;this.listener=r["listener"]||null;this.implicitTypes=this.schema.compiledImplicit;this.typeMap=this.schema.compiledTypeMap;this.length=e.length;this.position=0;this.line=0;this.lineStart=0;this.lineIndent=0;this.documents=[]}function generateError(e,r){return new n(r,new a(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function throwError(e,r){throw generateError(e,r)}function throwWarning(e,r){if(e.onWarning){e.onWarning.call(null,generateError(e,r))}}var x={YAML:function handleYamlDirective(e,r,t){var i,n,a;if(e.version!==null){throwError(e,"duplication of %YAML directive")}if(t.length!==1){throwError(e,"YAML directive accepts exactly one argument")}i=/^([0-9]+)\.([0-9]+)$/.exec(t[0]);if(i===null){throwError(e,"ill-formed argument of the YAML directive")}n=parseInt(i[1],10);a=parseInt(i[2],10);if(n!==1){throwError(e,"unacceptable YAML version of the document")}e.version=t[0];e.checkLineBreaks=a<2;if(a!==1&&a!==2){throwWarning(e,"unsupported YAML version of the document")}},TAG:function handleTagDirective(e,r,t){var i,n;if(t.length!==2){throwError(e,"TAG directive accepts exactly two arguments")}i=t[0];n=t[1];if(!E.test(i)){throwError(e,"ill-formed tag handle (first argument) of the TAG directive")}if(o.call(e.tagMap,i)){throwError(e,'there is a previously declared suffix for "'+i+'" tag handle')}if(!A.test(n)){throwError(e,"ill-formed tag prefix (second argument) of the TAG directive")}e.tagMap[i]=n}};function captureSegment(e,r,t,i){var n,a,u,s;if(r1){e.result+=i.repeat("\n",r-1)}}function readPlainScalar(e,r,t){var i,n,a,u,s,o,f,l,c=e.kind,h=e.result,p;p=e.input.charCodeAt(e.position);if(is_WS_OR_EOL(p)||is_FLOW_INDICATOR(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96){return false}if(p===63||p===45){n=e.input.charCodeAt(e.position+1);if(is_WS_OR_EOL(n)||t&&is_FLOW_INDICATOR(n)){return false}}e.kind="scalar";e.result="";a=u=e.position;s=false;while(p!==0){if(p===58){n=e.input.charCodeAt(e.position+1);if(is_WS_OR_EOL(n)||t&&is_FLOW_INDICATOR(n)){break}}else if(p===35){i=e.input.charCodeAt(e.position-1);if(is_WS_OR_EOL(i)){break}}else if(e.position===e.lineStart&&testDocumentSeparator(e)||t&&is_FLOW_INDICATOR(p)){break}else if(is_EOL(p)){o=e.line;f=e.lineStart;l=e.lineIndent;skipSeparationSpace(e,false,-1);if(e.lineIndent>=r){s=true;p=e.input.charCodeAt(e.position);continue}else{e.position=u;e.line=o;e.lineStart=f;e.lineIndent=l;break}}if(s){captureSegment(e,a,u,false);writeFoldedLines(e,e.line-o);a=u=e.position;s=false}if(!is_WHITE_SPACE(p)){u=e.position+1}p=e.input.charCodeAt(++e.position)}captureSegment(e,a,u,false);if(e.result){return true}e.kind=c;e.result=h;return false}function readSingleQuotedScalar(e,r){var t,i,n;t=e.input.charCodeAt(e.position);if(t!==39){return false}e.kind="scalar";e.result="";e.position++;i=n=e.position;while((t=e.input.charCodeAt(e.position))!==0){if(t===39){captureSegment(e,i,e.position,true);t=e.input.charCodeAt(++e.position);if(t===39){i=e.position;e.position++;n=e.position}else{return true}}else if(is_EOL(t)){captureSegment(e,i,n,true);writeFoldedLines(e,skipSeparationSpace(e,false,r));i=n=e.position}else if(e.position===e.lineStart&&testDocumentSeparator(e)){throwError(e,"unexpected end of the document within a single quoted scalar")}else{e.position++;n=e.position}}throwError(e,"unexpected end of the stream within a single quoted scalar")}function readDoubleQuotedScalar(e,r){var t,i,n,a,u,s;s=e.input.charCodeAt(e.position);if(s!==34){return false}e.kind="scalar";e.result="";e.position++;t=i=e.position;while((s=e.input.charCodeAt(e.position))!==0){if(s===34){captureSegment(e,t,e.position,true);e.position++;return true}else if(s===92){captureSegment(e,t,e.position,true);s=e.input.charCodeAt(++e.position);if(is_EOL(s)){skipSeparationSpace(e,false,r)}else if(s<256&&C[s]){e.result+=y[s];e.position++}else if((u=escapedHexLen(s))>0){n=u;a=0;for(;n>0;n--){s=e.input.charCodeAt(++e.position);if((u=fromHexCode(s))>=0){a=(a<<4)+u}else{throwError(e,"expected hexadecimal character")}}e.result+=charFromCodepoint(a);e.position++}else{throwError(e,"unknown escape sequence")}t=i=e.position}else if(is_EOL(s)){captureSegment(e,t,i,true);writeFoldedLines(e,skipSeparationSpace(e,false,r));t=i=e.position}else if(e.position===e.lineStart&&testDocumentSeparator(e)){throwError(e,"unexpected end of the document within a double quoted scalar")}else{e.position++;i=e.position}}throwError(e,"unexpected end of the stream within a double quoted scalar")}function readFlowCollection(e,r){var t=true,i,n=e.tag,a,u=e.anchor,s,o,l,c,h,p={},v,d,D,m;m=e.input.charCodeAt(e.position);if(m===91){o=93;h=false;a=[]}else if(m===123){o=125;h=true;a={}}else{return false}if(e.anchor!==null){e.anchorMap[e.anchor]=a}m=e.input.charCodeAt(++e.position);while(m!==0){skipSeparationSpace(e,true,r);m=e.input.charCodeAt(e.position);if(m===o){e.position++;e.tag=n;e.anchor=u;e.kind=h?"mapping":"sequence";e.result=a;return true}else if(!t){throwError(e,"missed comma between flow collection entries")}d=v=D=null;l=c=false;if(m===63){s=e.input.charCodeAt(e.position+1);if(is_WS_OR_EOL(s)){l=c=true;e.position++;skipSeparationSpace(e,true,r)}}i=e.line;composeNode(e,r,f,false,true);d=e.tag;v=e.result;skipSeparationSpace(e,true,r);m=e.input.charCodeAt(e.position);if((c||e.line===i)&&m===58){l=true;m=e.input.charCodeAt(++e.position);skipSeparationSpace(e,true,r);composeNode(e,r,f,false,true);D=e.result}if(h){storeMappingPair(e,a,p,d,v,D)}else if(l){a.push(storeMappingPair(e,null,p,d,v,D))}else{a.push(v)}skipSeparationSpace(e,true,r);m=e.input.charCodeAt(e.position);if(m===44){t=true;m=e.input.charCodeAt(++e.position)}else{t=false}}throwError(e,"unexpected end of the stream within a flow collection")}function readBlockScalar(e,r){var t,n,a=p,u=false,s=false,o=r,f=0,l=false,c,h;h=e.input.charCodeAt(e.position);if(h===124){n=false}else if(h===62){n=true}else{return false}e.kind="scalar";e.result="";while(h!==0){h=e.input.charCodeAt(++e.position);if(h===43||h===45){if(p===a){a=h===43?d:v}else{throwError(e,"repeat of a chomping mode identifier")}}else if((c=fromDecimalCode(h))>=0){if(c===0){throwError(e,"bad explicit indentation width of a block scalar; it cannot be less than one")}else if(!s){o=r+c-1;s=true}else{throwError(e,"repeat of an indentation width identifier")}}else{break}}if(is_WHITE_SPACE(h)){do{h=e.input.charCodeAt(++e.position)}while(is_WHITE_SPACE(h));if(h===35){do{h=e.input.charCodeAt(++e.position)}while(!is_EOL(h)&&h!==0)}}while(h!==0){readLineBreak(e);e.lineIndent=0;h=e.input.charCodeAt(e.position);while((!s||e.lineIndento){o=e.lineIndent}if(is_EOL(h)){f++;continue}if(e.lineIndentr)&&o!==0){throwError(e,"bad indentation of a sequence entry")}else if(e.lineIndentr){if(composeNode(e,r,h,true,n)){if(D){v=e.result}else{d=e.result}}if(!D){storeMappingPair(e,f,c,p,v,d,a,u);p=v=d=null}skipSeparationSpace(e,true,-1);g=e.input.charCodeAt(e.position)}if(e.lineIndent>r&&g!==0){throwError(e,"bad indentation of a mapping entry")}else if(e.lineIndentr){p=1}else if(e.lineIndent===r){p=0}else if(e.lineIndentr){p=1}else if(e.lineIndent===r){p=0}else if(e.lineIndent tag; it should be "'+g.kind+'", not "'+e.kind+'"')}if(!g.resolve(e.result)){throwError(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}else{e.result=g.construct(e.result);if(e.anchor!==null){e.anchorMap[e.anchor]=e.result}}}else{throwError(e,"unknown tag !<"+e.tag+">")}}if(e.listener!==null){e.listener("close",e)}return e.tag!==null||e.anchor!==null||d}function readDocument(e){var r=e.position,t,i,n,a=false,u;e.version=null;e.checkLineBreaks=e.legacy;e.tagMap={};e.anchorMap={};while((u=e.input.charCodeAt(e.position))!==0){skipSeparationSpace(e,true,-1);u=e.input.charCodeAt(e.position);if(e.lineIndent>0||u!==37){break}a=true;u=e.input.charCodeAt(++e.position);t=e.position;while(u!==0&&!is_WS_OR_EOL(u)){u=e.input.charCodeAt(++e.position)}i=e.input.slice(t,e.position);n=[];if(i.length<1){throwError(e,"directive name must not be less than one character in length")}while(u!==0){while(is_WHITE_SPACE(u)){u=e.input.charCodeAt(++e.position)}if(u===35){do{u=e.input.charCodeAt(++e.position)}while(u!==0&&!is_EOL(u));break}if(is_EOL(u))break;t=e.position;while(u!==0&&!is_WS_OR_EOL(u)){u=e.input.charCodeAt(++e.position)}n.push(e.input.slice(t,e.position))}if(u!==0)readLineBreak(e);if(o.call(x,i)){x[i](e,i,n)}else{throwWarning(e,'unknown document directive "'+i+'"')}}skipSeparationSpace(e,true,-1);if(e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45){e.position+=3;skipSeparationSpace(e,true,-1)}else if(a){throwError(e,"directives end mark is expected")}composeNode(e,e.lineIndent-1,h,false,true);skipSeparationSpace(e,true,-1);if(e.checkLineBreaks&&m.test(e.input.slice(r,e.position))){throwWarning(e,"non-ASCII line breaks are interpreted as content")}e.documents.push(e.result);if(e.position===e.lineStart&&testDocumentSeparator(e)){if(e.input.charCodeAt(e.position)===46){e.position+=3;skipSeparationSpace(e,true,-1)}return}if(e.position output."+t,""," # Rewrite all applicable files"," $ "+i+" . -o"].join("\n");return{helpMessage:u,cwd:r.cwd,processor:r.processor,help:n.help,version:n.version,files:n._,watch:n.watch,extensions:l.length?l:r.extensions,output:n.output,out:n.stdout,tree:n.tree,treeIn:n.treeIn,treeOut:n.treeOut,inspect:n.inspect,rcName:r.rcName,packageField:r.packageField,rcPath:n.rcPath,detectConfig:n.config,settings:settings(n.setting),ignoreName:r.ignoreName,ignorePath:n.ignorePath,detectIgnore:n.ignore,pluginPrefix:r.pluginPrefix,plugins:plugins(n.use),reporter:c[0],reporterOptions:c[1],color:n.color,silent:n.silent,quiet:n.quiet,frail:n.frail}}function addEach(e){var r=e.default;f.default[e.long]=r===undefined?null:r;if(e.type in f){f[e.type].push(e.long)}if(e.short){f.alias[e.short]=e.long}}function extensions(e){return flatten(normalize(e).map(splitList))}function plugins(e){var r={};normalize(e).map(splitOptions).forEach(function(e){r[e[0]]=e[1]?parseConfig(e[1],{}):null});return r}function reporter(e){var r=normalize(e).map(splitOptions).map(function(e){return[e[0],e[1]?parseConfig(e[1],{}):null]});return r[r.length-1]||[]}function settings(e){var r={};normalize(e).forEach(function(e){parseConfig(e,r)});return r}function parseConfig(e,r){var t;var i;try{e=toCamelCase(parseJSON(e))}catch(r){i=r.message.replace(/at(?= position)/,"around");throw s("Cannot parse `%s` as JSON: %s",e,i)}for(t in e){r[t]=e[t]}return r}function handleUnknownArgument(e){if(e.charAt(0)!=="-"){return}if(e.charAt(1)==="-"){throw s("Unknown option `%s`, expected:\n%s",e,inspectAll(o))}e.slice(1).split("").forEach(each);function each(e){var r=o.length;var t=-1;var i;while(++t=2,has16m:e>=3}}function supportsColor(e){if(u===false){return 0}if(n("color=16m")||n("color=full")||n("color=truecolor")){return 3}if(n("color=256")){return 2}if(e&&!e.isTTY&&u!==true){return 0}const r=u?1:0;if(process.platform==="win32"){const e=i.release().split(".");if(Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586){return Number(e[2])>=14931?3:2}return 1}if("CI"in a){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in a)||a.CI_NAME==="codeship"){return 1}return r}if("TEAMCITY_VERSION"in a){return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(a.TEAMCITY_VERSION)?1:0}if(a.COLORTERM==="truecolor"){return 3}if("TERM_PROGRAM"in a){const e=parseInt((a.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(a.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(a.TERM)){return 2}if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(a.TERM)){return 1}if("COLORTERM"in a){return 1}if(a.TERM==="dumb"){return r}return r}function getSupportLevel(e){const r=supportsColor(e);return translateLevel(r)}e.exports={supportsColor:getSupportLevel,stdout:getSupportLevel(process.stdout),stderr:getSupportLevel(process.stderr)}},,,function(e,r,t){"use strict";var i=t(347)("unified-engine:file-pipeline:queue");var n=t(928);e.exports=queue;function queue(e,r,t,a){var u=r.history[0];var s=t.complete;var o=true;if(!s){s={};t.complete=s}i("Queueing `%s`",u);s[u]=a;t.valueOf().forEach(each);if(!o){i("Not flushing: some files cannot be flushed");return}t.complete={};t.pipeline.run(t,done);function each(e){var r=e.history[0];if(n(e).fatal){return}if(typeof s[r]==="function"){i("`%s` can be flushed",r)}else{i("Interupting flush: `%s` is not finished",r);o=false}}function done(e){i("Flushing: all files can be flushed");for(u in s){s[u](e)}}}},function(e,r,t){"use strict";var i=t(171);var n=t(426);e.exports=definition;definition.notInList=true;definition.notInBlock=true;var a='"';var u="'";var s="\\";var o="\n";var f="\t";var l=" ";var c="[";var h="]";var p="(";var v=")";var d=":";var D="<";var m=">";function definition(e,r,t){var i=this;var m=i.options.commonmark;var g=0;var E=r.length;var A="";var C;var y;var w;var x;var b;var F;var S;var B;while(g"];var t=r.concat(["~","|"]);var i=t.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);escapes.default=r;escapes.gfm=t;escapes.commonmark=i;function escapes(e){var n=e||{};if(n.commonmark){return i}return n.gfm?t:r}},,function(e){"use strict";e.exports=locate;function locate(e,r){return e.indexOf("~~",r)}},function(e,r,t){"use strict";var i=t(495);var n=t(7);var a=t(682);var u=t(839);var s=t(526);e.exports=i("remark-lint:checkbox-character-style",checkboxCharacterStyle);var o=u.start;var f=u.end;var l={x:true,X:true};var c={" ":true,"\t":true};var h={true:"checked",false:"unchecked"};function checkboxCharacterStyle(e,r,t){var i=String(r);var u=n(r);t=typeof t==="object"?t:{};if(t.unchecked&&c[t.unchecked]!==true){r.fail("Invalid unchecked checkbox marker `"+t.unchecked+"`: use either `'\\t'`, or `' '`")}if(t.checked&&l[t.checked]!==true){r.fail("Invalid checked checkbox marker `"+t.checked+"`: use either `'x'`, or `'X'`")}a(e,"listItem",visitor);function visitor(e){var n;var a;var l;var c;var p;var v;var d;if(typeof e.checked!=="boolean"||s(e)){return}n=h[e.checked];a=o(e).offset;l=(e.children.length?o(e.children[0]):f(e)).offset;c=i.slice(a,l).trimRight().slice(0,-1);v=c.charAt(c.length-1);p=t[n];if(p){if(v!==p){d=n.charAt(0).toUpperCase()+n.slice(1)+" checkboxes should use `"+p+"` as a marker";r.message(d,{start:u.toPosition(a+c.length-1),end:u.toPosition(a+c.length)})}}else{t[n]=v}}}},,,,function(e){"use strict";e.exports=wordCharacter;var r=String.fromCharCode;var t=/\w/;function wordCharacter(e){return t.test(typeof e==="number"?r(e):e.charAt(0))}},,,,,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(526);e.exports=i("remark-lint:no-shortcut-reference-image",noShortcutReferenceImage);var u="Use the trailing [] on reference images";function noShortcutReferenceImage(e,r){n(e,"imageReference",visitor);function visitor(e){if(!a(e)&&e.referenceType==="shortcut"){r.message(u,e)}}}},,function(e,r,t){"use strict";var i=t(335);e.exports=trough;trough.wrap=i;var n=[].slice;function trough(){var e=[];var r={};r.run=run;r.use=use;return r;function run(){var r=-1;var t=n.call(arguments,0,-1);var a=arguments[arguments.length-1];if(typeof a!=="function"){throw new Error("Expected function as last argument, not "+a)}next.apply(null,[null].concat(t));function next(u){var s=e[++r];var o=n.call(arguments,0);var f=o.slice(1);var l=t.length;var c=-1;if(u){a(u);return}while(++c"){break}if(v!==" "&&v!=="\t"){r.message(o,d);break}}}}}},,function(e,r,t){e.exports=realpath;realpath.realpath=realpath;realpath.sync=realpathSync;realpath.realpathSync=realpathSync;realpath.monkeypatch=monkeypatch;realpath.unmonkeypatch=unmonkeypatch;var i=t(66);var n=i.realpath;var a=i.realpathSync;var u=process.version;var s=/^v[0-5]\./.test(u);var o=t(544);function newError(e){return e&&e.syscall==="realpath"&&(e.code==="ELOOP"||e.code==="ENOMEM"||e.code==="ENAMETOOLONG")}function realpath(e,r,t){if(s){return n(e,r,t)}if(typeof r==="function"){t=r;r=null}n(e,r,function(i,n){if(newError(i)){o.realpath(e,r,t)}else{t(i,n)}})}function realpathSync(e,r){if(s){return a(e,r)}try{return a(e,r)}catch(t){if(newError(t)){return o.realpathSync(e,r)}else{throw t}}}function monkeypatch(){i.realpath=realpath;i.realpathSync=realpathSync}function unmonkeypatch(){i.realpath=n;i.realpathSync=a}},,,,,,,,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(839);var u=t(526);e.exports=i("remark-lint:fenced-code-flag",fencedCodeFlag);var s=a.start;var o=a.end;var f=/^ {0,3}([~`])\1{2,}/;var l="Invalid code-language flag";var c="Missing code-language flag";function fencedCodeFlag(e,r,t){var i=String(r);var a=false;var h=[];if(typeof t==="object"&&!("length"in t)){a=Boolean(t.allowEmpty);t=t.flags}if(typeof t==="object"&&"length"in t){h=String(t).split(",")}n(e,"code",visitor);function visitor(e){var t;if(!u(e)){if(e.lang){if(h.length!==0&&h.indexOf(e.lang)===-1){r.message(l,e)}}else{t=i.slice(s(e).offset,o(e).offset);if(!a&&f.test(t)){r.message(c,e)}}}}}},function(e){"use strict";e.exports=alphabetical;function alphabetical(e){var r=typeof e==="string"?e.charCodeAt(0):e;return r>=97&&r<=122||r>=65&&r<=90}},function(e){"use strict";e.exports=locate;var r=["https://","http://","mailto:"];function locate(e,t){var i=r.length;var n=-1;var a=-1;var u;if(!this.options.gfm){return-1}while(++na){i[n-a]=e[n]}return i}},,,,,,,,,function(e,r,t){"use strict";var i=t(211);var n=Object.prototype.hasOwnProperty;var a=Object.prototype.toString;function resolveYamlOmap(e){if(e===null)return true;var r=[],t,i,u,s,o,f=e;for(t=0,i=f.length;t-1){a.splice(u,1)}var s=t;a.forEach(function _buildSubObj(e,t){if(!e||typeof s!=="object")return;if(t===a.length-1)s[e]=r[n];if(s[e]===undefined)s[e]={};s=s[e]})}}return t};var c=r.find=function(){var e=a.join.apply(null,[].slice.call(arguments));function find(e,r){var t=a.join(e,r);try{i.statSync(t);return t}catch(t){if(a.dirname(e)!==e)return find(a.dirname(e),r)}}return find(process.cwd(),e)}},,,,function(e,r,t){"use strict";const i=t(202);const n=t(751);const a=i("JSONError",{fileName:i.append("in %s")});e.exports=((e,r,t)=>{if(typeof r==="string"){t=r;r=null}try{try{return JSON.parse(e,r)}catch(t){n(e,r);throw t}}catch(e){e.message=e.message.replace(/\n/g,"");const r=new a(e);if(t){r.fileName=t}throw r}})},function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(839);var u=t(526);e.exports=i("remark-lint:maximum-line-length",maximumLineLength);var s=a.start;var o=a.end;function maximumLineLength(e,r,t){var i=typeof t==="number"&&!isNaN(t)?t:80;var a=String(r);var f=a.split(/\r?\n/);var l=f.length;var c=-1;var h;n(e,["heading","table","code","definition","html","jsx"],ignore);n(e,["link","image","inlineCode"],inline);while(++ci){r.message("Line must be at most "+i+" characters",{line:c+1,column:h+1})}}function inline(e,r,t){var n=t.children[r+1];var a;var f;if(u(e)){return}a=s(e);f=o(e);if(a.column>i||f.column0?"Add":"Remove")+" "+Math.abs(i)+" "+n("space",i)+" between blockquote and content";r.message(a,u.start(e.children[0]))}}else{t=check(e)}}}function check(e){var r=e.children[0];var t=u.start(r).column-u.start(e).column;var i=o(r).match(/^ +/);if(i){t+=i[0].length}return t}},,,,,function(e){"use strict";e.exports=whitespace;var r=String.fromCharCode;var t=/\s/;function whitespace(e){return t.test(typeof e==="number"?r(e):e.charAt(0))}},,,function(e,r,t){"use strict";var i=t(814);var n="\n";var a=" ";var u=":";var s="[";var o="]";var f="^";var l=4;var c=n+n;var h=i(a,l);e.exports=footnoteDefinition;function footnoteDefinition(e){var r=this.all(e).join(c+h);return s+f+(e.label||e.identifier)+o+u+a+r}},function(e){"use strict";e.exports=collapse;function collapse(e){return String(e).replace(/\s+/g," ")}},function(e){"use strict";e.exports=label;var r="[";var t="]";var i="shortcut";var n="collapsed";function label(e){var a=e.referenceType;if(a===i){return""}return r+(a===n?"":e.label||e.identifier)+t}},,,,,function(e,r,t){"use strict";var i=t(814);var n=t(705);e.exports=listItem;var a="\n";var u=" ";var s="[";var o="]";var f="x";var l=Math.ceil;var c=a+a;var h=4;function listItem(e,r,t,p){var v=this;var d=v.options.listItemIndent;var D=p||v.options.bullet;var m=e.spread==null?true:e.spread;var g=e.checked;var E=e.children;var A=E.length;var C=[];var y=-1;var w;var x;var b;while(++y",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"}},,,,,function(e,r,t){"use strict";var i=t(64);var n=t(753);var a=function errorEx(e,r){if(!e||e.constructor!==String){r=e||{};e=Error.name}var t=function ErrorEXError(i){if(!this){return new ErrorEXError(i)}i=i instanceof Error?i.message:i||this.message;Error.call(this,i);Error.captureStackTrace(this,t);this.name=e;Object.defineProperty(this,"message",{configurable:true,enumerable:false,get:function(){var e=i.split(/\r?\n/g);for(var t in r){if(!r.hasOwnProperty(t)){continue}var a=r[t];if("message"in a){e=a.message(this[t],e)||e;if(!n(e)){e=[e]}}}return e.join("\n")},set:function(e){i=e}});var a=null;var u=Object.getOwnPropertyDescriptor(this,"stack");var s=u.get;var o=u.value;delete u.value;delete u.writable;u.set=function(e){a=e};u.get=function(){var e=(a||(s?s.call(this):o)).split(/\r?\n+/g);if(!a){e[0]=this.name+": "+this.message}var t=1;for(var i in r){if(!r.hasOwnProperty(i)){continue}var n=r[i];if("line"in n){var u=n.line(this[i]);if(u){e.splice(t++,0," "+u)}}if("stack"in n){n.stack(this[i],e)}}return e.join("\n")};Object.defineProperty(this,"stack",u)};if(Object.setPrototypeOf){Object.setPrototypeOf(t.prototype,Error.prototype);Object.setPrototypeOf(t,Error)}else{i.inherits(t,Error)}return t};a.append=function(e,r){return{message:function(t,i){t=t||r;if(t){i[0]+=" "+e.replace("%s",t.toString())}return i}}};a.line=function(e,r){return{line:function(t){t=t||r;if(t){return e.replace("%s",t.toString())}return null}}};e.exports=a},,,,,function(e,r,t){"use strict";var i=t(211);e.exports=new i("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}})},,,function(e,r,t){"use strict";var i=t(589);function replaceExt(e,r){if(typeof e!=="string"){return e}if(e.length===0){return e}var t=i.basename(e,i.extname(e))+r;return i.join(i.dirname(e),t)}e.exports=replaceExt},function(e,r,t){"use strict";var i=t(833);var n=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"];var a=["scalar","sequence","mapping"];function compileStyleAliases(e){var r={};if(e!==null){Object.keys(e).forEach(function(t){e[t].forEach(function(e){r[String(e)]=t})})}return r}function Type(e,r){r=r||{};Object.keys(r).forEach(function(r){if(n.indexOf(r)===-1){throw new i('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}});this.tag=e;this.kind=r["kind"]||null;this.resolve=r["resolve"]||function(){return true};this.construct=r["construct"]||function(e){return e};this.instanceOf=r["instanceOf"]||null;this.predicate=r["predicate"]||null;this.represent=r["represent"]||null;this.defaultStyle=r["defaultStyle"]||null;this.styleAliases=compileStyleAliases(r["styleAliases"]||null);if(a.indexOf(this.kind)===-1){throw new i('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}}e.exports=Type},function(e,r,t){"use strict";var i=t(876);var n=true;try{n="inspect"in t(64)}catch(e){n=false}e.exports=n?inspect:noColor;inspect.color=inspect;noColor.color=inspect;inspect.noColor=noColor;noColor.noColor=noColor;var a=ansiColor(2,22);var u=ansiColor(33,39);var s=ansiColor(32,39);var o=new RegExp("(?:"+"(?:\\u001b\\[)|"+"\\u009b"+")"+"(?:"+"(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m]"+")|"+"\\u001b[A-M]","g");var f=["type","value","children","position"];function noColor(e,r){return stripColor(inspect(e,r))}function inspect(e,r){var t;var i;var n;var a;if(e&&Boolean(e.length)&&typeof e!=="string"){a=e.length;n=-1;t=[];while(++n|$))/i;var f=/<\/(script|pre|style)>/i;var l=/^/;var h=/^<\?/;var p=/\?>/;var v=/^/;var D=/^/;var g=/^$/;var E=new RegExp(i.source+"\\s*$");function blockHtml(e,r,t){var i=this;var A=i.options.blocks.join("|");var C=new RegExp("^|$))","i");var y=r.length;var w=0;var x;var b;var F;var S;var B;var k;var O;var P=[[o,f,true],[l,c,true],[h,p,true],[v,d,true],[D,m,true],[C,g,true],[E,g,false]];while(w0&&v.indenta){return}if(!m||!f&&u.charAt(c+1)===n){return}l=u.length+1;D="";while(++c0){var t=peek();if(!a.isHexDigit(t)){throw invalidChar(read())}e+=read()}return String.fromCodePoint(parseInt(e,16))}var C={start:function start(){if(h.type==="eof"){throw invalidEOF()}push()},beforePropertyName:function beforePropertyName(){switch(h.type){case"identifier":case"string":p=h.value;s="afterPropertyName";return;case"punctuator":pop();return;case"eof":throw invalidEOF()}},afterPropertyName:function afterPropertyName(){if(h.type==="eof"){throw invalidEOF()}s="beforePropertyValue"},beforePropertyValue:function beforePropertyValue(){if(h.type==="eof"){throw invalidEOF()}push()},beforeArrayValue:function beforeArrayValue(){if(h.type==="eof"){throw invalidEOF()}if(h.type==="punctuator"&&h.value==="]"){pop();return}push()},afterPropertyValue:function afterPropertyValue(){if(h.type==="eof"){throw invalidEOF()}switch(h.value){case",":s="beforePropertyName";return;case"}":pop()}},afterArrayValue:function afterArrayValue(){if(h.type==="eof"){throw invalidEOF()}switch(h.value){case",":s="beforeArrayValue";return;case"]":pop()}},end:function end(){}};function push(){var e=void 0;switch(h.type){case"punctuator":switch(h.value){case"{":e={};break;case"[":e=[];break}break;case"null":case"boolean":case"numeric":case"string":e=h.value;break}if(v===undefined){v=e}else{var r=o[o.length-1];if(Array.isArray(r)){r.push(e)}else{r[p]=e}}if(e!==null&&(typeof e==="undefined"?"undefined":i(e))==="object"){o.push(e);if(Array.isArray(e)){s="beforeArrayValue"}else{s="beforePropertyName"}}else{var t=o[o.length-1];if(t==null){s="end"}else if(Array.isArray(t)){s="afterArrayValue"}else{s="afterPropertyValue"}}}function pop(){o.pop();var e=o[o.length-1];if(e==null){s="end"}else if(Array.isArray(e)){s="afterArrayValue"}else{s="afterPropertyValue"}}function invalidChar(e){if(e===undefined){return syntaxError("JSON5: invalid end of input at "+l+":"+c)}return syntaxError("JSON5: invalid character '"+formatChar(e)+"' at "+l+":"+c)}function invalidEOF(){return syntaxError("JSON5: invalid end of input at "+l+":"+c)}function invalidIdentifier(){c-=5;return syntaxError("JSON5: invalid identifier character at "+l+":"+c)}function separatorChar(e){console.warn("JSON5: '"+e+"' is not valid ECMAScript; consider escaping")}function formatChar(e){var r={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(r[e]){return r[e]}if(e<" "){var t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function syntaxError(e){var r=new SyntaxError(e);r.lineNumber=l;r.columnNumber=c;return r}e.exports=r["default"]},,function(e,r,t){"use strict";var i=t(66);var n=t(589);var a=t(345);var u=t(347)("unified-engine:find-up");var s=t(692);e.exports=FindUp;var o=i.readFile;var f=n.resolve;var l=n.relative;var c=n.join;var h=n.dirname;FindUp.prototype.load=load;function FindUp(e){var r=this;var t=e.filePath;r.cache={};r.cwd=e.cwd;r.detect=e.detect;r.names=e.names;r.create=e.create;if(t){r.givenFilePath=f(e.cwd,t)}}function load(e,r){var t=this;var i=t.cache;var n=t.givenFilePath;var p=t.givenFile;var v=t.names;var d=t.create;var D=t.cwd;var m;if(n){if(p){apply(r,p)}else{p=[r];t.givenFile=p;u("Checking given file `%s`",n);o(n,loadGiven)}return}if(!t.detect){return r()}e=f(D,e);m=h(e);if(m in i){apply(r,i[m])}else{i[m]=[r];find(m)}function loadGiven(e,r){var i=t.givenFile;var s;if(e){s=a("Cannot read given file `%s`\n%s",l(D,n),e.stack);s.code="ENOENT";s.path=e.path;s.syscall=e.syscall}else{try{s=d(r,n);u("Read given file `%s`",n)}catch(e){s=a("Cannot parse given file `%s`\n%s",l(D,n),e.stack);u(e.message)}}p=s;t.givenFile=s;applyAll(i,s)}function find(r){var t=-1;var n=v.length;next();function next(){var a;if(++t{if(e)console.error(e);process.exit(r)})},,,,,,,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(839);var u=t(526);e.exports=i("remark-lint:code-block-style",codeBlockStyle);var s=a.start;var o=a.end;var f={null:true,fenced:true,indented:true};function codeBlockStyle(e,r,t){var i=String(r);t=typeof t==="string"&&t!=="consistent"?t:null;if(f[t]!==true){r.fail("Invalid code block style `"+t+"`: use either `'consistent'`, `'fenced'`, or `'indented'`")}n(e,"code",visitor);function visitor(e){var i=check(e);if(i){if(!t){t=i}else if(t!==i){r.message("Code blocks should be "+t,e)}}}function check(e){var r=s(e).offset;var t=o(e).offset;if(u(e)){return null}return e.lang||/^\s*([~`])\1{2,}/.test(i.slice(r,t))?"fenced":"indented"}}},,,function(e,r,t){"use strict";var i=t(589);var n=t(77);var a=t(289);e.exports=Ignore;Ignore.prototype.check=check;var u=i.dirname;var s=i.relative;var o=i.resolve;function Ignore(e){this.cwd=e.cwd;this.findUp=new a({filePath:e.ignorePath,cwd:e.cwd,detect:e.detectIgnore,names:e.ignoreName?[e.ignoreName]:[],create:create})}function check(e,r){var t=this;t.findUp.load(e,done);function done(i,n){var a;if(i){r(i)}else if(n){a=s(n.filePath,o(t.cwd,e));r(null,a?n.ignores(a):false)}else{r(null,false)}}}function create(e,r){var t=n().add(String(e));t.filePath=u(r);return t}},,,,function(e){e.exports={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:"ÿ",fnof:"ƒ",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:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",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:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"}},,,,function(e,r,t){"use strict";var i=t(54);e.exports=enclose;var n="(";var a=")";var u="<";var s=">";var o=/\s/;function enclose(e,r){if(r||e.length===0||o.test(e)||i(e,n)!==i(e,a)){return u+e+s}return e}},,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(839);var u=t(526);e.exports=i("remark-lint:table-pipes",tablePipes);var s=a.start;var o=a.end;var f="Missing initial pipe in table fence";var l="Missing final pipe in table fence";function tablePipes(e,r){var t=String(r);n(e,"table",visitor);function visitor(e){var i=e.children;var n=i.length;var a=-1;var c;var h;var p;var v;var d;var D;while(++a0?parseInt(r):null};for(;i1)return true;for(var a=0;athis.maxLength)return r();if(!this.stat&&m(this.cache,t)){var a=this.cache[t];if(Array.isArray(a))a="DIR";if(!n||a==="DIR")return r(null,a);if(n&&a==="FILE")return r()}var u;var s=this.statCache[t];if(s!==undefined){if(s===false)return r(null,s);else{var o=s.isDirectory()?"DIR":"FILE";if(n&&o==="FILE")return r();else return r(null,o,s)}}var f=this;var l=g("stat\0"+t,lstatcb_);if(l)i.lstat(t,l);function lstatcb_(n,a){if(a&&a.isSymbolicLink()){return i.stat(t,function(i,n){if(i)f._stat2(e,t,null,a,r);else f._stat2(e,t,i,n,r)})}else{f._stat2(e,t,n,a,r)}}};Glob.prototype._stat2=function(e,r,t,i,n){if(t&&(t.code==="ENOENT"||t.code==="ENOTDIR")){this.statCache[r]=false;return n()}var a=e.slice(-1)==="/";this.statCache[r]=i;if(r.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,false,i);var u=true;if(i)u=i.isDirectory()?"DIR":"FILE";this.cache[r]=this.cache[r]||u;if(a&&u==="FILE")return n();return n(null,u,i)}},function(e,r,t){"use strict";var i=t(36);var n=t(439);var a=t(934);var u=t(724);e.exports=paragraph;var s="\t";var o="\n";var f=" ";var l=4;function paragraph(e,r,t){var c=this;var h=c.options;var p=h.commonmark;var v=h.gfm;var d=c.blockTokenizers;var D=c.interruptParagraph;var m=r.indexOf(o);var g=r.length;var E;var A;var C;var y;var w;while(m=l&&C!==o){m=r.indexOf(o,m+1);continue}}A=r.slice(m+1);if(u(D,d,c,[e,A,true])){break}if(d.list.call(c,e,A,true)&&(c.inList||p||v&&!n(i.left(A).charAt(0)))){break}E=m;m=r.indexOf(o,m+1);if(m!==-1&&i(r.slice(E,m))===""){m=E;break}}A=r.slice(0,m);if(i(A)===""){e(A);return null}if(t){return true}w=e.now();A=a(A);return e(A)({type:"paragraph",children:c.tokenizeInline(A,w)})}},function(e,r,t){"use strict";var i;var n;try{var a=i;n=t(644)}catch(e){if(typeof window!=="undefined")n=window.esprima}var u=t(211);function resolveJavascriptFunction(e){if(e===null)return false;try{var r="("+e+")",t=n.parse(r,{range:true});if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression"){return false}return true}catch(e){return false}}function constructJavascriptFunction(e){var r="("+e+")",t=n.parse(r,{range:true}),i=[],a;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression"){throw new Error("Failed to resolve function")}t.body[0].expression.params.forEach(function(e){i.push(e.name)});a=t.body[0].expression.body.range;if(t.body[0].expression.body.type==="BlockStatement"){return new Function(i,r.slice(a[0]+1,a[1]-1))}return new Function(i,"return "+r.slice(a[0],a[1]))}function representJavascriptFunction(e){return e.toString()}function isFunction(e){return Object.prototype.toString.call(e)==="[object Function]"}e.exports=new u("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:resolveJavascriptFunction,construct:constructJavascriptFunction,predicate:isFunction,represent:representJavascriptFunction})},,,function(e,r,t){"use strict";var i=t(171);var n=t(984);var a=t(426);e.exports=reference;reference.locator=n;var u="link";var s="image";var o="footnote";var f="shortcut";var l="collapsed";var c="full";var h=" ";var p="!";var v="[";var d="\\";var D="]";var m="^";function reference(e,r,t){var n=this;var g=n.options.commonmark;var E=r.charAt(0);var A=0;var C=r.length;var y="";var w="";var x=u;var b=f;var F;var S;var B;var k;var O;var P;var T;var I;if(E===p){x=s;w=E;E=r.charAt(++A)}if(E!==v){return}A++;w+=E;P="";if(n.options.footnotes&&r.charAt(A)===m){if(x===s){return}w+=m;A++;x=o}I=0;while(A "+h.destination:""}if(!h.stats.total){p+=p?": ":"";if(h.stored){p+=m.yellow.open+"written"+m.yellow.close}else{p+="no issues found"}}if(p){f.push(p)}}else{g=m[h.label==="error"?"red":"yellow"];E=h.reason;A="";C=E.indexOf("\n");if(C!==-1){A=E.slice(C);E=E.slice(0,C)}f.push(["",padLeft(h.location,e.location),padRight(g.open+h.label+g.close,e.label),padRight(E,e.reason),padRight(h.ruleId,e.ruleId),h.source||""].join(" ").replace(c,"")+A)}}if(a.fatal||a.warn){p=[];if(a.fatal){p.push([m.red.open+l.error+m.red.close,a.fatal,plural(D.true,a.fatal)].join(" "))}if(a.warn){p.push([m.yellow.open+l.warning+m.yellow.close,a.warn,plural(D.false,a.warn)].join(" "))}p=p.join(", ");if(a.total!==a.fatal&&a.total!==a.warn){p=a.total+" messages ("+p+")"}f.push("",p)}return f.join("\n")}function applicable(e,r){var t=e.messages;var i=t.length;var n=-1;var a=[];if(r.silent){while(++n64)continue;if(r<0)return false;i+=6}return i%8===0}function constructYamlBinary(e){var r,t,i=e.replace(/[\r\n=]/g,""),a=i.length,u=s,o=0,f=[];for(r=0;r>16&255);f.push(o>>8&255);f.push(o&255)}o=o<<6|u.indexOf(i.charAt(r))}t=a%4*6;if(t===0){f.push(o>>16&255);f.push(o>>8&255);f.push(o&255)}else if(t===18){f.push(o>>10&255);f.push(o>>2&255)}else if(t===12){f.push(o>>4&255)}if(n){return n.from?n.from(f):new n(f)}return f}function representYamlBinary(e){var r="",t=0,i,n,a=e.length,u=s;for(i=0;i>18&63];r+=u[t>>12&63];r+=u[t>>6&63];r+=u[t&63]}t=(t<<8)+e[i]}n=a%3;if(n===0){r+=u[t>>18&63];r+=u[t>>12&63];r+=u[t>>6&63];r+=u[t&63]}else if(n===2){r+=u[t>>10&63];r+=u[t>>4&63];r+=u[t<<2&63];r+=u[64]}else if(n===1){r+=u[t>>2&63];r+=u[t<<4&63];r+=u[64];r+=u[64]}return r}function isBinary(e){return n&&n.isBuffer(e)}e.exports=new u("tag:yaml.org,2002:binary",{kind:"scalar",resolve:resolveYamlBinary,construct:constructYamlBinary,predicate:isBinary,represent:representYamlBinary})},function(e){"use strict";var r=[].slice;e.exports=wrap;function wrap(e,t){var i;return wrapped;function wrapped(){var t=r.call(arguments,0);var n=e.length>t.length;var a;if(n){t.push(done)}try{a=e.apply(null,t)}catch(e){if(n&&i){throw e}return done(e)}if(!n){if(a&&typeof a.then==="function"){a.then(then,done)}else if(a instanceof Error){done(a)}else{then(a)}}}function done(){if(!i){i=true;t.apply(null,arguments)}}function then(e){done(null,e)}}},function(e){e.exports=extend;var r=Object.prototype.hasOwnProperty;function extend(){var e={};for(var t=0;ti){r.message("Move definitions to the end of the file (after the node at line `"+t+"`)",e)}}else if(t===null){t=i}}}},function(e){var r=Object.prototype.toString;e.exports=isString;function isString(e){return r.call(e)==="[object String]"}},function(e,r,t){"use strict";var i=t(874);e.exports=configure;function configure(e,r){e.configuration=new i(r)}},,,,function(e,r,t){"use strict";var i=t(323);var n=create(Error);e.exports=n;n.eval=create(EvalError);n.range=create(RangeError);n.reference=create(ReferenceError);n.syntax=create(SyntaxError);n.type=create(TypeError);n.uri=create(URIError);n.create=create;function create(e){FormattedError.displayName=e.displayName||e.name;return FormattedError;function FormattedError(r){if(r){r=i.apply(null,arguments)}return new e(r)}}},,function(e,r,t){"use strict";if(typeof process==="undefined"||process.type==="renderer"||process.browser===true||process.__nwjs){e.exports=t(470)}else{e.exports=t(970)}},function(e,r,t){var i=t(20);var n=t(491);e.exports=expandTop;var a="\0SLASH"+Math.random()+"\0";var u="\0OPEN"+Math.random()+"\0";var s="\0CLOSE"+Math.random()+"\0";var o="\0COMMA"+Math.random()+"\0";var f="\0PERIOD"+Math.random()+"\0";function numeric(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function escapeBraces(e){return e.split("\\\\").join(a).split("\\{").join(u).split("\\}").join(s).split("\\,").join(o).split("\\.").join(f)}function unescapeBraces(e){return e.split(a).join("\\").split(u).join("{").split(s).join("}").split(o).join(",").split(f).join(".")}function parseCommaParts(e){if(!e)return[""];var r=[];var t=n("{","}",e);if(!t)return e.split(",");var i=t.pre;var a=t.body;var u=t.post;var s=i.split(",");s[s.length-1]+="{"+a+"}";var o=parseCommaParts(u);if(u.length){s[s.length-1]+=o.shift();s.push.apply(s,o)}r.push.apply(r,s);return r}function expandTop(e){if(!e)return[];if(e.substr(0,2)==="{}"){e="\\{\\}"+e.substr(2)}return expand(escapeBraces(e),true).map(unescapeBraces)}function identity(e){return e}function embrace(e){return"{"+e+"}"}function isPadded(e){return/^-?0\d/.test(e)}function lte(e,r){return e<=r}function gte(e,r){return e>=r}function expand(e,r){var t=[];var a=n("{","}",e);if(!a||/\$$/.test(a.pre))return[e];var u=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(a.body);var o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(a.body);var f=u||o;var l=a.body.indexOf(",")>=0;if(!f&&!l){if(a.post.match(/,.*\}/)){e=a.pre+"{"+a.body+s+a.post;return expand(e)}return[e]}var c;if(f){c=a.body.split(/\.\./)}else{c=parseCommaParts(a.body);if(c.length===1){c=expand(c[0],false).map(embrace);if(c.length===1){var h=a.post.length?expand(a.post,false):[""];return h.map(function(e){return a.pre+c[0]+e})}}}var p=a.pre;var h=a.post.length?expand(a.post,false):[""];var v;if(f){var d=numeric(c[0]);var D=numeric(c[1]);var m=Math.max(c[0].length,c[1].length);var g=c.length==3?Math.abs(numeric(c[2])):1;var E=lte;var A=D0){var b=new Array(x+1).join("0");if(y<0)w="-"+b+w.slice(1);else w=b+w}}}v.push(w)}}else{v=i(c,function(e){return expand(e,false)})}for(var F=0;F>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,r,t){var i=r.length-1;if(i=0){if(n>0)e.lastNeed=n-1;return n}if(--i=0){if(n>0)e.lastNeed=n-2;return n}if(--i=0){if(n>0){if(n===2)n=0;else e.lastNeed=n-3}return n}return 0}function utf8CheckExtraBytes(e,r,t){if((r[0]&192)!==128){e.lastNeed=0;return"�"}if(e.lastNeed>1&&r.length>1){if((r[1]&192)!==128){e.lastNeed=1;return"�"}if(e.lastNeed>2&&r.length>2){if((r[2]&192)!==128){e.lastNeed=2;return"�"}}}}function utf8FillLast(e){var r=this.lastTotal-this.lastNeed;var t=utf8CheckExtraBytes(this,e,r);if(t!==undefined)return t;if(this.lastNeed<=e.length){e.copy(this.lastChar,r,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,r,0,e.length);this.lastNeed-=e.length}function utf8Text(e,r){var t=utf8CheckIncomplete(this,e,r);if(!this.lastNeed)return e.toString("utf8",r);this.lastTotal=t;var i=e.length-(t-this.lastNeed);e.copy(this.lastChar,0,i);return e.toString("utf8",r,i)}function utf8End(e){var r=e&&e.length?this.write(e):"";if(this.lastNeed)return r+"�";return r}function utf16Text(e,r){if((e.length-r)%2===0){var t=e.toString("utf16le",r);if(t){var i=t.charCodeAt(t.length-1);if(i>=55296&&i<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return t.slice(0,-1)}}return t}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString("utf16le",r,e.length-1)}function utf16End(e){var r=e&&e.length?this.write(e):"";if(this.lastNeed){var t=this.lastTotal-this.lastNeed;return r+this.lastChar.toString("utf16le",0,t)}return r}function base64Text(e,r){var t=(e.length-r)%3;if(t===0)return e.toString("base64",r);this.lastNeed=3-t;this.lastTotal=3;if(t===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString("base64",r,e.length-t)}function base64End(e){var r=e&&e.length?this.write(e):"";if(this.lastNeed)return r+this.lastChar.toString("base64",0,3-this.lastNeed);return r}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):""}},,,,function(e,r,t){"use strict";var i=t(186);e.exports=VMessage;function VMessagePrototype(){}VMessagePrototype.prototype=Error.prototype;VMessage.prototype=new VMessagePrototype;var n=VMessage.prototype;n.file="";n.name="";n.reason="";n.message="";n.stack="";n.fatal=null;n.column=null;n.line=null;function VMessage(e,r,t){var n;var a;var u;if(typeof r==="string"){t=r;r=null}n=parseOrigin(t);a=i(r)||"1:1";u={start:{line:null,column:null},end:{line:null,column:null}};if(r&&r.position){r=r.position}if(r){if(r.start){u=r;r=r.start}else{u.start=r}}if(e.stack){this.stack=e.stack;e=e.message}this.message=e;this.name=a;this.reason=e;this.line=r?r.line:null;this.column=r?r.column:null;this.location=u;this.source=n[0];this.ruleId=n[1]}function parseOrigin(e){var r=[null,null];var t;if(typeof e==="string"){t=e.indexOf(":");if(t===-1){r[1]=e}else{r[0]=e.slice(0,t);r[1]=e.slice(t+1)}}return r}},,function(e,r,t){"use strict";var i=t(171);var n=t(902);var a=t(49);e.exports=autoLink;autoLink.locator=a;autoLink.notInLink=true;var u="<";var s=">";var o="@";var f="/";var l="mailto:";var c=l.length;function autoLink(e,r,t){var a=this;var h="";var p=r.length;var v=0;var d="";var D=false;var m="";var g;var E;var A;var C;var y;if(r.charAt(0)!==u){return}v++;h=u;while(v0||Y===x&&I.inLink||M&&Y===B&&r.charAt(_+1)===B||M&&Y===S&&(I.inTable||alignment(r,_))||Y===b&&_>0&&_=e.expected){e.emit("done")}}},,function(e,r,t){"use strict";var i=t(897);var n=t(336);var a=t(860);e.exports=parse;parse.Parser=a;function parse(e){var r=this.data("settings");var t=i(a);t.prototype.options=n(t.prototype.options,r,e);this.Parser=t}},,,,,,function(e,r,t){"use strict";var i=t(176);e.exports=imageReference;var n="[";var a="]";var u="!";function imageReference(e){return u+n+(this.encode(e.alt,e)||"")+a+i(e)}},,,,,,function(e,r,t){"use strict";var i=t(495);e.exports=i("remark-lint:no-file-name-consecutive-dashes",noFileNameConsecutiveDashes);var n="Do not use consecutive dashes in a file name";function noFileNameConsecutiveDashes(e,r){if(r.stem&&/-{2,}/.test(r.stem)){r.message(n)}}},,,,,,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(839);var u=t(526);e.exports=i("remark-lint:fenced-code-marker",fencedCodeMarker);var s={"`":true,"~":true,null:true};function fencedCodeMarker(e,r,t){var i=String(r);t=typeof t==="string"&&t!=="consistent"?t:null;if(s[t]!==true){r.fail("Invalid fenced code marker `"+t+"`: use either `'consistent'`, `` '`' ``, or `'~'`")}n(e,"code",visitor);function visitor(e){var n;if(!u(e)){n=i.substr(a.start(e).offset,4).trimLeft().charAt(0);if(s[n]===true){if(t){if(n!==t){r.message("Fenced code should use "+t+" as a marker",e)}}else{t=n}}}}}},,function(e,r,t){"use strict";var i=t(727);e.exports=new i({include:[t(95)],implicit:[t(788),t(900)],explicit:[t(334),t(157),t(697),t(713)]})},,,function(e){"use strict";e.exports=thematicBreak;var r="\t";var t="\n";var i=" ";var n="*";var a="-";var u="_";var s=3;function thematicBreak(e,o,f){var l=-1;var c=o.length+1;var h="";var p;var v;var d;var D;while(++l=s&&(!p||p===t)){h+=D;if(f){return true}return e(h)({type:"thematicBreak"})}else{return}}}},,function(e){e.exports=require("assert")},,,,,,,function(e,r,t){"use strict";var i=t(774);var n=t(176);e.exports=linkReference;var a="[";var u="]";var s="shortcut";var o="collapsed";function linkReference(e){var r=this;var t=e.referenceType;var f=r.enterLinkReference(r,e);var l=r.all(e).join("");f();if(t===s||t===o){l=i(l,e.label||e.identifier)}return a+l+u+n(e)}},function(e){"use strict";e.exports=lineBreak;var r="\\";var t="\n";var i=" ";var n=r+t;var a=i+i+t;function lineBreak(){return this.options.commonmark?n:a}},function(e,r,t){"use strict";function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError("Cannot call a class as a function")}}var i=t(945).Buffer;var n=t(64);function copyBuffer(e,r,t){e.copy(r,t)}e.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}BufferList.prototype.push=function push(e){var r={data:e,next:null};if(this.length>0)this.tail.next=r;else this.head=r;this.tail=r;++this.length};BufferList.prototype.unshift=function unshift(e){var r={data:e,next:this.head};if(this.length===0)this.tail=r;this.head=r;++this.length};BufferList.prototype.shift=function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e};BufferList.prototype.clear=function clear(){this.head=this.tail=null;this.length=0};BufferList.prototype.join=function join(e){if(this.length===0)return"";var r=this.head;var t=""+r.data;while(r=r.next){t+=e+r.data}return t};BufferList.prototype.concat=function concat(e){if(this.length===0)return i.alloc(0);if(this.length===1)return this.head.data;var r=i.allocUnsafe(e>>>0);var t=this.head;var n=0;while(t){copyBuffer(t.data,r,n);n+=t.data.length;t=t.next}return r};return BufferList}();if(n&&n.inspect&&n.inspect.custom){e.exports.prototype[n.inspect.custom]=function(){var e=n.inspect({length:this.length});return this.constructor.name+" "+e}}},function(e,r,t){"use strict";var i=t(336);var n=t(109);var a=t(694);e.exports=setOptions;function setOptions(e){var r=this;var t=r.options;var u;var s;if(e==null){e={}}else if(typeof e==="object"){e=i(e)}else{throw new Error("Invalid value `"+e+"` for setting `options`")}for(u in a){s=e[u];if(s==null){s=t[u]}if(u!=="blocks"&&typeof s!=="boolean"||u==="blocks"&&typeof s!=="object"){throw new Error("Invalid value `"+s+"` for setting `options."+u+"`")}e[u]=s}r.options=e;r.escape=n(e);return r}},,function(e){var r=Array.prototype.slice;e.exports=co;function co(e){var t=isGeneratorFunction(e);return function(i){var n=this;var a=e;if(t){var u=r.call(arguments),s=u.length;var o=s&&"function"==typeof u[s-1];i=o?u.pop():error;a=e.apply(this,u)}else{i=i||error}next();function exit(e,r){setImmediate(function(){i.call(n,e,r)})}function next(e,t){var i;if(arguments.length>2)t=r.call(arguments,1);if(e){try{i=a.throw(e)}catch(e){return exit(e)}}if(!e){try{i=a.next(t)}catch(e){return exit(e)}}if(i.done)return exit(null,i.value);i.value=toThunk(i.value,n);if("function"==typeof i.value){var u=false;try{i.value.call(n,function(){if(u)return;u=true;next.apply(n,arguments)})}catch(e){setImmediate(function(){if(u)return;u=true;next(e)})}return}next(new TypeError("You may only yield a function, promise, generator, array, or object, "+'but the following was passed: "'+String(i.value)+'"'))}}}function toThunk(e,r){if(isGeneratorFunction(e)){return co(e.call(r))}if(isGenerator(e)){return co(e)}if(isPromise(e)){return promiseToThunk(e)}if("function"==typeof e){return e}if(isObject(e)||Array.isArray(e)){return objectToThunk.call(r,e)}return e}function objectToThunk(e){var r=this;var t=Array.isArray(e);return function(i){var n=Object.keys(e);var a=n.length;var u=t?new Array(a):new e.constructor;var s;if(!a){setImmediate(function(){i(null,u)});return}if(!t){for(var o=0;ot){r.splice(0,t);process.nextTick(function(){RES.apply(null,i)})}else{delete n[e]}}})}function slice(e){var r=e.length;var t=[];for(var i=0;ii){o+=" with 1 space, not "+u;if(size(a)=48&&r<=57}},function(e,r,t){"use strict";var i=t(308);var n=t(197);var a=t(25);var u=t(908);var s=t(617);e.exports=encode;encode.escape=escape;var o={}.hasOwnProperty;var f=['"',"'","<",">","&","`"];var l=construct();var c=toExpression(f);var h=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;var p=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function encode(e,r){var t=r||{};var i=t.subset;var n=i?toExpression(i):c;var a=t.escapeOnly;var u=t.omitOptionalSemicolons;e=e.replace(n,function(e,r,i){return one(e,i.charAt(r+1),t)});if(i||a){return e}return e.replace(h,replaceSurrogatePair).replace(p,replaceBmp);function replaceSurrogatePair(e,r,t){return toHexReference((e.charCodeAt(0)-55296)*1024+e.charCodeAt(1)-56320+65536,t.charAt(r+2),u)}function replaceBmp(e,r,i){return one(e,i.charAt(r+1),t)}}function escape(e){return encode(e,{escapeOnly:true,useNamedReferences:true})}function one(e,r,t){var i=t.useShortestReferences;var n=t.omitOptionalSemicolons;var a;var u;if((i||t.useNamedReferences)&&o.call(l,e)){a=toNamed(l[e],r,n,t.attribute)}if(i||!a){u=toHexReference(e.charCodeAt(0),r,n)}if(a&&(!i||a.length/i;function inlineHTML(e,r,t){var n=this;var h=r.length;var p;var v;if(r.charAt(0)!==u||h<3){return}p=r.charAt(1);if(!i(p)&&p!==s&&p!==o&&p!==f){return}v=r.match(a);if(!v){return}if(t){return true}v=v[0];if(!n.inLink&&l.test(v)){n.inLink=true}else if(n.inLink&&c.test(v)){n.inLink=false}return e(v)({type:"html",value:v})}},function(e){e.exports=["md","markdown","mdown","mkdn","mkd","mdwn","mkdown","ron"]},,,,function(e,r,t){"use strict";var i=t(495);e.exports=i("remark-lint:file-extension",fileExtension);function fileExtension(e,r,t){var i=r.extname;t=typeof t==="string"?t:"md";if(i&&i.slice(1)!==t){r.message("Invalid extension: use `"+t+"`")}}},function(e){"use strict";e.exports=factory;var r="\\";function factory(e,t){return unescape;function unescape(i){var n=0;var a=i.indexOf(r);var u=e[t];var s=[];var o;while(a!==-1){s.push(i.slice(n,a));n=a+1;o=i.charAt(n);if(!o||u.indexOf(o)===-1){s.push(r)}a=i.indexOf(r,n+1)}s.push(i.slice(n));return s.join("")}}},,,function(e,r,t){"use strict";const i=t(495);const n=t(682);e.exports=i("remark-lint:prohibited-strings",prohibitedStrings);function testProhibited(e,r){const t=new RegExp(`(\\.|@[a-z0-9/-]*)?(${e.no})(\\.\\w)?`,"g");let i=null;while(i=t.exec(r)){if(!i[1]&&!i[3]){return i[2]}}return false}function prohibitedStrings(e,r,t){n(e,"text",checkText);function checkText(e){const i=e.value;t.forEach(t=>{const n=testProhibited(t,i);if(n){r.message(`Use "${t.yes}" instead of "${n}"`,e)}})}}},,,,,function(e){"use strict";e.exports=hidden;function hidden(e){if(typeof e!=="string"){throw new Error("Expected string")}return e.charAt(0)==="."}},,,,,function(e,r,t){"use strict";var i=t(171);var n=t(426);e.exports=footnoteDefinition;footnoteDefinition.notInList=true;footnoteDefinition.notInBlock=true;var a="\\";var u="\n";var s="\t";var o=" ";var f="[";var l="]";var c="^";var h=":";var p=/^( {4}|\t)?/gm;function footnoteDefinition(e,r,t){var v=this;var d=v.offset;var D;var m;var g;var E;var A;var C;var y;var w;var x;var b;var F;var S;if(!v.options.footnotes){return}D=0;m=r.length;g="";E=e.now();A=E.line;while(D=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(r){r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff);if(!this.useColors){return}var t="color: "+this.color;r.splice(1,0,t,"color: inherit");var i=0;var n=0;r[0].replace(/%[a-zA-Z%]/g,function(e){if(e==="%%"){return}i++;if(e==="%c"){n=i}});r.splice(n,0,t)}function log(){var e;return(typeof console==="undefined"?"undefined":_typeof(console))==="object"&&console.log&&(e=console).log.apply(e,arguments)}function save(e){try{if(e){r.storage.setItem("debug",e)}else{r.storage.removeItem("debug")}}catch(e){}}function load(){var e;try{e=r.storage.getItem("debug")}catch(e){}if(!e&&typeof process!=="undefined"&&"env"in process){e=process.env.DEBUG}return e}function localstorage(){try{return localStorage}catch(e){}}e.exports=t(772)(r);var i=e.exports.formatters;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},,,,function(e,r,t){var i=t(159);var n=t(589).join;var a=t(281);var u="/etc";var s=process.platform==="win32";var o=s?process.env.USERPROFILE:process.env.HOME;e.exports=function(e,r,f,l){if("string"!==typeof e)throw new Error("rc(name): name *must* be string");if(!f)f=t(359)(process.argv.slice(2));r=("string"===typeof r?i.json(r):r)||{};l=l||i.parse;var c=i.env(e+"_");var h=[r];var p=[];function addConfigFile(e){if(p.indexOf(e)>=0)return;var r=i.file(e);if(r){h.push(l(r));p.push(e)}}if(!s)[n(u,e,"config"),n(u,e+"rc")].forEach(addConfigFile);if(o)[n(o,".config",e,"config"),n(o,".config",e),n(o,"."+e,"config"),n(o,"."+e+"rc")].forEach(addConfigFile);addConfigFile(i.find("."+e+"rc"));if(c.config)addConfigFile(c.config);if(f.config)addConfigFile(f.config);return a.apply(null,h.concat([c,f,p.length?{configs:p,config:p[p.length-1]}:undefined]))}},,,,,,,,,,function(e){e.exports={name:"remark",version:"10.0.1",description:"Markdown processor powered by plugins",license:"MIT",keywords:["markdown","abstract","syntax","tree","ast","parse","stringify","process"],homepage:"https://remark.js.org",repository:"https://github.com/remarkjs/remark/tree/master/packages/remark",bugs:"https://github.com/remarkjs/remark/issues",author:"Titus Wormer (https://wooorm.com)",contributors:["Titus Wormer (https://wooorm.com)"],files:["index.js"],dependencies:{"remark-parse":"^6.0.0","remark-stringify":"^6.0.0",unified:"^7.0.0"},devDependencies:{tape:"^4.9.1"},scripts:{test:"tape test.js"},xo:false,_resolved:"https://registry.npmjs.org/remark/-/remark-10.0.1.tgz",_integrity:"sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==",_from:"remark@10.0.1"}},function(e){e.exports=require("events")},,function(e,r,t){e.exports=globSync;globSync.GlobSync=GlobSync;var i=t(66);var n=t(129);var a=t(620);var u=a.Minimatch;var s=t(327).Glob;var o=t(64);var f=t(589);var l=t(393);var c=t(969);var h=t(922);var p=h.alphasort;var v=h.alphasorti;var d=h.setopts;var D=h.ownProp;var m=h.childrenIgnored;var g=h.isIgnored;function globSync(e,r){if(typeof r==="function"||arguments.length===3)throw new TypeError("callback provided to sync glob\n"+"See: https://github.com/isaacs/node-glob/issues/167");return new GlobSync(e,r).found}function GlobSync(e,r){if(!e)throw new Error("must provide pattern");if(typeof r==="function"||arguments.length===3)throw new TypeError("callback provided to sync glob\n"+"See: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof GlobSync))return new GlobSync(e,r);d(this,e,r);if(this.noprocess)return this;var t=this.minimatch.set.length;this.matches=new Array(t);for(var i=0;ithis.maxLength)return false;if(!this.stat&&D(this.cache,r)){var n=this.cache[r];if(Array.isArray(n))n="DIR";if(!t||n==="DIR")return n;if(t&&n==="FILE")return false}var a;var u=this.statCache[r];if(!u){var s;try{s=i.lstatSync(r)}catch(e){if(e&&(e.code==="ENOENT"||e.code==="ENOTDIR")){this.statCache[r]=false;return false}}if(s&&s.isSymbolicLink()){try{u=i.statSync(r)}catch(e){u=s}}else{u=s}}this.statCache[r]=u;var n=true;if(u)n=u.isDirectory()?"DIR":"FILE";this.cache[r]=this.cache[r]||n;if(t&&n==="FILE")return false;return n};GlobSync.prototype._mark=function(e){return h.mark(this,e)};GlobSync.prototype._makeAbs=function(e){return h.makeAbs(this,e)}},,,,function(e){"use strict";e.exports=balanced;function balanced(e,r,t){if(e instanceof RegExp)e=maybeMatch(e,t);if(r instanceof RegExp)r=maybeMatch(r,t);var i=range(e,r,t);return i&&{start:i[0],end:i[1],pre:t.slice(0,i[0]),body:t.slice(i[0]+e.length,i[1]),post:t.slice(i[1]+r.length)}}function maybeMatch(e,r){var t=r.match(e);return t?t[0]:null}balanced.range=range;function range(e,r,t){var i,n,a,u,s;var o=t.indexOf(e);var f=t.indexOf(r,o+1);var l=o;if(o>=0&&f>0){i=[];a=t.length;while(l>=0&&!s){if(l==o){i.push(l);o=t.indexOf(e,l+1)}else if(i.length==1){s=[i.pop(),f]}else{n=i.pop();if(n=0?o:f}if(i.length){s=[a,u]}}return s}},,,,function(e,r,t){"use strict";var i=t(659);e.exports=factory;function factory(e,r){var t=e.split(":");var n=t[0];var a=t[1];var u=i(r);if(!a){a=n;n=null}attacher.displayName=e;return attacher;function attacher(e){var r=coerce(a,e);var t=r[0];var i=r[1];var s=t===2;return t?transformer:undefined;function transformer(e,r,t){var o=r.messages.length;u(e,r,i,done);function done(e){var i=r.messages;var u;if(e&&i.indexOf(e)===-1){try{r.fail(e)}catch(e){}}while(o2){throw new Error("Invalid severity `"+n+"` for `"+e+"`, "+"expected 0, 1, or 2")}i[0]=n;return i}},,,,,,,function(e,r,t){"use strict";e.exports=PassThrough;var i=t(955);var n=t(683);n.inherits=t(780);n.inherits(PassThrough,i);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);i.call(this,e)}PassThrough.prototype._transform=function(e,r,t){t(null,e)}},function(e,r,t){"use strict";var i=t(353);var n=t(320);e.exports=n;var a=n.prototype;a.message=message;a.info=info;a.fail=fail;a.warn=message;function message(e,r,t){var n=this.path;var a=new i(e,r,t);if(n){a.name=n+":"+a.name;a.file=n}a.fatal=false;this.messages.push(a);return a}function fail(){var e=this.message.apply(this,arguments);e.fatal=true;throw e}function info(){var e=this.message.apply(this,arguments);e.fatal=null;return e}},,,,function(e,r,t){e.exports=t(64).deprecate},,,,function(e){"use strict";e.exports=locate;function locate(e,r){var t=e.indexOf("**",r);var i=e.indexOf("__",r);if(i===-1){return t}if(t===-1){return i}return ii&&e[c+1]!==" ";c=a}}else if(!isPrintable(u)){return j}h=h&&isPlainSafe(u)}o=o||f&&(a-c-1>i&&e[c+1]!==" ")}if(!s&&!o){return h&&!n(e)?I:M}if(t>9&&needIndentIndicator(e)){return j}return o?R:L}function writeScalar(e,r,t,i){e.dump=function(){if(r.length===0){return"''"}if(!e.noCompatMode&&T.indexOf(r)!==-1){return"'"+r+"'"}var a=e.indent*Math.max(1,t);var u=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a);var s=i||e.flowLevel>-1&&t>=e.flowLevel;function testAmbiguity(r){return testImplicitResolving(e,r)}switch(chooseScalarStyle(r,s,e.indent,u,testAmbiguity)){case I:return r;case M:return"'"+r.replace(/'/g,"''")+"'";case L:return"|"+blockHeader(r,e.indent)+dropEndingNewline(indentString(r,a));case R:return">"+blockHeader(r,e.indent)+dropEndingNewline(indentString(foldString(r,u),a));case j:return'"'+escapeString(r,u)+'"';default:throw new n("impossible error: invalid scalar style")}}()}function blockHeader(e,r){var t=needIndentIndicator(e)?String(r):"";var i=e[e.length-1]==="\n";var n=i&&(e[e.length-2]==="\n"||e==="\n");var a=n?"+":i?"":"-";return t+a+"\n"}function dropEndingNewline(e){return e[e.length-1]==="\n"?e.slice(0,-1):e}function foldString(e,r){var t=/(\n+)([^\n]*)/g;var i=function(){var i=e.indexOf("\n");i=i!==-1?i:e.length;t.lastIndex=i;return foldLine(e.slice(0,i),r)}();var n=e[0]==="\n"||e[0]===" ";var a;var u;while(u=t.exec(e)){var s=u[1],o=u[2];a=o[0]===" ";i+=s+(!n&&!a&&o!==""?"\n":"")+foldLine(o,r);n=a}return i}function foldLine(e,r){if(e===""||e[0]===" ")return e;var t=/ [^ ]/g;var i;var n=0,a,u=0,s=0;var o="";while(i=t.exec(e)){s=i.index;if(s-n>r){a=u>n?u:s;o+="\n"+e.slice(n,a);n=a+1}u=s}o+="\n";if(e.length-n>r&&u>n){o+=e.slice(n,u)+"\n"+e.slice(u+1)}else{o+=e.slice(n)}return o.slice(1)}function escapeString(e){var r="";var t,i;var n;for(var a=0;a=55296&&t<=56319){i=e.charCodeAt(a+1);if(i>=56320&&i<=57343){r+=encodeHex((t-55296)*1024+i-56320+65536);a++;continue}}n=P[t];r+=!n&&isPrintable(t)?e[a]:n||encodeHex(t)}return r}function writeFlowSequence(e,r,t){var i="",n=e.tag,a,u;for(a=0,u=t.length;a1024)l+="? ";l+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" ");if(!writeNode(e,r,f,false,false)){continue}l+=e.dump;i+=l}e.tag=n;e.dump="{"+i+"}"}function writeBlockMapping(e,r,t,i){var a="",u=e.tag,s=Object.keys(t),o,f,c,h,p,v;if(e.sortKeys===true){s.sort()}else if(typeof e.sortKeys==="function"){s.sort(e.sortKeys)}else if(e.sortKeys){throw new n("sortKeys must be a boolean or a function")}for(o=0,f=s.length;o1024;if(p){if(e.dump&&l===e.dump.charCodeAt(0)){v+="?"}else{v+="? "}}v+=e.dump;if(p){v+=generateNextLine(e,r)}if(!writeNode(e,r+1,h,true,p)){continue}if(e.dump&&l===e.dump.charCodeAt(0)){v+=":"}else{v+=": "}v+=e.dump;a+=v}e.tag=u;e.dump=a||"{}"}function detectType(e,r,t){var i,a,u,f,l,c;a=t?e.explicitTypes:e.implicitTypes;for(u=0,f=a.length;u tag resolver accepts not "'+c+'" style')}e.dump=i}return true}}return false}function writeNode(e,r,t,i,a,u){e.tag=null;e.dump=t;if(!detectType(e,t,false)){detectType(e,t,true)}var o=s.call(e.dump);if(i){i=e.flowLevel<0||e.flowLevel>r}var f=o==="[object Object]"||o==="[object Array]",l,c;if(f){l=e.duplicates.indexOf(t);c=l!==-1}if(e.tag!==null&&e.tag!=="?"||c||e.indent!==2&&r>0){a=false}if(c&&e.usedDuplicates[l]){e.dump="*ref_"+l}else{if(f&&c&&!e.usedDuplicates[l]){e.usedDuplicates[l]=true}if(o==="[object Object]"){if(i&&Object.keys(e.dump).length!==0){writeBlockMapping(e,r,e.dump,a);if(c){e.dump="&ref_"+l+e.dump}}else{writeFlowMapping(e,r,e.dump);if(c){e.dump="&ref_"+l+" "+e.dump}}}else if(o==="[object Array]"){var h=e.noArrayIndent&&r>0?r-1:r;if(i&&e.dump.length!==0){writeBlockSequence(e,h,e.dump,a);if(c){e.dump="&ref_"+l+e.dump}}else{writeFlowSequence(e,h,e.dump);if(c){e.dump="&ref_"+l+" "+e.dump}}}else if(o==="[object String]"){if(e.tag!=="?"){writeScalar(e,e.dump,r,u)}}else{if(e.skipInvalid)return false;throw new n("unacceptable kind of an object to dump "+o)}if(e.tag!==null&&e.tag!=="?"){e.dump="!<"+e.tag+"> "+e.dump}}return true}function getDuplicateReferences(e,r){var t=[],i=[],n,a;inspectNode(e,t,i);for(n=0,a=i.length;n=e.length){if(r)r[u]=e;return t(null,e)}o.lastIndex=c;var i=o.exec(e);v=h;h+=i[0];p=v+i[1];c=o.lastIndex;if(l[p]||r&&r[p]===p){return process.nextTick(LOOP)}if(r&&Object.prototype.hasOwnProperty.call(r,p)){return gotResolvedLink(r[p])}return a.lstat(p,gotStat)}function gotStat(e,i){if(e)return t(e);if(!i.isSymbolicLink()){l[p]=true;if(r)r[p]=p;return process.nextTick(LOOP)}if(!n){var u=i.dev.toString(32)+":"+i.ino.toString(32);if(s.hasOwnProperty(u)){return gotTarget(null,s[u],p)}}a.stat(p,function(e){if(e)return t(e);a.readlink(p,function(e,r){if(!n)s[u]=r;gotTarget(e,r)})})}function gotTarget(e,n,a){if(e)return t(e);var u=i.resolve(v,n);if(r)r[a]=u;gotResolvedLink(u)}function gotResolvedLink(r){e=i.resolve(r,e.slice(c));start()}}},,function(e){e.exports=[{long:"help",description:"output usage information",short:"h",type:"boolean",default:false},{long:"version",description:"output version number",short:"v",type:"boolean",default:false},{long:"output",description:"specify output location",short:"o",value:"[path]"},{long:"rc-path",description:"specify configuration file",short:"r",type:"string",value:""},{long:"ignore-path",description:"specify ignore file",short:"i",type:"string",value:""},{long:"setting",description:"specify settings",short:"s",type:"string",value:""},{long:"ext",description:"specify extensions",short:"e",type:"string",value:""},{long:"use",description:"use plugins",short:"u",type:"string",value:""},{long:"watch",description:"watch for changes and reprocess",short:"w",type:"boolean",default:false},{long:"quiet",description:"output only warnings and errors",short:"q",type:"boolean",default:false},{long:"silent",description:"output only errors",short:"S",type:"boolean",default:false},{long:"frail",description:"exit with 1 on warnings",short:"f",type:"boolean",default:false},{long:"tree",description:"specify input and output as syntax tree",short:"t",type:"boolean",default:false},{long:"report",description:"specify reporter",type:"string",value:""},{long:"file-path",description:"specify path to process as",type:"string",value:""},{long:"tree-in",description:"specify input as syntax tree",type:"boolean"},{long:"tree-out",description:"output syntax tree",type:"boolean"},{long:"inspect",description:"output formatted syntax tree",type:"boolean"},{long:"stdout",description:"specify writing to stdout",type:"boolean",truelike:true},{long:"color",description:"specify color in report",type:"boolean",default:true},{long:"config",description:"search for configuration files",type:"boolean",default:true},{long:"ignore",description:"search for ignore files",type:"boolean",default:true}]},,,,function(e,r,t){"use strict";var i=t(495);var n=t(682);var a=t(839);var u=t(526);e.exports=i("remark-lint:hard-break-spaces",hardBreakSpaces);var s="Use two spaces for hard line breaks";function hardBreakSpaces(e,r){var t=String(r);n(e,"break",visitor);function visitor(e){var i;if(!u(e)){i=t.slice(a.start(e).offset,a.end(e).offset).split("\n",1)[0].replace(/\r$/,"");if(i.length>2){r.message(s,e)}}}}},,,,function(e,r,t){"use strict";var i=t(171);e.exports=table;var n="\t";var a="\n";var u=" ";var s="-";var o=":";var f="\\";var l="`";var c="|";var h=1;var p=2;var v="left";var d="center";var D="right";function table(e,r,t){var m=this;var g;var E;var A;var C;var y;var w;var x;var b;var F;var S;var B;var k;var O;var P;var T;var I;var M;var L;var R;var j;var N;var U;var J;var z;if(!m.options.gfm){return}g=0;L=0;w=r.length+1;x=[];while(gU){if(L1){if(F){C+=b.slice(0,b.length-1);b=b.charAt(b.length-1)}else{C+=b;b=""}}I=e.now();e(C)({type:"tableCell",children:m.tokenizeInline(k,I)},y)}e(b+F);b="";k=""}}else{if(b){k+=b;b=""}k+=F;if(F===f&&g!==w-2){k+=R.charAt(g+1);g++}if(F===l){P=1;while(R.charAt(g+1)===F){k+=F;g++;P++}if(!T){T=P}else if(P>=T){T=0}}}O=false;g++}if(!M){e(a+E)}}return N}},function(e,r,t){"use strict";var i=t(211);function resolveJavascriptRegExp(e){if(e===null)return false;if(e.length===0)return false;var r=e,t=/\/([gim]*)$/.exec(e),i="";if(r[0]==="/"){if(t)i=t[1];if(i.length>3)return false;if(r[r.length-i.length-1]!=="/")return false}return true}function constructJavascriptRegExp(e){var r=e,t=/\/([gim]*)$/.exec(e),i="";if(r[0]==="/"){if(t)i=t[1];r=r.slice(1,r.length-i.length-1)}return new RegExp(r,i)}function representJavascriptRegExp(e){var r="/"+e.source+"/";if(e.global)r+="g";if(e.multiline)r+="m";if(e.ignoreCase)r+="i";return r}function isRegExp(e){return Object.prototype.toString.call(e)==="[object RegExp]"}e.exports=new i("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:resolveJavascriptRegExp,construct:constructJavascriptRegExp,predicate:isRegExp,represent:representJavascriptRegExp})},,,,,,,,,function(e){"use strict";e.exports=markdownTable;var r=/\./;var t=/\.[^.]*$/;var i="l";var n="r";var a="c";var u=".";var s="";var o=[i,n,a,u,s];var f=3;var l=":";var c="-";var h="|";var p=" ";var v="\n";function markdownTable(e,t){var d=t||{};var D=d.delimiter;var m=d.start;var g=d.end;var E=d.align;var A=d.stringLength||lengthNoop;var C=0;var y=-1;var w=e.length;var x=[];var b;var F;var S;var B;var k;var O;var P;var T;var I;var M;var L;var R;E=E?E.concat():[];if(D===null||D===undefined){D=p+h+p}if(m===null||m===undefined){m=h+p}if(g===null||g===undefined){g=p+h}while(++yC){C=B.length}while(++Ox[O]){x[O]=P}}}if(typeof E==="string"){E=pad(C,E).split("")}O=-1;while(++Ox[O]){x[O]=T}}}y=-1;while(++yf?M:f}else{M=x[O]}b=E[O];I=b===n||b===s?c:l;I+=pad(M-2,c);I+=b!==i&&b!==s?l:c;F[O]=I}S.splice(1,0,F.join(D))}return m+S.join(g+v+m)+g}function stringify(e){return e===null||e===undefined?"":String(e)}function lengthNoop(e){return String(e).length}function pad(e,r){return new Array(e+1).join(r||p)}function dotindex(e){var r=t.exec(e);return r?r.index+1:e.length}},,,,,function(e,r,t){e.exports=t(688)},,,,,function(e,r,t){"use strict";var i=t(12);e.exports=Writable;function WriteReq(e,r,t){this.chunk=e;this.encoding=r;this.callback=t;this.next=null}function CorkedRequest(e){var r=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(r,e)}}var n=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:i.nextTick;var a;Writable.WritableState=WritableState;var u=t(683);u.inherits=t(780);var s={deprecate:t(507)};var o=t(569);var f=t(945).Buffer;var l=global.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return f.from(e)}function _isUint8Array(e){return f.isBuffer(e)||e instanceof l}var c=t(972);u.inherits(Writable,o);function nop(){}function WritableState(e,r){a=a||t(98);e=e||{};var i=r instanceof a;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.writableObjectMode;var n=e.highWaterMark;var u=e.writableHighWaterMark;var s=this.objectMode?16:16*1024;if(n||n===0)this.highWaterMark=n;else if(i&&(u||u===0))this.highWaterMark=u;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var o=e.decodeStrings===false;this.decodeStrings=!o;this.defaultEncoding=e.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(r,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var r=[];while(e){r.push(e);e=e.next}return r};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:s.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(e){}})();var h;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){h=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function(e){if(h.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{h=function(e){return e instanceof this}}function Writable(e){a=a||t(98);if(!h.call(Writable,this)&&!(this instanceof a)){return new Writable(e)}this._writableState=new WritableState(e,this);this.writable=true;if(e){if(typeof e.write==="function")this._write=e.write;if(typeof e.writev==="function")this._writev=e.writev;if(typeof e.destroy==="function")this._destroy=e.destroy;if(typeof e.final==="function")this._final=e.final}o.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(e,r){var t=new Error("write after end");e.emit("error",t);i.nextTick(r,t)}function validChunk(e,r,t,n){var a=true;var u=false;if(t===null){u=new TypeError("May not write null values to stream")}else if(typeof t!=="string"&&t!==undefined&&!r.objectMode){u=new TypeError("Invalid non-string/buffer chunk")}if(u){e.emit("error",u);i.nextTick(n,u);a=false}return a}Writable.prototype.write=function(e,r,t){var i=this._writableState;var n=false;var a=!i.objectMode&&_isUint8Array(e);if(a&&!f.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof r==="function"){t=r;r=null}if(a)r="buffer";else if(!r)r=i.defaultEncoding;if(typeof t!=="function")t=nop;if(i.ended)writeAfterEnd(this,t);else if(a||validChunk(this,i,e,t)){i.pendingcb++;n=writeOrBuffer(this,i,a,e,r,t)}return n};Writable.prototype.cork=function(){var e=this._writableState;e.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e==="string")e=e.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e;return this};function decodeChunk(e,r,t){if(!e.objectMode&&e.decodeStrings!==false&&typeof r==="string"){r=f.from(r,t)}return r}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(e,r,t,i,n,a){if(!t){var u=decodeChunk(r,i,n);if(i!==u){t=true;n="buffer";i=u}}var s=r.objectMode?1:i.length;r.length+=s;var o=r.length=b){b=0}}else if(E===v){g++;B+=r.charAt(g)}else if((!b||y)&&E===p){L++}else if((!b||y)&&E===d){if(L){L--}else{if(!A){while(gn){return false}}return check(e,i,t)&&check(e,m)}function isKnown(e,r,t){var i=o?o.indexOf(e)!==-1:true;if(!i){h.warn("Unknown rule: cannot "+r+" `'"+e+"'`",t)}return i}function getState(e){var r=e?D[e]:m;if(r&&r.length!==0){return r[r.length-1].state}if(!e){return!f}if(f){return l.indexOf(e)!==-1}return c.indexOf(e)===-1}function toggle(e,r,t){var i=t?D[t]:m;var n;var a;if(!i){i=[];D[t]=i}a=getState(t);n=r;if(n!==a){i.push({state:n,position:e})}if(!t){for(t in D){toggle(e,r,t)}}}function check(e,r,t){var i=r&&r.length;var n=-1;var a;while(--i>n){a=r[i];if(!a.position||!a.position.line||!a.position.column){continue}if(a.position.line=e){return}if(u){s.push({start:n,end:e});u=false}n=e}}},,function(e){"use strict";e.exports=orderedItems;var r="\n";var t=".";var i=r+r;function orderedItems(e){var n=this;var a=n.visitors.listItem;var u=n.options.incrementListMarker;var s=[];var o=e.start;var f=e.children;var l=f.length;var c=-1;var h;o=o==null?1:o;while(++c1;var p=c;var v=r.path;if(!u(p)){a("Not copying");return i()}p=f(e.cwd,p);a("Copying `%s`",v);s(p,onstatfile);function onstatfile(e,r){if(e){if(e.code!=="ENOENT"||c.charAt(c.length-1)===n.sep){return i(new Error("Cannot read output directory. Error:\n"+e.message))}s(o(p),onstatparent)}else{done(r.isDirectory())}}function onstatparent(e){if(e){i(new Error("Cannot read parent directory. Error:\n"+e.message))}else{done(false)}}function done(e){if(!e&&h){return i(new Error("Cannot write multiple files to single output: "+p))}r[e?"dirname":"path"]=l(r.cwd,p);a("Copying document from %s to %s",v,r.path);i()}}},function(e,r){"use strict";var t="[a-zA-Z_:][a-zA-Z0-9:._-]*";var i="[^\"'=<>`\\u0000-\\u0020]+";var n="'[^']*'";var a='"[^"]*"';var u="(?:"+i+"|"+n+"|"+a+")";var s="(?:\\s+"+t+"(?:\\s*=\\s*"+u+")?)";var o="<[A-Za-z][A-Za-z0-9\\-]*"+s+"*\\s*\\/?>";var f="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";var l="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e";var c="<[?].*?[?]>";var h="]*>";var p="";r.openCloseTag=new RegExp("^(?:"+o+"|"+f+")");r.tag=new RegExp("^(?:"+o+"|"+f+"|"+l+"|"+c+"|"+h+"|"+p+")")},,function(e){e.exports=require("path")},,,,function(e,r,t){"use strict";var i=t(36);var n=t(171);var a=t(511);e.exports=strong;strong.locator=a;var u="\\";var s="*";var o="_";function strong(e,r,t){var a=this;var f=0;var l=r.charAt(f);var c;var h;var p;var v;var d;var D;var m;if(l!==s&&l!==o||r.charAt(++f)!==l){return}h=a.options.pedantic;p=l;d=p+p;D=r.length;f++;v="";l="";if(h&&n(r.charAt(f))){return}while(f0){return parse(e)}else if(t==="number"&&isNaN(e)===false){return r.long?fmtLong(e):fmtShort(e)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function parse(e){e=String(e);if(e.length>100){return}var s=/^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!s){return}var o=parseFloat(s[1]);var f=(s[2]||"ms").toLowerCase();switch(f){case"years":case"year":case"yrs":case"yr":case"y":return o*u;case"weeks":case"week":case"w":return o*a;case"days":case"day":case"d":return o*n;case"hours":case"hour":case"hrs":case"hr":case"h":return o*i;case"minutes":case"minute":case"mins":case"min":case"m":return o*t;case"seconds":case"second":case"secs":case"sec":case"s":return o*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return undefined}}function fmtShort(e){var a=Math.abs(e);if(a>=n){return Math.round(e/n)+"d"}if(a>=i){return Math.round(e/i)+"h"}if(a>=t){return Math.round(e/t)+"m"}if(a>=r){return Math.round(e/r)+"s"}return e+"ms"}function fmtLong(e){var a=Math.abs(e);if(a>=n){return plural(e,a,n,"day")}if(a>=i){return plural(e,a,i,"hour")}if(a>=t){return plural(e,a,t,"minute")}if(a>=r){return plural(e,a,r,"second")}return e+" ms"}function plural(e,r,t,i){var n=r>=t*1.5;return Math.round(e/t)+" "+i+(n?"s":"")}},function(e,r){r.parse=r.decode=decode;r.stringify=r.encode=encode;r.safe=safe;r.unsafe=unsafe;var t=typeof process!=="undefined"&&process.platform==="win32"?"\r\n":"\n";function encode(e,r){var i=[];var n="";if(typeof r==="string"){r={section:r,whitespace:false}}else{r=r||{};r.whitespace=r.whitespace===true}var a=r.whitespace?" = ":"=";Object.keys(e).forEach(function(r,u,s){var o=e[r];if(o&&Array.isArray(o)){o.forEach(function(e){n+=safe(r+"[]")+a+safe(e)+"\n"})}else if(o&&typeof o==="object"){i.push(r)}else{n+=safe(r)+a+safe(o)+t}});if(r.section&&n.length){n="["+safe(r.section)+"]"+t+n}i.forEach(function(i,a,u){var s=dotSplit(i).join("\\.");var o=(r.section?r.section+".":"")+s;var f=encode(e[i],{section:o,whitespace:r.whitespace});if(n.length&&f.length){n+=t}n+=f});return n}function dotSplit(e){return e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(function(e){return e.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")})}function decode(e){var r={};var t=r;var i=null;var n=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i;var a=e.split(/[\r\n]+/g);a.forEach(function(e,a,u){if(!e||e.match(/^\s*[;#]/))return;var s=e.match(n);if(!s)return;if(s[1]!==undefined){i=unsafe(s[1]);t=r[i]=r[i]||{};return}var o=unsafe(s[2]);var f=s[3]?unsafe(s[4]):true;switch(f){case"true":case"false":case"null":f=JSON.parse(f)}if(o.length>2&&o.slice(-2)==="[]"){o=o.substring(0,o.length-2);if(!t[o]){t[o]=[]}else if(!Array.isArray(t[o])){t[o]=[t[o]]}}if(Array.isArray(t[o])){t[o].push(f)}else{t[o]=f}});Object.keys(r).filter(function(e,t,i){if(!r[e]||typeof r[e]!=="object"||Array.isArray(r[e])){return false}var n=dotSplit(e);var a=r;var u=n.pop();var s=u.replace(/\\\./g,".");n.forEach(function(e,r,t){if(!a[e]||typeof a[e]!=="object")a[e]={};a=a[e]});if(a===r&&s===u){return false}a[s]=r[e];return true}).forEach(function(e,t,i){delete r[e]});return r}function isQuoted(e){return e.charAt(0)==='"'&&e.slice(-1)==='"'||e.charAt(0)==="'"&&e.slice(-1)==="'"}function safe(e){return typeof e!=="string"||e.match(/[=\r\n]/)||e.match(/^\[/)||e.length>1&&isQuoted(e)||e!==e.trim()?JSON.stringify(e):e.replace(/;/g,"\\;").replace(/#/g,"\\#")}function unsafe(e,r){e=(e||"").trim();if(isQuoted(e)){if(e.charAt(0)==="'"){e=e.substr(1,e.length-2)}try{e=JSON.parse(e)}catch(e){}}else{var t=false;var i="";for(var n=0,a=e.length;n="a"&&e<="z"||e>="A"&&e<="Z"||e==="$"||e==="_"||n.ID_Start.test(e)}function isIdContinueChar(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||e==="$"||e==="_"||e==="‌"||e==="‍"||n.ID_Continue.test(e)}function isDigit(e){return/[0-9]/.test(e)}function isHexDigit(e){return/[0-9A-Fa-f]/.test(e)}},,function(e){"use strict";e.exports=(e=>{if(Number.isNaN(e)){return false}if(e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141)){return true}return false})},,,,,,,,,function(e,r,t){"use strict";e.exports.plugins=[t(889),t(424),t(725),t(137),t(339),t(767),t(550),t(550),[t(890),"space"],t(164),t(223),t(127),t(816),t(667),t(380),t(911),t(33),t(758),t(9),t(273),t(926),t(121),t(55),t(72),t(522),t(842),t(467),t(314),[t(166),2],[t(112),{checked:"x",unchecked:" "}],[t(301),"fenced"],[t(386),"`"],[t(451),"md"],[t(284),1],[t(675),"atx"],[t(455),[{no:"End-Of-Life",yes:"End-of-Life"},{no:"End-of-life",yes:"End-of-Life"},{no:"Github",yes:"GitHub"},{no:"Javascript",yes:"JavaScript"},{no:"Node.JS",yes:"Node.js"},{no:"Rfc",yes:"RFC"},{no:"[Rr][Ff][Cc]\\d+",yes:"RFC "},{no:"rfc",yes:"RFC"},{no:"v8",yes:"V8"}]],[t(108),"*"],[t(435),"padded"]]},,function(e){e.exports=["cent","copy","divide","gt","lt","not","para","times"]},,function(e,r,t){"use strict";e.exports=t(447)},function(e,r,t){e.exports=minimatch;minimatch.Minimatch=Minimatch;var i={sep:"/"};try{i=t(589)}catch(e){}var n=minimatch.GLOBSTAR=Minimatch.GLOBSTAR={};var a=t(348);var u={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}};var s="[^/]";var o=s+"*?";var f="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";var l="(?:(?!(?:\\/|^)\\.).)*?";var c=charSet("().*{}+?[]^$\\!");function charSet(e){return e.split("").reduce(function(e,r){e[r]=true;return e},{})}var h=/\/+/;minimatch.filter=filter;function filter(e,r){r=r||{};return function(t,i,n){return minimatch(t,e,r)}}function ext(e,r){e=e||{};r=r||{};var t={};Object.keys(r).forEach(function(e){t[e]=r[e]});Object.keys(e).forEach(function(r){t[r]=e[r]});return t}minimatch.defaults=function(e){if(!e||!Object.keys(e).length)return minimatch;var r=minimatch;var t=function minimatch(t,i,n){return r.minimatch(t,i,ext(e,n))};t.Minimatch=function Minimatch(t,i){return new r.Minimatch(t,ext(e,i))};return t};Minimatch.defaults=function(e){if(!e||!Object.keys(e).length)return Minimatch;return minimatch.defaults(e).Minimatch};function minimatch(e,r,t){if(typeof r!=="string"){throw new TypeError("glob pattern string required")}if(!t)t={};if(!t.nocomment&&r.charAt(0)==="#"){return false}if(r.trim()==="")return e==="";return new Minimatch(r,t).match(e)}function Minimatch(e,r){if(!(this instanceof Minimatch)){return new Minimatch(e,r)}if(typeof e!=="string"){throw new TypeError("glob pattern string required")}if(!r)r={};e=e.trim();if(i.sep!=="/"){e=e.split(i.sep).join("/")}this.options=r;this.set=[];this.pattern=e;this.regexp=null;this.negate=false;this.comment=false;this.empty=false;this.make()}Minimatch.prototype.debug=function(){};Minimatch.prototype.make=make;function make(){if(this._made)return;var e=this.pattern;var r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=true;return}if(!e){this.empty=true;return}this.parseNegate();var t=this.globSet=this.braceExpand();if(r.debug)this.debug=console.error;this.debug(this.pattern,t);t=this.globParts=t.map(function(e){return e.split(h)});this.debug(this.pattern,t);t=t.map(function(e,r,t){return e.map(this.parse,this)},this);this.debug(this.pattern,t);t=t.filter(function(e){return e.indexOf(false)===-1});this.debug(this.pattern,t);this.set=t}Minimatch.prototype.parseNegate=parseNegate;function parseNegate(){var e=this.pattern;var r=false;var t=this.options;var i=0;if(t.nonegate)return;for(var n=0,a=e.length;n1024*64){throw new TypeError("pattern is too long")}var t=this.options;if(!t.noglobstar&&e==="**")return n;if(e==="")return"";var i="";var a=!!t.nocase;var f=false;var l=[];var h=[];var v;var d=false;var D=-1;var m=-1;var g=e.charAt(0)==="."?"":t.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)";var E=this;function clearStateChar(){if(v){switch(v){case"*":i+=o;a=true;break;case"?":i+=s;a=true;break;default:i+="\\"+v;break}E.debug("clearStateChar %j %j",v,i);v=false}}for(var A=0,C=e.length,y;A-1;k--){var O=h[k];var P=i.slice(0,O.reStart);var T=i.slice(O.reStart,O.reEnd-8);var I=i.slice(O.reEnd-8,O.reEnd);var M=i.slice(O.reEnd);I+=M;var L=P.split("(").length-1;var R=M;for(A=0;A=0;u--){a=e[u];if(a)break}for(u=0;u>> no match, partial?",e,c,r,h);if(c===s)return true}return false}var v;if(typeof f==="string"){if(i.nocase){v=l.toLowerCase()===f.toLowerCase()}else{v=l===f}this.debug("string match",f,l,v)}else{v=l.match(f);this.debug("pattern match",f,l,v)}if(!v)return false}if(a===s&&u===o){return true}else if(a===s){return t}else if(u===o){var d=a===s-1&&e[a]==="";return d}throw new Error("wtf?")};function globUnescape(e){return e.replace(/\\(.)/g,"$1")}function regExpEscape(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}},,,function(e){"use strict";e.exports=function(e){if(typeof e!=="function"){throw new TypeError("Expected a function")}return e.displayName||e.name||(/function ([^\(]+)?\(/.exec(e.toString())||[])[1]||null}},function(e){"use strict";e.exports=(()=>{const e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"].join("|");return new RegExp(e,"g")})},,,function(e,r,t){"use strict";var i=t(304);var n=t(948);e.exports=fileSystem;function fileSystem(e,r,t){var a=e.files;if(a.length===0){t()}else{n(a,{cwd:r.cwd,extensions:r.extensions,silentlyIgnore:r.silentlyIgnore,ignore:new i({cwd:r.cwd,detectIgnore:r.detectIgnore,ignoreName:r.ignoreName,ignorePath:r.ignorePath})},onfound)}function onfound(i,n){var a=n.files;a.sort(sortAlphabetically);a.forEach(markAsGiven);e.files=a;if(r.out===null||r.out===undefined){r.out=n.oneFileMode}t(i)}function markAsGiven(e){e.data.unifiedEngineGiven=true}function sortAlphabetically(e,r){return e.pathi){i=t}}else{t=1}n=a+1;a=e.indexOf(r,n)}return i}},function(e,r,t){"use strict";var i=t(347)("unified-engine:file-pipeline:stdout");var n=t(928);e.exports=stdout;function stdout(e,r,t,a){if(!r.data.unifiedEngineGiven){i("Ignoring programmatically added file");a()}else if(n(r).fatal||e.output||!e.out){i("Ignoring writing to `streamOut`");a()}else{i("Writing document to `streamOut`");e.streamOut.write(r.toString(),a)}}},,,function(e,r,t){"use strict";var i=t(56);var n=t(503);e.exports=toVFile;function toVFile(e){if(typeof e==="string"||i(e)){e={path:String(e)}}return n(e)}},,,,function(e){(function webpackUniversalModuleDefinition(r,t){if(true)e.exports=t();else{}})(this,function(){return function(e){var r={};function __webpack_require__(t){if(r[t])return r[t].exports;var i=r[t]={exports:{},id:t,loaded:false};e[t].call(i.exports,i,i.exports,__webpack_require__);i.loaded=true;return i.exports}__webpack_require__.m=e;__webpack_require__.c=r;__webpack_require__.p="";return __webpack_require__(0)}([function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(1);var n=t(3);var a=t(8);var u=t(15);function parse(e,r,t){var u=null;var s=function(e,r){if(t){t(e,r)}if(u){u.visit(e,r)}};var o=typeof t==="function"?s:null;var f=false;if(r){f=typeof r.comment==="boolean"&&r.comment;var l=typeof r.attachComment==="boolean"&&r.attachComment;if(f||l){u=new i.CommentHandler;u.attach=l;r.comment=true;o=s}}var c=false;if(r&&typeof r.sourceType==="string"){c=r.sourceType==="module"}var h;if(r&&typeof r.jsx==="boolean"&&r.jsx){h=new n.JSXParser(e,r,o)}else{h=new a.Parser(e,r,o)}var p=c?h.parseModule():h.parseScript();var v=p;if(f&&u){v.comments=u.comments}if(h.config.tokens){v.tokens=h.tokens}if(h.config.tolerant){v.errors=h.errorHandler.errors}return v}r.parse=parse;function parseModule(e,r,t){var i=r||{};i.sourceType="module";return parse(e,i,t)}r.parseModule=parseModule;function parseScript(e,r,t){var i=r||{};i.sourceType="script";return parse(e,i,t)}r.parseScript=parseScript;function tokenize(e,r,t){var i=new u.Tokenizer(e,r);var n;n=[];try{while(true){var a=i.getNextToken();if(!a){break}if(t){a=t(a)}n.push(a)}}catch(e){i.errorHandler.tolerate(e)}if(i.errorHandler.tolerant){n.errors=i.errors()}return n}r.tokenize=tokenize;var s=t(2);r.Syntax=s.Syntax;r.version="4.0.1"},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(2);var n=function(){function CommentHandler(){this.attach=false;this.comments=[];this.stack=[];this.leading=[];this.trailing=[]}CommentHandler.prototype.insertInnerComments=function(e,r){if(e.type===i.Syntax.BlockStatement&&e.body.length===0){var t=[];for(var n=this.leading.length-1;n>=0;--n){var a=this.leading[n];if(r.end.offset>=a.start){t.unshift(a.comment);this.leading.splice(n,1);this.trailing.splice(n,1)}}if(t.length){e.innerComments=t}}};CommentHandler.prototype.findTrailingComments=function(e){var r=[];if(this.trailing.length>0){for(var t=this.trailing.length-1;t>=0;--t){var i=this.trailing[t];if(i.start>=e.end.offset){r.unshift(i.comment)}}this.trailing.length=0;return r}var n=this.stack[this.stack.length-1];if(n&&n.node.trailingComments){var a=n.node.trailingComments[0];if(a&&a.range[0]>=e.end.offset){r=n.node.trailingComments;delete n.node.trailingComments}}return r};CommentHandler.prototype.findLeadingComments=function(e){var r=[];var t;while(this.stack.length>0){var i=this.stack[this.stack.length-1];if(i&&i.start>=e.start.offset){t=i.node;this.stack.pop()}else{break}}if(t){var n=t.leadingComments?t.leadingComments.length:0;for(var a=n-1;a>=0;--a){var u=t.leadingComments[a];if(u.range[1]<=e.start.offset){r.unshift(u);t.leadingComments.splice(a,1)}}if(t.leadingComments&&t.leadingComments.length===0){delete t.leadingComments}return r}for(var a=this.leading.length-1;a>=0;--a){var i=this.leading[a];if(i.start<=e.start.offset){r.unshift(i.comment);this.leading.splice(a,1)}}return r};CommentHandler.prototype.visitNode=function(e,r){if(e.type===i.Syntax.Program&&e.body.length>0){return}this.insertInnerComments(e,r);var t=this.findTrailingComments(r);var n=this.findLeadingComments(r);if(n.length>0){e.leadingComments=n}if(t.length>0){e.trailingComments=t}this.stack.push({node:e,start:r.start.offset})};CommentHandler.prototype.visitComment=function(e,r){var t=e.type[0]==="L"?"Line":"Block";var i={type:t,value:e.value};if(e.range){i.range=e.range}if(e.loc){i.loc=e.loc}this.comments.push(i);if(this.attach){var n={comment:{type:t,value:e.value,range:[r.start.offset,r.end.offset]},start:r.start.offset};if(e.loc){n.comment.loc=e.loc}e.type=t;this.leading.push(n);this.trailing.push(n)}};CommentHandler.prototype.visit=function(e,r){if(e.type==="LineComment"){this.visitComment(e,r)}else if(e.type==="BlockComment"){this.visitComment(e,r)}else if(this.attach){this.visitNode(e,r)}};return CommentHandler}();r.CommentHandler=n},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(e,r,t){"use strict";var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)if(r.hasOwnProperty(t))e[t]=r[t]};return function(r,t){e(r,t);function __(){this.constructor=r}r.prototype=t===null?Object.create(t):(__.prototype=t.prototype,new __)}}();Object.defineProperty(r,"__esModule",{value:true});var n=t(4);var a=t(5);var u=t(6);var s=t(7);var o=t(8);var f=t(13);var l=t(14);f.TokenName[100]="JSXIdentifier";f.TokenName[101]="JSXText";function getQualifiedElementName(e){var r;switch(e.type){case u.JSXSyntax.JSXIdentifier:var t=e;r=t.name;break;case u.JSXSyntax.JSXNamespacedName:var i=e;r=getQualifiedElementName(i.namespace)+":"+getQualifiedElementName(i.name);break;case u.JSXSyntax.JSXMemberExpression:var n=e;r=getQualifiedElementName(n.object)+"."+getQualifiedElementName(n.property);break;default:break}return r}var c=function(e){i(JSXParser,e);function JSXParser(r,t,i){return e.call(this,r,t,i)||this}JSXParser.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():e.prototype.parsePrimaryExpression.call(this)};JSXParser.prototype.startJSX=function(){this.scanner.index=this.startMarker.index;this.scanner.lineNumber=this.startMarker.line;this.scanner.lineStart=this.startMarker.index-this.startMarker.column};JSXParser.prototype.finishJSX=function(){this.nextToken()};JSXParser.prototype.reenterJSX=function(){this.startJSX();this.expectJSX("}");if(this.config.tokens){this.tokens.pop()}};JSXParser.prototype.createJSXNode=function(){this.collectComments();return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}};JSXParser.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}};JSXParser.prototype.scanXHTMLEntity=function(e){var r="&";var t=true;var i=false;var a=false;var u=false;while(!this.scanner.eof()&&t&&!i){var s=this.scanner.source[this.scanner.index];if(s===e){break}i=s===";";r+=s;++this.scanner.index;if(!i){switch(r.length){case 2:a=s==="#";break;case 3:if(a){u=s==="x";t=u||n.Character.isDecimalDigit(s.charCodeAt(0));a=a&&!u}break;default:t=t&&!(a&&!n.Character.isDecimalDigit(s.charCodeAt(0)));t=t&&!(u&&!n.Character.isHexDigit(s.charCodeAt(0)));break}}}if(t&&i&&r.length>2){var o=r.substr(1,r.length-2);if(a&&o.length>1){r=String.fromCharCode(parseInt(o.substr(1),10))}else if(u&&o.length>2){r=String.fromCharCode(parseInt("0"+o.substr(1),16))}else if(!a&&!u&&l.XHTMLEntities[o]){r=l.XHTMLEntities[o]}}return r};JSXParser.prototype.lexJSX=function(){var e=this.scanner.source.charCodeAt(this.scanner.index);if(e===60||e===62||e===47||e===58||e===61||e===123||e===125){var r=this.scanner.source[this.scanner.index++];return{type:7,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index}}if(e===34||e===39){var t=this.scanner.index;var i=this.scanner.source[this.scanner.index++];var a="";while(!this.scanner.eof()){var u=this.scanner.source[this.scanner.index++];if(u===i){break}else if(u==="&"){a+=this.scanXHTMLEntity(i)}else{a+=u}}return{type:8,value:a,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(e===46){var s=this.scanner.source.charCodeAt(this.scanner.index+1);var o=this.scanner.source.charCodeAt(this.scanner.index+2);var r=s===46&&o===46?"...":".";var t=this.scanner.index;this.scanner.index+=r.length;return{type:7,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(e===96){return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index}}if(n.Character.isIdentifierStart(e)&&e!==92){var t=this.scanner.index;++this.scanner.index;while(!this.scanner.eof()){var u=this.scanner.source.charCodeAt(this.scanner.index);if(n.Character.isIdentifierPart(u)&&u!==92){++this.scanner.index}else if(u===45){++this.scanner.index}else{break}}var f=this.scanner.source.slice(t,this.scanner.index);return{type:100,value:f,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}return this.scanner.lex()};JSXParser.prototype.nextJSXToken=function(){this.collectComments();this.startMarker.index=this.scanner.index;this.startMarker.line=this.scanner.lineNumber;this.startMarker.column=this.scanner.index-this.scanner.lineStart;var e=this.lexJSX();this.lastMarker.index=this.scanner.index;this.lastMarker.line=this.scanner.lineNumber;this.lastMarker.column=this.scanner.index-this.scanner.lineStart;if(this.config.tokens){this.tokens.push(this.convertToken(e))}return e};JSXParser.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index;this.startMarker.line=this.scanner.lineNumber;this.startMarker.column=this.scanner.index-this.scanner.lineStart;var e=this.scanner.index;var r="";while(!this.scanner.eof()){var t=this.scanner.source[this.scanner.index];if(t==="{"||t==="<"){break}++this.scanner.index;r+=t;if(n.Character.isLineTerminator(t.charCodeAt(0))){++this.scanner.lineNumber;if(t==="\r"&&this.scanner.source[this.scanner.index]==="\n"){++this.scanner.index}this.scanner.lineStart=this.scanner.index}}this.lastMarker.index=this.scanner.index;this.lastMarker.line=this.scanner.lineNumber;this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var i={type:101,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:e,end:this.scanner.index};if(r.length>0&&this.config.tokens){this.tokens.push(this.convertToken(i))}return i};JSXParser.prototype.peekJSXToken=function(){var e=this.scanner.saveState();this.scanner.scanComments();var r=this.lexJSX();this.scanner.restoreState(e);return r};JSXParser.prototype.expectJSX=function(e){var r=this.nextJSXToken();if(r.type!==7||r.value!==e){this.throwUnexpectedToken(r)}};JSXParser.prototype.matchJSX=function(e){var r=this.peekJSXToken();return r.type===7&&r.value===e};JSXParser.prototype.parseJSXIdentifier=function(){var e=this.createJSXNode();var r=this.nextJSXToken();if(r.type!==100){this.throwUnexpectedToken(r)}return this.finalize(e,new a.JSXIdentifier(r.value))};JSXParser.prototype.parseJSXElementName=function(){var e=this.createJSXNode();var r=this.parseJSXIdentifier();if(this.matchJSX(":")){var t=r;this.expectJSX(":");var i=this.parseJSXIdentifier();r=this.finalize(e,new a.JSXNamespacedName(t,i))}else if(this.matchJSX(".")){while(this.matchJSX(".")){var n=r;this.expectJSX(".");var u=this.parseJSXIdentifier();r=this.finalize(e,new a.JSXMemberExpression(n,u))}}return r};JSXParser.prototype.parseJSXAttributeName=function(){var e=this.createJSXNode();var r;var t=this.parseJSXIdentifier();if(this.matchJSX(":")){var i=t;this.expectJSX(":");var n=this.parseJSXIdentifier();r=this.finalize(e,new a.JSXNamespacedName(i,n))}else{r=t}return r};JSXParser.prototype.parseJSXStringLiteralAttribute=function(){var e=this.createJSXNode();var r=this.nextJSXToken();if(r.type!==8){this.throwUnexpectedToken(r)}var t=this.getTokenRaw(r);return this.finalize(e,new s.Literal(r.value,t))};JSXParser.prototype.parseJSXExpressionAttribute=function(){var e=this.createJSXNode();this.expectJSX("{");this.finishJSX();if(this.match("}")){this.tolerateError("JSX attributes must only be assigned a non-empty expression")}var r=this.parseAssignmentExpression();this.reenterJSX();return this.finalize(e,new a.JSXExpressionContainer(r))};JSXParser.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()};JSXParser.prototype.parseJSXNameValueAttribute=function(){var e=this.createJSXNode();var r=this.parseJSXAttributeName();var t=null;if(this.matchJSX("=")){this.expectJSX("=");t=this.parseJSXAttributeValue()}return this.finalize(e,new a.JSXAttribute(r,t))};JSXParser.prototype.parseJSXSpreadAttribute=function(){var e=this.createJSXNode();this.expectJSX("{");this.expectJSX("...");this.finishJSX();var r=this.parseAssignmentExpression();this.reenterJSX();return this.finalize(e,new a.JSXSpreadAttribute(r))};JSXParser.prototype.parseJSXAttributes=function(){var e=[];while(!this.matchJSX("/")&&!this.matchJSX(">")){var r=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();e.push(r)}return e};JSXParser.prototype.parseJSXOpeningElement=function(){var e=this.createJSXNode();this.expectJSX("<");var r=this.parseJSXElementName();var t=this.parseJSXAttributes();var i=this.matchJSX("/");if(i){this.expectJSX("/")}this.expectJSX(">");return this.finalize(e,new a.JSXOpeningElement(r,i,t))};JSXParser.prototype.parseJSXBoundaryElement=function(){var e=this.createJSXNode();this.expectJSX("<");if(this.matchJSX("/")){this.expectJSX("/");var r=this.parseJSXElementName();this.expectJSX(">");return this.finalize(e,new a.JSXClosingElement(r))}var t=this.parseJSXElementName();var i=this.parseJSXAttributes();var n=this.matchJSX("/");if(n){this.expectJSX("/")}this.expectJSX(">");return this.finalize(e,new a.JSXOpeningElement(t,n,i))};JSXParser.prototype.parseJSXEmptyExpression=function(){var e=this.createJSXChildNode();this.collectComments();this.lastMarker.index=this.scanner.index;this.lastMarker.line=this.scanner.lineNumber;this.lastMarker.column=this.scanner.index-this.scanner.lineStart;return this.finalize(e,new a.JSXEmptyExpression)};JSXParser.prototype.parseJSXExpressionContainer=function(){var e=this.createJSXNode();this.expectJSX("{");var r;if(this.matchJSX("}")){r=this.parseJSXEmptyExpression();this.expectJSX("}")}else{this.finishJSX();r=this.parseAssignmentExpression();this.reenterJSX()}return this.finalize(e,new a.JSXExpressionContainer(r))};JSXParser.prototype.parseJSXChildren=function(){var e=[];while(!this.scanner.eof()){var r=this.createJSXChildNode();var t=this.nextJSXText();if(t.start0){var s=this.finalize(e.node,new a.JSXElement(e.opening,e.children,e.closing));e=r[r.length-1];e.children.push(s);r.pop()}else{break}}}return e};JSXParser.prototype.parseJSXElement=function(){var e=this.createJSXNode();var r=this.parseJSXOpeningElement();var t=[];var i=null;if(!r.selfClosing){var n=this.parseComplexJSXElement({node:e,opening:r,closing:i,children:t});t=n.children;i=n.closing}return this.finalize(e,new a.JSXElement(r,t,i))};JSXParser.prototype.parseJSXRoot=function(){if(this.config.tokens){this.tokens.pop()}this.startJSX();var e=this.parseJSXElement();this.finishJSX();return e};JSXParser.prototype.isStartOfExpression=function(){return e.prototype.isStartOfExpression.call(this)||this.match("<")};return JSXParser}(o.Parser);r.JSXParser=c},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var t={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};r.Character={fromCodePoint:function(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace:function(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0},isLineTerminator:function(e){return e===10||e===13||e===8232||e===8233},isIdentifierStart:function(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&t.NonAsciiIdentifierStart.test(r.Character.fromCodePoint(e))},isIdentifierPart:function(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&t.NonAsciiIdentifierPart.test(r.Character.fromCodePoint(e))},isDecimalDigit:function(e){return e>=48&&e<=57},isHexDigit:function(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit:function(e){return e>=48&&e<=55}}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(6);var n=function(){function JSXClosingElement(e){this.type=i.JSXSyntax.JSXClosingElement;this.name=e}return JSXClosingElement}();r.JSXClosingElement=n;var a=function(){function JSXElement(e,r,t){this.type=i.JSXSyntax.JSXElement;this.openingElement=e;this.children=r;this.closingElement=t}return JSXElement}();r.JSXElement=a;var u=function(){function JSXEmptyExpression(){this.type=i.JSXSyntax.JSXEmptyExpression}return JSXEmptyExpression}();r.JSXEmptyExpression=u;var s=function(){function JSXExpressionContainer(e){this.type=i.JSXSyntax.JSXExpressionContainer;this.expression=e}return JSXExpressionContainer}();r.JSXExpressionContainer=s;var o=function(){function JSXIdentifier(e){this.type=i.JSXSyntax.JSXIdentifier;this.name=e}return JSXIdentifier}();r.JSXIdentifier=o;var f=function(){function JSXMemberExpression(e,r){this.type=i.JSXSyntax.JSXMemberExpression;this.object=e;this.property=r}return JSXMemberExpression}();r.JSXMemberExpression=f;var l=function(){function JSXAttribute(e,r){this.type=i.JSXSyntax.JSXAttribute;this.name=e;this.value=r}return JSXAttribute}();r.JSXAttribute=l;var c=function(){function JSXNamespacedName(e,r){this.type=i.JSXSyntax.JSXNamespacedName;this.namespace=e;this.name=r}return JSXNamespacedName}();r.JSXNamespacedName=c;var h=function(){function JSXOpeningElement(e,r,t){this.type=i.JSXSyntax.JSXOpeningElement;this.name=e;this.selfClosing=r;this.attributes=t}return JSXOpeningElement}();r.JSXOpeningElement=h;var p=function(){function JSXSpreadAttribute(e){this.type=i.JSXSyntax.JSXSpreadAttribute;this.argument=e}return JSXSpreadAttribute}();r.JSXSpreadAttribute=p;var v=function(){function JSXText(e,r){this.type=i.JSXSyntax.JSXText;this.value=e;this.raw=r}return JSXText}();r.JSXText=v},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(2);var n=function(){function ArrayExpression(e){this.type=i.Syntax.ArrayExpression;this.elements=e}return ArrayExpression}();r.ArrayExpression=n;var a=function(){function ArrayPattern(e){this.type=i.Syntax.ArrayPattern;this.elements=e}return ArrayPattern}();r.ArrayPattern=a;var u=function(){function ArrowFunctionExpression(e,r,t){this.type=i.Syntax.ArrowFunctionExpression;this.id=null;this.params=e;this.body=r;this.generator=false;this.expression=t;this.async=false}return ArrowFunctionExpression}();r.ArrowFunctionExpression=u;var s=function(){function AssignmentExpression(e,r,t){this.type=i.Syntax.AssignmentExpression;this.operator=e;this.left=r;this.right=t}return AssignmentExpression}();r.AssignmentExpression=s;var o=function(){function AssignmentPattern(e,r){this.type=i.Syntax.AssignmentPattern;this.left=e;this.right=r}return AssignmentPattern}();r.AssignmentPattern=o;var f=function(){function AsyncArrowFunctionExpression(e,r,t){this.type=i.Syntax.ArrowFunctionExpression;this.id=null;this.params=e;this.body=r;this.generator=false;this.expression=t;this.async=true}return AsyncArrowFunctionExpression}();r.AsyncArrowFunctionExpression=f;var l=function(){function AsyncFunctionDeclaration(e,r,t){this.type=i.Syntax.FunctionDeclaration;this.id=e;this.params=r;this.body=t;this.generator=false;this.expression=false;this.async=true}return AsyncFunctionDeclaration}();r.AsyncFunctionDeclaration=l;var c=function(){function AsyncFunctionExpression(e,r,t){this.type=i.Syntax.FunctionExpression;this.id=e;this.params=r;this.body=t;this.generator=false;this.expression=false;this.async=true}return AsyncFunctionExpression}();r.AsyncFunctionExpression=c;var h=function(){function AwaitExpression(e){this.type=i.Syntax.AwaitExpression;this.argument=e}return AwaitExpression}();r.AwaitExpression=h;var p=function(){function BinaryExpression(e,r,t){var n=e==="||"||e==="&&";this.type=n?i.Syntax.LogicalExpression:i.Syntax.BinaryExpression;this.operator=e;this.left=r;this.right=t}return BinaryExpression}();r.BinaryExpression=p;var v=function(){function BlockStatement(e){this.type=i.Syntax.BlockStatement;this.body=e}return BlockStatement}();r.BlockStatement=v;var d=function(){function BreakStatement(e){this.type=i.Syntax.BreakStatement;this.label=e}return BreakStatement}();r.BreakStatement=d;var D=function(){function CallExpression(e,r){this.type=i.Syntax.CallExpression;this.callee=e;this.arguments=r}return CallExpression}();r.CallExpression=D;var m=function(){function CatchClause(e,r){this.type=i.Syntax.CatchClause;this.param=e;this.body=r}return CatchClause}();r.CatchClause=m;var g=function(){function ClassBody(e){this.type=i.Syntax.ClassBody;this.body=e}return ClassBody}();r.ClassBody=g;var E=function(){function ClassDeclaration(e,r,t){this.type=i.Syntax.ClassDeclaration;this.id=e;this.superClass=r;this.body=t}return ClassDeclaration}();r.ClassDeclaration=E;var A=function(){function ClassExpression(e,r,t){this.type=i.Syntax.ClassExpression;this.id=e;this.superClass=r;this.body=t}return ClassExpression}();r.ClassExpression=A;var C=function(){function ComputedMemberExpression(e,r){this.type=i.Syntax.MemberExpression;this.computed=true;this.object=e;this.property=r}return ComputedMemberExpression}();r.ComputedMemberExpression=C;var y=function(){function ConditionalExpression(e,r,t){this.type=i.Syntax.ConditionalExpression;this.test=e;this.consequent=r;this.alternate=t}return ConditionalExpression}();r.ConditionalExpression=y;var w=function(){function ContinueStatement(e){this.type=i.Syntax.ContinueStatement;this.label=e}return ContinueStatement}();r.ContinueStatement=w;var x=function(){function DebuggerStatement(){this.type=i.Syntax.DebuggerStatement}return DebuggerStatement}();r.DebuggerStatement=x;var b=function(){function Directive(e,r){this.type=i.Syntax.ExpressionStatement;this.expression=e;this.directive=r}return Directive}();r.Directive=b;var F=function(){function DoWhileStatement(e,r){this.type=i.Syntax.DoWhileStatement;this.body=e;this.test=r}return DoWhileStatement}();r.DoWhileStatement=F;var S=function(){function EmptyStatement(){this.type=i.Syntax.EmptyStatement}return EmptyStatement}();r.EmptyStatement=S;var B=function(){function ExportAllDeclaration(e){this.type=i.Syntax.ExportAllDeclaration;this.source=e}return ExportAllDeclaration}();r.ExportAllDeclaration=B;var k=function(){function ExportDefaultDeclaration(e){this.type=i.Syntax.ExportDefaultDeclaration;this.declaration=e}return ExportDefaultDeclaration}();r.ExportDefaultDeclaration=k;var O=function(){function ExportNamedDeclaration(e,r,t){this.type=i.Syntax.ExportNamedDeclaration;this.declaration=e;this.specifiers=r;this.source=t}return ExportNamedDeclaration}();r.ExportNamedDeclaration=O;var P=function(){function ExportSpecifier(e,r){this.type=i.Syntax.ExportSpecifier;this.exported=r;this.local=e}return ExportSpecifier}();r.ExportSpecifier=P;var T=function(){function ExpressionStatement(e){this.type=i.Syntax.ExpressionStatement;this.expression=e}return ExpressionStatement}();r.ExpressionStatement=T;var I=function(){function ForInStatement(e,r,t){this.type=i.Syntax.ForInStatement;this.left=e;this.right=r;this.body=t;this.each=false}return ForInStatement}();r.ForInStatement=I;var M=function(){function ForOfStatement(e,r,t){this.type=i.Syntax.ForOfStatement;this.left=e;this.right=r;this.body=t}return ForOfStatement}();r.ForOfStatement=M;var L=function(){function ForStatement(e,r,t,n){this.type=i.Syntax.ForStatement;this.init=e;this.test=r;this.update=t;this.body=n}return ForStatement}();r.ForStatement=L;var R=function(){function FunctionDeclaration(e,r,t,n){this.type=i.Syntax.FunctionDeclaration;this.id=e;this.params=r;this.body=t;this.generator=n;this.expression=false;this.async=false}return FunctionDeclaration}();r.FunctionDeclaration=R;var j=function(){function FunctionExpression(e,r,t,n){this.type=i.Syntax.FunctionExpression;this.id=e;this.params=r;this.body=t;this.generator=n;this.expression=false;this.async=false}return FunctionExpression}();r.FunctionExpression=j;var N=function(){function Identifier(e){this.type=i.Syntax.Identifier;this.name=e}return Identifier}();r.Identifier=N;var U=function(){function IfStatement(e,r,t){this.type=i.Syntax.IfStatement;this.test=e;this.consequent=r;this.alternate=t}return IfStatement}();r.IfStatement=U;var J=function(){function ImportDeclaration(e,r){this.type=i.Syntax.ImportDeclaration;this.specifiers=e;this.source=r}return ImportDeclaration}();r.ImportDeclaration=J;var z=function(){function ImportDefaultSpecifier(e){this.type=i.Syntax.ImportDefaultSpecifier;this.local=e}return ImportDefaultSpecifier}();r.ImportDefaultSpecifier=z;var X=function(){function ImportNamespaceSpecifier(e){this.type=i.Syntax.ImportNamespaceSpecifier;this.local=e}return ImportNamespaceSpecifier}();r.ImportNamespaceSpecifier=X;var q=function(){function ImportSpecifier(e,r){this.type=i.Syntax.ImportSpecifier;this.local=e;this.imported=r}return ImportSpecifier}();r.ImportSpecifier=q;var G=function(){function LabeledStatement(e,r){this.type=i.Syntax.LabeledStatement;this.label=e;this.body=r}return LabeledStatement}();r.LabeledStatement=G;var _=function(){function Literal(e,r){this.type=i.Syntax.Literal;this.value=e;this.raw=r}return Literal}();r.Literal=_;var W=function(){function MetaProperty(e,r){this.type=i.Syntax.MetaProperty;this.meta=e;this.property=r}return MetaProperty}();r.MetaProperty=W;var V=function(){function MethodDefinition(e,r,t,n,a){this.type=i.Syntax.MethodDefinition;this.key=e;this.computed=r;this.value=t;this.kind=n;this.static=a}return MethodDefinition}();r.MethodDefinition=V;var H=function(){function Module(e){this.type=i.Syntax.Program;this.body=e;this.sourceType="module"}return Module}();r.Module=H;var Y=function(){function NewExpression(e,r){this.type=i.Syntax.NewExpression;this.callee=e;this.arguments=r}return NewExpression}();r.NewExpression=Y;var $=function(){function ObjectExpression(e){this.type=i.Syntax.ObjectExpression;this.properties=e}return ObjectExpression}();r.ObjectExpression=$;var Z=function(){function ObjectPattern(e){this.type=i.Syntax.ObjectPattern;this.properties=e}return ObjectPattern}();r.ObjectPattern=Z;var Q=function(){function Property(e,r,t,n,a,u){this.type=i.Syntax.Property;this.key=r;this.computed=t;this.value=n;this.kind=e;this.method=a;this.shorthand=u}return Property}();r.Property=Q;var K=function(){function RegexLiteral(e,r,t,n){this.type=i.Syntax.Literal;this.value=e;this.raw=r;this.regex={pattern:t,flags:n}}return RegexLiteral}();r.RegexLiteral=K;var ee=function(){function RestElement(e){this.type=i.Syntax.RestElement;this.argument=e}return RestElement}();r.RestElement=ee;var re=function(){function ReturnStatement(e){this.type=i.Syntax.ReturnStatement;this.argument=e}return ReturnStatement}();r.ReturnStatement=re;var te=function(){function Script(e){this.type=i.Syntax.Program;this.body=e;this.sourceType="script"}return Script}();r.Script=te;var ie=function(){function SequenceExpression(e){this.type=i.Syntax.SequenceExpression;this.expressions=e}return SequenceExpression}();r.SequenceExpression=ie;var ne=function(){function SpreadElement(e){this.type=i.Syntax.SpreadElement;this.argument=e}return SpreadElement}();r.SpreadElement=ne;var ae=function(){function StaticMemberExpression(e,r){this.type=i.Syntax.MemberExpression;this.computed=false;this.object=e;this.property=r}return StaticMemberExpression}();r.StaticMemberExpression=ae;var ue=function(){function Super(){this.type=i.Syntax.Super}return Super}();r.Super=ue;var se=function(){function SwitchCase(e,r){this.type=i.Syntax.SwitchCase;this.test=e;this.consequent=r}return SwitchCase}();r.SwitchCase=se;var oe=function(){function SwitchStatement(e,r){this.type=i.Syntax.SwitchStatement;this.discriminant=e;this.cases=r}return SwitchStatement}();r.SwitchStatement=oe;var fe=function(){function TaggedTemplateExpression(e,r){this.type=i.Syntax.TaggedTemplateExpression;this.tag=e;this.quasi=r}return TaggedTemplateExpression}();r.TaggedTemplateExpression=fe;var le=function(){function TemplateElement(e,r){this.type=i.Syntax.TemplateElement;this.value=e;this.tail=r}return TemplateElement}();r.TemplateElement=le;var ce=function(){function TemplateLiteral(e,r){this.type=i.Syntax.TemplateLiteral;this.quasis=e;this.expressions=r}return TemplateLiteral}();r.TemplateLiteral=ce;var he=function(){function ThisExpression(){this.type=i.Syntax.ThisExpression}return ThisExpression}();r.ThisExpression=he;var pe=function(){function ThrowStatement(e){this.type=i.Syntax.ThrowStatement;this.argument=e}return ThrowStatement}();r.ThrowStatement=pe;var ve=function(){function TryStatement(e,r,t){this.type=i.Syntax.TryStatement;this.block=e;this.handler=r;this.finalizer=t}return TryStatement}();r.TryStatement=ve;var de=function(){function UnaryExpression(e,r){this.type=i.Syntax.UnaryExpression;this.operator=e;this.argument=r;this.prefix=true}return UnaryExpression}();r.UnaryExpression=de;var De=function(){function UpdateExpression(e,r,t){this.type=i.Syntax.UpdateExpression;this.operator=e;this.argument=r;this.prefix=t}return UpdateExpression}();r.UpdateExpression=De;var me=function(){function VariableDeclaration(e,r){this.type=i.Syntax.VariableDeclaration;this.declarations=e;this.kind=r}return VariableDeclaration}();r.VariableDeclaration=me;var ge=function(){function VariableDeclarator(e,r){this.type=i.Syntax.VariableDeclarator;this.id=e;this.init=r}return VariableDeclarator}();r.VariableDeclarator=ge;var Ee=function(){function WhileStatement(e,r){this.type=i.Syntax.WhileStatement;this.test=e;this.body=r}return WhileStatement}();r.WhileStatement=Ee;var Ae=function(){function WithStatement(e,r){this.type=i.Syntax.WithStatement;this.object=e;this.body=r}return WithStatement}();r.WithStatement=Ae;var Ce=function(){function YieldExpression(e,r){this.type=i.Syntax.YieldExpression;this.argument=e;this.delegate=r}return YieldExpression}();r.YieldExpression=Ce},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(9);var n=t(10);var a=t(11);var u=t(7);var s=t(12);var o=t(2);var f=t(13);var l="ArrowParameterPlaceHolder";var c=function(){function Parser(e,r,t){if(r===void 0){r={}}this.config={range:typeof r.range==="boolean"&&r.range,loc:typeof r.loc==="boolean"&&r.loc,source:null,tokens:typeof r.tokens==="boolean"&&r.tokens,comment:typeof r.comment==="boolean"&&r.comment,tolerant:typeof r.tolerant==="boolean"&&r.tolerant};if(this.config.loc&&r.source&&r.source!==null){this.config.source=String(r.source)}this.delegate=t;this.errorHandler=new n.ErrorHandler;this.errorHandler.tolerant=this.config.tolerant;this.scanner=new s.Scanner(e,this.errorHandler);this.scanner.trackComment=this.config.comment;this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11};this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0};this.hasLineTerminator=false;this.context={isModule:false,await:false,allowIn:true,allowStrictDirective:true,allowYield:true,firstCoverInitializedNameError:null,isAssignmentTarget:false,isBindingElement:false,inFunctionBody:false,inIteration:false,inSwitch:false,labelSet:{},strict:false};this.tokens=[];this.startMarker={index:0,line:this.scanner.lineNumber,column:0};this.lastMarker={index:0,line:this.scanner.lineNumber,column:0};this.nextToken();this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}Parser.prototype.throwError=function(e){var r=[];for(var t=1;t0&&this.delegate){for(var r=0;r>="||e===">>>="||e==="&="||e==="^="||e==="|="};Parser.prototype.isolateCoverGrammar=function(e){var r=this.context.isBindingElement;var t=this.context.isAssignmentTarget;var i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=true;this.context.isAssignmentTarget=true;this.context.firstCoverInitializedNameError=null;var n=e.call(this);if(this.context.firstCoverInitializedNameError!==null){this.throwUnexpectedToken(this.context.firstCoverInitializedNameError)}this.context.isBindingElement=r;this.context.isAssignmentTarget=t;this.context.firstCoverInitializedNameError=i;return n};Parser.prototype.inheritCoverGrammar=function(e){var r=this.context.isBindingElement;var t=this.context.isAssignmentTarget;var i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=true;this.context.isAssignmentTarget=true;this.context.firstCoverInitializedNameError=null;var n=e.call(this);this.context.isBindingElement=this.context.isBindingElement&&r;this.context.isAssignmentTarget=this.context.isAssignmentTarget&&t;this.context.firstCoverInitializedNameError=i||this.context.firstCoverInitializedNameError;return n};Parser.prototype.consumeSemicolon=function(){if(this.match(";")){this.nextToken()}else if(!this.hasLineTerminator){if(this.lookahead.type!==2&&!this.match("}")){this.throwUnexpectedToken(this.lookahead)}this.lastMarker.index=this.startMarker.index;this.lastMarker.line=this.startMarker.line;this.lastMarker.column=this.startMarker.column}};Parser.prototype.parsePrimaryExpression=function(){var e=this.createNode();var r;var t,i;switch(this.lookahead.type){case 3:if((this.context.isModule||this.context.await)&&this.lookahead.value==="await"){this.tolerateUnexpectedToken(this.lookahead)}r=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(e,new u.Identifier(this.nextToken().value));break;case 6:case 8:if(this.context.strict&&this.lookahead.octal){this.tolerateUnexpectedToken(this.lookahead,a.Messages.StrictOctalLiteral)}this.context.isAssignmentTarget=false;this.context.isBindingElement=false;t=this.nextToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.Literal(t.value,i));break;case 1:this.context.isAssignmentTarget=false;this.context.isBindingElement=false;t=this.nextToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.Literal(t.value==="true",i));break;case 5:this.context.isAssignmentTarget=false;this.context.isBindingElement=false;t=this.nextToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.Literal(null,i));break;case 10:r=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=false;r=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":r=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":r=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=false;this.context.isBindingElement=false;this.scanner.index=this.startMarker.index;t=this.nextRegexToken();i=this.getTokenRaw(t);r=this.finalize(e,new u.RegexLiteral(t.regex,i,t.pattern,t.flags));break;default:r=this.throwUnexpectedToken(this.nextToken())}break;case 4:if(!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")){r=this.parseIdentifierName()}else if(!this.context.strict&&this.matchKeyword("let")){r=this.finalize(e,new u.Identifier(this.nextToken().value))}else{this.context.isAssignmentTarget=false;this.context.isBindingElement=false;if(this.matchKeyword("function")){r=this.parseFunctionExpression()}else if(this.matchKeyword("this")){this.nextToken();r=this.finalize(e,new u.ThisExpression)}else if(this.matchKeyword("class")){r=this.parseClassExpression()}else{r=this.throwUnexpectedToken(this.nextToken())}}break;default:r=this.throwUnexpectedToken(this.nextToken())}return r};Parser.prototype.parseSpreadElement=function(){var e=this.createNode();this.expect("...");var r=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(e,new u.SpreadElement(r))};Parser.prototype.parseArrayInitializer=function(){var e=this.createNode();var r=[];this.expect("[");while(!this.match("]")){if(this.match(",")){this.nextToken();r.push(null)}else if(this.match("...")){var t=this.parseSpreadElement();if(!this.match("]")){this.context.isAssignmentTarget=false;this.context.isBindingElement=false;this.expect(",")}r.push(t)}else{r.push(this.inheritCoverGrammar(this.parseAssignmentExpression));if(!this.match("]")){this.expect(",")}}}this.expect("]");return this.finalize(e,new u.ArrayExpression(r))};Parser.prototype.parsePropertyMethod=function(e){this.context.isAssignmentTarget=false;this.context.isBindingElement=false;var r=this.context.strict;var t=this.context.allowStrictDirective;this.context.allowStrictDirective=e.simple;var i=this.isolateCoverGrammar(this.parseFunctionSourceElements);if(this.context.strict&&e.firstRestricted){this.tolerateUnexpectedToken(e.firstRestricted,e.message)}if(this.context.strict&&e.stricted){this.tolerateUnexpectedToken(e.stricted,e.message)}this.context.strict=r;this.context.allowStrictDirective=t;return i};Parser.prototype.parsePropertyMethodFunction=function(){var e=false;var r=this.createNode();var t=this.context.allowYield;this.context.allowYield=true;var i=this.parseFormalParameters();var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(r,new u.FunctionExpression(null,i.params,n,e))};Parser.prototype.parsePropertyMethodAsyncFunction=function(){var e=this.createNode();var r=this.context.allowYield;var t=this.context.await;this.context.allowYield=false;this.context.await=true;var i=this.parseFormalParameters();var n=this.parsePropertyMethod(i);this.context.allowYield=r;this.context.await=t;return this.finalize(e,new u.AsyncFunctionExpression(null,i.params,n))};Parser.prototype.parseObjectPropertyKey=function(){var e=this.createNode();var r=this.nextToken();var t;switch(r.type){case 8:case 6:if(this.context.strict&&r.octal){this.tolerateUnexpectedToken(r,a.Messages.StrictOctalLiteral)}var i=this.getTokenRaw(r);t=this.finalize(e,new u.Literal(r.value,i));break;case 3:case 1:case 5:case 4:t=this.finalize(e,new u.Identifier(r.value));break;case 7:if(r.value==="["){t=this.isolateCoverGrammar(this.parseAssignmentExpression);this.expect("]")}else{t=this.throwUnexpectedToken(r)}break;default:t=this.throwUnexpectedToken(r)}return t};Parser.prototype.isPropertyKey=function(e,r){return e.type===o.Syntax.Identifier&&e.name===r||e.type===o.Syntax.Literal&&e.value===r};Parser.prototype.parseObjectProperty=function(e){var r=this.createNode();var t=this.lookahead;var i;var n=null;var s=null;var o=false;var f=false;var l=false;var c=false;if(t.type===3){var h=t.value;this.nextToken();o=this.match("[");c=!this.hasLineTerminator&&h==="async"&&!this.match(":")&&!this.match("(")&&!this.match("*")&&!this.match(",");n=c?this.parseObjectPropertyKey():this.finalize(r,new u.Identifier(h))}else if(this.match("*")){this.nextToken()}else{o=this.match("[");n=this.parseObjectPropertyKey()}var p=this.qualifiedPropertyName(this.lookahead);if(t.type===3&&!c&&t.value==="get"&&p){i="get";o=this.match("[");n=this.parseObjectPropertyKey();this.context.allowYield=false;s=this.parseGetterMethod()}else if(t.type===3&&!c&&t.value==="set"&&p){i="set";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseSetterMethod()}else if(t.type===7&&t.value==="*"&&p){i="init";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseGeneratorMethod();f=true}else{if(!n){this.throwUnexpectedToken(this.lookahead)}i="init";if(this.match(":")&&!c){if(!o&&this.isPropertyKey(n,"__proto__")){if(e.value){this.tolerateError(a.Messages.DuplicateProtoProperty)}e.value=true}this.nextToken();s=this.inheritCoverGrammar(this.parseAssignmentExpression)}else if(this.match("(")){s=c?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction();f=true}else if(t.type===3){var h=this.finalize(r,new u.Identifier(t.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead;this.nextToken();l=true;var v=this.isolateCoverGrammar(this.parseAssignmentExpression);s=this.finalize(r,new u.AssignmentPattern(h,v))}else{l=true;s=h}}else{this.throwUnexpectedToken(this.nextToken())}}return this.finalize(r,new u.Property(i,n,o,s,f,l))};Parser.prototype.parseObjectInitializer=function(){var e=this.createNode();this.expect("{");var r=[];var t={value:false};while(!this.match("}")){r.push(this.parseObjectProperty(t));if(!this.match("}")){this.expectCommaSeparator()}}this.expect("}");return this.finalize(e,new u.ObjectExpression(r))};Parser.prototype.parseTemplateHead=function(){i.assert(this.lookahead.head,"Template literal must start with a template head");var e=this.createNode();var r=this.nextToken();var t=r.value;var n=r.cooked;return this.finalize(e,new u.TemplateElement({raw:t,cooked:n},r.tail))};Parser.prototype.parseTemplateElement=function(){if(this.lookahead.type!==10){this.throwUnexpectedToken()}var e=this.createNode();var r=this.nextToken();var t=r.value;var i=r.cooked;return this.finalize(e,new u.TemplateElement({raw:t,cooked:i},r.tail))};Parser.prototype.parseTemplateLiteral=function(){var e=this.createNode();var r=[];var t=[];var i=this.parseTemplateHead();t.push(i);while(!i.tail){r.push(this.parseExpression());i=this.parseTemplateElement();t.push(i)}return this.finalize(e,new u.TemplateLiteral(t,r))};Parser.prototype.reinterpretExpressionAsPattern=function(e){switch(e.type){case o.Syntax.Identifier:case o.Syntax.MemberExpression:case o.Syntax.RestElement:case o.Syntax.AssignmentPattern:break;case o.Syntax.SpreadElement:e.type=o.Syntax.RestElement;this.reinterpretExpressionAsPattern(e.argument);break;case o.Syntax.ArrayExpression:e.type=o.Syntax.ArrayPattern;for(var r=0;r")){this.expect("=>")}e={type:l,params:[],async:false}}else{var r=this.lookahead;var t=[];if(this.match("...")){e=this.parseRestElement(t);this.expect(")");if(!this.match("=>")){this.expect("=>")}e={type:l,params:[e],async:false}}else{var i=false;this.context.isBindingElement=true;e=this.inheritCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var n=[];this.context.isAssignmentTarget=false;n.push(e);while(this.lookahead.type!==2){if(!this.match(",")){break}this.nextToken();if(this.match(")")){this.nextToken();for(var a=0;a")){this.expect("=>")}this.context.isBindingElement=false;for(var a=0;a")){if(e.type===o.Syntax.Identifier&&e.name==="yield"){i=true;e={type:l,params:[e],async:false}}if(!i){if(!this.context.isBindingElement){this.throwUnexpectedToken(this.lookahead)}if(e.type===o.Syntax.SequenceExpression){for(var a=0;a")){for(var o=0;o0){this.nextToken();this.context.isAssignmentTarget=false;this.context.isBindingElement=false;var n=[e,this.lookahead];var a=r;var s=this.isolateCoverGrammar(this.parseExponentiationExpression);var o=[a,t.value,s];var f=[i];while(true){i=this.binaryPrecedence(this.lookahead);if(i<=0){break}while(o.length>2&&i<=f[f.length-1]){s=o.pop();var l=o.pop();f.pop();a=o.pop();n.pop();var c=this.startNode(n[n.length-1]);o.push(this.finalize(c,new u.BinaryExpression(l,a,s)))}o.push(this.nextToken().value);f.push(i);n.push(this.lookahead);o.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var h=o.length-1;r=o[h];var p=n.pop();while(h>1){var v=n.pop();var d=p&&p.lineStart;var c=this.startNode(v,d);var l=o[h-1];r=this.finalize(c,new u.BinaryExpression(l,o[h-2],r));h-=2;p=v}}return r};Parser.prototype.parseConditionalExpression=function(){var e=this.lookahead;var r=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var t=this.context.allowIn;this.context.allowIn=true;var i=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=t;this.expect(":");var n=this.isolateCoverGrammar(this.parseAssignmentExpression);r=this.finalize(this.startNode(e),new u.ConditionalExpression(r,i,n));this.context.isAssignmentTarget=false;this.context.isBindingElement=false}return r};Parser.prototype.checkPatternParam=function(e,r){switch(r.type){case o.Syntax.Identifier:this.validateParam(e,r,r.name);break;case o.Syntax.RestElement:this.checkPatternParam(e,r.argument);break;case o.Syntax.AssignmentPattern:this.checkPatternParam(e,r.left);break;case o.Syntax.ArrayPattern:for(var t=0;t")){this.context.isAssignmentTarget=false;this.context.isBindingElement=false;var n=e.async;var s=this.reinterpretAsCoverFormalsList(e);if(s){if(this.hasLineTerminator){this.tolerateUnexpectedToken(this.lookahead)}this.context.firstCoverInitializedNameError=null;var f=this.context.strict;var c=this.context.allowStrictDirective;this.context.allowStrictDirective=s.simple;var h=this.context.allowYield;var p=this.context.await;this.context.allowYield=true;this.context.await=n;var v=this.startNode(r);this.expect("=>");var d=void 0;if(this.match("{")){var D=this.context.allowIn;this.context.allowIn=true;d=this.parseFunctionSourceElements();this.context.allowIn=D}else{d=this.isolateCoverGrammar(this.parseAssignmentExpression)}var m=d.type!==o.Syntax.BlockStatement;if(this.context.strict&&s.firstRestricted){this.throwUnexpectedToken(s.firstRestricted,s.message)}if(this.context.strict&&s.stricted){this.tolerateUnexpectedToken(s.stricted,s.message)}e=n?this.finalize(v,new u.AsyncArrowFunctionExpression(s.params,d,m)):this.finalize(v,new u.ArrowFunctionExpression(s.params,d,m));this.context.strict=f;this.context.allowStrictDirective=c;this.context.allowYield=h;this.context.await=p}}else{if(this.matchAssign()){if(!this.context.isAssignmentTarget){this.tolerateError(a.Messages.InvalidLHSInAssignment)}if(this.context.strict&&e.type===o.Syntax.Identifier){var g=e;if(this.scanner.isRestrictedWord(g.name)){this.tolerateUnexpectedToken(t,a.Messages.StrictLHSAssignment)}if(this.scanner.isStrictModeReservedWord(g.name)){this.tolerateUnexpectedToken(t,a.Messages.StrictReservedWord)}}if(!this.match("=")){this.context.isAssignmentTarget=false;this.context.isBindingElement=false}else{this.reinterpretExpressionAsPattern(e)}t=this.nextToken();var E=t.value;var A=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(r),new u.AssignmentExpression(E,e,A));this.context.firstCoverInitializedNameError=null}}}return e};Parser.prototype.parseExpression=function(){var e=this.lookahead;var r=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var t=[];t.push(r);while(this.lookahead.type!==2){if(!this.match(",")){break}this.nextToken();t.push(this.isolateCoverGrammar(this.parseAssignmentExpression))}r=this.finalize(this.startNode(e),new u.SequenceExpression(t))}return r};Parser.prototype.parseStatementListItem=function(){var e;this.context.isAssignmentTarget=true;this.context.isBindingElement=true;if(this.lookahead.type===4){switch(this.lookahead.value){case"export":if(!this.context.isModule){this.tolerateUnexpectedToken(this.lookahead,a.Messages.IllegalExportDeclaration)}e=this.parseExportDeclaration();break;case"import":if(!this.context.isModule){this.tolerateUnexpectedToken(this.lookahead,a.Messages.IllegalImportDeclaration)}e=this.parseImportDeclaration();break;case"const":e=this.parseLexicalDeclaration({inFor:false});break;case"function":e=this.parseFunctionDeclaration();break;case"class":e=this.parseClassDeclaration();break;case"let":e=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:false}):this.parseStatement();break;default:e=this.parseStatement();break}}else{e=this.parseStatement()}return e};Parser.prototype.parseBlock=function(){var e=this.createNode();this.expect("{");var r=[];while(true){if(this.match("}")){break}r.push(this.parseStatementListItem())}this.expect("}");return this.finalize(e,new u.BlockStatement(r))};Parser.prototype.parseLexicalBinding=function(e,r){var t=this.createNode();var i=[];var n=this.parsePattern(i,e);if(this.context.strict&&n.type===o.Syntax.Identifier){if(this.scanner.isRestrictedWord(n.name)){this.tolerateError(a.Messages.StrictVarName)}}var s=null;if(e==="const"){if(!this.matchKeyword("in")&&!this.matchContextualKeyword("of")){if(this.match("=")){this.nextToken();s=this.isolateCoverGrammar(this.parseAssignmentExpression)}else{this.throwError(a.Messages.DeclarationMissingInitializer,"const")}}}else if(!r.inFor&&n.type!==o.Syntax.Identifier||this.match("=")){this.expect("=");s=this.isolateCoverGrammar(this.parseAssignmentExpression)}return this.finalize(t,new u.VariableDeclarator(n,s))};Parser.prototype.parseBindingList=function(e,r){var t=[this.parseLexicalBinding(e,r)];while(this.match(",")){this.nextToken();t.push(this.parseLexicalBinding(e,r))}return t};Parser.prototype.isLexicalDeclaration=function(){var e=this.scanner.saveState();this.scanner.scanComments();var r=this.scanner.lex();this.scanner.restoreState(e);return r.type===3||r.type===7&&r.value==="["||r.type===7&&r.value==="{"||r.type===4&&r.value==="let"||r.type===4&&r.value==="yield"};Parser.prototype.parseLexicalDeclaration=function(e){var r=this.createNode();var t=this.nextToken().value;i.assert(t==="let"||t==="const","Lexical declaration must be either let or const");var n=this.parseBindingList(t,e);this.consumeSemicolon();return this.finalize(r,new u.VariableDeclaration(n,t))};Parser.prototype.parseBindingRestElement=function(e,r){var t=this.createNode();this.expect("...");var i=this.parsePattern(e,r);return this.finalize(t,new u.RestElement(i))};Parser.prototype.parseArrayPattern=function(e,r){var t=this.createNode();this.expect("[");var i=[];while(!this.match("]")){if(this.match(",")){this.nextToken();i.push(null)}else{if(this.match("...")){i.push(this.parseBindingRestElement(e,r));break}else{i.push(this.parsePatternWithDefault(e,r))}if(!this.match("]")){this.expect(",")}}}this.expect("]");return this.finalize(t,new u.ArrayPattern(i))};Parser.prototype.parsePropertyPattern=function(e,r){var t=this.createNode();var i=false;var n=false;var a=false;var s;var o;if(this.lookahead.type===3){var f=this.lookahead;s=this.parseVariableIdentifier();var l=this.finalize(t,new u.Identifier(f.value));if(this.match("=")){e.push(f);n=true;this.nextToken();var c=this.parseAssignmentExpression();o=this.finalize(this.startNode(f),new u.AssignmentPattern(l,c))}else if(!this.match(":")){e.push(f);n=true;o=l}else{this.expect(":");o=this.parsePatternWithDefault(e,r)}}else{i=this.match("[");s=this.parseObjectPropertyKey();this.expect(":");o=this.parsePatternWithDefault(e,r)}return this.finalize(t,new u.Property("init",s,i,o,a,n))};Parser.prototype.parseObjectPattern=function(e,r){var t=this.createNode();var i=[];this.expect("{");while(!this.match("}")){i.push(this.parsePropertyPattern(e,r));if(!this.match("}")){this.expect(",")}}this.expect("}");return this.finalize(t,new u.ObjectPattern(i))};Parser.prototype.parsePattern=function(e,r){var t;if(this.match("[")){t=this.parseArrayPattern(e,r)}else if(this.match("{")){t=this.parseObjectPattern(e,r)}else{if(this.matchKeyword("let")&&(r==="const"||r==="let")){this.tolerateUnexpectedToken(this.lookahead,a.Messages.LetInLexicalBinding)}e.push(this.lookahead);t=this.parseVariableIdentifier(r)}return t};Parser.prototype.parsePatternWithDefault=function(e,r){var t=this.lookahead;var i=this.parsePattern(e,r);if(this.match("=")){this.nextToken();var n=this.context.allowYield;this.context.allowYield=true;var a=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=n;i=this.finalize(this.startNode(t),new u.AssignmentPattern(i,a))}return i};Parser.prototype.parseVariableIdentifier=function(e){var r=this.createNode();var t=this.nextToken();if(t.type===4&&t.value==="yield"){if(this.context.strict){this.tolerateUnexpectedToken(t,a.Messages.StrictReservedWord)}else if(!this.context.allowYield){this.throwUnexpectedToken(t)}}else if(t.type!==3){if(this.context.strict&&t.type===4&&this.scanner.isStrictModeReservedWord(t.value)){this.tolerateUnexpectedToken(t,a.Messages.StrictReservedWord)}else{if(this.context.strict||t.value!=="let"||e!=="var"){this.throwUnexpectedToken(t)}}}else if((this.context.isModule||this.context.await)&&t.type===3&&t.value==="await"){this.tolerateUnexpectedToken(t)}return this.finalize(r,new u.Identifier(t.value))};Parser.prototype.parseVariableDeclaration=function(e){var r=this.createNode();var t=[];var i=this.parsePattern(t,"var");if(this.context.strict&&i.type===o.Syntax.Identifier){if(this.scanner.isRestrictedWord(i.name)){this.tolerateError(a.Messages.StrictVarName)}}var n=null;if(this.match("=")){this.nextToken();n=this.isolateCoverGrammar(this.parseAssignmentExpression)}else if(i.type!==o.Syntax.Identifier&&!e.inFor){this.expect("=")}return this.finalize(r,new u.VariableDeclarator(i,n))};Parser.prototype.parseVariableDeclarationList=function(e){var r={inFor:e.inFor};var t=[];t.push(this.parseVariableDeclaration(r));while(this.match(",")){this.nextToken();t.push(this.parseVariableDeclaration(r))}return t};Parser.prototype.parseVariableStatement=function(){var e=this.createNode();this.expectKeyword("var");var r=this.parseVariableDeclarationList({inFor:false});this.consumeSemicolon();return this.finalize(e,new u.VariableDeclaration(r,"var"))};Parser.prototype.parseEmptyStatement=function(){var e=this.createNode();this.expect(";");return this.finalize(e,new u.EmptyStatement)};Parser.prototype.parseExpressionStatement=function(){var e=this.createNode();var r=this.parseExpression();this.consumeSemicolon();return this.finalize(e,new u.ExpressionStatement(r))};Parser.prototype.parseIfClause=function(){if(this.context.strict&&this.matchKeyword("function")){this.tolerateError(a.Messages.StrictFunction)}return this.parseStatement()};Parser.prototype.parseIfStatement=function(){var e=this.createNode();var r;var t=null;this.expectKeyword("if");this.expect("(");var i=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());r=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");r=this.parseIfClause();if(this.matchKeyword("else")){this.nextToken();t=this.parseIfClause()}}return this.finalize(e,new u.IfStatement(i,r,t))};Parser.prototype.parseDoWhileStatement=function(){var e=this.createNode();this.expectKeyword("do");var r=this.context.inIteration;this.context.inIteration=true;var t=this.parseStatement();this.context.inIteration=r;this.expectKeyword("while");this.expect("(");var i=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken())}else{this.expect(")");if(this.match(";")){this.nextToken()}}return this.finalize(e,new u.DoWhileStatement(t,i))};Parser.prototype.parseWhileStatement=function(){var e=this.createNode();var r;this.expectKeyword("while");this.expect("(");var t=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());r=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");var i=this.context.inIteration;this.context.inIteration=true;r=this.parseStatement();this.context.inIteration=i}return this.finalize(e,new u.WhileStatement(t,r))};Parser.prototype.parseForStatement=function(){var e=null;var r=null;var t=null;var i=true;var n,s;var f=this.createNode();this.expectKeyword("for");this.expect("(");if(this.match(";")){this.nextToken()}else{if(this.matchKeyword("var")){e=this.createNode();this.nextToken();var l=this.context.allowIn;this.context.allowIn=false;var c=this.parseVariableDeclarationList({inFor:true});this.context.allowIn=l;if(c.length===1&&this.matchKeyword("in")){var h=c[0];if(h.init&&(h.id.type===o.Syntax.ArrayPattern||h.id.type===o.Syntax.ObjectPattern||this.context.strict)){this.tolerateError(a.Messages.ForInOfLoopInitializer,"for-in")}e=this.finalize(e,new u.VariableDeclaration(c,"var"));this.nextToken();n=e;s=this.parseExpression();e=null}else if(c.length===1&&c[0].init===null&&this.matchContextualKeyword("of")){e=this.finalize(e,new u.VariableDeclaration(c,"var"));this.nextToken();n=e;s=this.parseAssignmentExpression();e=null;i=false}else{e=this.finalize(e,new u.VariableDeclaration(c,"var"));this.expect(";")}}else if(this.matchKeyword("const")||this.matchKeyword("let")){e=this.createNode();var p=this.nextToken().value;if(!this.context.strict&&this.lookahead.value==="in"){e=this.finalize(e,new u.Identifier(p));this.nextToken();n=e;s=this.parseExpression();e=null}else{var l=this.context.allowIn;this.context.allowIn=false;var c=this.parseBindingList(p,{inFor:true});this.context.allowIn=l;if(c.length===1&&c[0].init===null&&this.matchKeyword("in")){e=this.finalize(e,new u.VariableDeclaration(c,p));this.nextToken();n=e;s=this.parseExpression();e=null}else if(c.length===1&&c[0].init===null&&this.matchContextualKeyword("of")){e=this.finalize(e,new u.VariableDeclaration(c,p));this.nextToken();n=e;s=this.parseAssignmentExpression();e=null;i=false}else{this.consumeSemicolon();e=this.finalize(e,new u.VariableDeclaration(c,p))}}}else{var v=this.lookahead;var l=this.context.allowIn;this.context.allowIn=false;e=this.inheritCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=l;if(this.matchKeyword("in")){if(!this.context.isAssignmentTarget||e.type===o.Syntax.AssignmentExpression){this.tolerateError(a.Messages.InvalidLHSInForIn)}this.nextToken();this.reinterpretExpressionAsPattern(e);n=e;s=this.parseExpression();e=null}else if(this.matchContextualKeyword("of")){if(!this.context.isAssignmentTarget||e.type===o.Syntax.AssignmentExpression){this.tolerateError(a.Messages.InvalidLHSInForLoop)}this.nextToken();this.reinterpretExpressionAsPattern(e);n=e;s=this.parseAssignmentExpression();e=null;i=false}else{if(this.match(",")){var d=[e];while(this.match(",")){this.nextToken();d.push(this.isolateCoverGrammar(this.parseAssignmentExpression))}e=this.finalize(this.startNode(v),new u.SequenceExpression(d))}this.expect(";")}}}if(typeof n==="undefined"){if(!this.match(";")){r=this.parseExpression()}this.expect(";");if(!this.match(")")){t=this.parseExpression()}}var D;if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());D=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");var m=this.context.inIteration;this.context.inIteration=true;D=this.isolateCoverGrammar(this.parseStatement);this.context.inIteration=m}return typeof n==="undefined"?this.finalize(f,new u.ForStatement(e,r,t,D)):i?this.finalize(f,new u.ForInStatement(n,s,D)):this.finalize(f,new u.ForOfStatement(n,s,D))};Parser.prototype.parseContinueStatement=function(){var e=this.createNode();this.expectKeyword("continue");var r=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var t=this.parseVariableIdentifier();r=t;var i="$"+t.name;if(!Object.prototype.hasOwnProperty.call(this.context.labelSet,i)){this.throwError(a.Messages.UnknownLabel,t.name)}}this.consumeSemicolon();if(r===null&&!this.context.inIteration){this.throwError(a.Messages.IllegalContinue)}return this.finalize(e,new u.ContinueStatement(r))};Parser.prototype.parseBreakStatement=function(){var e=this.createNode();this.expectKeyword("break");var r=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var t=this.parseVariableIdentifier();var i="$"+t.name;if(!Object.prototype.hasOwnProperty.call(this.context.labelSet,i)){this.throwError(a.Messages.UnknownLabel,t.name)}r=t}this.consumeSemicolon();if(r===null&&!this.context.inIteration&&!this.context.inSwitch){this.throwError(a.Messages.IllegalBreak)}return this.finalize(e,new u.BreakStatement(r))};Parser.prototype.parseReturnStatement=function(){if(!this.context.inFunctionBody){this.tolerateError(a.Messages.IllegalReturn)}var e=this.createNode();this.expectKeyword("return");var r=!this.match(";")&&!this.match("}")&&!this.hasLineTerminator&&this.lookahead.type!==2||this.lookahead.type===8||this.lookahead.type===10;var t=r?this.parseExpression():null;this.consumeSemicolon();return this.finalize(e,new u.ReturnStatement(t))};Parser.prototype.parseWithStatement=function(){if(this.context.strict){this.tolerateError(a.Messages.StrictModeWith)}var e=this.createNode();var r;this.expectKeyword("with");this.expect("(");var t=this.parseExpression();if(!this.match(")")&&this.config.tolerant){this.tolerateUnexpectedToken(this.nextToken());r=this.finalize(this.createNode(),new u.EmptyStatement)}else{this.expect(")");r=this.parseStatement()}return this.finalize(e,new u.WithStatement(t,r))};Parser.prototype.parseSwitchCase=function(){var e=this.createNode();var r;if(this.matchKeyword("default")){this.nextToken();r=null}else{this.expectKeyword("case");r=this.parseExpression()}this.expect(":");var t=[];while(true){if(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case")){break}t.push(this.parseStatementListItem())}return this.finalize(e,new u.SwitchCase(r,t))};Parser.prototype.parseSwitchStatement=function(){var e=this.createNode();this.expectKeyword("switch");this.expect("(");var r=this.parseExpression();this.expect(")");var t=this.context.inSwitch;this.context.inSwitch=true;var i=[];var n=false;this.expect("{");while(true){if(this.match("}")){break}var s=this.parseSwitchCase();if(s.test===null){if(n){this.throwError(a.Messages.MultipleDefaultsInSwitch)}n=true}i.push(s)}this.expect("}");this.context.inSwitch=t;return this.finalize(e,new u.SwitchStatement(r,i))};Parser.prototype.parseLabelledStatement=function(){var e=this.createNode();var r=this.parseExpression();var t;if(r.type===o.Syntax.Identifier&&this.match(":")){this.nextToken();var i=r;var n="$"+i.name;if(Object.prototype.hasOwnProperty.call(this.context.labelSet,n)){this.throwError(a.Messages.Redeclaration,"Label",i.name)}this.context.labelSet[n]=true;var s=void 0;if(this.matchKeyword("class")){this.tolerateUnexpectedToken(this.lookahead);s=this.parseClassDeclaration()}else if(this.matchKeyword("function")){var f=this.lookahead;var l=this.parseFunctionDeclaration();if(this.context.strict){this.tolerateUnexpectedToken(f,a.Messages.StrictFunction)}else if(l.generator){this.tolerateUnexpectedToken(f,a.Messages.GeneratorInLegacyContext)}s=l}else{s=this.parseStatement()}delete this.context.labelSet[n];t=new u.LabeledStatement(i,s)}else{this.consumeSemicolon();t=new u.ExpressionStatement(r)}return this.finalize(e,t)};Parser.prototype.parseThrowStatement=function(){var e=this.createNode();this.expectKeyword("throw");if(this.hasLineTerminator){this.throwError(a.Messages.NewlineAfterThrow)}var r=this.parseExpression();this.consumeSemicolon();return this.finalize(e,new u.ThrowStatement(r))};Parser.prototype.parseCatchClause=function(){var e=this.createNode();this.expectKeyword("catch");this.expect("(");if(this.match(")")){this.throwUnexpectedToken(this.lookahead)}var r=[];var t=this.parsePattern(r);var i={};for(var n=0;n0){this.tolerateError(a.Messages.BadGetterArity)}var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(e,new u.FunctionExpression(null,i.params,n,r))};Parser.prototype.parseSetterMethod=function(){var e=this.createNode();var r=false;var t=this.context.allowYield;this.context.allowYield=!r;var i=this.parseFormalParameters();if(i.params.length!==1){this.tolerateError(a.Messages.BadSetterArity)}else if(i.params[0]instanceof u.RestElement){this.tolerateError(a.Messages.BadSetterRestParameter)}var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(e,new u.FunctionExpression(null,i.params,n,r))};Parser.prototype.parseGeneratorMethod=function(){var e=this.createNode();var r=true;var t=this.context.allowYield;this.context.allowYield=true;var i=this.parseFormalParameters();this.context.allowYield=false;var n=this.parsePropertyMethod(i);this.context.allowYield=t;return this.finalize(e,new u.FunctionExpression(null,i.params,n,r))};Parser.prototype.isStartOfExpression=function(){var e=true;var r=this.lookahead.value;switch(this.lookahead.type){case 7:e=r==="["||r==="("||r==="{"||r==="+"||r==="-"||r==="!"||r==="~"||r==="++"||r==="--"||r==="/"||r==="/=";break;case 4:e=r==="class"||r==="delete"||r==="function"||r==="let"||r==="new"||r==="super"||r==="this"||r==="typeof"||r==="void"||r==="yield";break;default:break}return e};Parser.prototype.parseYieldExpression=function(){var e=this.createNode();this.expectKeyword("yield");var r=null;var t=false;if(!this.hasLineTerminator){var i=this.context.allowYield;this.context.allowYield=false;t=this.match("*");if(t){this.nextToken();r=this.parseAssignmentExpression()}else if(this.isStartOfExpression()){r=this.parseAssignmentExpression()}this.context.allowYield=i}return this.finalize(e,new u.YieldExpression(r,t))};Parser.prototype.parseClassElement=function(e){var r=this.lookahead;var t=this.createNode();var i="";var n=null;var s=null;var o=false;var f=false;var l=false;var c=false;if(this.match("*")){this.nextToken()}else{o=this.match("[");n=this.parseObjectPropertyKey();var h=n;if(h.name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))){r=this.lookahead;l=true;o=this.match("[");if(this.match("*")){this.nextToken()}else{n=this.parseObjectPropertyKey()}}if(r.type===3&&!this.hasLineTerminator&&r.value==="async"){var p=this.lookahead.value;if(p!==":"&&p!=="("&&p!=="*"){c=true;r=this.lookahead;n=this.parseObjectPropertyKey();if(r.type===3&&r.value==="constructor"){this.tolerateUnexpectedToken(r,a.Messages.ConstructorIsAsync)}}}}var v=this.qualifiedPropertyName(this.lookahead);if(r.type===3){if(r.value==="get"&&v){i="get";o=this.match("[");n=this.parseObjectPropertyKey();this.context.allowYield=false;s=this.parseGetterMethod()}else if(r.value==="set"&&v){i="set";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseSetterMethod()}}else if(r.type===7&&r.value==="*"&&v){i="init";o=this.match("[");n=this.parseObjectPropertyKey();s=this.parseGeneratorMethod();f=true}if(!i&&n&&this.match("(")){i="init";s=c?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction();f=true}if(!i){this.throwUnexpectedToken(this.lookahead)}if(i==="init"){i="method"}if(!o){if(l&&this.isPropertyKey(n,"prototype")){this.throwUnexpectedToken(r,a.Messages.StaticPrototype)}if(!l&&this.isPropertyKey(n,"constructor")){if(i!=="method"||!f||s&&s.generator){this.throwUnexpectedToken(r,a.Messages.ConstructorSpecialMethod)}if(e.value){this.throwUnexpectedToken(r,a.Messages.DuplicateConstructor)}else{e.value=true}i="constructor"}}return this.finalize(t,new u.MethodDefinition(n,o,s,i,l))};Parser.prototype.parseClassElementList=function(){var e=[];var r={value:false};this.expect("{");while(!this.match("}")){if(this.match(";")){this.nextToken()}else{e.push(this.parseClassElement(r))}}this.expect("}");return e};Parser.prototype.parseClassBody=function(){var e=this.createNode();var r=this.parseClassElementList();return this.finalize(e,new u.ClassBody(r))};Parser.prototype.parseClassDeclaration=function(e){var r=this.createNode();var t=this.context.strict;this.context.strict=true;this.expectKeyword("class");var i=e&&this.lookahead.type!==3?null:this.parseVariableIdentifier();var n=null;if(this.matchKeyword("extends")){this.nextToken();n=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall)}var a=this.parseClassBody();this.context.strict=t;return this.finalize(r,new u.ClassDeclaration(i,n,a))};Parser.prototype.parseClassExpression=function(){var e=this.createNode();var r=this.context.strict;this.context.strict=true;this.expectKeyword("class");var t=this.lookahead.type===3?this.parseVariableIdentifier():null;var i=null;if(this.matchKeyword("extends")){this.nextToken();i=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall)}var n=this.parseClassBody();this.context.strict=r;return this.finalize(e,new u.ClassExpression(t,i,n))};Parser.prototype.parseModule=function(){this.context.strict=true;this.context.isModule=true;this.scanner.isModule=true;var e=this.createNode();var r=this.parseDirectivePrologues();while(this.lookahead.type!==2){r.push(this.parseStatementListItem())}return this.finalize(e,new u.Module(r))};Parser.prototype.parseScript=function(){var e=this.createNode();var r=this.parseDirectivePrologues();while(this.lookahead.type!==2){r.push(this.parseStatementListItem())}return this.finalize(e,new u.Script(r))};Parser.prototype.parseModuleSpecifier=function(){var e=this.createNode();if(this.lookahead.type!==8){this.throwError(a.Messages.InvalidModuleSpecifier)}var r=this.nextToken();var t=this.getTokenRaw(r);return this.finalize(e,new u.Literal(r.value,t))};Parser.prototype.parseImportSpecifier=function(){var e=this.createNode();var r;var t;if(this.lookahead.type===3){r=this.parseVariableIdentifier();t=r;if(this.matchContextualKeyword("as")){this.nextToken();t=this.parseVariableIdentifier()}}else{r=this.parseIdentifierName();t=r;if(this.matchContextualKeyword("as")){this.nextToken();t=this.parseVariableIdentifier()}else{this.throwUnexpectedToken(this.nextToken())}}return this.finalize(e,new u.ImportSpecifier(t,r))};Parser.prototype.parseNamedImports=function(){this.expect("{");var e=[];while(!this.match("}")){e.push(this.parseImportSpecifier());if(!this.match("}")){this.expect(",")}}this.expect("}");return e};Parser.prototype.parseImportDefaultSpecifier=function(){var e=this.createNode();var r=this.parseIdentifierName();return this.finalize(e,new u.ImportDefaultSpecifier(r))};Parser.prototype.parseImportNamespaceSpecifier=function(){var e=this.createNode();this.expect("*");if(!this.matchContextualKeyword("as")){this.throwError(a.Messages.NoAsAfterImportNamespace)}this.nextToken();var r=this.parseIdentifierName();return this.finalize(e,new u.ImportNamespaceSpecifier(r))};Parser.prototype.parseImportDeclaration=function(){if(this.context.inFunctionBody){this.throwError(a.Messages.IllegalImportDeclaration)}var e=this.createNode();this.expectKeyword("import");var r;var t=[];if(this.lookahead.type===8){r=this.parseModuleSpecifier()}else{if(this.match("{")){t=t.concat(this.parseNamedImports())}else if(this.match("*")){t.push(this.parseImportNamespaceSpecifier())}else if(this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")){t.push(this.parseImportDefaultSpecifier());if(this.match(",")){this.nextToken();if(this.match("*")){t.push(this.parseImportNamespaceSpecifier())}else if(this.match("{")){t=t.concat(this.parseNamedImports())}else{this.throwUnexpectedToken(this.lookahead)}}}else{this.throwUnexpectedToken(this.nextToken())}if(!this.matchContextualKeyword("from")){var i=this.lookahead.value?a.Messages.UnexpectedToken:a.Messages.MissingFromClause;this.throwError(i,this.lookahead.value)}this.nextToken();r=this.parseModuleSpecifier()}this.consumeSemicolon();return this.finalize(e,new u.ImportDeclaration(t,r))};Parser.prototype.parseExportSpecifier=function(){var e=this.createNode();var r=this.parseIdentifierName();var t=r;if(this.matchContextualKeyword("as")){this.nextToken();t=this.parseIdentifierName()}return this.finalize(e,new u.ExportSpecifier(r,t))};Parser.prototype.parseExportDeclaration=function(){if(this.context.inFunctionBody){this.throwError(a.Messages.IllegalExportDeclaration)}var e=this.createNode();this.expectKeyword("export");var r;if(this.matchKeyword("default")){this.nextToken();if(this.matchKeyword("function")){var t=this.parseFunctionDeclaration(true);r=this.finalize(e,new u.ExportDefaultDeclaration(t))}else if(this.matchKeyword("class")){var t=this.parseClassDeclaration(true);r=this.finalize(e,new u.ExportDefaultDeclaration(t))}else if(this.matchContextualKeyword("async")){var t=this.matchAsyncFunction()?this.parseFunctionDeclaration(true):this.parseAssignmentExpression();r=this.finalize(e,new u.ExportDefaultDeclaration(t))}else{if(this.matchContextualKeyword("from")){this.throwError(a.Messages.UnexpectedToken,this.lookahead.value)}var t=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression();this.consumeSemicolon();r=this.finalize(e,new u.ExportDefaultDeclaration(t))}}else if(this.match("*")){this.nextToken();if(!this.matchContextualKeyword("from")){var i=this.lookahead.value?a.Messages.UnexpectedToken:a.Messages.MissingFromClause;this.throwError(i,this.lookahead.value)}this.nextToken();var n=this.parseModuleSpecifier();this.consumeSemicolon();r=this.finalize(e,new u.ExportAllDeclaration(n))}else if(this.lookahead.type===4){var t=void 0;switch(this.lookahead.value){case"let":case"const":t=this.parseLexicalDeclaration({inFor:false});break;case"var":case"class":case"function":t=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}r=this.finalize(e,new u.ExportNamedDeclaration(t,[],null))}else if(this.matchAsyncFunction()){var t=this.parseFunctionDeclaration();r=this.finalize(e,new u.ExportNamedDeclaration(t,[],null))}else{var s=[];var o=null;var f=false;this.expect("{");while(!this.match("}")){f=f||this.matchKeyword("default");s.push(this.parseExportSpecifier());if(!this.match("}")){this.expect(",")}}this.expect("}");if(this.matchContextualKeyword("from")){this.nextToken();o=this.parseModuleSpecifier();this.consumeSemicolon()}else if(f){var i=this.lookahead.value?a.Messages.UnexpectedToken:a.Messages.MissingFromClause;this.throwError(i,this.lookahead.value)}else{this.consumeSemicolon()}r=this.finalize(e,new u.ExportNamedDeclaration(null,s,o))}return r};return Parser}();r.Parser=c},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});function assert(e,r){if(!e){throw new Error("ASSERT: "+r)}}r.assert=assert},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});var t=function(){function ErrorHandler(){this.errors=[];this.tolerant=false}ErrorHandler.prototype.recordError=function(e){this.errors.push(e)};ErrorHandler.prototype.tolerate=function(e){if(this.tolerant){this.recordError(e)}else{throw e}};ErrorHandler.prototype.constructError=function(e,r){var t=new Error(e);try{throw t}catch(e){if(Object.create&&Object.defineProperty){t=Object.create(e);Object.defineProperty(t,"column",{value:r})}}return t};ErrorHandler.prototype.createError=function(e,r,t,i){var n="Line "+r+": "+i;var a=this.constructError(n,t);a.index=e;a.lineNumber=r;a.description=i;return a};ErrorHandler.prototype.throwError=function(e,r,t,i){throw this.createError(e,r,t,i)};ErrorHandler.prototype.tolerateError=function(e,r,t,i){var n=this.createError(e,r,t,i);if(this.tolerant){this.recordError(n)}else{throw n}};return ErrorHandler}();r.ErrorHandler=t},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(9);var n=t(4);var a=t(11);function hexValue(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function octalValue(e){return"01234567".indexOf(e)}var u=function(){function Scanner(e,r){this.source=e;this.errorHandler=r;this.trackComment=false;this.isModule=false;this.length=e.length;this.index=0;this.lineNumber=e.length>0?1:0;this.lineStart=0;this.curlyStack=[]}Scanner.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}};Scanner.prototype.restoreState=function(e){this.index=e.index;this.lineNumber=e.lineNumber;this.lineStart=e.lineStart};Scanner.prototype.eof=function(){return this.index>=this.length};Scanner.prototype.throwUnexpectedToken=function(e){if(e===void 0){e=a.Messages.UnexpectedTokenIllegal}return this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,e)};Scanner.prototype.tolerateUnexpectedToken=function(e){if(e===void 0){e=a.Messages.UnexpectedTokenIllegal}this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,e)};Scanner.prototype.skipSingleLineComment=function(e){var r=[];var t,i;if(this.trackComment){r=[];t=this.index-e;i={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{}}}while(!this.eof()){var a=this.source.charCodeAt(this.index);++this.index;if(n.Character.isLineTerminator(a)){if(this.trackComment){i.end={line:this.lineNumber,column:this.index-this.lineStart-1};var u={multiLine:false,slice:[t+e,this.index-1],range:[t,this.index-1],loc:i};r.push(u)}if(a===13&&this.source.charCodeAt(this.index)===10){++this.index}++this.lineNumber;this.lineStart=this.index;return r}}if(this.trackComment){i.end={line:this.lineNumber,column:this.index-this.lineStart};var u={multiLine:false,slice:[t+e,this.index],range:[t,this.index],loc:i};r.push(u)}return r};Scanner.prototype.skipMultiLineComment=function(){var e=[];var r,t;if(this.trackComment){e=[];r=this.index-2;t={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}}}while(!this.eof()){var i=this.source.charCodeAt(this.index);if(n.Character.isLineTerminator(i)){if(i===13&&this.source.charCodeAt(this.index+1)===10){++this.index}++this.lineNumber;++this.index;this.lineStart=this.index}else if(i===42){if(this.source.charCodeAt(this.index+1)===47){this.index+=2;if(this.trackComment){t.end={line:this.lineNumber,column:this.index-this.lineStart};var a={multiLine:true,slice:[r+2,this.index-2],range:[r,this.index],loc:t};e.push(a)}return e}++this.index}else{++this.index}}if(this.trackComment){t.end={line:this.lineNumber,column:this.index-this.lineStart};var a={multiLine:true,slice:[r+2,this.index],range:[r,this.index],loc:t};e.push(a)}this.tolerateUnexpectedToken();return e};Scanner.prototype.scanComments=function(){var e;if(this.trackComment){e=[]}var r=this.index===0;while(!this.eof()){var t=this.source.charCodeAt(this.index);if(n.Character.isWhiteSpace(t)){++this.index}else if(n.Character.isLineTerminator(t)){++this.index;if(t===13&&this.source.charCodeAt(this.index)===10){++this.index}++this.lineNumber;this.lineStart=this.index;r=true}else if(t===47){t=this.source.charCodeAt(this.index+1);if(t===47){this.index+=2;var i=this.skipSingleLineComment(2);if(this.trackComment){e=e.concat(i)}r=true}else if(t===42){this.index+=2;var i=this.skipMultiLineComment();if(this.trackComment){e=e.concat(i)}}else{break}}else if(r&&t===45){if(this.source.charCodeAt(this.index+1)===45&&this.source.charCodeAt(this.index+2)===62){this.index+=3;var i=this.skipSingleLineComment(3);if(this.trackComment){e=e.concat(i)}}else{break}}else if(t===60&&!this.isModule){if(this.source.slice(this.index+1,this.index+4)==="!--"){this.index+=4;var i=this.skipSingleLineComment(4);if(this.trackComment){e=e.concat(i)}}else{break}}else{break}}return e};Scanner.prototype.isFutureReservedWord=function(e){switch(e){case"enum":case"export":case"import":case"super":return true;default:return false}};Scanner.prototype.isStrictModeReservedWord=function(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return true;default:return false}};Scanner.prototype.isRestrictedWord=function(e){return e==="eval"||e==="arguments"};Scanner.prototype.isKeyword=function(e){switch(e.length){case 2:return e==="if"||e==="in"||e==="do";case 3:return e==="var"||e==="for"||e==="new"||e==="try"||e==="let";case 4:return e==="this"||e==="else"||e==="case"||e==="void"||e==="with"||e==="enum";case 5:return e==="while"||e==="break"||e==="catch"||e==="throw"||e==="const"||e==="yield"||e==="class"||e==="super";case 6:return e==="return"||e==="typeof"||e==="delete"||e==="switch"||e==="export"||e==="import";case 7:return e==="default"||e==="finally"||e==="extends";case 8:return e==="function"||e==="continue"||e==="debugger";case 10:return e==="instanceof";default:return false}};Scanner.prototype.codePointAt=function(e){var r=this.source.charCodeAt(e);if(r>=55296&&r<=56319){var t=this.source.charCodeAt(e+1);if(t>=56320&&t<=57343){var i=r;r=(i-55296)*1024+t-56320+65536}}return r};Scanner.prototype.scanHexEscape=function(e){var r=e==="u"?4:2;var t=0;for(var i=0;i1114111||e!=="}"){this.throwUnexpectedToken()}return n.Character.fromCodePoint(r)};Scanner.prototype.getIdentifier=function(){var e=this.index++;while(!this.eof()){var r=this.source.charCodeAt(this.index);if(r===92){this.index=e;return this.getComplexIdentifier()}else if(r>=55296&&r<57343){this.index=e;return this.getComplexIdentifier()}if(n.Character.isIdentifierPart(r)){++this.index}else{break}}return this.source.slice(e,this.index)};Scanner.prototype.getComplexIdentifier=function(){var e=this.codePointAt(this.index);var r=n.Character.fromCodePoint(e);this.index+=r.length;var t;if(e===92){if(this.source.charCodeAt(this.index)!==117){this.throwUnexpectedToken()}++this.index;if(this.source[this.index]==="{"){++this.index;t=this.scanUnicodeCodePointEscape()}else{t=this.scanHexEscape("u");if(t===null||t==="\\"||!n.Character.isIdentifierStart(t.charCodeAt(0))){this.throwUnexpectedToken()}}r=t}while(!this.eof()){e=this.codePointAt(this.index);if(!n.Character.isIdentifierPart(e)){break}t=n.Character.fromCodePoint(e);r+=t;this.index+=t.length;if(e===92){r=r.substr(0,r.length-1);if(this.source.charCodeAt(this.index)!==117){this.throwUnexpectedToken()}++this.index;if(this.source[this.index]==="{"){++this.index;t=this.scanUnicodeCodePointEscape()}else{t=this.scanHexEscape("u");if(t===null||t==="\\"||!n.Character.isIdentifierPart(t.charCodeAt(0))){this.throwUnexpectedToken()}}r+=t}}return r};Scanner.prototype.octalToDecimal=function(e){var r=e!=="0";var t=octalValue(e);if(!this.eof()&&n.Character.isOctalDigit(this.source.charCodeAt(this.index))){r=true;t=t*8+octalValue(this.source[this.index++]);if("0123".indexOf(e)>=0&&!this.eof()&&n.Character.isOctalDigit(this.source.charCodeAt(this.index))){t=t*8+octalValue(this.source[this.index++])}}return{code:t,octal:r}};Scanner.prototype.scanIdentifier=function(){var e;var r=this.index;var t=this.source.charCodeAt(r)===92?this.getComplexIdentifier():this.getIdentifier();if(t.length===1){e=3}else if(this.isKeyword(t)){e=4}else if(t==="null"){e=5}else if(t==="true"||t==="false"){e=1}else{e=3}if(e!==3&&r+t.length!==this.index){var i=this.index;this.index=r;this.tolerateUnexpectedToken(a.Messages.InvalidEscapedReservedWord);this.index=i}return{type:e,value:t,lineNumber:this.lineNumber,lineStart:this.lineStart,start:r,end:this.index}};Scanner.prototype.scanPunctuator=function(){var e=this.index;var r=this.source[this.index];switch(r){case"(":case"{":if(r==="{"){this.curlyStack.push("{")}++this.index;break;case".":++this.index;if(this.source[this.index]==="."&&this.source[this.index+1]==="."){this.index+=2;r="..."}break;case"}":++this.index;this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:r=this.source.substr(this.index,4);if(r===">>>="){this.index+=4}else{r=r.substr(0,3);if(r==="==="||r==="!=="||r===">>>"||r==="<<="||r===">>="||r==="**="){this.index+=3}else{r=r.substr(0,2);if(r==="&&"||r==="||"||r==="=="||r==="!="||r==="+="||r==="-="||r==="*="||r==="/="||r==="++"||r==="--"||r==="<<"||r===">>"||r==="&="||r==="|="||r==="^="||r==="%="||r==="<="||r===">="||r==="=>"||r==="**"){this.index+=2}else{r=this.source[this.index];if("<>=!+-*%&|^/".indexOf(r)>=0){++this.index}}}}}if(this.index===e){this.throwUnexpectedToken()}return{type:7,value:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}};Scanner.prototype.scanHexLiteral=function(e){var r="";while(!this.eof()){if(!n.Character.isHexDigit(this.source.charCodeAt(this.index))){break}r+=this.source[this.index++]}if(r.length===0){this.throwUnexpectedToken()}if(n.Character.isIdentifierStart(this.source.charCodeAt(this.index))){this.throwUnexpectedToken()}return{type:6,value:parseInt("0x"+r,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}};Scanner.prototype.scanBinaryLiteral=function(e){var r="";var t;while(!this.eof()){t=this.source[this.index];if(t!=="0"&&t!=="1"){break}r+=this.source[this.index++]}if(r.length===0){this.throwUnexpectedToken()}if(!this.eof()){t=this.source.charCodeAt(this.index);if(n.Character.isIdentifierStart(t)||n.Character.isDecimalDigit(t)){this.throwUnexpectedToken()}}return{type:6,value:parseInt(r,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}};Scanner.prototype.scanOctalLiteral=function(e,r){var t="";var i=false;if(n.Character.isOctalDigit(e.charCodeAt(0))){i=true;t="0"+this.source[this.index++]}else{++this.index}while(!this.eof()){if(!n.Character.isOctalDigit(this.source.charCodeAt(this.index))){break}t+=this.source[this.index++]}if(!i&&t.length===0){this.throwUnexpectedToken()}if(n.Character.isIdentifierStart(this.source.charCodeAt(this.index))||n.Character.isDecimalDigit(this.source.charCodeAt(this.index))){this.throwUnexpectedToken()}return{type:6,value:parseInt(t,8),octal:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:r,end:this.index}};Scanner.prototype.isImplicitOctalLiteral=function(){for(var e=this.index+1;e=0){i=i.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(e,r,i){var u=parseInt(r||i,16);if(u>1114111){n.throwUnexpectedToken(a.Messages.InvalidRegExp)}if(u<=65535){return String.fromCharCode(u)}return t}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,t)}try{RegExp(i)}catch(e){this.throwUnexpectedToken(a.Messages.InvalidRegExp)}try{return new RegExp(e,r)}catch(e){return null}};Scanner.prototype.scanRegExpBody=function(){var e=this.source[this.index];i.assert(e==="/","Regular expression literal must start with a slash");var r=this.source[this.index++];var t=false;var u=false;while(!this.eof()){e=this.source[this.index++];r+=e;if(e==="\\"){e=this.source[this.index++];if(n.Character.isLineTerminator(e.charCodeAt(0))){this.throwUnexpectedToken(a.Messages.UnterminatedRegExp)}r+=e}else if(n.Character.isLineTerminator(e.charCodeAt(0))){this.throwUnexpectedToken(a.Messages.UnterminatedRegExp)}else if(t){if(e==="]"){t=false}}else{if(e==="/"){u=true;break}else if(e==="["){t=true}}}if(!u){this.throwUnexpectedToken(a.Messages.UnterminatedRegExp)}return r.substr(1,r.length-2)};Scanner.prototype.scanRegExpFlags=function(){var e="";var r="";while(!this.eof()){var t=this.source[this.index];if(!n.Character.isIdentifierPart(t.charCodeAt(0))){break}++this.index;if(t==="\\"&&!this.eof()){t=this.source[this.index];if(t==="u"){++this.index;var i=this.index;var a=this.scanHexEscape("u");if(a!==null){r+=a;for(e+="\\u";i=55296&&e<57343){if(n.Character.isIdentifierStart(this.codePointAt(this.index))){return this.scanIdentifier()}}return this.scanPunctuator()};return Scanner}();r.Scanner=u},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.TokenName={};r.TokenName[1]="Boolean";r.TokenName[2]="";r.TokenName[3]="Identifier";r.TokenName[4]="Keyword";r.TokenName[5]="Null";r.TokenName[6]="Numeric";r.TokenName[7]="Punctuator";r.TokenName[8]="String";r.TokenName[9]="RegularExpression";r.TokenName[10]="Template"},function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:true});r.XHTMLEntities={quot:'"',amp:"&",apos:"'",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:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(10);var n=t(12);var a=t(13);var u=function(){function Reader(){this.values=[];this.curly=this.paren=-1}Reader.prototype.beforeFunctionExpression=function(e){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(e)>=0};Reader.prototype.isRegexStart=function(){var e=this.values[this.values.length-1];var r=e!==null;switch(e){case"this":case"]":r=false;break;case")":var t=this.values[this.paren-1];r=t==="if"||t==="while"||t==="for"||t==="with";break;case"}":r=false;if(this.values[this.curly-3]==="function"){var i=this.values[this.curly-4];r=i?!this.beforeFunctionExpression(i):false}else if(this.values[this.curly-4]==="function"){var i=this.values[this.curly-5];r=i?!this.beforeFunctionExpression(i):true}break;default:break}return r};Reader.prototype.push=function(e){if(e.type===7||e.type===4){if(e.value==="{"){this.curly=this.values.length}else if(e.value==="("){this.paren=this.values.length}this.values.push(e.value)}else{this.values.push(null)}};return Reader}();var s=function(){function Tokenizer(e,r){this.errorHandler=new i.ErrorHandler;this.errorHandler.tolerant=r?typeof r.tolerant==="boolean"&&r.tolerant:false;this.scanner=new n.Scanner(e,this.errorHandler);this.scanner.trackComment=r?typeof r.comment==="boolean"&&r.comment:false;this.trackRange=r?typeof r.range==="boolean"&&r.range:false;this.trackLoc=r?typeof r.loc==="boolean"&&r.loc:false;this.buffer=[];this.reader=new u}Tokenizer.prototype.errors=function(){return this.errorHandler.errors};Tokenizer.prototype.getNextToken=function(){if(this.buffer.length===0){var e=this.scanner.scanComments();if(this.scanner.trackComment){for(var r=0;rr){if(e.charAt(t-1)!==" "){break}t--}return t}},,function(e,r,t){"use strict";var i=t(347)("unified-engine:file-pipeline:stringify");var n=t(928);var a=t(212);e.exports=stringify;function stringify(e,r){var t=e.processor;var u=e.tree;var s;if(n(r).fatal){i("Not compiling failed document");return}if(!e.output&&!e.out&&!e.alwaysStringify){i("Not compiling document without output settings");return}i("Compiling `%s`",r.path);if(e.inspect){if(r.path){r.extname=".txt"}s=a[e.color?"color":"noColor"](u)+"\n"}else if(e.treeOut){if(r.path){r.extname=".json"}s=JSON.stringify(u,null,2)+"\n"}else{s=t.stringify(u,r)}r.contents=s;i("Compiled document")}},,,function(e,r,t){"use strict";const i=t(624);e.exports=(e=>typeof e==="string"?e.replace(i(),""):e)},,function(e,r,t){"use strict";var i=t(260);function Mark(e,r,t,i,n){this.name=e;this.buffer=r;this.position=t;this.line=i;this.column=n}Mark.prototype.getSnippet=function getSnippet(e,r){var t,n,a,u,s;if(!this.buffer)return null;e=e||4;r=r||75;t="";n=this.position;while(n>0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(n-1))===-1){n-=1;if(this.position-n>r/2-1){t=" ... ";n+=5;break}}a="";u=this.position;while(ur/2-1){a=" ... ";u-=5;break}}s=this.buffer.slice(n,u);return i.repeat(" ",e)+t+s+a+"\n"+i.repeat(" ",e+this.position-n+t.length)+"^"};Mark.prototype.toString=function toString(e){var r,t="";if(this.name){t+='in "'+this.name+'" '}t+="at line "+(this.line+1)+", column "+(this.column+1);if(!e){r=this.getSnippet();if(r){t+=":\n"+r}}return t};e.exports=Mark},function(e,r,t){var i=t(148);var n=function(){};var a=t(405);e.exports=wrapped;function wrapped(e){function wrap(){var r=i(arguments);var t=r[r.length-1];var u=this;var s=typeof t=="function"?r.pop():n;if(!e){return s.apply(u,[null].concat(r))}if(generator(e)){return a(e).apply(u,r.concat(s))}if(e.length>r.length){try{return e.apply(u,r.concat(s))}catch(e){return s(e)}}return sync(e,s).apply(u,r)}return wrap}function sync(e,r){return function(){var t;try{t=e.apply(this,arguments)}catch(e){return r(e)}if(promise(t)){t.then(function(e){r(null,e)},r)}else{t instanceof Error?r(t):r(null,t)}}}function generator(e){return e&&e.constructor&&"GeneratorFunction"==e.constructor.name}function promise(e){return e&&"function"==typeof e.then}},,,,,,,,function(e,r,t){"use strict";var i=t(495);e.exports=i("remark-lint:no-file-name-articles",noFileNameArticles);function noFileNameArticles(e,r){var t=r.stem&&r.stem.match(/^(the|teh|an?)\b/i);if(t){r.message("Do not start file names with `"+t[0]+"`")}}},,,function(e,r,t){"use strict";var i=t(171);e.exports=newline;var n="\n";function newline(e,r,t){var a=r.charAt(0);var u;var s;var o;var f;if(a!==n){return}if(t){return true}f=1;u=r.length;s=a;o="";while(f{if(typeof e!=="string"||e.length===0){return 0}e=i(e);let r=0;for(let t=0;t=127&&i<=159){continue}if(i>=768&&i<=879){continue}if(i>65535){t++}r+=n(i)?2:1}return r})},,,,function(e){e.exports=require("stream")},,,,function(e){"use strict";e.exports=function isObject(e){return typeof e==="object"&&e!==null}},,function(e,r,t){"use strict";e.exports={position:true,gfm:true,commonmark:false,footnotes:false,pedantic:false,blocks:t(676)}},,,function(e,r,t){"use strict";var i=t(211);var n=Object.prototype.toString;function resolveYamlPairs(e){if(e===null)return true;var r,t,i,a,u,s=e;u=new Array(s.length);for(r=0,t=s.length;r=0){r=r.slice(1)}if(r===".inf"){return t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY}else if(r===".nan"){return NaN}else if(r.indexOf(":")>=0){r.split(":").forEach(function(e){n.unshift(parseFloat(e,10))});r=0;i=1;n.forEach(function(e){r+=e*i;i*=60});return t*r}return t*parseFloat(r,10)}var u=/^[-+]?[0-9]+e/;function representYamlFloat(e,r){var t;if(isNaN(e)){switch(r){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}}else if(Number.POSITIVE_INFINITY===e){switch(r){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}}else if(Number.NEGATIVE_INFINITY===e){switch(r){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}}else if(i.isNegativeZero(e)){return"-0.0"}t=e.toString(10);return u.test(t)?t.replace("e",".e"):t}function isFloat(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||i.isNegativeZero(e))}e.exports=new n("tag:yaml.org,2002:float",{kind:"scalar",resolve:resolveYamlFloat,construct:constructYamlFloat,predicate:isFloat,represent:representYamlFloat,defaultStyle:"lowercase"})},,function(e,r,t){"use strict";const i=t(947);e.exports=((e,r,t)=>{if(typeof r==="number"){t=r}if(i.has(e.toLowerCase())){r=i.get(e.toLowerCase());const t=e.charAt(0);const n=t===t.toUpperCase();if(n){r=t.toUpperCase()+r.slice(1)}const a=e===e.toUpperCase();if(a){r=r.toUpperCase()}}else if(typeof r!=="string"){r=(e.replace(/(?:s|x|z|ch|sh)$/i,"$&e").replace(/([^aeiou])y$/i,"$1ie")+"s").replace(/i?e?s$/i,r=>{const t=e.slice(-1)===e.slice(-1).toLowerCase();return t?r.toLowerCase():r.toUpperCase()})}return Math.abs(t)===1?e:r})},function(e,r,t){"use strict";var i=t(814);e.exports=pad;var n="\n";var a=" ";var u=4;function pad(e,r){var t=e.split(n);var s=t.length;var o=i(a,r*u);while(s--){if(t[s].length!==0){t[s]=o+t[s]}}return t.join(n)}},,,,function(e){e.exports=function(e,r){return e.replace(/(\\*)(\$([_a-z0-9]+)|\${([_a-z0-9]+)})/gi,function(e,t,i,n,a){if(!(t.length%2)){return t.substring(Math.ceil(t.length/2))+(r[n||a]||"")}else{return t.substring(1)+i}})}},,,,function(e,r,t){"use strict";var i=t(211);var n=Object.prototype.hasOwnProperty;function resolveYamlSet(e){if(e===null)return true;var r,t=e;for(r in t){if(n.call(t,r)){if(t[r]!==null)return false}}return true}function constructYamlSet(e){return e!==null?e:{}}e.exports=new i("tag:yaml.org,2002:set",{kind:"mapping",resolve:resolveYamlSet,construct:constructYamlSet})},function(e){if(typeof Object.create==="function"){e.exports=function inherits(e,r){e.super_=r;e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}else{e.exports=function inherits(e,r){e.super_=r;var t=function(){};t.prototype=r.prototype;e.prototype=new t;e.prototype.constructor=e}}},,,,,function(e){var r=Object.prototype.toString;var t=typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,i){r>>>=0;var n=e.byteLength-r;if(n<0){throw new RangeError("'offset' is out of bounds")}if(i===undefined){i=n}else{i>>>=0;if(i>n){throw new RangeError("'length' is out of bounds")}}return t?Buffer.from(e.slice(r,r+i)):new Buffer(new Uint8Array(e.slice(r,r+i)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return t?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,i){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,i)}if(typeof e==="string"){return fromString(e,r)}return t?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},,function(e){e.exports={AEli:"Æ",AElig:"Æ",AM:"&",AMP:"&",Aacut:"Á",Aacute:"Á",Abreve:"Ă",Acir:"Â",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrav:"À",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Arin:"Å",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atild:"Ã",Atilde:"Ã",Aum:"Ä",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COP:"©",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedi:"Ç",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ET:"Ð",ETH:"Ð",Eacut:"É",Eacute:"É",Ecaron:"Ě",Ecir:"Ê",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrav:"È",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Eum:"Ë",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",G:">",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacut:"Í",Iacute:"Í",Icir:"Î",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrav:"Ì",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Ium:"Ï",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",L:"<",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Map:"⤅",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntild:"Ñ",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacut:"Ó",Oacute:"Ó",Ocir:"Ô",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograv:"Ò",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslas:"Ø",Oslash:"Ø",Otild:"Õ",Otilde:"Õ",Otimes:"⨷",Oum:"Ö",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUO:'"',QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",RE:"®",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THOR:"Þ",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:"\t",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacut:"Ú",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucir:"Û",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrav:"Ù",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uum:"Ü",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacut:"Ý",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacut:"á",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acir:"â",acirc:"â",acut:"´",acute:"´",acy:"а",aeli:"æ",aelig:"æ",af:"⁡",afr:"𝔞",agrav:"à",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",am:"&",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",arin:"å",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atild:"ã",atilde:"ã",aum:"ä",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvba:"¦",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedi:"ç",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedi:"¸",cedil:"¸",cemptyv:"⦲",cen:"¢",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",cop:"©",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curre:"¤",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",de:"°",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divid:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacut:"é",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"ê",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrav:"è",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",et:"ð",eth:"ð",eum:"ë",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac1:"¼",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac3:"¾",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",g:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacut:"í",iacute:"í",ic:"⁣",icir:"î",icirc:"î",icy:"и",iecy:"е",iexc:"¡",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrav:"ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iques:"¿",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",ium:"ï",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laqu:"«",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",l:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",mac:"¯",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micr:"µ",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middo:"·",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbs:" ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",no:"¬",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntild:"ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacut:"ó",oacute:"ó",oast:"⊛",ocir:"ô",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograv:"ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"º",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslas:"ø",oslash:"ø",osol:"⊘",otild:"õ",otilde:"õ",otimes:"⊗",otimesas:"⨶",oum:"ö",ouml:"ö",ovbar:"⌽",par:"¶",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusm:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",poun:"£",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quo:'"',quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raqu:"»",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",re:"®",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sec:"§",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",sh:"­",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szli:"ß",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thor:"þ",thorn:"þ",tilde:"˜",time:"×",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacut:"ú",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucir:"û",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrav:"ù",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",um:"¨",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uum:"ü",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacut:"ý",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",ye:"¥",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yum:"ÿ",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:true});var i=t(287);var n=_interopRequireDefault(i);var a=t(809);var u=_interopRequireDefault(a);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}r.default={parse:n.default,stringify:u.default};e.exports=r["default"]},,function(e){"use strict";e.exports=interrupt;function interrupt(e,r,t,i){var n=e.length;var a=-1;var u;var s;while(++a>0},ToUint32:function(e){return e>>>0}}}();var u=Math.LN2,s=Math.abs,o=Math.floor,f=Math.log,l=Math.min,c=Math.pow,h=Math.round;function configureProperties(e){if(v&&p){var r=v(e),t;for(t=0;tn)throw new RangeError("Array too large for polyfill");function makeArrayAccessor(r){p(e,r,{get:function(){return e._getter(r)},set:function(t){e._setter(r,t)},enumerable:true,configurable:false})}var r;for(r=0;r>t}function as_unsigned(e,r){var t=32-r;return e<>>t}function packI8(e){return[e&255]}function unpackI8(e){return as_signed(e[0],8)}function packU8(e){return[e&255]}function unpackU8(e){return as_unsigned(e[0],8)}function packU8Clamped(e){e=h(Number(e));return[e<0?0:e>255?255:e&255]}function packI16(e){return[e>>8&255,e&255]}function unpackI16(e){return as_signed(e[0]<<8|e[1],16)}function packU16(e){return[e>>8&255,e&255]}function unpackU16(e){return as_unsigned(e[0]<<8|e[1],16)}function packI32(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]}function unpackI32(e){return as_signed(e[0]<<24|e[1]<<16|e[2]<<8|e[3],32)}function packU32(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]}function unpackU32(e){return as_unsigned(e[0]<<24|e[1]<<16|e[2]<<8|e[3],32)}function packIEEE754(e,r,t){var i=(1<.5)return r+1;return r%2?r+1:r}if(e!==e){a=(1<=c(2,1-i)){a=l(o(f(e)/u),1023);h=roundToEven(e/c(2,a)*c(2,t));if(h/c(2,t)>=2){a=a+1;h=1}if(a>i){a=(1<>1}}i.reverse();s=i.join("");o=(1<0){return f*c(2,l-o)*(1+h/c(2,t))}else if(h!==0){return f*c(2,-(o-1))*(h/c(2,t))}else{return f<0?-0:0}}function unpackF64(e){return unpackIEEE754(e,11,52)}function packF64(e){return packIEEE754(e,11,52)}function unpackF32(e){return unpackIEEE754(e,8,23)}function packF32(e){return packIEEE754(e,8,23)}(function(){var e=function ArrayBuffer(e){e=a.ToInt32(e);if(e<0)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=e;this._bytes=[];this._bytes.length=e;var r;for(r=0;rthis.buffer.byteLength){throw new RangeError("byteOffset out of range")}if(this.byteOffset%this.BYTES_PER_ELEMENT){throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.")}if(arguments.length<3){this.byteLength=this.buffer.byteLength-this.byteOffset;if(this.byteLength%this.BYTES_PER_ELEMENT){throw new RangeError("length of buffer minus byteOffset not a multiple of the element size")}this.length=this.byteLength/this.BYTES_PER_ELEMENT}else{this.length=a.ToUint32(i);this.byteLength=this.length*this.BYTES_PER_ELEMENT}if(this.byteOffset+this.byteLength>this.buffer.byteLength){throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}}else{throw new TypeError("Unexpected argument type(s)")}this.constructor=s;configureProperties(this);makeArrayAccessors(this)};s.prototype=new r;s.prototype.BYTES_PER_ELEMENT=t;s.prototype._pack=n;s.prototype._unpack=u;s.BYTES_PER_ELEMENT=t;s.prototype._getter=function(e){if(arguments.length<1)throw new SyntaxError("Not enough arguments");e=a.ToUint32(e);if(e>=this.length){return i}var r=[],t,n;for(t=0,n=this.byteOffset+e*this.BYTES_PER_ELEMENT;t=this.length){return i}var t=this._pack(r),n,u;for(n=0,u=this.byteOffset+e*this.BYTES_PER_ELEMENT;nthis.length){throw new RangeError("Offset plus length of array is out of range")}l=this.byteOffset+n*this.BYTES_PER_ELEMENT;c=t.length*this.BYTES_PER_ELEMENT;if(t.buffer===this.buffer){h=[];for(s=0,o=t.byteOffset;sthis.length){throw new RangeError("Offset plus length of array is out of range")}for(s=0;st?t:e}e=a.ToInt32(e);r=a.ToInt32(r);if(arguments.length<1){e=0}if(arguments.length<2){r=this.length}if(e<0){e=this.length+e}if(r<0){r=this.length+r}e=clamp(e,0,this.length);r=clamp(r,0,this.length);var t=r-e;if(t<0){t=0}return new this.constructor(this.buffer,this.byteOffset+e*this.BYTES_PER_ELEMENT,t)};return s}var n=makeConstructor(1,packI8,unpackI8);var u=makeConstructor(1,packU8,unpackU8);var s=makeConstructor(1,packU8Clamped,unpackU8);var o=makeConstructor(2,packI16,unpackI16);var f=makeConstructor(2,packU16,unpackU16);var l=makeConstructor(4,packI32,unpackI32);var c=makeConstructor(4,packU32,unpackU32);var h=makeConstructor(4,packF32,unpackF32);var p=makeConstructor(8,packF64,unpackF64);t.Int8Array=t.Int8Array||n;t.Uint8Array=t.Uint8Array||u;t.Uint8ClampedArray=t.Uint8ClampedArray||s;t.Int16Array=t.Int16Array||o;t.Uint16Array=t.Uint16Array||f;t.Int32Array=t.Int32Array||l;t.Uint32Array=t.Uint32Array||c;t.Float32Array=t.Float32Array||h;t.Float64Array=t.Float64Array||p})();(function(){function r(e,r){return a.IsCallable(e.get)?e.get(r):e[r]}var e=function(){var e=new t.Uint16Array([4660]),i=new t.Uint8Array(e.buffer);return r(i,0)===18}();var i=function DataView(e,r,i){if(arguments.length===0){e=new t.ArrayBuffer(0)}else if(!(e instanceof t.ArrayBuffer||a.Class(e)==="ArrayBuffer")){throw new TypeError("TypeError")}this.buffer=e||new t.ArrayBuffer(0);this.byteOffset=a.ToUint32(r);if(this.byteOffset>this.buffer.byteLength){throw new RangeError("byteOffset out of range")}if(arguments.length<3){this.byteLength=this.buffer.byteLength-this.byteOffset}else{this.byteLength=a.ToUint32(i)}if(this.byteOffset+this.byteLength>this.buffer.byteLength){throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}configureProperties(this)};function makeGetter(i){return function(n,u){n=a.ToUint32(n);if(n+i.BYTES_PER_ELEMENT>this.byteLength){throw new RangeError("Array index out of range")}n+=this.byteOffset;var s=new t.Uint8Array(this.buffer,n,i.BYTES_PER_ELEMENT),o=[],f;for(f=0;fthis.byteLength){throw new RangeError("Array index out of range")}var o=new i([u]),f=new t.Uint8Array(o.buffer),l=[],c,h;for(c=0;c=e.length?e.length:n+t;r.message+=` while parsing near '${i===0?"":"..."}${e.slice(i,a)}${a===e.length?"":"..."}'`}else{r.message+=` while parsing '${e.slice(0,t*2)}'`}throw r}}},,function(e){"use strict";e.exports=function isArrayish(e){if(!e){return false}return e instanceof Array||Array.isArray(e)||e.length>=0&&e.splice instanceof Function}},,,function(e){"use strict";e.exports=strikethrough;var r="~";var t=r+r;function strikethrough(e){return t+this.all(e).join("")+t}},,function(e,r,t){"use strict";var i=t(495);var n=t(704);var a=t(682);var u=t(839);var s=t(526);e.exports=i("remark-lint:no-heading-indent",noHeadingIndent);var o=u.start;function noHeadingIndent(e,r){var t=String(r);var i=t.length;a(e,"heading",visitor);function visitor(e){var a;var u;var f;var l;var c;if(s(e)){return}a=o(e);u=a.offset;f=u-1;while(++f-1&&t.charAt(i)!=="\n"){r.message("Missing newline character at end of file")}}},,,function(e,r,t){"use strict";var i=t(171);var n=t(111);e.exports=strikethrough;strikethrough.locator=n;var a="~";var u="~~";function strikethrough(e,r,t){var n=this;var s="";var o="";var f="";var l="";var c;var h;var p;if(!n.options.gfm||r.charAt(0)!==a||r.charAt(1)!==a||i(r.charAt(2))){return}c=1;h=r.length;p=e.now();p.column+=2;p.offset+=2;while(++c?@[\\\]^`{|}~_]/;function copy(e,r){var t=e.length;var u=r.length;var s=[];var o=0;var f=0;var l;while(f0){t=Math.min(10,Math.floor(t));f=" ".substr(0,t)}}else if(typeof t==="string"){f=t.substr(0,10)}return serializeProperty("",{"":e});function serializeProperty(e,r){var t=r[e];if(t!=null){if(typeof t.toJSON5==="function"){t=t.toJSON5(e)}else if(typeof t.toJSON==="function"){t=t.toJSON(e)}}if(o){t=o.call(r,e,t)}if(t instanceof Number){t=Number(t)}else if(t instanceof String){t=String(t)}else if(t instanceof Boolean){t=t.valueOf()}switch(t){case null:return"null";case true:return"true";case false:return"false"}if(typeof t==="string"){return quoteString(t,false)}if(typeof t==="number"){return String(t)}if((typeof t==="undefined"?"undefined":i(t))==="object"){return Array.isArray(t)?serializeArray(t):serializeObject(t)}return undefined}function quoteString(e){var r={"'":.1,'"':.2};var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};var i="";var n=true;var a=false;var u=undefined;try{for(var s=e[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var f=o.value;switch(f){case"'":case'"':r[f]++;i+=f;continue}if(t[f]){i+=t[f];continue}if(f<" "){var c=f.charCodeAt(0).toString(16);i+="\\x"+("00"+c).substring(c.length);continue}i+=f}}catch(e){a=true;u=e}finally{try{if(!n&&s.return){s.return()}}finally{if(a){throw u}}}var h=l||Object.keys(r).reduce(function(e,t){return r[e]=0){throw TypeError("Converting circular structure to JSON5")}n.push(e);var r=u;u=u+f;var t=s||Object.keys(e);var i=[];var a=true;var o=false;var l=undefined;try{for(var c=t[Symbol.iterator](),h;!(a=(h=c.next()).done);a=true){var p=h.value;var v=serializeProperty(p,e);if(v!==undefined){var d=serializeKey(p)+":";if(f!==""){d+=" "}d+=v;i.push(d)}}}catch(e){o=true;l=e}finally{try{if(!a&&c.return){c.return()}}finally{if(o){throw l}}}var D=void 0;if(i.length===0){D="{}"}else{var m=void 0;if(f===""){m=i.join(",");D="{"+m+"}"}else{var g=",\n"+u;m=i.join(g);D="{\n"+u+m+",\n"+r+"}"}}n.pop();u=r;return D}function serializeKey(e){if(e.length===0){return quoteString(e,true)}var r=String.fromCodePoint(e.codePointAt(0));if(!a.isIdStartChar(r)){return quoteString(e,true)}for(var t=r.length;t=0){throw TypeError("Converting circular structure to JSON5")}n.push(e);var r=u;u=u+f;var t=[];for(var i=0;i=n){return r.substr(0,n)}while(n>r.length&&i>1){if(i&1){r+=e}i>>=1;e+=e}r+=e;r=r.substr(0,n);return r}},,function(e,r,t){"use strict";var i=t(495);var n=t(839);var a=t(526);var u=t(186);var s=t(682);e.exports=i("remark-lint:no-duplicate-definitions",noDuplicateDefinitions);var o="Do not use definitions with the same identifier";function noDuplicateDefinitions(e,r){var t={};s(e,["definition","footnoteDefinition"],validate);function validate(e){var i;var s;if(!a(e)){i=e.identifier;s=t[i];if(s&&s.type){r.message(o+" ("+u(n.start(s))+")",e)}t[i]=e}}}},function(e){"use strict";e.exports=is;function is(e,r,t,i,n){var a=i!==null&&i!==undefined;var u=t!==null&&t!==undefined;var s=convert(e);if(u&&(typeof t!=="number"||t<0||t===Infinity)){throw new Error("Expected positive finite index or child node")}if(a&&(!is(null,i)||!i.children)){throw new Error("Expected parent node")}if(!r||!r.type||typeof r.type!=="string"){return false}if(a!==u){throw new Error("Expected both parent and index")}return Boolean(s.call(n,r,t,i))}function convert(e){if(typeof e==="string"){return typeFactory(e)}if(e===null||e===undefined){return ok}if(typeof e==="object"){return("length"in e?anyFactory:matchesFactory)(e)}if(typeof e==="function"){return e}throw new Error("Expected function, string, or object as test")}function convertAll(e){var r=[];var t=e.length;var i=-1;while(++i=u){v--;break}d+=g}D="";m="";while(++v{r=r||process.argv;const t=e.startsWith("-")?"":e.length===1?"-":"--";const i=r.indexOf(t+e);const n=r.indexOf("--");return i!==-1&&(n===-1?true:ie[t])e[t]=i});return e},[]);var u=map(e,function(e){return map(e,function(e,r){var t=String(e);if(i[r]==="."){var u=dotindex(t);var s=a[r]+(/\./.test(t)?1:2)-(n(t)-u);return t+Array(s).join(" ")}else return t})});var s=reduce(u,function(e,r){forEach(r,function(r,t){var i=n(r);if(!e[t]||i>e[t])e[t]=i});return e},[]);return map(u,function(e){return map(e,function(e,r){var t=s[r]-n(e)||0;var a=Array(Math.max(t+1,1)).join(" ");if(i[r]==="r"||i[r]==="."){return a+e}if(i[r]==="c"){return Array(Math.ceil(t/2+1)).join(" ")+e+Array(Math.floor(t/2+1)).join(" ")}return e+a}).join(t).replace(/\s+$/,"")}).join("\n")};function dotindex(e){var r=/\.[^.]*$/.exec(e);return r?r.index+1:e.length}function reduce(e,r,t){if(e.reduce)return e.reduce(r,t);var i=0;var n=arguments.length>=3?t:e[i++];for(;it&&a0?"add":"remove")+" "+Math.abs(h)+" "+n("space",h);r.message(p,s)}}}}},,,,,function(e,r,t){"use strict";var i=t(721);e.exports=decodeEntity;var n={}.hasOwnProperty;function decodeEntity(e){return n.call(i,e)?i[e]:false}},,function(e,r,t){"use strict";var i=t(336);var n=t(780);e.exports=unherit;function unherit(e){var r;var t;var a;n(Of,e);n(From,Of);r=Of.prototype;for(t in r){a=r[t];if(a&&typeof a==="object"){r[t]="concat"in a?a.concat():i(a)}}return Of;function From(r){return e.apply(this,r)}function Of(){if(!(this instanceof Of)){return new From(arguments)}return e.apply(this,arguments)}}},function(e){"use strict";const r=e=>{let r=false;let t=false;let i=false;for(let n=0;n{if(!(typeof e==="string"||Array.isArray(e))){throw new TypeError("Expected the input to be `string | string[]`")}t=Object.assign({pascalCase:false},t);const i=e=>t.pascalCase?e.charAt(0).toUpperCase()+e.slice(1):e;if(Array.isArray(e)){e=e.map(e=>e.trim()).filter(e=>e.length).join("-")}else{e=e.trim()}if(e.length===0){return""}if(e.length===1){return t.pascalCase?e.toUpperCase():e.toLowerCase()}if(/^[a-z\d]+$/.test(e)){return i(e)}const n=e!==e.toLowerCase();if(n){e=r(e)}e=e.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(e,r)=>r.toUpperCase());return i(e)})},,function(e,r,t){"use strict";var i=t(211);function resolveYamlMerge(e){return e==="<<"||e===null}e.exports=new i("tag:yaml.org,2002:merge",{kind:"scalar",resolve:resolveYamlMerge})},function(e){"use strict";e.exports={gfm:true,commonmark:false,pedantic:false,entities:"false",setext:false,closeAtx:false,looseTable:false,spacedTable:true,paddedTable:true,stringLength:stringLength,incrementListMarker:true,fences:false,fence:"`",bullet:"-",listItemIndent:"tab",rule:"*",ruleSpaces:true,ruleRepetition:3,strong:"*",emphasis:"_"};function stringLength(e){return e.length}},function(e,r,t){"use strict";var i=t(197);var n=t(520);var a=t(439);var u=t(25);var s=t(908);var o=t(895);e.exports=parseEntities;var f={}.hasOwnProperty;var l=String.fromCharCode;var c=Function.prototype;var h={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:false,nonTerminated:true};var p="named";var v="hexadecimal";var d="decimal";var D={};D[v]=16;D[d]=10;var m={};m[p]=s;m[d]=a;m[v]=u;var g=1;var E=2;var A=3;var C=4;var y=5;var w=6;var x=7;var b={};b[g]="Named character references must be terminated by a semicolon";b[E]="Numeric character references must be terminated by a semicolon";b[A]="Named character references cannot be empty";b[C]="Numeric character references cannot be empty";b[y]="Named character references must be known";b[w]="Numeric character references cannot be disallowed";b[x]="Numeric character references cannot be outside the permissible Unicode range";function parseEntities(e,r){var t={};var i;var n;if(!r){r={}}for(n in h){i=r[n];t[n]=i===null||i===undefined?h[n]:i}if(t.position.indent||t.position.start){t.indent=t.position.indent||[];t.position=t.position.start}return parse(e,t)}function parse(e,r){var t=r.additional;var a=r.nonTerminated;var u=r.text;var h=r.reference;var F=r.warning;var S=r.textContext;var B=r.referenceContext;var k=r.warningContext;var O=r.position;var P=r.indent||[];var T=e.length;var I=0;var M=-1;var L=O.column||1;var R=O.line||1;var j="";var N=[];var U;var J;var z;var X;var q;var G;var _;var W;var V;var H;var Y;var $;var Z;var Q;var K;var ee;var re;var te;var ie;ee=now();W=F?parseError:c;I--;T++;while(++I65535){G-=65536;H+=l(G>>>(10&1023)|55296);G=56320|G&1023}G=H+l(G)}}if(!G){X=e.slice(Z-1,ie);j+=X;L+=X.length;I=ie-1}else{flush();ee=now();I=ie-1;L+=ie-Z+1;N.push(G);re=now();re.offset++;if(h){h.call(B,G,{start:ee,end:re},e.slice(Z-1,ie))}ee=re}}}return N.join("");function now(){return{line:R,column:L,offset:I+(O.offset||0)}}function parseError(e,r){var t=now();t.column+=r;t.offset+=r;F.call(k,b[e],t,e)}function at(r){return e.charAt(r)}function flush(){if(j){N.push(j);if(u){u.call(S,j,{start:ee,end:now()})}j=""}}}function prohibited(e){return e>=55296&&e<=57343||e>1114111}function disallowed(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)===65535||(e&65535)===65534}},,,function(e,r,t){"use strict";var i=t(36);var n=t(116);var a=t(171);var u=t(82);e.exports=emphasis;emphasis.locator=u;var s="*";var o="_";var f="\\";function emphasis(e,r,t){var u=this;var l=0;var c=r.charAt(l);var h;var p;var v;var d;var D;var m;var g;if(c!==s&&c!==o){return}p=u.options.pedantic;D=c;v=c;m=r.length;l++;d="";c="";if(p&&a(r.charAt(l))){return}while(l0){if(typeof r!=="string"&&!a.objectMode&&Object.getPrototypeOf(r)!==f.prototype){r=_uint8ArrayToBuffer(r)}if(i){if(a.endEmitted)e.emit("error",new Error("stream.unshift() after end event"));else addChunk(e,a,r,true)}else if(a.ended){e.emit("error",new Error("stream.push() after EOF"))}else{a.reading=false;if(a.decoder&&!t){r=a.decoder.write(r);if(a.objectMode||r.length!==0)addChunk(e,a,r,false);else maybeReadMore(e,a)}else{addChunk(e,a,r,false)}}}else if(!i){a.reading=false}}return needMoreData(a)}function addChunk(e,r,t,i){if(r.flowing&&r.length===0&&!r.sync){e.emit("data",t);e.read(0)}else{r.length+=r.objectMode?1:t.length;if(i)r.buffer.unshift(t);else r.buffer.push(t);if(r.needReadable)emitReadable(e)}maybeReadMore(e,r)}function chunkInvalid(e,r){var t;if(!_isUint8Array(r)&&typeof r!=="string"&&r!==undefined&&!e.objectMode){t=new TypeError("Invalid non-string/buffer chunk")}return t}function needMoreData(e){return!e.ended&&(e.needReadable||e.length=g){e=g}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,r){if(e<=0||r.length===0&&r.ended)return 0;if(r.objectMode)return 1;if(e!==e){if(r.flowing&&r.length)return r.buffer.head.data.length;else return r.length}if(e>r.highWaterMark)r.highWaterMark=computeNewHighWaterMark(e);if(e<=r.length)return e;if(!r.ended){r.needReadable=true;return 0}return r.length}Readable.prototype.read=function(e){p("read",e);e=parseInt(e,10);var r=this._readableState;var t=e;if(e!==0)r.emittedReadable=false;if(e===0&&r.needReadable&&(r.length>=r.highWaterMark||r.ended)){p("read: emitReadable",r.length,r.ended);if(r.length===0&&r.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,r);if(e===0&&r.ended){if(r.length===0)endReadable(this);return null}var i=r.needReadable;p("need readable",i);if(r.length===0||r.length-e0)n=fromList(e,r);else n=null;if(n===null){r.needReadable=true;e=0}else{r.length-=e}if(r.length===0){if(!r.ended)r.needReadable=true;if(t!==e&&r.ended)endReadable(this)}if(n!==null)this.emit("data",n);return n};function onEofChunk(e,r){if(r.ended)return;if(r.decoder){var t=r.decoder.end();if(t&&t.length){r.buffer.push(t);r.length+=r.objectMode?1:t.length}}r.ended=true;emitReadable(e)}function emitReadable(e){var r=e._readableState;r.needReadable=false;if(!r.emittedReadable){p("emitReadable",r.flowing);r.emittedReadable=true;if(r.sync)i.nextTick(emitReadable_,e);else emitReadable_(e)}}function emitReadable_(e){p("emit readable");e.emit("readable");flow(e)}function maybeReadMore(e,r){if(!r.readingMore){r.readingMore=true;i.nextTick(maybeReadMore_,e,r)}}function maybeReadMore_(e,r){var t=r.length;while(!r.reading&&!r.flowing&&!r.ended&&r.length1&&indexOf(n.pipes,e)!==-1)&&!f){p("false write response, pause",t._readableState.awaitDrain);t._readableState.awaitDrain++;l=true}t.pause()}}function onerror(r){p("onerror",r);unpipe();e.removeListener("error",onerror);if(s(e,"error")===0)e.emit("error",r)}prependListener(e,"error",onerror);function onclose(){e.removeListener("finish",onfinish);unpipe()}e.once("close",onclose);function onfinish(){p("onfinish");e.removeListener("close",onclose);unpipe()}e.once("finish",onfinish);function unpipe(){p("unpipe");t.unpipe(e)}e.emit("pipe",t);if(!n.flowing){p("pipe resume");t.resume()}return e};function pipeOnDrain(e){return function(){var r=e._readableState;p("pipeOnDrain",r.awaitDrain);if(r.awaitDrain)r.awaitDrain--;if(r.awaitDrain===0&&s(e,"data")){r.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var r=this._readableState;var t={hasUnpiped:false};if(r.pipesCount===0)return this;if(r.pipesCount===1){if(e&&e!==r.pipes)return this;if(!e)e=r.pipes;r.pipes=null;r.pipesCount=0;r.flowing=false;if(e)e.emit("unpipe",this,t);return this}if(!e){var i=r.pipes;var n=r.pipesCount;r.pipes=null;r.pipesCount=0;r.flowing=false;for(var a=0;a=r.length){if(r.decoder)t=r.buffer.join("");else if(r.buffer.length===1)t=r.buffer.head.data;else t=r.buffer.concat(r.length);r.buffer.clear()}else{t=fromListPartial(e,r.buffer,r.decoder)}return t}function fromListPartial(e,r,t){var i;if(ea.length?a.length:e;if(u===a.length)n+=a;else n+=a.slice(0,e);e-=u;if(e===0){if(u===a.length){++i;if(t.next)r.head=t.next;else r.head=r.tail=null}else{r.head=t;t.data=a.slice(u)}break}++i}r.length-=i;return n}function copyFromBuffer(e,r){var t=f.allocUnsafe(e);var i=r.head;var n=1;i.data.copy(t);e-=i.data.length;while(i=i.next){var a=i.data;var u=e>a.length?a.length:e;a.copy(t,t.length-e,0,u);e-=u;if(e===0){if(u===a.length){++n;if(i.next)r.head=i.next;else r.head=r.tail=null}else{r.head=i;i.data=a.slice(u)}break}++n}r.length-=n;return t}function endReadable(e){var r=e._readableState;if(r.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!r.endEmitted){r.ended=true;i.nextTick(endReadableNT,r,e)}}function endReadableNT(e,r){if(!e.endEmitted&&e.length===0){e.endEmitted=true;r.readable=false;r.emit("end")}}function indexOf(e,r){for(var t=0,i=e.length;t=l){continue}y="";while(v=2){r.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}}catch(e){}r.inspectOpts=Object.keys(process.env).filter(function(e){return/^debug_/i.test(e)}).reduce(function(e,r){var t=r.substring(6).toLowerCase().replace(/_([a-z])/g,function(e,r){return r.toUpperCase()});var i=process.env[r];if(/^(yes|on|true|enabled)$/i.test(i)){i=true}else if(/^(no|off|false|disabled)$/i.test(i)){i=false}else if(i==="null"){i=null}else{i=Number(i)}e[t]=i;return e},{});function useColors(){return"colors"in r.inspectOpts?Boolean(r.inspectOpts.colors):i.isatty(process.stderr.fd)}function formatArgs(r){var t=this.namespace,i=this.useColors;if(i){var n=this.color;var a="[3"+(n<8?n:"8;5;"+n);var u=" ".concat(a,";1m").concat(t," ");r[0]=u+r[0].split("\n").join("\n"+u);r.push(a+"m+"+e.exports.humanize(this.diff)+"")}else{r[0]=getDate()+t+" "+r[0]}}function getDate(){if(r.inspectOpts.hideDate){return""}return(new Date).toISOString()+" "}function log(){return process.stderr.write(n.format.apply(n,arguments)+"\n")}function save(e){if(e){process.env.DEBUG=e}else{delete process.env.DEBUG}}function load(){return process.env.DEBUG}function init(e){e.inspectOpts={};var t=Object.keys(r.inspectOpts);for(var i=0;i=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},,,function(e){"use strict";e.exports=locate;function locate(e,r){var t=e.indexOf("[",r);var i=e.indexOf("![",r);if(i===-1){return t}return t= 2.1.2 < 3" @@ -781,7 +797,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "optional": true, "requires": { "minimatch": "^3.0.4" @@ -789,7 +806,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "optional": true, "requires": { "once": "^1.3.0", @@ -798,17 +816,20 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "optional": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "optional": true, "requires": { "number-is-nan": "^1.0.0" @@ -816,12 +837,14 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "optional": true, "requires": { "brace-expansion": "^1.1.7" @@ -829,12 +852,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "optional": true }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "optional": true, "requires": { "safe-buffer": "^5.1.2", @@ -843,7 +868,8 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "optional": true, "requires": { "minipass": "^2.2.1" @@ -851,7 +877,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "optional": true, "requires": { "minimist": "0.0.8" @@ -859,12 +886,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "optional": true }, "needle": { "version": "2.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", + "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", "optional": true, "requires": { "debug": "^2.1.2", @@ -874,7 +903,8 @@ }, "node-pre-gyp": { "version": "0.10.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", + "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", "optional": true, "requires": { "detect-libc": "^1.0.2", @@ -891,7 +921,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "optional": true, "requires": { "abbrev": "1", @@ -900,12 +931,14 @@ }, "npm-bundled": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", "optional": true }, "npm-packlist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", + "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", "optional": true, "requires": { "ignore-walk": "^3.0.1", @@ -914,7 +947,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "optional": true, "requires": { "are-we-there-yet": "~1.1.2", @@ -925,17 +959,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "optional": true, "requires": { "wrappy": "1" @@ -943,17 +980,20 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "optional": true, "requires": { "os-homedir": "^1.0.0", @@ -962,17 +1002,20 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "optional": true }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "optional": true, "requires": { "deep-extend": "^0.6.0", @@ -983,14 +1026,16 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "optional": true } } }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "optional": true, "requires": { "core-util-is": "~1.0.0", @@ -1004,7 +1049,8 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "optional": true, "requires": { "glob": "^7.1.3" @@ -1012,37 +1058,44 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "optional": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "optional": true }, "semver": { "version": "5.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "optional": true, "requires": { "code-point-at": "^1.0.0", @@ -1052,7 +1105,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "optional": true, "requires": { "safe-buffer": "~5.1.0" @@ -1060,7 +1114,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "optional": true, "requires": { "ansi-regex": "^2.0.0" @@ -1068,12 +1123,14 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "optional": true }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "optional": true, "requires": { "chownr": "^1.1.1", @@ -1087,12 +1144,14 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "optional": true }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "optional": true, "requires": { "string-width": "^1.0.2 || 2" @@ -1100,12 +1159,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "optional": true } } @@ -1430,9 +1491,9 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "js-yaml": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", - "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1617,11 +1678,6 @@ "untildify": "^2.1.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -2727,9 +2783,9 @@ } }, "unified-engine": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-5.1.0.tgz", - "integrity": "sha512-N7b7HG6doQUtkWr+kH35tfUhfc9QiYeiZGG6TcZlexSURf4xRUpYKBbc2f67qJF5oPmn6mMkImkdhr31Q6saoA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-6.0.1.tgz", + "integrity": "sha512-iDJYH82TgcezQA4IZzhCNJQx7vBsGk4h9s4Q7Fscrb3qcPsxBqVrVNYez2W3sBVTxuU1bFAhyRpA6ba/R4j93A==", "requires": { "concat-stream": "^1.5.1", "debug": "^3.1.0", @@ -2743,21 +2799,15 @@ "js-yaml": "^3.6.1", "load-plugin": "^2.0.0", "parse-json": "^4.0.0", - "to-vfile": "^2.0.0", + "to-vfile": "^4.0.0", "trough": "^1.0.0", "unist-util-inspect": "^4.1.2", - "vfile-reporter": "^4.0.0", + "vfile-reporter": "^5.0.0", "vfile-statistics": "^1.1.0", - "x-is-function": "^1.0.4", "x-is-string": "^0.1.0", "xtend": "^4.0.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -2766,87 +2816,10 @@ "ms": "^2.1.1" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "requires": { - "has-flag": "^2.0.0" - } - }, - "to-vfile": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz", - "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==", - "requires": { - "is-buffer": "^1.1.4", - "vfile": "^2.0.0", - "x-is-function": "^1.0.4" - } - }, - "vfile": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", - "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", - "requires": { - "is-buffer": "^1.1.4", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" - } - }, - "vfile-reporter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-4.0.0.tgz", - "integrity": "sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do=", - "requires": { - "repeat-string": "^1.5.0", - "string-width": "^1.0.0", - "supports-color": "^4.1.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-statistics": "^1.1.0" - } } } }, @@ -3077,11 +3050,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "x-is-function": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz", - "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=" - }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", diff --git a/tools/node-lint-md-cli-rollup/package.json b/tools/node-lint-md-cli-rollup/package.json index dc04b9a8b65b24..706571d0397ffe 100644 --- a/tools/node-lint-md-cli-rollup/package.json +++ b/tools/node-lint-md-cli-rollup/package.json @@ -3,7 +3,7 @@ "description": "remark packaged for node markdown linting", "version": "2.0.0", "devDependencies": { - "@zeit/ncc": "^0.15.2" + "@zeit/ncc": "^0.16.1" }, "dependencies": { "markdown-extensions": "^1.1.1", @@ -11,7 +11,7 @@ "remark-lint": "^6.0.4", "remark-preset-lint-node": "^1.6.0", "unified-args": "^6.0.0", - "unified-engine": "^5.1.0" + "unified-engine": "^6.0.1" }, "main": "src/cli-entry.js", "scripts": { From e5181f8dc40f9a060ae176a144af3324ec30b020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Arboleda?= Date: Wed, 20 Mar 2019 00:46:36 -0500 Subject: [PATCH 061/133] test: simplify for loop in test-buffer-zero-fill-cli.js PR-URL: https://github.com/nodejs/node/pull/26799 Reviewed-By: Richard Lau Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Yongsheng Zhang Signed-off-by: Beth Griggs --- test/parallel/test-buffer-zero-fill-cli.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-buffer-zero-fill-cli.js b/test/parallel/test-buffer-zero-fill-cli.js index 91679498a1a560..2f3b243c470c3c 100644 --- a/test/parallel/test-buffer-zero-fill-cli.js +++ b/test/parallel/test-buffer-zero-fill-cli.js @@ -9,8 +9,8 @@ const SlowBuffer = require('buffer').SlowBuffer; const assert = require('assert'); function isZeroFilled(buf) { - for (let n = 0; n < buf.length; n++) - if (buf[n] > 0) return false; + for (const n of buf) + if (n > 0) return false; return true; } From 78fad3210c83d47811c147f35678ffa751086fa4 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 19 Mar 2019 14:19:38 +0100 Subject: [PATCH 062/133] readline: replace quadratic regex with linear one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplify regular expression in _wordLeft and _deleteWordLeft readline methods. PR-URL: https://github.com/nodejs/node/pull/26778 Reviewed-By: Ruben Bridgewater Reviewed-By: Michaël Zasso Signed-off-by: Beth Griggs --- lib/readline.js | 10 ++++++++-- test/parallel/test-readline-interface.js | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/lib/readline.js b/lib/readline.js index b419c0e12fe760..387702ebdc902c 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -569,8 +569,11 @@ function commonPrefix(strings) { Interface.prototype._wordLeft = function() { if (this.cursor > 0) { + // Reverse the string and match a word near beginning + // to avoid quadratic time complexity var leading = this.line.slice(0, this.cursor); - var match = leading.match(/(?:[^\w\s]+|\w+|)\s*$/); + var reversed = leading.split('').reverse().join(''); + var match = reversed.match(/^\s*(?:[^\w\s]+|\w+)?/); this._moveCursor(-match[0].length); } }; @@ -626,8 +629,11 @@ Interface.prototype._deleteRight = function() { Interface.prototype._deleteWordLeft = function() { if (this.cursor > 0) { + // Reverse the string and match a word near beginning + // to avoid quadratic time complexity var leading = this.line.slice(0, this.cursor); - var match = leading.match(/(?:[^\w\s]+|\w+|)\s*$/); + var reversed = leading.split('').reverse().join(''); + var match = reversed.match(/^\s*(?:[^\w\s]+|\w+)?/); leading = leading.slice(0, leading.length - match[0].length); this.line = leading + this.line.slice(this.cursor, this.line.length); this.cursor = leading.length; diff --git a/test/parallel/test-readline-interface.js b/test/parallel/test-readline-interface.js index fba215e225b03d..0c18f346558353 100644 --- a/test/parallel/test-readline-interface.js +++ b/test/parallel/test-readline-interface.js @@ -1272,3 +1272,26 @@ const crlfDelay = Infinity; }), delay); } }); + +// Ensure that the _wordLeft method works even for large input +{ + const input = new Readable({ + read() { + this.push('\x1B[1;5D'); // CTRL + Left + this.push(null); + }, + }); + const output = new Writable({ + write: common.mustCall((data, encoding, cb) => { + assert.strictEqual(rl.cursor, rl.line.length - 1); + cb(); + }), + }); + const rl = new readline.createInterface({ + input: input, + output: output, + terminal: true, + }); + rl.line = `a${' '.repeat(1e6)}a`; + rl.cursor = rl.line.length; +} From d3840bcf0de524ea4e1134f6571acc80fdb10d78 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 13 Mar 2019 12:24:27 +0000 Subject: [PATCH 063/133] src: allow per-Environment set of env vars Abstract the `process.env` backing mechanism in C++ to allow different kinds of backing stores for `process.env` for different Environments. PR-URL: https://github.com/nodejs/node/pull/26544 Fixes: https://github.com/nodejs/node/issues/24947 Reviewed-By: Ruben Bridgewater Reviewed-By: Vse Mozhet Byt Reviewed-By: Yongsheng Zhang Reviewed-By: James M Snell Reviewed-By: Benjamin Gruenbaum Reviewed-By: Joyee Cheung Signed-off-by: Beth Griggs --- src/env-inl.h | 8 ++ src/env.cc | 4 +- src/env.h | 20 ++++ src/node_credentials.cc | 24 ++++- src/node_env_var.cc | 202 ++++++++++++++++++++++++---------------- src/node_internals.h | 2 +- 6 files changed, 176 insertions(+), 84 deletions(-) diff --git a/src/env-inl.h b/src/env-inl.h index c42a643908a3c7..f75b6b9ed6920f 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -447,6 +447,14 @@ inline uint64_t Environment::timer_base() const { return timer_base_; } +inline std::shared_ptr Environment::envvars() { + return envvars_; +} + +inline void Environment::set_envvars(std::shared_ptr envvars) { + envvars_ = envvars; +} + inline bool Environment::printed_error() const { return printed_error_; } diff --git a/src/env.cc b/src/env.cc index f6a9c76d398cc8..31ed484a350504 100644 --- a/src/env.cc +++ b/src/env.cc @@ -207,6 +207,8 @@ Environment::Environment(IsolateData* isolate_data, set_as_callback_data_template(templ); } + set_envvars(per_process::real_environment); + // We create new copies of the per-Environment option sets, so that it is // easier to modify them after Environment creation. The defaults are // part of the per-Isolate option set, for which in turn the defaults are @@ -250,7 +252,7 @@ Environment::Environment(IsolateData* isolate_data, should_abort_on_uncaught_toggle_[0] = 1; std::string debug_cats; - credentials::SafeGetenv("NODE_DEBUG_NATIVE", &debug_cats); + credentials::SafeGetenv("NODE_DEBUG_NATIVE", &debug_cats, this); set_debug_categories(debug_cats, true); isolate()->GetHeapProfiler()->AddBuildEmbedderGraphCallback( diff --git a/src/env.h b/src/env.h index 29f84f4ffe4001..be5970a8a72ea8 100644 --- a/src/env.h +++ b/src/env.h @@ -532,6 +532,23 @@ class AsyncRequest : public MemoryRetainer { std::atomic_bool stopped_ {true}; }; +class KVStore { + public: + virtual v8::Local Get(v8::Isolate* isolate, + v8::Local key) const = 0; + virtual void Set(v8::Isolate* isolate, + v8::Local key, + v8::Local value) = 0; + virtual int32_t Query(v8::Isolate* isolate, + v8::Local key) const = 0; + virtual void Delete(v8::Isolate* isolate, v8::Local key) = 0; + virtual v8::Local Enumerate(v8::Isolate* isolate) const = 0; +}; + +namespace per_process { +extern std::shared_ptr real_environment; +} + class AsyncHooks { public: // Reason for both UidFields and Fields are that one is stored as a double* @@ -781,6 +798,8 @@ class Environment { inline ImmediateInfo* immediate_info(); inline TickInfo* tick_info(); inline uint64_t timer_base() const; + inline std::shared_ptr envvars(); + inline void set_envvars(std::shared_ptr envvars); inline IsolateData* isolate_data() const; @@ -1075,6 +1094,7 @@ class Environment { ImmediateInfo immediate_info_; TickInfo tick_info_; const uint64_t timer_base_; + std::shared_ptr envvars_; bool printed_error_ = false; bool emit_env_nonstring_warning_ = true; bool emit_err_name_warning_ = true; diff --git a/src/node_credentials.cc b/src/node_credentials.cc index 8d38c38a0c5706..23b9ad2893dcae 100644 --- a/src/node_credentials.cc +++ b/src/node_credentials.cc @@ -15,11 +15,14 @@ using v8::Array; using v8::Context; using v8::Function; using v8::FunctionCallbackInfo; +using v8::HandleScope; using v8::Isolate; using v8::Local; using v8::MaybeLocal; +using v8::NewStringType; using v8::Object; using v8::String; +using v8::TryCatch; using v8::Uint32; using v8::Value; @@ -30,13 +33,27 @@ bool linux_at_secure = false; namespace credentials { // Look up environment variable unless running as setuid root. -bool SafeGetenv(const char* key, std::string* text) { +bool SafeGetenv(const char* key, std::string* text, Environment* env) { #if !defined(__CloudABI__) && !defined(_WIN32) if (per_process::linux_at_secure || getuid() != geteuid() || getgid() != getegid()) goto fail; #endif + if (env != nullptr) { + HandleScope handle_scope(env->isolate()); + TryCatch ignore_errors(env->isolate()); + MaybeLocal value = env->envvars()->Get( + env->isolate(), + String::NewFromUtf8(env->isolate(), key, NewStringType::kNormal) + .ToLocalChecked()); + if (value.IsEmpty()) goto fail; + String::Utf8Value utf8_value(env->isolate(), value.ToLocalChecked()); + if (*utf8_value == nullptr) goto fail; + *text = std::string(*utf8_value, utf8_value.length()); + return true; + } + { Mutex::ScopedLock lock(per_process::env_var_mutex); if (const char* value = getenv(key)) { @@ -52,10 +69,11 @@ bool SafeGetenv(const char* key, std::string* text) { static void SafeGetenv(const FunctionCallbackInfo& args) { CHECK(args[0]->IsString()); - Isolate* isolate = args.GetIsolate(); + Environment* env = Environment::GetCurrent(args); + Isolate* isolate = env->isolate(); Utf8Value strenvtag(isolate, args[0]); std::string text; - if (!SafeGetenv(*strenvtag, &text)) return; + if (!SafeGetenv(*strenvtag, &text, env)) return; Local result = ToV8Value(isolate->GetCurrentContext(), text).ToLocalChecked(); args.GetReturnValue().Set(result); diff --git a/src/node_env_var.cc b/src/node_env_var.cc index 7e4913702b86cd..6bd799e19f8fc8 100644 --- a/src/node_env_var.cc +++ b/src/node_env_var.cc @@ -27,24 +27,29 @@ using v8::PropertyCallbackInfo; using v8::String; using v8::Value; +class RealEnvStore final : public KVStore { + public: + Local Get(Isolate* isolate, Local key) const override; + void Set(Isolate* isolate, Local key, Local value) override; + int32_t Query(Isolate* isolate, Local key) const override; + void Delete(Isolate* isolate, Local key) override; + Local Enumerate(Isolate* isolate) const override; +}; + namespace per_process { Mutex env_var_mutex; +std::shared_ptr real_environment = std::make_shared(); } // namespace per_process -static void EnvGetter(Local property, - const PropertyCallbackInfo& info) { - Isolate* isolate = info.GetIsolate(); - if (property->IsSymbol()) { - return info.GetReturnValue().SetUndefined(); - } +Local RealEnvStore::Get(Isolate* isolate, + Local property) const { Mutex::ScopedLock lock(per_process::env_var_mutex); #ifdef __POSIX__ node::Utf8Value key(isolate, property); const char* val = getenv(*key); if (val) { - return info.GetReturnValue().Set( - String::NewFromUtf8(isolate, val, NewStringType::kNormal) - .ToLocalChecked()); + return String::NewFromUtf8(isolate, val, NewStringType::kNormal) + .ToLocalChecked(); } #else // _WIN32 node::TwoByteValue key(isolate, property); @@ -62,106 +67,72 @@ static void EnvGetter(Local property, isolate, two_byte_buffer, NewStringType::kNormal); if (rc.IsEmpty()) { isolate->ThrowException(ERR_STRING_TOO_LONG(isolate)); - return; + return Local(); } - return info.GetReturnValue().Set(rc.ToLocalChecked()); + return rc.ToLocalChecked(); } #endif + return Local(); } -static void EnvSetter(Local property, - Local value, - const PropertyCallbackInfo& info) { - Environment* env = Environment::GetCurrent(info); - // calling env->EmitProcessEnvWarning() sets a variable indicating that - // warnings have been emitted. It should be called last after other - // conditions leading to a warning have been met. - if (env->options()->pending_deprecation && !value->IsString() && - !value->IsNumber() && !value->IsBoolean() && - env->EmitProcessEnvWarning()) { - if (ProcessEmitDeprecationWarning( - env, - "Assigning any value other than a string, number, or boolean to a " - "process.env property is deprecated. Please make sure to convert " - "the " - "value to a string before setting process.env with it.", - "DEP0104") - .IsNothing()) - return; - } - +void RealEnvStore::Set(Isolate* isolate, + Local property, + Local value) { Mutex::ScopedLock lock(per_process::env_var_mutex); #ifdef __POSIX__ - node::Utf8Value key(info.GetIsolate(), property); - node::Utf8Value val(info.GetIsolate(), value); + node::Utf8Value key(isolate, property); + node::Utf8Value val(isolate, value); setenv(*key, *val, 1); #else // _WIN32 - node::TwoByteValue key(info.GetIsolate(), property); - node::TwoByteValue val(info.GetIsolate(), value); + node::TwoByteValue key(isolate, property); + node::TwoByteValue val(isolate, value); WCHAR* key_ptr = reinterpret_cast(*key); // Environment variables that start with '=' are read-only. if (key_ptr[0] != L'=') { SetEnvironmentVariableW(key_ptr, reinterpret_cast(*val)); } #endif - // Whether it worked or not, always return value. - info.GetReturnValue().Set(value); } -static void EnvQuery(Local property, - const PropertyCallbackInfo& info) { +int32_t RealEnvStore::Query(Isolate* isolate, Local property) const { Mutex::ScopedLock lock(per_process::env_var_mutex); - int32_t rc = -1; // Not found unless proven otherwise. - if (property->IsString()) { #ifdef __POSIX__ - node::Utf8Value key(info.GetIsolate(), property); - if (getenv(*key)) rc = 0; + node::Utf8Value key(isolate, property); + if (getenv(*key)) return 0; #else // _WIN32 - node::TwoByteValue key(info.GetIsolate(), property); - WCHAR* key_ptr = reinterpret_cast(*key); - SetLastError(ERROR_SUCCESS); - if (GetEnvironmentVariableW(key_ptr, nullptr, 0) > 0 || - GetLastError() == ERROR_SUCCESS) { - rc = 0; - if (key_ptr[0] == L'=') { - // Environment variables that start with '=' are hidden and read-only. - rc = static_cast(v8::ReadOnly) | + node::TwoByteValue key(isolate, property); + WCHAR* key_ptr = reinterpret_cast(*key); + SetLastError(ERROR_SUCCESS); + if (GetEnvironmentVariableW(key_ptr, nullptr, 0) > 0 || + GetLastError() == ERROR_SUCCESS) { + if (key_ptr[0] == L'=') { + // Environment variables that start with '=' are hidden and read-only. + return static_cast(v8::ReadOnly) | static_cast(v8::DontDelete) | static_cast(v8::DontEnum); - } } -#endif + return 0; } - if (rc != -1) info.GetReturnValue().Set(rc); +#endif + return -1; } -static void EnvDeleter(Local property, - const PropertyCallbackInfo& info) { +void RealEnvStore::Delete(Isolate* isolate, Local property) { Mutex::ScopedLock lock(per_process::env_var_mutex); - if (property->IsString()) { #ifdef __POSIX__ - node::Utf8Value key(info.GetIsolate(), property); - unsetenv(*key); + node::Utf8Value key(isolate, property); + unsetenv(*key); #else - node::TwoByteValue key(info.GetIsolate(), property); - WCHAR* key_ptr = reinterpret_cast(*key); - SetEnvironmentVariableW(key_ptr, nullptr); + node::TwoByteValue key(isolate, property); + WCHAR* key_ptr = reinterpret_cast(*key); + SetEnvironmentVariableW(key_ptr, nullptr); #endif - } - - // process.env never has non-configurable properties, so always - // return true like the tc39 delete operator. - info.GetReturnValue().Set(true); } -static void EnvEnumerator(const PropertyCallbackInfo& info) { - Environment* env = Environment::GetCurrent(info); - Isolate* isolate = env->isolate(); - +Local RealEnvStore::Enumerate(Isolate* isolate) const { Mutex::ScopedLock lock(per_process::env_var_mutex); - Local envarr; - int env_size = 0; #ifdef __POSIX__ + int env_size = 0; while (environ[env_size]) { env_size++; } @@ -177,7 +148,8 @@ static void EnvEnumerator(const PropertyCallbackInfo& info) { #else // _WIN32 std::vector> env_v; WCHAR* environment = GetEnvironmentStringsW(); - if (environment == nullptr) return; // This should not happen. + if (environment == nullptr) + return Array::New(isolate); // This should not happen. WCHAR* p = environment; while (*p) { WCHAR* s; @@ -198,7 +170,7 @@ static void EnvEnumerator(const PropertyCallbackInfo& info) { if (rc.IsEmpty()) { isolate->ThrowException(ERR_STRING_TOO_LONG(isolate)); FreeEnvironmentStringsW(environment); - return; + return Local(); } env_v.push_back(rc.ToLocalChecked()); p = s + wcslen(s) + 1; @@ -206,8 +178,80 @@ static void EnvEnumerator(const PropertyCallbackInfo& info) { FreeEnvironmentStringsW(environment); #endif - envarr = Array::New(isolate, env_v.data(), env_v.size()); - info.GetReturnValue().Set(envarr); + return Array::New(isolate, env_v.data(), env_v.size()); +} + +static void EnvGetter(Local property, + const PropertyCallbackInfo& info) { + Environment* env = Environment::GetCurrent(info); + if (property->IsSymbol()) { + return info.GetReturnValue().SetUndefined(); + } + CHECK(property->IsString()); + info.GetReturnValue().Set( + env->envvars()->Get(env->isolate(), property.As())); +} + +static void EnvSetter(Local property, + Local value, + const PropertyCallbackInfo& info) { + Environment* env = Environment::GetCurrent(info); + // calling env->EmitProcessEnvWarning() sets a variable indicating that + // warnings have been emitted. It should be called last after other + // conditions leading to a warning have been met. + if (env->options()->pending_deprecation && !value->IsString() && + !value->IsNumber() && !value->IsBoolean() && + env->EmitProcessEnvWarning()) { + if (ProcessEmitDeprecationWarning( + env, + "Assigning any value other than a string, number, or boolean to a " + "process.env property is deprecated. Please make sure to convert " + "the " + "value to a string before setting process.env with it.", + "DEP0104") + .IsNothing()) + return; + } + + Local key; + Local value_string; + if (!property->ToString(env->context()).ToLocal(&key) || + !value->ToString(env->context()).ToLocal(&value_string)) { + return; + } + + env->envvars()->Set(env->isolate(), key, value_string); + + // Whether it worked or not, always return value. + info.GetReturnValue().Set(value); +} + +static void EnvQuery(Local property, + const PropertyCallbackInfo& info) { + Environment* env = Environment::GetCurrent(info); + if (property->IsString()) { + int32_t rc = env->envvars()->Query(env->isolate(), property.As()); + if (rc != -1) info.GetReturnValue().Set(rc); + } +} + +static void EnvDeleter(Local property, + const PropertyCallbackInfo& info) { + Environment* env = Environment::GetCurrent(info); + if (property->IsString()) { + env->envvars()->Delete(env->isolate(), property.As()); + } + + // process.env never has non-configurable properties, so always + // return true like the tc39 delete operator. + info.GetReturnValue().Set(true); +} + +static void EnvEnumerator(const PropertyCallbackInfo& info) { + Environment* env = Environment::GetCurrent(info); + + info.GetReturnValue().Set( + env->envvars()->Enumerate(env->isolate())); } MaybeLocal CreateEnvVarProxy(Local context, diff --git a/src/node_internals.h b/src/node_internals.h index b685fd2498ddb3..687c7115f57a0c 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -293,7 +293,7 @@ int ThreadPoolWork::CancelWork() { #endif // __POSIX__ && !defined(__ANDROID__) && !defined(__CloudABI__) namespace credentials { -bool SafeGetenv(const char* key, std::string* text); +bool SafeGetenv(const char* key, std::string* text, Environment* env = nullptr); } // namespace credentials void DefineZlibConstants(v8::Local target); From 729e2f242f8f11d7c34f1c22d1e522ccd1c086c1 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 13 Mar 2019 14:32:37 +0000 Subject: [PATCH 064/133] src: implement generic backend for process.env Allow a generic string-based backing store, with no significance to the remainder of the process, as a store for `process.env`. PR-URL: https://github.com/nodejs/node/pull/26544 Fixes: https://github.com/nodejs/node/issues/24947 Reviewed-By: Ruben Bridgewater Reviewed-By: Vse Mozhet Byt Reviewed-By: Yongsheng Zhang Reviewed-By: James M Snell Reviewed-By: Benjamin Gruenbaum Reviewed-By: Joyee Cheung Signed-off-by: Beth Griggs --- src/env.h | 6 +++ src/node_env_var.cc | 118 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) diff --git a/src/env.h b/src/env.h index be5970a8a72ea8..2d782634968493 100644 --- a/src/env.h +++ b/src/env.h @@ -543,6 +543,12 @@ class KVStore { v8::Local key) const = 0; virtual void Delete(v8::Isolate* isolate, v8::Local key) = 0; virtual v8::Local Enumerate(v8::Isolate* isolate) const = 0; + + virtual std::shared_ptr Clone(v8::Isolate* isolate) const; + virtual v8::Maybe AssignFromObject(v8::Local context, + v8::Local entries); + + static std::shared_ptr CreateGenericKVStore(); }; namespace per_process { diff --git a/src/node_env_var.cc b/src/node_env_var.cc index 6bd799e19f8fc8..2df7275b17520a 100644 --- a/src/node_env_var.cc +++ b/src/node_env_var.cc @@ -14,13 +14,17 @@ using v8::Array; using v8::Boolean; using v8::Context; using v8::EscapableHandleScope; +using v8::HandleScope; using v8::Integer; using v8::Isolate; +using v8::Just; using v8::Local; +using v8::Maybe; using v8::MaybeLocal; using v8::Name; using v8::NamedPropertyHandlerConfiguration; using v8::NewStringType; +using v8::Nothing; using v8::Object; using v8::ObjectTemplate; using v8::PropertyCallbackInfo; @@ -36,6 +40,24 @@ class RealEnvStore final : public KVStore { Local Enumerate(Isolate* isolate) const override; }; +class GenericKVStore final : public KVStore { + public: + Local Get(Isolate* isolate, Local key) const override; + void Set(Isolate* isolate, Local key, Local value) override; + int32_t Query(Isolate* isolate, Local key) const override; + void Delete(Isolate* isolate, Local key) override; + Local Enumerate(Isolate* isolate) const override; + + std::shared_ptr Clone(Isolate* isolate) const override; + + GenericKVStore() {} + GenericKVStore(const GenericKVStore& other) : map_(other.map_) {} + + private: + mutable Mutex mutex_; + std::unordered_map map_; +}; + namespace per_process { Mutex env_var_mutex; std::shared_ptr real_environment = std::make_shared(); @@ -181,6 +203,102 @@ Local RealEnvStore::Enumerate(Isolate* isolate) const { return Array::New(isolate, env_v.data(), env_v.size()); } +std::shared_ptr KVStore::Clone(v8::Isolate* isolate) const { + HandleScope handle_scope(isolate); + Local context = isolate->GetCurrentContext(); + + std::shared_ptr copy = KVStore::CreateGenericKVStore(); + Local keys = Enumerate(isolate); + uint32_t keys_length = keys->Length(); + for (uint32_t i = 0; i < keys_length; i++) { + Local key = keys->Get(context, i).ToLocalChecked(); + CHECK(key->IsString()); + copy->Set(isolate, key.As(), Get(isolate, key.As())); + } + return copy; +} + +Local GenericKVStore::Get(Isolate* isolate, Local key) const { + Mutex::ScopedLock lock(mutex_); + String::Utf8Value str(isolate, key); + auto it = map_.find(std::string(*str, str.length())); + if (it == map_.end()) return Local(); + return String::NewFromUtf8(isolate, it->second.data(), + NewStringType::kNormal, it->second.size()) + .ToLocalChecked(); +} + +void GenericKVStore::Set(Isolate* isolate, Local key, + Local value) { + Mutex::ScopedLock lock(mutex_); + String::Utf8Value key_str(isolate, key); + String::Utf8Value value_str(isolate, value); + if (*key_str != nullptr && *value_str != nullptr) { + map_[std::string(*key_str, key_str.length())] = + std::string(*value_str, value_str.length()); + } +} + +int32_t GenericKVStore::Query(Isolate* isolate, Local key) const { + Mutex::ScopedLock lock(mutex_); + String::Utf8Value str(isolate, key); + auto it = map_.find(std::string(*str, str.length())); + return it == map_.end() ? -1 : 0; +} + +void GenericKVStore::Delete(Isolate* isolate, Local key) { + Mutex::ScopedLock lock(mutex_); + String::Utf8Value str(isolate, key); + map_.erase(std::string(*str, str.length())); +} + +Local GenericKVStore::Enumerate(Isolate* isolate) const { + Mutex::ScopedLock lock(mutex_); + std::vector> values; + values.reserve(map_.size()); + for (const auto& pair : map_) { + values.emplace_back( + String::NewFromUtf8(isolate, pair.first.data(), + NewStringType::kNormal, pair.first.size()) + .ToLocalChecked()); + } + return Array::New(isolate, values.data(), values.size()); +} + +std::shared_ptr GenericKVStore::Clone(Isolate* isolate) const { + return std::make_shared(*this); +} + +std::shared_ptr KVStore::CreateGenericKVStore() { + return std::make_shared(); +} + +Maybe KVStore::AssignFromObject(Local context, + Local entries) { + Isolate* isolate = context->GetIsolate(); + HandleScope handle_scope(isolate); + Local keys; + if (!entries->GetOwnPropertyNames(context).ToLocal(&keys)) + return Nothing(); + uint32_t keys_length = keys->Length(); + for (uint32_t i = 0; i < keys_length; i++) { + Local key; + if (!keys->Get(context, i).ToLocal(&key)) + return Nothing(); + if (!key->IsString()) continue; + + Local value; + Local value_string; + if (!entries->Get(context, key.As()).ToLocal(&value) || + !value->ToString(context).ToLocal(&value_string)) { + return Nothing(); + } + + Set(isolate, key.As(), value_string); + } + return Just(true); +} + static void EnvGetter(Local property, const PropertyCallbackInfo& info) { Environment* env = Environment::GetCurrent(info); From 8bd7909d0089b42f513f4cabd67430d35a467a0a Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 22 Feb 2019 20:11:19 +0100 Subject: [PATCH 065/133] worker: use copy of process.env MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of sharing the OS-backed store for all `process.env` instances, create a copy of `process.env` for every worker that is created. The copies do not interact. Native-addons do not see modifications to `process.env` from Worker threads, but child processes started from Workers do default to the Worker’s copy of `process.env`. This makes Workers behave like child processes as far as `process.env` is concerned, and an option corresponding to the `child_process` module’s `env` option is added to the constructor. Fixes: https://github.com/nodejs/node/issues/24947 PR-URL: https://github.com/nodejs/node/pull/26544 Reviewed-By: Ruben Bridgewater Reviewed-By: Vse Mozhet Byt Reviewed-By: Yongsheng Zhang Reviewed-By: James M Snell Reviewed-By: Benjamin Gruenbaum Reviewed-By: Joyee Cheung Signed-off-by: Beth Griggs --- doc/api/process.md | 17 ++++-- doc/api/worker_threads.md | 51 ++++++++++++++---- lib/internal/worker.js | 24 +++++++++ lib/worker_threads.js | 2 + src/env-inl.h | 8 +-- src/env.cc | 2 +- src/env.h | 10 ++-- src/node_credentials.cc | 2 +- src/node_env_var.cc | 49 +++++++++-------- src/node_worker.cc | 25 ++++++++- src/node_worker.h | 4 ++ .../test-worker-process-env-shared.js | 32 +++++++++++ test/parallel/test-worker-process-env.js | 54 +++++++++++++++++++ 13 files changed, 229 insertions(+), 51 deletions(-) create mode 100644 test/parallel/test-worker-process-env-shared.js create mode 100644 test/parallel/test-worker-process-env.js diff --git a/doc/api/process.md b/doc/api/process.md index 7c29ceefbcbe73..5f866e3139aa4d 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -954,6 +954,11 @@ emitMyWarning(); + +* {symbol} + +A special value that can be passed as the `env` option of the [`Worker`][] +constructor, to indicate that the current thread and the Worker thread should +share read and write access to the same set of environment variables. + +```js +const { Worker, SHARE_ENV } = require('worker_threads'); +new Worker('process.env.SET_IN_WORKER = "foo"', { eval: true, env: SHARE_ENV }) + .on('exit', () => { + console.log(process.env.SET_IN_WORKER); // Prints 'foo'. + }); +``` + ## worker.threadId + +Type: Documentation-only + +The `_channel` property of child process objects returned by `spawn()` and +similar functions is not intended for public use. Use `ChildProcess.channel` +instead. + [`--pending-deprecation`]: cli.html#cli_pending_deprecation [`Buffer.allocUnsafeSlow(size)`]: buffer.html#buffer_class_method_buffer_allocunsafeslow_size [`Buffer.from(array)`]: buffer.html#buffer_class_method_buffer_from_array From 7a391961ea451a4187e9047229dc3a0caf791ccc Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Fri, 29 Mar 2019 23:50:23 +0800 Subject: [PATCH 070/133] doc: change code lang and update it with latest Node.js PR-URL: https://github.com/nodejs/node/pull/26987 Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau Reviewed-By: Vse Mozhet Byt Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/process.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/doc/api/process.md b/doc/api/process.md index 5f866e3139aa4d..7b1660f310d0c2 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -2214,22 +2214,23 @@ console.log(process.versions); Will generate an object similar to: - -```js -{ http_parser: '2.7.0', - node: '8.9.0', - v8: '6.3.292.48-node.6', - uv: '1.18.0', +```console +{ node: '11.13.0', + v8: '7.0.276.38-node.18', + uv: '1.27.0', zlib: '1.2.11', - ares: '1.13.0', - modules: '60', - nghttp2: '1.29.0', - napi: '2', - openssl: '1.0.2n', - icu: '60.1', - unicode: '10.0', - cldr: '32.0', - tz: '2016b' } + brotli: '1.0.7', + ares: '1.15.0', + modules: '67', + nghttp2: '1.34.0', + napi: '4', + llhttp: '1.1.1', + http_parser: '2.8.0', + openssl: '1.1.1b', + cldr: '34.0', + icu: '63.1', + tz: '2018e', + unicode: '11.0' } ``` ## Exit Codes From fbdead7f35916837cb9ac2444e61640a1559a5db Mon Sep 17 00:00:00 2001 From: cjihrig Date: Fri, 29 Mar 2019 23:17:48 -0400 Subject: [PATCH 071/133] src: add missing uv_fs_req_cleanup() This cleans up after the uv_fs_realpath() call a few lines up. PR-URL: https://github.com/nodejs/node/pull/27004 Reviewed-By: Santiago Gimeno Reviewed-By: Richard Lau Signed-off-by: Beth Griggs --- src/node_process_object.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/node_process_object.cc b/src/node_process_object.cc index 0b97a5b21330cf..93193a18fcdbee 100644 --- a/src/node_process_object.cc +++ b/src/node_process_object.cc @@ -193,6 +193,7 @@ MaybeLocal CreateProcessObject( CHECK_NOT_NULL(req.ptr); exec_path = std::string(static_cast(req.ptr)); } + uv_fs_req_cleanup(&req); #endif process ->Set(env->context(), From 06dce392ba0767283c4911581167a628cd910285 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 31 Mar 2019 01:35:59 -0400 Subject: [PATCH 072/133] test: fix error code typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/27024 Reviewed-By: Richard Lau Reviewed-By: Rich Trott Reviewed-By: Anatoli Papirovski Reviewed-By: Yongsheng Zhang Reviewed-By: Michaël Zasso Reviewed-By: Ruben Bridgewater Reviewed-By: Luigi Pinca Signed-off-by: Beth Griggs --- test/known_issues/test-fs-copyfile-respect-permissions.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/known_issues/test-fs-copyfile-respect-permissions.js b/test/known_issues/test-fs-copyfile-respect-permissions.js index 0ebc5fbfc1dbed..34697eea6c0bef 100644 --- a/test/known_issues/test-fs-copyfile-respect-permissions.js +++ b/test/known_issues/test-fs-copyfile-respect-permissions.js @@ -23,8 +23,9 @@ function beforeEach() { fs.chmodSync(dest, '444'); const check = (err) => { - assert.strictEqual(err.code, 'EACCESS'); + assert.strictEqual(err.code, 'EACCES'); assert.strictEqual(fs.readFileSync(dest, 'utf8'), 'dest'); + return true; }; return { source, dest, check }; @@ -39,8 +40,9 @@ function beforeEach() { // Test promises API. { const { source, dest, check } = beforeEach(); - assert.throws(async () => { await fs.promises.copyFile(source, dest); }, - check); + (async () => { + await assert.rejects(fs.promises.copyFile(source, dest), check); + })(); } // Test callback API. From d0ee1a3dbb4d66ec246da72e16b216f3a5507dfb Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 27 Mar 2019 15:35:16 -0700 Subject: [PATCH 073/133] src: fix warning on mismatched fn signature MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the missing `void* priv` to node_report's Initialize(). PR-URL: https://github.com/nodejs/node/pull/26950 Reviewed-By: Anna Henningsen Reviewed-By: Richard Lau Reviewed-By: Tobias Nießen Reviewed-By: Yongsheng Zhang Signed-off-by: Beth Griggs --- src/node_report_module.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/node_report_module.cc b/src/node_report_module.cc index 3317077e8b9814..f303685adbbf88 100644 --- a/src/node_report_module.cc +++ b/src/node_report_module.cc @@ -155,7 +155,8 @@ static void SetReportOnUncaughtException( static void Initialize(Local exports, Local unused, - Local context) { + Local context, + void* priv) { Environment* env = Environment::GetCurrent(context); env->SetMethod(exports, "writeReport", WriteReport); From 8258f0704da5c4782e758489cf08148f82033667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Arboleda?= Date: Wed, 20 Mar 2019 00:59:40 -0500 Subject: [PATCH 074/133] test: remove unused triggerAsyncId param in test PR-URL: https://github.com/nodejs/node/pull/26800 Reviewed-By: Anto Aravinth Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Yongsheng Zhang Signed-off-by: Beth Griggs --- test/parallel/test-async-hooks-close-during-destroy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-async-hooks-close-during-destroy.js b/test/parallel/test-async-hooks-close-during-destroy.js index abdeab2404251a..6e485d2d1110f2 100644 --- a/test/parallel/test-async-hooks-close-during-destroy.js +++ b/test/parallel/test-async-hooks-close-during-destroy.js @@ -11,7 +11,7 @@ let destroyResCallCount = 0; let res2; async_hooks.createHook({ - init: common.mustCallAtLeast((id, provider, triggerAsyncId) => { + init: common.mustCallAtLeast((id, provider) => { if (provider === 'foobar') initCalls.add(id); }, 2), From 7cbe1214d0c1c0be4185fd2032aa148309efdca2 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 30 Mar 2019 00:21:00 -0400 Subject: [PATCH 075/133] tools: update ESLint to 5.16.0 Update ESLint to 5.16.0 PR-URL: https://github.com/nodejs/node/pull/27005 Reviewed-By: Richard Lau Reviewed-By: Rich Trott Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Signed-off-by: Beth Griggs --- tools/node_modules/eslint/README.md | 17 +- tools/node_modules/eslint/lib/cli.js | 10 +- .../lib/formatters/html-template-message.html | 2 +- .../eslint/lib/formatters/html.js | 24 +- .../lib/formatters/json-with-metadata.js | 16 + .../node_modules/js-yaml/dist/js-yaml.js | 14 +- .../node_modules/js-yaml/dist/js-yaml.min.js | 2 +- .../js-yaml/lib/js-yaml/loader.js | 12 + .../eslint/node_modules/js-yaml/package.json | 2 +- .../node_modules/parent-module/index.js | 4 + .../node_modules/parent-module/package.json | 6 +- .../node_modules/parent-module/readme.md | 7 +- .../eslint/node_modules/semver/README.md | 16 +- .../eslint/node_modules/semver/bin/semver | 161 +- .../eslint/node_modules/semver/package.json | 12 +- .../eslint/node_modules/semver/semver.js | 1681 +++++++++-------- tools/node_modules/eslint/package.json | 6 +- 17 files changed, 1109 insertions(+), 883 deletions(-) create mode 100644 tools/node_modules/eslint/lib/formatters/json-with-metadata.js diff --git a/tools/node_modules/eslint/README.md b/tools/node_modules/eslint/README.md index 437794dc650483..172c956add7540 100644 --- a/tools/node_modules/eslint/README.md +++ b/tools/node_modules/eslint/README.md @@ -193,12 +193,13 @@ According to our policy, any minor update may report more errors than the previo These folks keep the project moving and are resources for help. + + + ### Technical Steering Committee (TSC) The people who manage releases, review feature requests, and meet regularly to ensure ESLint is properly maintained. - -
11Current10Current10LTS 8LTS 6LTS

@@ -239,14 +240,15 @@ Kai Cataldo
Teddy Katz
-
+ + + + ### Committers The people who review and fix bugs and help triage issues. - -

@@ -257,7 +259,10 @@ The people who review and fix bugs and help triage issues.
Pig Fang
-
+ + + + ## Sponsors diff --git a/tools/node_modules/eslint/lib/cli.js b/tools/node_modules/eslint/lib/cli.js index f67eb7274ffa64..9ce81e55425ec5 100644 --- a/tools/node_modules/eslint/lib/cli.js +++ b/tools/node_modules/eslint/lib/cli.js @@ -81,15 +81,23 @@ function translateOptions(cliOptions) { */ function printResults(engine, results, format, outputFile) { let formatter; + let rules; try { formatter = engine.getFormatter(format); + rules = engine.getRules(); } catch (e) { log.error(e.message); return false; } - const output = formatter(results); + const rulesMeta = {}; + + rules.forEach((rule, ruleId) => { + rulesMeta[ruleId] = rule.meta; + }); + + const output = formatter(results, { rulesMeta }); if (output) { if (outputFile) { diff --git a/tools/node_modules/eslint/lib/formatters/html-template-message.html b/tools/node_modules/eslint/lib/formatters/html-template-message.html index bc353502050d0c..93795a1bdc8da3 100644 --- a/tools/node_modules/eslint/lib/formatters/html-template-message.html +++ b/tools/node_modules/eslint/lib/formatters/html-template-message.html @@ -3,6 +3,6 @@ <%= severityName %> <%- message %> - <%= ruleId %> + <%= ruleId %> diff --git a/tools/node_modules/eslint/lib/formatters/html.js b/tools/node_modules/eslint/lib/formatters/html.js index d450f9dee24f57..091eab1c4ad772 100644 --- a/tools/node_modules/eslint/lib/formatters/html.js +++ b/tools/node_modules/eslint/lib/formatters/html.js @@ -62,9 +62,10 @@ function renderColor(totalErrors, totalWarnings) { * Get HTML (table rows) describing the messages. * @param {Array} messages Messages. * @param {int} parentIndex Index of the parent HTML row. + * @param {Object} rulesMeta Dictionary containing metadata for each rule executed by the analysis. * @returns {string} HTML (table rows) describing the messages. */ -function renderMessages(messages, parentIndex) { +function renderMessages(messages, parentIndex, rulesMeta) { /** * Get HTML (table row) describing a message. @@ -74,6 +75,13 @@ function renderMessages(messages, parentIndex) { return lodash.map(messages, message => { const lineNumber = message.line || 0; const columnNumber = message.column || 0; + let ruleUrl; + + if (rulesMeta) { + const meta = rulesMeta[message.ruleId]; + + ruleUrl = lodash.get(meta, "docs.url", null); + } return messageTemplate({ parentIndex, @@ -82,33 +90,37 @@ function renderMessages(messages, parentIndex) { severityNumber: message.severity, severityName: message.severity === 1 ? "Warning" : "Error", message: message.message, - ruleId: message.ruleId + ruleId: message.ruleId, + ruleUrl }); }).join("\n"); } /** * @param {Array} results Test results. + * @param {Object} rulesMeta Dictionary containing metadata for each rule executed by the analysis. * @returns {string} HTML string describing the results. */ -function renderResults(results) { +function renderResults(results, rulesMeta) { return lodash.map(results, (result, index) => resultTemplate({ index, color: renderColor(result.errorCount, result.warningCount), filePath: result.filePath, summary: renderSummary(result.errorCount, result.warningCount) - }) + renderMessages(result.messages, index)).join("\n"); + }) + renderMessages(result.messages, index, rulesMeta)).join("\n"); } //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ -module.exports = function(results) { +module.exports = function(results, data) { let totalErrors, totalWarnings; + const metaData = data ? data.rulesMeta : {}; + totalErrors = 0; totalWarnings = 0; @@ -122,6 +134,6 @@ module.exports = function(results) { date: new Date(), reportColor: renderColor(totalErrors, totalWarnings), reportSummary: renderSummary(totalErrors, totalWarnings), - results: renderResults(results) + results: renderResults(results, metaData) }); }; diff --git a/tools/node_modules/eslint/lib/formatters/json-with-metadata.js b/tools/node_modules/eslint/lib/formatters/json-with-metadata.js new file mode 100644 index 00000000000000..6899471547a4e3 --- /dev/null +++ b/tools/node_modules/eslint/lib/formatters/json-with-metadata.js @@ -0,0 +1,16 @@ +/** + * @fileoverview JSON reporter, including rules metadata + * @author Chris Meyer + */ +"use strict"; + +//------------------------------------------------------------------------------ +// Public Interface +//------------------------------------------------------------------------------ + +module.exports = function(results, data) { + return JSON.stringify({ + results, + metadata: data + }); +}; diff --git a/tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.js b/tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.js index e8b767d390f46f..b9e80da637e496 100644 --- a/tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.js +++ b/tools/node_modules/eslint/node_modules/js-yaml/dist/js-yaml.js @@ -1,4 +1,4 @@ -/* js-yaml 3.12.2 https://github.com/nodeca/js-yaml */(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.jsyaml = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i=i.flowLevel;switch(H(r,n,i.indent,t,function(e){return function(e,t){var n,i;for(n=0,i=e.implicitTypes.length;n"+V(r,i.indent)+Z(L(function(e,t){var n,i,r=/(\n+)([^\n]*)/g,o=(s=e.indexOf("\n"),s=-1!==s?s:e.length,r.lastIndex=s,z(e.slice(0,s),t)),a="\n"===e[0]||" "===e[0];var s;for(;i=r.exec(e);){var c=i[1],u=i[2];n=" "===u[0],o+=c+(a||n||""===u?"":"\n")+z(u,t),a=n}return o}(r,t),e));case $:return'"'+function(e){for(var t,n,i,r="",o=0;ot&&o tag resolver accepts not "'+c+'" style');i=s.represent[c](t,c)}e.dump=i}return!0}return!1}function Q(e,t,n,i,r,o){e.tag=null,e.dump=n,J(e,n,!1)||J(e,n,!0);var a=p.call(e.dump);i&&(i=e.flowLevel<0||e.flowLevel>t);var s,c,u="[object Object]"===a||"[object Array]"===a;if(u&&(c=-1!==(s=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||c||2!==e.indent&&0 "+e.dump)}return!0}function X(e,t){var n,i,r=[],o=[];for(function e(t,n,i){var r,o,a;if(null!==t&&"object"==typeof t)if(-1!==(o=n.indexOf(t)))-1===i.indexOf(o)&&i.push(o);else if(n.push(t),Array.isArray(t))for(o=0,a=t.length;ot)&&0!==i)_(e,"bad indentation of a sequence entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt)&&(K(e,t,b,!0,r)&&(m?d=e.result:h=e.result),m||(D(e,l,p,f,d,h,o,a),f=d=h=null),q(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)_(e,"bad indentation of a mapping entry");else if(e.lineIndentl&&(l=e.lineIndent),j(o))p++;else{if(e.lineIndent>10),56320+(c-65536&1023)),e.position++}else _(e,"unknown escape sequence");n=i=e.position}else j(s)?(T(e,n,i,!0),R(e,q(e,!1,t)),n=i=e.position):e.position===e.lineStart&&Y(e)?_(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}_(e,"unexpected end of the stream within a double quoted scalar")}(e,p)?m=!0:!function(e){var t,n,i;if(42!==(i=e.input.charCodeAt(e.position)))return!1;for(i=e.input.charCodeAt(++e.position),t=e.position;0!==i&&!S(i)&&!E(i);)i=e.input.charCodeAt(++e.position);return e.position===t&&_(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(n)||_(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],q(e,!0,-1),!0}(e)?function(e,t,n){var i,r,o,a,s,c,u,l,p=e.kind,f=e.result;if(S(l=e.input.charCodeAt(e.position))||E(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(S(i=e.input.charCodeAt(e.position+1))||n&&E(i)))return!1;for(e.kind="scalar",e.result="",r=o=e.position,a=!1;0!==l;){if(58===l){if(S(i=e.input.charCodeAt(e.position+1))||n&&E(i))break}else if(35===l){if(S(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&Y(e)||n&&E(l))break;if(j(l)){if(s=e.line,c=e.lineStart,u=e.lineIndent,q(e,!1,-1),e.lineIndent>=t){a=!0,l=e.input.charCodeAt(e.position);continue}e.position=o,e.line=s,e.lineStart=c,e.lineIndent=u;break}}a&&(T(e,r,o,!1),R(e,e.line-s),r=o=e.position,a=!1),I(l)||(o=e.position+1),l=e.input.charCodeAt(++e.position)}return T(e,r,o,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,p,x===n)&&(m=!0,null===e.tag&&(e.tag="?")):(m=!0,null===e.tag&&null===e.anchor||_(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===d&&(m=s&&B(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(c=0,u=e.implicitTypes.length;c tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):_(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):_(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function $(e){var t,n,i,r,o=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(r=e.input.charCodeAt(e.position))&&(q(e,!0,-1),r=e.input.charCodeAt(e.position),!(0t/2-1){n=" ... ",i+=5;break}for(r="",o=this.position;ot/2-1){r=" ... ",o-=5;break}return a=this.buffer.slice(i,o),s.repeat(" ",e)+n+a+r+"\n"+s.repeat(" ",e+this.position-i+n.length)+"^"},i.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(n+=":\n"+t),n},t.exports=i},{"./common":2}],7:[function(e,t,n){"use strict";var i=e("./common"),r=e("./exception"),o=e("./type");function a(e,t,i){var r=[];return e.include.forEach(function(e){i=a(e,t,i)}),e[t].forEach(function(n){i.forEach(function(e,t){e.tag===n.tag&&e.kind===n.kind&&r.push(t)}),i.push(n)}),i.filter(function(e,t){return-1===r.indexOf(t)})}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new r("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=a(this,"implicit",[]),this.compiledExplicit=a(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{}};function i(e){n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(i.charAt(t));return 0==(n=r%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===n?(s.push(a>>10&255),s.push(a>>2&255)):12===n&&s.push(a>>4&255),c?c.from?c.from(s):new c(s):s},predicate:function(e){return c&&c.isBuffer(e)},represent:function(e){var t,n,i="",r=0,o=e.length,a=u;for(t=0;t>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+e[t];return 0==(n=o%3)?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}})},{"../type":13}],15:[function(e,t,n){"use strict";var i=e("../type");t.exports=new i("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(e,t,n){"use strict";var i=e("../common"),r=e("../type"),o=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var a=/^[-+]?[0-9]+e/;t.exports=new r("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!o.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n,i,r;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,r=[],0<="+-".indexOf(t[0])&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:0<=t.indexOf(":")?(t.split(":").forEach(function(e){r.unshift(parseFloat(e,10))}),t=0,i=1,r.forEach(function(e){t+=e*i,i*=60}),n*t):n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||i.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(i.isNegativeZero(e))return"-0.0";return n=e.toString(10),a.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(e,t,n){"use strict";var i=e("../common"),r=e("../type");t.exports=new r("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,i,r,o=e.length,a=0,s=!1;if(!o)return!1;if("-"!==(t=e[a])&&"+"!==t||(t=e[++a]),"0"===t){if(a+1===o)return!0;if("b"===(t=e[++a])){for(a++;a=i.flowLevel;switch(H(r,n,i.indent,t,function(e){return function(e,t){var n,i;for(n=0,i=e.implicitTypes.length;n"+V(r,i.indent)+Z(L(function(t,n){var e,i,r=/(\n+)([^\n]*)/g,o=function(){var e=t.indexOf("\n");return e=-1!==e?e:t.length,r.lastIndex=e,z(t.slice(0,e),n)}(),a="\n"===t[0]||" "===t[0];for(;i=r.exec(t);){var s=i[1],c=i[2];e=" "===c[0],o+=s+(a||e||""===c?"":"\n")+z(c,n),a=e}return o}(r,t),e));case $:return'"'+function(e){for(var t,n,i,r="",o=0;ot&&o tag resolver accepts not "'+c+'" style');i=s.represent[c](t,c)}e.dump=i}return!0}return!1}function Q(e,t,n,i,r,o){e.tag=null,e.dump=n,J(e,n,!1)||J(e,n,!0);var a=p.call(e.dump);i&&(i=e.flowLevel<0||e.flowLevel>t);var s,c,u="[object Object]"===a||"[object Array]"===a;if(u&&(c=-1!==(s=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||c||2!==e.indent&&0 "+e.dump)}return!0}function X(e,t){var n,i,r=[],o=[];for(function e(t,n,i){var r,o,a;if(null!==t&&"object"==typeof t)if(-1!==(o=n.indexOf(t)))-1===i.indexOf(o)&&i.push(o);else if(n.push(t),Array.isArray(t))for(o=0,a=t.length;o>10),56320+(e-65536&1023))}for(var M=new Array(256),T=new Array(256),d=0;d<256;d++)M[d]=f(d)?1:0,T[d]=f(d);function h(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||a,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function m(e,t){return new i(t,new r(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function L(e,t){throw m(e,t)}function D(e,t){e.onWarning&&e.onWarning.call(null,m(e,t))}var U={YAML:function(e,t,n){var i,r,o;null!==e.version&&L(e,"duplication of %YAML directive"),1!==n.length&&L(e,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&L(e,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),o=parseInt(i[2],10),1!==r&&L(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&D(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var i,r;2!==n.length&&L(e,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],l.test(i)||L(e,"ill-formed tag handle (first argument) of the TAG directive"),y.call(e.tagMap,i)&&L(e,'there is a previously declared suffix for "'+i+'" tag handle'),p.test(r)||L(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[i]=r}};function q(e,t,n,i){var r,o,a,s;if(tt)&&0!==i)L(e,"bad indentation of a sequence entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt)&&(V(e,t,b,!0,r)&&(m?d=e.result:h=e.result),m||(R(e,l,p,f,d,h,o,a),f=d=h=null),P(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)L(e,"bad indentation of a mapping entry");else if(e.lineIndentu&&(u=e.lineIndent),j(o))l++;else{if(e.lineIndent=t){a=!0,l=e.input.charCodeAt(e.position);continue}e.position=o,e.line=s,e.lineStart=c,e.lineIndent=u;break}}a&&(q(e,r,o,!1),K(e,e.line-s),r=o=e.position,a=!1),I(l)||(o=e.position+1),l=e.input.charCodeAt(++e.position)}return q(e,r,o,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,p,x===n)&&(m=!0,null===e.tag&&(e.tag="?")):(m=!0,null===e.tag&&null===e.anchor||L(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===d&&(m=s&&$(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(c=0,u=e.implicitTypes.length;c tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):L(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):L(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function Z(e){var t,n,i,r,o=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(r=e.input.charCodeAt(e.position))&&(P(e,!0,-1),r=e.input.charCodeAt(e.position),!(0t/2-1){n=" ... ",i+=5;break}for(r="",o=this.position;ot/2-1){r=" ... ",o-=5;break}return a=this.buffer.slice(i,o),s.repeat(" ",e)+n+a+r+"\n"+s.repeat(" ",e+this.position-i+n.length)+"^"},i.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(n+=":\n"+t),n},t.exports=i},{"./common":2}],7:[function(e,t,n){"use strict";var i=e("./common"),r=e("./exception"),o=e("./type");function a(e,t,i){var r=[];return e.include.forEach(function(e){i=a(e,t,i)}),e[t].forEach(function(n){i.forEach(function(e,t){e.tag===n.tag&&e.kind===n.kind&&r.push(t)}),i.push(n)}),i.filter(function(e,t){return-1===r.indexOf(t)})}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new r("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=a(this,"implicit",[]),this.compiledExplicit=a(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{}};function i(e){n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(i.charAt(t));return 0==(n=r%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18==n?(s.push(a>>10&255),s.push(a>>2&255)):12==n&&s.push(a>>4&255),c?c.from?c.from(s):new c(s):s},predicate:function(e){return c&&c.isBuffer(e)},represent:function(e){var t,n,i="",r=0,o=e.length,a=u;for(t=0;t>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+e[t];return 0==(n=o%3)?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2==n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1==n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}})},{"../type":13}],15:[function(e,t,n){"use strict";var i=e("../type");t.exports=new i("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(e,t,n){"use strict";var i=e("../common"),r=e("../type"),o=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var a=/^[-+]?[0-9]+e/;t.exports=new r("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!o.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n,i,r;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,r=[],0<="+-".indexOf(t[0])&&(t=t.slice(1)),".inf"===t?1==n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:0<=t.indexOf(":")?(t.split(":").forEach(function(e){r.unshift(parseFloat(e,10))}),t=0,i=1,r.forEach(function(e){t+=e*i,i*=60}),n*t):n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||i.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(i.isNegativeZero(e))return"-0.0";return n=e.toString(10),a.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(e,t,n){"use strict";var i=e("../common"),r=e("../type");function o(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function a(e){return 48<=e&&e<=55}function s(e){return 48<=e&&e<=57}t.exports=new r("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n=e.length,i=0,r=!1;if(!n)return!1;if("-"!==(t=e[i])&&"+"!==t||(t=e[++i]),"0"===t){if(i+1===n)return!0;if("b"===(t=e[++i])){for(i++;i { for (const stack of stacks) { const parentFilepath = stack.getFileName(); + if (typeof parentFilepath !== 'string') { + continue; + } + if (parentFilepath === filepath) { seenVal = true; continue; diff --git a/tools/node_modules/eslint/node_modules/parent-module/package.json b/tools/node_modules/eslint/node_modules/parent-module/package.json index ef1e4f44462694..1f5b6cb1757a63 100644 --- a/tools/node_modules/eslint/node_modules/parent-module/package.json +++ b/tools/node_modules/eslint/node_modules/parent-module/package.json @@ -14,9 +14,9 @@ "deprecated": false, "description": "Get the path of the parent module", "devDependencies": { - "ava": "^1.0.1", + "ava": "^1.4.1", "execa": "^1.0.0", - "xo": "^0.23.0" + "xo": "^0.24.0" }, "engines": { "node": ">=6" @@ -51,5 +51,5 @@ "scripts": { "test": "xo && ava" }, - "version": "1.0.0" + "version": "1.0.1" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/parent-module/readme.md b/tools/node_modules/eslint/node_modules/parent-module/readme.md index de4d553546efa6..dffb4ce8f1acaa 100644 --- a/tools/node_modules/eslint/node_modules/parent-module/readme.md +++ b/tools/node_modules/eslint/node_modules/parent-module/readme.md @@ -8,7 +8,7 @@ Node.js exposes `module.parent`, but it only gives you the first cached parent, ## Install ``` -$ npm install --save parent-module +$ npm install parent-module ``` @@ -21,12 +21,13 @@ const parentModule = require('parent-module'); module.exports = () => { console.log(parentModule()); //=> '/Users/sindresorhus/dev/unicorn/foo.js' -} +}; ``` ```js // foo.js const bar = require('./bar'); + bar(); ``` @@ -57,7 +58,7 @@ const readPkgUp = require('read-pkg-up'); const parentModule = require('parent-module'); console.log(readPkgUp.sync({cwd: path.dirname(parentModule())}).pkg); -//=> {name: 'chalk', version: '1.0.0', ...} +//=> {name: 'chalk', version: '1.0.0', …} ``` diff --git a/tools/node_modules/eslint/node_modules/semver/README.md b/tools/node_modules/eslint/node_modules/semver/README.md index e0edbb7333112c..e5ccececf4808f 100644 --- a/tools/node_modules/eslint/node_modules/semver/README.md +++ b/tools/node_modules/eslint/node_modules/semver/README.md @@ -20,6 +20,7 @@ semver.clean(' =v1.2.3 ') // '1.2.3' semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true semver.gt('1.2.3', '9.8.7') // false semver.lt('1.2.3', '9.8.7') // true +semver.minVersion('>=1.0.0') // '1.0.0' semver.valid(semver.coerce('v2')) // '2.0.0' semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' ``` @@ -29,7 +30,7 @@ As a command-line utility: ``` $ semver -h -A JavaScript implementation of the http://semver.org/ specification +A JavaScript implementation of the https://semver.org/ specification Copyright Isaac Z. Schlueter Usage: semver [options] [ [...]] @@ -71,7 +72,7 @@ multiple versions to the utility will just sort them. ## Versions A "version" is described by the `v2.0.0` specification found at -. +. A leading `"="` or `"v"` character is stripped off and ignored. @@ -137,6 +138,13 @@ the user is indicating that they are aware of the risk. However, it is still not appropriate to assume that they have opted into taking a similar risk on the *next* set of prerelease versions. +Note that this behavior can be suppressed (treating all prerelease +versions as if they were normal versions, for the purpose of range +matching) by setting the `includePrerelease` flag on the options +object to any +[functions](https://github.com/npm/node-semver#functions) that do +range matching. + #### Prerelease Identifiers The method `.inc` takes an additional `identifier` string argument that @@ -325,6 +333,8 @@ strings that they parse. * `patch(v)`: Return the patch version number. * `intersects(r1, r2, loose)`: Return true if the two supplied ranges or comparators intersect. +* `parse(v)`: Attempt to parse a string as a semantic version, returning either + a `SemVer` object or `null`. ### Comparison @@ -361,6 +371,8 @@ strings that they parse. that satisfies the range, or `null` if none of them do. * `minSatisfying(versions, range)`: Return the lowest version in the list that satisfies the range, or `null` if none of them do. +* `minVersion(range)`: Return the lowest version that can possibly match + the given range. * `gtr(version, range)`: Return `true` if version is greater than all the versions possible in the range. * `ltr(version, range)`: Return `true` if version is less than all the diff --git a/tools/node_modules/eslint/node_modules/semver/bin/semver b/tools/node_modules/eslint/node_modules/semver/bin/semver index 9100ed42b8821d..801e77f1303c15 100755 --- a/tools/node_modules/eslint/node_modules/semver/bin/semver +++ b/tools/node_modules/eslint/node_modules/semver/bin/semver @@ -4,20 +4,28 @@ // any supplied version is valid and passes all tests. var argv = process.argv.slice(2) - , versions = [] - , range = [] - , gt = [] - , lt = [] - , eq = [] - , inc = null - , version = require("../package.json").version - , loose = false - , includePrerelease = false - , coerce = false - , identifier = undefined - , semver = require("../semver") - , reverse = false - , options = {} + +var versions = [] + +var range = [] + +var inc = null + +var version = require('../package.json').version + +var loose = false + +var includePrerelease = false + +var coerce = false + +var identifier + +var semver = require('../semver') + +var reverse = false + +var options = {} main() @@ -25,45 +33,45 @@ function main () { if (!argv.length) return help() while (argv.length) { var a = argv.shift() - var i = a.indexOf('=') - if (i !== -1) { - a = a.slice(0, i) - argv.unshift(a.slice(i + 1)) + var indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + a = a.slice(0, indexOfEqualSign) + argv.unshift(a.slice(indexOfEqualSign + 1)) } switch (a) { - case "-rv": case "-rev": case "--rev": case "--reverse": + case '-rv': case '-rev': case '--rev': case '--reverse': reverse = true break - case "-l": case "--loose": + case '-l': case '--loose': loose = true break - case "-p": case "--include-prerelease": + case '-p': case '--include-prerelease': includePrerelease = true break - case "-v": case "--version": + case '-v': case '--version': versions.push(argv.shift()) break - case "-i": case "--inc": case "--increment": + case '-i': case '--inc': case '--increment': switch (argv[0]) { - case "major": case "minor": case "patch": case "prerelease": - case "premajor": case "preminor": case "prepatch": + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': inc = argv.shift() break default: - inc = "patch" + inc = 'patch' break } break - case "--preid": + case '--preid': identifier = argv.shift() break - case "-r": case "--range": + case '-r': case '--range': range.push(argv.shift()) break - case "-c": case "--coerce": + case '-c': case '--coerce': coerce = true break - case "-h": case "--help": case "-?": + case '-h': case '--help': case '-?': return help() default: versions.push(a) @@ -74,15 +82,14 @@ function main () { var options = { loose: loose, includePrerelease: includePrerelease } versions = versions.map(function (v) { - return coerce ? (semver.coerce(v) || {version: v}).version : v + return coerce ? (semver.coerce(v) || { version: v }).version : v }).filter(function (v) { return semver.valid(v) }) if (!versions.length) return fail() - if (inc && (versions.length !== 1 || range.length)) - return failInc() + if (inc && (versions.length !== 1 || range.length)) { return failInc() } - for (var i = 0, l = range.length; i < l ; i ++) { + for (var i = 0, l = range.length; i < l; i++) { versions = versions.filter(function (v) { return semver.satisfies(v, range[i], options) }) @@ -92,62 +99,62 @@ function main () { } function failInc () { - console.error("--inc can only be used on a single version with no range") + console.error('--inc can only be used on a single version with no range') fail() } function fail () { process.exit(1) } function success () { - var compare = reverse ? "rcompare" : "compare" + var compare = reverse ? 'rcompare' : 'compare' versions.sort(function (a, b) { return semver[compare](a, b, options) }).map(function (v) { return semver.clean(v, options) }).map(function (v) { return inc ? semver.inc(v, inc, options, identifier) : v - }).forEach(function (v,i,_) { console.log(v) }) + }).forEach(function (v, i, _) { console.log(v) }) } function help () { - console.log(["SemVer " + version - ,"" - ,"A JavaScript implementation of the http://semver.org/ specification" - ,"Copyright Isaac Z. Schlueter" - ,"" - ,"Usage: semver [options] [ [...]]" - ,"Prints valid versions sorted by SemVer precedence" - ,"" - ,"Options:" - ,"-r --range " - ," Print versions that match the specified range." - ,"" - ,"-i --increment []" - ," Increment a version by the specified level. Level can" - ," be one of: major, minor, patch, premajor, preminor," - ," prepatch, or prerelease. Default level is 'patch'." - ," Only one version may be specified." - ,"" - ,"--preid " - ," Identifier to be used to prefix premajor, preminor," - ," prepatch or prerelease version increments." - ,"" - ,"-l --loose" - ," Interpret versions and ranges loosely" - ,"" - ,"-p --include-prerelease" - ," Always include prerelease versions in range matching" - ,"" - ,"-c --coerce" - ," Coerce a string into SemVer if possible" - ," (does not imply --loose)" - ,"" - ,"Program exits successfully if any valid version satisfies" - ,"all supplied ranges, and prints all satisfying versions." - ,"" - ,"If no satisfying versions are found, then exits failure." - ,"" - ,"Versions are printed in ascending order, so supplying" - ,"multiple versions to the utility will just sort them." - ].join("\n")) + console.log(['SemVer ' + version, + '', + 'A JavaScript implementation of the https://semver.org/ specification', + 'Copyright Isaac Z. Schlueter', + '', + 'Usage: semver [options] [ [...]]', + 'Prints valid versions sorted by SemVer precedence', + '', + 'Options:', + '-r --range ', + ' Print versions that match the specified range.', + '', + '-i --increment []', + ' Increment a version by the specified level. Level can', + ' be one of: major, minor, patch, premajor, preminor,', + " prepatch, or prerelease. Default level is 'patch'.", + ' Only one version may be specified.', + '', + '--preid ', + ' Identifier to be used to prefix premajor, preminor,', + ' prepatch or prerelease version increments.', + '', + '-l --loose', + ' Interpret versions and ranges loosely', + '', + '-p --include-prerelease', + ' Always include prerelease versions in range matching', + '', + '-c --coerce', + ' Coerce a string into SemVer if possible', + ' (does not imply --loose)', + '', + 'Program exits successfully if any valid version satisfies', + 'all supplied ranges, and prints all satisfying versions.', + '', + 'If no satisfying versions are found, then exits failure.', + '', + 'Versions are printed in ascending order, so supplying', + 'multiple versions to the utility will just sort them.' + ].join('\n')) } diff --git a/tools/node_modules/eslint/node_modules/semver/package.json b/tools/node_modules/eslint/node_modules/semver/package.json index 08c8e8dbc01c9f..c81acfc3af0d68 100644 --- a/tools/node_modules/eslint/node_modules/semver/package.json +++ b/tools/node_modules/eslint/node_modules/semver/package.json @@ -9,7 +9,7 @@ "deprecated": false, "description": "The semantic version parser used by npm.", "devDependencies": { - "tap": "^12.0.1" + "tap": "^13.0.0-rc.18" }, "files": [ "bin", @@ -25,7 +25,13 @@ "url": "git+https://github.com/npm/node-semver.git" }, "scripts": { - "test": "tap test/*.js --cov -J" + "postpublish": "git push origin --all; git push origin --tags", + "postversion": "npm publish", + "preversion": "npm test", + "test": "tap" }, - "version": "5.6.0" + "tap": { + "check-coverage": true + }, + "version": "5.7.0" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/semver/semver.js b/tools/node_modules/eslint/node_modules/semver/semver.js index 0cc57350c2c8e8..d315d5d68b179e 100644 --- a/tools/node_modules/eslint/node_modules/semver/semver.js +++ b/tools/node_modules/eslint/node_modules/semver/semver.js @@ -1,33 +1,35 @@ -exports = module.exports = SemVer; - -// The debug function is excluded entirely from the minified version. -/* nomin */ var debug; -/* nomin */ if (typeof process === 'object' && - /* nomin */ process.env && - /* nomin */ process.env.NODE_DEBUG && - /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG)) - /* nomin */ debug = function() { - /* nomin */ var args = Array.prototype.slice.call(arguments, 0); - /* nomin */ args.unshift('SEMVER'); - /* nomin */ console.log.apply(console, args); - /* nomin */ }; -/* nomin */ else - /* nomin */ debug = function() {}; +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} // Note: this is the semver.org version of the spec that it implements // Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0'; +exports.SEMVER_SPEC_VERSION = '2.0.0' -var MAX_LENGTH = 256; -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 // Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16; +var MAX_SAFE_COMPONENT_LENGTH = 16 // The actual regexps go on exports.re -var re = exports.re = []; -var src = exports.src = []; -var R = 0; +var re = exports.re = [] +var src = exports.src = [] +var R = 0 // The following Regular Expressions can be used for tokenizing, // validating, and parsing SemVer version strings. @@ -35,71 +37,67 @@ var R = 0; // ## Numeric Identifier // A single `0`, or a non-zero digit followed by zero or more digits. -var NUMERICIDENTIFIER = R++; -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'; -var NUMERICIDENTIFIERLOOSE = R++; -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - +var NUMERICIDENTIFIER = R++ +src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' +var NUMERICIDENTIFIERLOOSE = R++ +src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' // ## Non-numeric Identifier // Zero or more digits, followed by a letter or hyphen, and then zero or // more letters, digits, or hyphens. -var NONNUMERICIDENTIFIER = R++; -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - +var NONNUMERICIDENTIFIER = R++ +src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' // ## Main Version // Three dot-separated numeric identifiers. -var MAINVERSION = R++; +var MAINVERSION = R++ src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')'; + '(' + src[NUMERICIDENTIFIER] + ')' -var MAINVERSIONLOOSE = R++; +var MAINVERSIONLOOSE = R++ src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; + '(' + src[NUMERICIDENTIFIERLOOSE] + ')' // ## Pre-release Version Identifier // A numeric identifier, or a non-numeric identifier. -var PRERELEASEIDENTIFIER = R++; +var PRERELEASEIDENTIFIER = R++ src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; + '|' + src[NONNUMERICIDENTIFIER] + ')' -var PRERELEASEIDENTIFIERLOOSE = R++; +var PRERELEASEIDENTIFIERLOOSE = R++ src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - + '|' + src[NONNUMERICIDENTIFIER] + ')' // ## Pre-release Version // Hyphen, followed by one or more dot-separated pre-release version // identifiers. -var PRERELEASE = R++; +var PRERELEASE = R++ src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'; + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))' -var PRERELEASELOOSE = R++; +var PRERELEASELOOSE = R++ src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' // ## Build Metadata Identifier // Any combination of digits, letters, or hyphens. -var BUILDIDENTIFIER = R++; -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; +var BUILDIDENTIFIER = R++ +src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' // ## Build Metadata // Plus sign, followed by one or more period-separated build metadata // identifiers. -var BUILD = R++; +var BUILD = R++ src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; - + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' // ## Full Version String // A main version, followed optionally by a pre-release version and @@ -110,802 +108,870 @@ src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + // capturing group, because it should not ever be used in version // comparison. -var FULL = R++; +var FULL = R++ var FULLPLAIN = 'v?' + src[MAINVERSION] + src[PRERELEASE] + '?' + - src[BUILD] + '?'; + src[BUILD] + '?' -src[FULL] = '^' + FULLPLAIN + '$'; +src[FULL] = '^' + FULLPLAIN + '$' // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty // common in the npm registry. var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?'; + src[BUILD] + '?' -var LOOSE = R++; -src[LOOSE] = '^' + LOOSEPLAIN + '$'; +var LOOSE = R++ +src[LOOSE] = '^' + LOOSEPLAIN + '$' -var GTLT = R++; -src[GTLT] = '((?:<|>)?=?)'; +var GTLT = R++ +src[GTLT] = '((?:<|>)?=?)' // Something like "2.*" or "1.2.x". // Note that "x.x" is a valid xRange identifer, meaning "any version" // Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++; -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; -var XRANGEIDENTIFIER = R++; -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'; +var XRANGEIDENTIFIERLOOSE = R++ +src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +var XRANGEIDENTIFIER = R++ +src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*' -var XRANGEPLAIN = R++; +var XRANGEPLAIN = R++ src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:' + src[PRERELEASE] + ')?' + src[BUILD] + '?' + - ')?)?'; + ')?)?' -var XRANGEPLAINLOOSE = R++; +var XRANGEPLAINLOOSE = R++ src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[PRERELEASELOOSE] + ')?' + src[BUILD] + '?' + - ')?)?'; + ')?)?' -var XRANGE = R++; -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; -var XRANGELOOSE = R++; -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; +var XRANGE = R++ +src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' +var XRANGELOOSE = R++ +src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' // Coercion. // Extract anything that could conceivably be a part of a valid semver -var COERCE = R++; +var COERCE = R++ src[COERCE] = '(?:^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])'; + '(?:$|[^\\d])' // Tilde ranges. // Meaning is "reasonably at or greater than" -var LONETILDE = R++; -src[LONETILDE] = '(?:~>?)'; +var LONETILDE = R++ +src[LONETILDE] = '(?:~>?)' -var TILDETRIM = R++; -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'; -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g'); -var tildeTrimReplace = '$1~'; +var TILDETRIM = R++ +src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' +re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') +var tildeTrimReplace = '$1~' -var TILDE = R++; -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'; -var TILDELOOSE = R++; -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; +var TILDE = R++ +src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' +var TILDELOOSE = R++ +src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' // Caret ranges. // Meaning is "at least and backwards compatible with" -var LONECARET = R++; -src[LONECARET] = '(?:\\^)'; +var LONECARET = R++ +src[LONECARET] = '(?:\\^)' -var CARETTRIM = R++; -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'; -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g'); -var caretTrimReplace = '$1^'; +var CARETTRIM = R++ +src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' +re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') +var caretTrimReplace = '$1^' -var CARET = R++; -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'; -var CARETLOOSE = R++; -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; +var CARET = R++ +src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' +var CARETLOOSE = R++ +src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' // A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++; -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'; -var COMPARATOR = R++; -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; - +var COMPARATORLOOSE = R++ +src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$' +var COMPARATOR = R++ +src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$' // An expression to strip any whitespace between the gtlt and the thing // it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; +var COMPARATORTRIM = R++ src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')' // this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' // Something like `1.2.3 - 1.2.4` // Note that these all use the loose form, because they'll be // checked against either the strict or loose comparator form // later. -var HYPHENRANGE = R++; +var HYPHENRANGE = R++ src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; + '\\s*$' -var HYPHENRANGELOOSE = R++; +var HYPHENRANGELOOSE = R++ src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; + '\\s*$' // Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; +var STAR = R++ +src[STAR] = '(<|>)?=?\\s*\\*' // Compile to actual regexp objects. // All are flag-free, unless they were created above with a flag. for (var i = 0; i < R; i++) { - debug(i, src[i]); - if (!re[i]) - re[i] = new RegExp(src[i]); + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + } } -exports.parse = parse; -function parse(version, options) { - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } - if (version instanceof SemVer) - return version; + if (version instanceof SemVer) { + return version + } - if (typeof version !== 'string') - return null; + if (typeof version !== 'string') { + return null + } - if (version.length > MAX_LENGTH) - return null; + if (version.length > MAX_LENGTH) { + return null + } - var r = options.loose ? re[LOOSE] : re[FULL]; - if (!r.test(version)) - return null; + var r = options.loose ? re[LOOSE] : re[FULL] + if (!r.test(version)) { + return null + } try { - return new SemVer(version, options); + return new SemVer(version, options) } catch (er) { - return null; + return null } } -exports.valid = valid; -function valid(version, options) { - var v = parse(version, options); - return v ? v.version : null; +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null } - -exports.clean = clean; -function clean(version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options); - return s ? s.version : null; +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null } -exports.SemVer = SemVer; +exports.SemVer = SemVer -function SemVer(version, options) { - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } if (version instanceof SemVer) { - if (version.loose === options.loose) - return version; - else - version = version.version; + if (version.loose === options.loose) { + return version + } else { + version = version.version + } } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); + throw new TypeError('Invalid Version: ' + version) } - if (version.length > MAX_LENGTH) + if (version.length > MAX_LENGTH) { throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } - if (!(this instanceof SemVer)) - return new SemVer(version, options); + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } - debug('SemVer', version, options); - this.options = options; - this.loose = !!options.loose; + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose - var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]); + var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) - if (!m) - throw new TypeError('Invalid Version: ' + version); + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } - this.raw = version; + this.raw = version // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] - if (this.major > MAX_SAFE_INTEGER || this.major < 0) + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { throw new TypeError('Invalid major version') + } - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { throw new TypeError('Invalid minor version') + } - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { throw new TypeError('Invalid patch version') + } // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { if (/^[0-9]+$/.test(id)) { - var num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) - return num; + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } } - return id; - }); + return id + }) + } - this.build = m[5] ? m[5].split('.') : []; - this.format(); + this.build = m[5] ? m[5].split('.') : [] + this.format() } -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} -SemVer.prototype.toString = function() { - return this.version; -}; +SemVer.prototype.toString = function () { + return this.version +} -SemVer.prototype.compare = function(other) { - debug('SemVer.compare', this.version, this.options, other); - if (!(other instanceof SemVer)) - other = new SemVer(other, this.options); +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } - return this.compareMain(other) || this.comparePre(other); -}; + return this.compareMain(other) || this.comparePre(other) +} -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.options); +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; + compareIdentifiers(this.patch, other.patch) +} -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.options); +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} // preminor will bump the version up to the next minor release, and immediately // down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { +SemVer.prototype.inc = function (release, identifier) { switch (release) { case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break case 'prepatch': // If this is already a prerelease, it will bump to the next version // drop any prereleases that might already exist, since they are not // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break // If the input is a non-prerelease version, this acts the same as // prepatch. case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break case 'major': // If this is a pre-major version, bump up to the same major version. // Otherwise increment major. // 1.0.0-5 bumps to 1.0.0 // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break case 'minor': // If this is a pre-minor version, bump up to the same minor version. // Otherwise increment minor. // 1.2.0-5 bumps to 1.2.0 // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break case 'patch': // If this is not a pre-release version, it will increment the patch. // If it is a pre-release it will bump up to the same patch version. // 1.2.0-5 patches to 1.2.0 // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break // This probably shouldn't be used publicly. // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length while (--i >= 0) { if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; + this.prerelease[i]++ + i = -2 } } - if (i === -1) // didn't increment anything - this.prerelease.push(0); + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } } if (identifier) { // 1.2.0-beta.1 bumps to 1.2.0-beta.2, // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } } - break; + break default: - throw new Error('invalid increment argument: ' + release); + throw new Error('invalid increment argument: ' + release) } - this.format(); - this.raw = this.version; - return this; -}; + this.format() + this.raw = this.version + return this +} -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined } try { - return new SemVer(version, loose).inc(release, identifier).version; + return new SemVer(version, loose).inc(release, identifier).version } catch (er) { - return null; + return null } } -exports.diff = diff; -function diff(version1, version2) { +exports.diff = diff +function diff (version1, version2) { if (eq(version1, version2)) { - return null; + return null } else { - var v1 = parse(version1); - var v2 = parse(version2); + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' if (v1.prerelease.length || v2.prerelease.length) { - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return 'pre'+key; - } - } - } - return 'prerelease'; + prefix = 'pre' + var defaultResult = 'prerelease' } for (var key in v1) { if (key === 'major' || key === 'minor' || key === 'patch') { if (v1[key] !== v2[key]) { - return key; + return prefix + key } } } + return defaultResult // may be undefined } } -exports.compareIdentifiers = compareIdentifiers; +exports.compareIdentifiers = compareIdentifiers -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) if (anum && bnum) { - a = +a; - b = +b; + a = +a + b = +b } - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 } -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) } -exports.major = major; -function major(a, loose) { - return new SemVer(a, loose).major; +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major } -exports.minor = minor; -function minor(a, loose) { - return new SemVer(a, loose).minor; +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor } -exports.patch = patch; -function patch(a, loose) { - return new SemVer(a, loose).patch; +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch } -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)); +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) } -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) } -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) } -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compare(a, b, loose) + }) } -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.rcompare(a, b, loose) + }) } -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 } -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 } -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 } -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 } -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 } -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 } -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; +exports.cmp = cmp +function cmp (a, op, b, loose) { switch (op) { case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, options) { - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) - return comp; - else - comp = comp.value; + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } } - if (!(this instanceof Comparator)) - return new Comparator(comp, options); + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } - debug('comparator', comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } - debug('comp', this); + debug('comp', this) } -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var m = comp.match(r) - if (!m) - throw new TypeError('Invalid comparator: ' + comp); + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; + this.operator = m[1] + if (this.operator === '=') { + this.operator = '' + } // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.options.loose); -}; + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} -Comparator.prototype.toString = function() { - return this.value; -}; +Comparator.prototype.toString = function () { + return this.value +} -Comparator.prototype.test = function(version) { - debug('Comparator.test', version, this.options.loose); +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) - if (this.semver === ANY) - return true; + if (this.semver === ANY) { + return true + } - if (typeof version === 'string') - version = new SemVer(version, this.options); + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } - return cmp(version, this.operator, this.semver, this.options); -}; + return cmp(version, this.operator, this.semver, this.options) +} -Comparator.prototype.intersects = function(comp, options) { +Comparator.prototype.intersects = function (comp, options) { if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required'); + throw new TypeError('a Comparator is required') } - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } - var rangeTmp; + var rangeTmp if (this.operator === '') { - rangeTmp = new Range(comp.value, options); - return satisfies(this.value, rangeTmp, options); + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) } else if (comp.operator === '') { - rangeTmp = new Range(this.value, options); - return satisfies(comp.semver, rangeTmp, options); + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) } var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>'); + (comp.operator === '>=' || comp.operator === '>') var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<'); - var sameSemVer = this.semver.version === comp.semver.version; + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<='); + (comp.operator === '>=' || comp.operator === '<=') var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')); + (comp.operator === '<=' || comp.operator === '<')) var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')); + (comp.operator === '>=' || comp.operator === '>')) return sameDirectionIncreasing || sameDirectionDecreasing || (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; -}; - + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} -exports.Range = Range; -function Range(range, options) { - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } if (range instanceof Range) { if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { - return range; + return range } else { - return new Range(range.raw, options); + return new Range(range.raw, options) } } if (range instanceof Comparator) { - return new Range(range.value, options); + return new Range(range.value, options) } - if (!(this instanceof Range)) - return new Range(range, options); + if (!(this instanceof Range)) { + return new Range(range, options) + } - this.options = options; - this.loose = !!options.loose; + this.options = options + this.loose = !!options.loose this.includePrerelease = !!options.includePrerelease // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { + this.raw = range + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { // throw out any that are not relevant for whatever reason - return c.length; - }); + return c.length + }) if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); + throw new TypeError('Invalid SemVer Range: ' + range) } - this.format(); + this.format() } -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} -Range.prototype.toString = function() { - return this.range; -}; +Range.prototype.toString = function () { + return this.range +} -Range.prototype.parseRange = function(range) { - var loose = this.options.loose; - range = range.trim(); +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - debug('hyphen replace', range); + var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range, re[COMPARATORTRIM]); + range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[COMPARATORTRIM]) // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); + range = range.replace(re[TILDETRIM], tildeTrimReplace) // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); + range = range.replace(re[CARETTRIM], caretTrimReplace) // normalize spaces - range = range.split(/\s+/).join(' '); + range = range.split(/\s+/).join(' ') // At this point, the range is completely trimmed and // ready to be split into comparators. - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, this.options); - }, this).join(' ').split(/\s+/); + var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) if (this.options.loose) { // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) } - set = set.map(function(comp) { - return new Comparator(comp, this.options); - }, this); + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) - return set; -}; + return set +} -Range.prototype.intersects = function(range, options) { +Range.prototype.intersects = function (range, options) { if (!(range instanceof Range)) { - throw new TypeError('a Range is required'); + throw new TypeError('a Range is required') } - return this.set.some(function(thisComparators) { - return thisComparators.every(function(thisComparator) { - return range.set.some(function(rangeComparators) { - return rangeComparators.every(function(rangeComparator) { - return thisComparator.intersects(rangeComparator, options); - }); - }); - }); - }); -}; + return this.set.some(function (thisComparators) { + return thisComparators.every(function (thisComparator) { + return range.set.some(function (rangeComparators) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + }) + }) +} // Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, options) { - return new Range(range, options).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) } // comprised of xranges, tildes, stars, and gtlt's at this point. // already replaced the hyphen ranges // turn into a set of JUST comparators. -function parseComparator(comp, options) { - debug('comp', comp, options); - comp = replaceCarets(comp, options); - debug('caret', comp); - comp = replaceTildes(comp, options); - debug('tildes', comp); - comp = replaceXRanges(comp, options); - debug('xrange', comp); - comp = replaceStars(comp, options); - debug('stars', comp); - return comp; +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp } -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' } // ~, ~> --> * (any, kinda silly) @@ -914,41 +980,38 @@ function isX(id) { // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, options) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, options); - }).join(' '); -} - -function replaceTilde(comp, options) { - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } - var r = options.loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? re[TILDELOOSE] : re[TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - debug('replaceTilde pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { // ~1.2.3 == >=1.2.3 <1.3.0 ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; + ' <' + M + '.' + (+m + 1) + '.0' + } - debug('tilde return', ret); - return ret; - }); + debug('tilde return', ret) + return ret + }) } // ^ --> * (any, kinda silly) @@ -957,142 +1020,144 @@ function replaceTilde(comp, options) { // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 // ^1.2.3 --> >=1.2.3 <2.0.0 // ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, options) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, options); - }).join(' '); -} - -function replaceCaret(comp, options) { - debug('caret', comp, options); - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } - var r = options.loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[CARETLOOSE] : re[CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } } else if (pr) { - debug('replaceCaret pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; + debug('replaceCaret pr', pr) if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } } else { - debug('no pr'); + debug('no pr') if (M === '0') { - if (m === '0') + if (m === '0') { ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else + ' <' + M + '.' + m + '.' + (+p + 1) + } else { ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; + ' <' + (+M + 1) + '.0.0' + } } - debug('caret return', ret); - return ret; - }); + debug('caret return', ret) + return ret + }) } -function replaceXRanges(comp, options) { - debug('replaceXRanges', comp, options); - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, options); - }).join(' '); +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') } -function replaceXRange(comp, options) { - comp = comp.trim(); - if (!options || typeof options !== 'object') - options = { loose: !!options, includePrerelease: false } - var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? re[XRANGELOOSE] : re[XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } if (xM) { if (gtlt === '>' || gtlt === '<') { // nothing is allowed - ret = '<0.0.0'; + ret = '<0.0.0' } else { // nothing is forbidden - ret = '*'; + ret = '*' } } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; + if (xm) { + m = 0 + } + p = 0 if (gtlt === '>') { // >1 => >=2.0.0 // >1.2 => >=1.3.0 // >1.2.3 => >= 1.2.4 - gtlt = '>='; + gtlt = '>=' if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 } } else if (gtlt === '<=') { // <=0.7.x is actually <0.8.0, since any 0.7.x should // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<'; - if (xm) - M = +M + 1; - else - m = +m + 1; + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } } - ret = gtlt + M + '.' + m + '.' + p; + ret = gtlt + M + '.' + m + '.' + p } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' } - debug('xRange return', ret); + debug('xRange return', ret) - return ret; - }); + return ret + }) } // Because * is AND-ed with everything else in the comparator, // and '' means "any version", just remove the *s entirely. -function replaceStars(comp, options) { - debug('replaceStars', comp, options); +function replaceStars (comp, options) { + debug('replaceStars', comp, options) // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); + return comp.trim().replace(re[STAR], '') } // This function is passed to string.replace(re[HYPHENRANGE]) @@ -1100,253 +1165,319 @@ function replaceStars(comp, options) { // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do // 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + return (from + ' ' + to).trim() +} // if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; +Range.prototype.test = function (version) { + if (!version) { + return false + } - if (typeof version === 'string') - version = new SemVer(version, this.options); + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) - return true; + if (testSet(this.set[i], version, this.options)) { + return true + } } - return false; -}; + return false +} -function testSet(set, version, options) { +function testSet (set, version, options) { for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; + if (!set[i].test(version)) { + return false + } } - if (!options) - options = {} - if (version.prerelease.length && !options.includePrerelease) { // Find the set of versions that are allowed to have prereleases // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 // That should allow `1.2.3-pr.2` to pass. // However, `1.2.4-alpha.notready` should NOT be allowed, // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === ANY) - continue; + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; + var allowed = set[i].semver if (allowed.major === version.major && allowed.minor === version.minor && - allowed.patch === version.patch) - return true; + allowed.patch === version.patch) { + return true + } } } // Version has a -pre, but it's not one of the ones we like. - return false; + return false } - return true; + return true } -exports.satisfies = satisfies; -function satisfies(version, range, options) { +exports.satisfies = satisfies +function satisfies (version, range, options) { try { - range = new Range(range, options); + range = new Range(range, options) } catch (er) { - return false; + return false } - return range.test(version); + return range.test(version) } -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, options) { - var max = null; - var maxSV = null; +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null try { - var rangeObj = new Range(range, options); + var rangeObj = new Range(range, options) } catch (er) { - return null; + return null } versions.forEach(function (v) { - if (rangeObj.test(v)) { // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { // compare(max, v, true) - max = v; - maxSV = new SemVer(max, options); + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) } } }) - return max; + return max } -exports.minSatisfying = minSatisfying; -function minSatisfying(versions, range, options) { - var min = null; - var minSV = null; +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null try { - var rangeObj = new Range(range, options); + var rangeObj = new Range(range, options) } catch (er) { - return null; + return null } versions.forEach(function (v) { - if (rangeObj.test(v)) { // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { // compare(min, v, true) - min = v; - minSV = new SemVer(min, options); + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) } } }) - return min; + return min } -exports.validRange = validRange; -function validRange(range, options) { +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { try { // Return '*' instead of '' so that truthiness works. // This will throw if it's invalid anyway - return new Range(range, options).range || '*'; + return new Range(range, options).range || '*' } catch (er) { - return null; + return null } } // Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, options) { - return outside(version, range, '<', options); +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) } // Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, options) { - return outside(version, range, '>', options); +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) } -exports.outside = outside; -function outside(version, range, hilo, options) { - version = new SemVer(version, options); - range = new Range(range, options); +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) - var gtfn, ltefn, ltfn, comp, ecomp; + var gtfn, ltefn, ltfn, comp, ecomp switch (hilo) { case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); + throw new TypeError('Must provide a hilo val of "<" or ">"') } // If it satisifes the range it is not outside if (satisfies(version, range, options)) { - return false; + return false } // From now on, variable terms are as if we're in "gtr" mode. // but note that everything is flipped for the "ltr" function. for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; + var comparators = range.set[i] - var high = null; - var low = null; + var high = null + var low = null - comparators.forEach(function(comparator) { + comparators.forEach(function (comparator) { if (comparator.semver === ANY) { comparator = new Comparator('>=0.0.0') } - high = high || comparator; - low = low || comparator; + high = high || comparator + low = low || comparator if (gtfn(comparator.semver, high.semver, options)) { - high = comparator; + high = comparator } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator; + low = comparator } - }); + }) // If the edge version comparator has a operator then our version // isn't outside it if (high.operator === comp || high.operator === ecomp) { - return false; + return false } // If the lowest version comparator has an operator and our version // is less than it then it isn't higher than the range if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { - return false; + return false } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; + return false } } - return true; + return true } -exports.prerelease = prerelease; -function prerelease(version, options) { - var parsed = parse(version, options); - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null; +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null } -exports.intersects = intersects; -function intersects(r1, r2, options) { +exports.intersects = intersects +function intersects (r1, r2, options) { r1 = new Range(r1, options) r2 = new Range(r2, options) return r1.intersects(r2) } -exports.coerce = coerce; -function coerce(version) { - if (version instanceof SemVer) - return version; +exports.coerce = coerce +function coerce (version) { + if (version instanceof SemVer) { + return version + } - if (typeof version !== 'string') - return null; + if (typeof version !== 'string') { + return null + } - var match = version.match(re[COERCE]); + var match = version.match(re[COERCE]) - if (match == null) - return null; + if (match == null) { + return null + } - return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0')); + return parse(match[1] + + '.' + (match[2] || '0') + + '.' + (match[3] || '0')) } diff --git a/tools/node_modules/eslint/package.json b/tools/node_modules/eslint/package.json index 21b7223286026e..92267e9c4bfd21 100644 --- a/tools/node_modules/eslint/package.json +++ b/tools/node_modules/eslint/package.json @@ -32,7 +32,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", + "js-yaml": "^3.13.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", "lodash": "^4.17.11", @@ -71,7 +71,6 @@ "eslint-release": "^1.2.0", "eslump": "^2.0.0", "esprima": "^4.0.1", - "istanbul": "^0.4.5", "jsdoc": "^3.5.5", "karma": "^3.1.4", "karma-chrome-launcher": "^2.2.0", @@ -84,6 +83,7 @@ "mocha": "^5.0.5", "mock-fs": "^4.8.0", "npm-license": "^0.3.3", + "nyc": "^13.3.0", "proxyquire": "^2.0.1", "puppeteer": "^1.12.2", "shelljs": "^0.8.2", @@ -135,5 +135,5 @@ "test": "node Makefile.js test", "webpack": "node Makefile.js webpack" }, - "version": "5.15.3" + "version": "5.16.0" } \ No newline at end of file From 57207e772b8dac27e713e919d607156817bd308a Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Fri, 29 Mar 2019 11:23:08 +0100 Subject: [PATCH 076/133] doc: list when promiseResolve hook was added to async_hooks PR-URL: https://github.com/nodejs/node/pull/26978 Refs: https://github.com/nodejs/node/pull/15296 Reviewed-By: Stephen Belanger Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig Signed-off-by: Beth Griggs --- doc/api/async_hooks.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/api/async_hooks.md b/doc/api/async_hooks.md index e7ce3007104b5a..c8eda553268bcf 100644 --- a/doc/api/async_hooks.md +++ b/doc/api/async_hooks.md @@ -431,6 +431,10 @@ does not depend on garbage collection, then this will not be an issue. ##### promiseResolve(asyncId) + + * `asyncId` {number} Called when the `resolve` function passed to the `Promise` constructor is From 0b94aec3e65b973691fdd909d021c2ff9c2a6012 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Fri, 29 Mar 2019 00:07:09 +0100 Subject: [PATCH 077/133] doc: add information about modules cache behavior This publicly documents that adding native module names will resolve the added entry instead of the native module. It also updates the description why extensions are deprecated. PR-URL: https://github.com/nodejs/node/pull/26971 Refs: https://github.com/nodejs/node/pull/25362 Reviewed-By: Gus Caplan Reviewed-By: Vse Mozhet Byt Signed-off-by: Beth Griggs --- doc/api/modules.md | 56 +++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/doc/api/modules.md b/doc/api/modules.md index 5ef61141a6353c..40d3b525355250 100644 --- a/doc/api/modules.md +++ b/doc/api/modules.md @@ -196,28 +196,26 @@ NODE_MODULES_PATHS(START) -Modules are cached after the first time they are loaded. This means -(among other things) that every call to `require('foo')` will get -exactly the same object returned, if it would resolve to the same file. +Modules are cached after the first time they are loaded. This means (among other +things) that every call to `require('foo')` will get exactly the same object +returned, if it would resolve to the same file. -Provided `require.cache` is not modified, multiple calls to -`require('foo')` will not cause the module code to be executed multiple times. -This is an important feature. With it, "partially done" objects can be returned, -thus allowing transitive dependencies to be loaded even when they would cause -cycles. +Provided `require.cache` is not modified, multiple calls to `require('foo')` +will not cause the module code to be executed multiple times. This is an +important feature. With it, "partially done" objects can be returned, thus +allowing transitive dependencies to be loaded even when they would cause cycles. -To have a module execute code multiple times, export a function, and call -that function. +To have a module execute code multiple times, export a function, and call that +function. ### Module Caching Caveats -Modules are cached based on their resolved filename. Since modules may -resolve to a different filename based on the location of the calling -module (loading from `node_modules` folders), it is not a *guarantee* -that `require('foo')` will always return the exact same object, if it -would resolve to different files. +Modules are cached based on their resolved filename. Since modules may resolve +to a different filename based on the location of the calling module (loading +from `node_modules` folders), it is not a *guarantee* that `require('foo')` will +always return the exact same object, if it would resolve to different files. Additionally, on case-insensitive file systems or operating systems, different resolved filenames can point to the same file, but the cache will still treat @@ -412,7 +410,7 @@ are not found elsewhere. On Windows, `NODE_PATH` is delimited by semicolons (`;`) instead of colons. `NODE_PATH` was originally created to support loading modules from -varying paths before the current [module resolution][] algorithm was frozen. +varying paths before the current [module resolution][] algorithm was defined. `NODE_PATH` is still supported, but is less necessary now that the Node.js ecosystem has settled on a convention for locating dependent modules. @@ -585,6 +583,11 @@ value from this object, the next `require` will reload the module. Note that this does not apply to [native addons][], for which reloading will result in an error. +Adding or replacing entries is also possible. This cache is checked before +native modules and if a name matching a native module is added to the cache, +no require call is +going to receive the native module anymore. Use with care! + #### require.extensions -Emitted when the server sends a 1xx response (excluding 101 Upgrade). This -event is emitted with a callback containing an object with a status code. +* `info` {Object} + * `statusCode` {integer} + +Emitted when the server sends a 1xx response (excluding 101 Upgrade). The +listeners of this event will receive an object containing the status code. ```js const http = require('http'); @@ -432,8 +435,8 @@ const options = { const req = http.request(options); req.end(); -req.on('information', (res) => { - console.log(`Got information prior to main response: ${res.statusCode}`); +req.on('information', (info) => { + console.log(`Got information prior to main response: ${info.statusCode}`); }); ``` From 687348ad1d7b7852841d26c74e3f7e9bef4340f0 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Mon, 1 Apr 2019 23:39:53 -0700 Subject: [PATCH 084/133] test: move test that creates 1Gb file to pummel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: https://github.com/nodejs/node/issues/16601 PR-URL: https://github.com/nodejs/node/pull/27053 Reviewed-By: Michaël Zasso Reviewed-By: Yongsheng Zhang Reviewed-By: Refael Ackermann Signed-off-by: Beth Griggs --- test/{sequential => pummel}/test-fs-readfile-tostring-fail.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{sequential => pummel}/test-fs-readfile-tostring-fail.js (100%) diff --git a/test/sequential/test-fs-readfile-tostring-fail.js b/test/pummel/test-fs-readfile-tostring-fail.js similarity index 100% rename from test/sequential/test-fs-readfile-tostring-fail.js rename to test/pummel/test-fs-readfile-tostring-fail.js From ccd3b74696f79e3ffd76556d95089add187fdb0a Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Mon, 11 Mar 2019 10:19:47 +0000 Subject: [PATCH 085/133] fs: remove experimental warning for fs.promises This has been warning for long enough, without any API changes in the last few months. PR-URL: https://github.com/nodejs/node/pull/26581 Reviewed-By: Luigi Pinca Reviewed-By: Benjamin Gruenbaum Reviewed-By: Colin Ihrig Reviewed-By: Anto Aravinth Reviewed-By: Yongsheng Zhang Reviewed-By: James M Snell Signed-off-by: Beth Griggs --- doc/api/fs.md | 2 +- lib/fs.js | 7 ++----- test/parallel/test-fs-promises.js | 5 ++--- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/doc/api/fs.md b/doc/api/fs.md index e65f6c7d4d2885..ec6d931e140fb5 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -3686,7 +3686,7 @@ this API: [`fs.write(fd, string...)`][]. ## fs Promises API -> Stability: 1 - Experimental +> Stability: 2 - Stable The `fs.promises` API provides an alternative set of asynchronous file system methods that return `Promise` objects rather than using callbacks. The diff --git a/lib/fs.js b/lib/fs.js index e5abc59b591d22..3a299145ff5f8d 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -1894,13 +1894,10 @@ Object.defineProperties(fs, { }, promises: { configurable: true, - enumerable: false, + enumerable: true, get() { - if (promises === null) { + if (promises === null) promises = require('internal/fs/promises'); - process.emitWarning('The fs.promises API is experimental', - 'ExperimentalWarning'); - } return promises; } } diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js index 97b5f8326e6052..cdafc11e21a854 100644 --- a/test/parallel/test-fs-promises.js +++ b/test/parallel/test-fs-promises.js @@ -40,9 +40,8 @@ function nextdir() { return `test${++dirc}`; } -// fs.promises should not be enumerable as long as it causes a warning to be -// emitted. -assert.strictEqual(Object.keys(fs).includes('promises'), false); +// fs.promises should not enumerable. +assert.strictEqual(Object.keys(fs).includes('promises'), true); { access(__filename, 'r') From 5945cf03f2fe0b3d905a481667d4f9f069b12207 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Sat, 30 Mar 2019 02:18:26 -0400 Subject: [PATCH 086/133] tools: fix `test.py --time` PR-URL: https://github.com/nodejs/node/pull/27007 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Reviewed-By: Yongsheng Zhang Reviewed-By: Refael Ackermann Reviewed-By: Colin Ihrig Signed-off-by: Beth Griggs --- tools/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/test.py b/tools/test.py index cb501637b8d524..549908cf38b061 100755 --- a/tools/test.py +++ b/tools/test.py @@ -1511,7 +1511,7 @@ def FormatTime(d): def FormatTimedelta(td): - if hasattr(td.total, 'total_seconds'): + if hasattr(td, 'total_seconds'): d = td.total_seconds() else: # python2.6 compat d = td.seconds + (td.microseconds / 10.0**6) From 38da9be683fc7ca1ec92bcbb317012dcfe71638f Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sat, 30 Mar 2019 14:57:39 -0700 Subject: [PATCH 087/133] test: remove test-trace-events-api-worker-disabled from flaky PR-URL: https://github.com/nodejs/node/pull/27020 Reviewed-By: Anna Henningsen Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: Anatoli Papirovski Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- test/parallel/parallel.status | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 04493f06121688..74de5d2dda262f 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -7,8 +7,6 @@ prefix parallel [true] # This section applies to all platforms # https://github.com/nodejs/node/issues/23207 test-net-connect-options-port: PASS,FLAKY -# https://github.com/nodejs/node/issues/24305 -test-trace-events-api-worker-disabled: PASS,FLAKY # https://github.com/nodejs/node/issues/26401 test-worker-prof: PASS,FLAKY From 054cf7beffa8297dafac4af31ed598184ae62622 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Sun, 24 Mar 2019 08:29:51 -0400 Subject: [PATCH 088/133] src: replace c-style cast PR-URL: https://github.com/nodejs/node/pull/26888 Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Refael Ackermann Reviewed-By: Anna Henningsen Signed-off-by: Beth Griggs --- src/api/exceptions.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/api/exceptions.cc b/src/api/exceptions.cc index 74987c2673bd33..1025991063e710 100644 --- a/src/api/exceptions.cc +++ b/src/api/exceptions.cc @@ -162,15 +162,21 @@ static const char* winapi_strerror(const int errorno, bool* must_free) { char* errmsg = nullptr; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, errorno, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&errmsg, 0, nullptr); + FORMAT_MESSAGE_IGNORE_INSERTS, + nullptr, + errorno, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + reinterpret_cast(&errmsg), + 0, + nullptr); if (errmsg) { *must_free = true; // Remove trailing newlines for (int i = strlen(errmsg) - 1; - i >= 0 && (errmsg[i] == '\n' || errmsg[i] == '\r'); i--) { + i >= 0 && (errmsg[i] == '\n' || errmsg[i] == '\r'); + i--) { errmsg[i] = '\0'; } @@ -182,7 +188,6 @@ static const char* winapi_strerror(const int errorno, bool* must_free) { } } - Local WinapiErrnoException(Isolate* isolate, int errorno, const char* syscall, @@ -231,8 +236,9 @@ Local WinapiErrnoException(Isolate* isolate, .FromJust(); } - if (must_free) - LocalFree((HLOCAL)msg); + if (must_free) { + LocalFree(const_cast(msg)); + } return e; } From 5fdee114a0f864e7fb3dd2ab67dcfbe67b0697a2 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sat, 30 Mar 2019 20:33:25 +0200 Subject: [PATCH 089/133] doc: remove description duplication in buffer.md PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index f5e5dd2f765538..fb99c70b196bee 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -530,7 +530,7 @@ console.log(buf); // Prints: ``` -Allocates a new `Buffer` of `size` bytes. If `size` is larger than +If `size` is larger than [`buffer.constants.MAX_LENGTH`] or smaller than 0, [`ERR_INVALID_OPT_VALUE`] is thrown. A zero-length `Buffer` is created if `size` is 0. From fd3b03155bf9652a7c7a1aaa1bb06ec911392913 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sun, 31 Mar 2019 11:14:42 +0300 Subject: [PATCH 090/133] doc: fix possible typo in buffer.md PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index fb99c70b196bee..d238b61d2a3188 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -1034,7 +1034,7 @@ changes: compare `buf`. * `targetStart` {integer} The offset within `target` at which to begin comparison. **Default:** `0`. -* `targetEnd` {integer} The offset with `target` at which to end comparison +* `targetEnd` {integer} The offset within `target` at which to end comparison (not inclusive). **Default:** `target.length`. * `sourceStart` {integer} The offset within `buf` at which to begin comparison. **Default:** `0`. From 944ce7be8ff458252224d0bdbe0f1d5460d46bd1 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sun, 31 Mar 2019 11:02:42 +0300 Subject: [PATCH 091/133] doc: add missing types in buffer.md PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index d238b61d2a3188..d1e1357088d1c9 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -515,8 +515,8 @@ changes: --> * `size` {integer} The desired length of the new `Buffer`. -* `fill` {string|Buffer|integer} A value to pre-fill the new `Buffer` with. - **Default:** `0`. +* `fill` {string|Buffer|Uint8Array|integer} A value to pre-fill the new `Buffer` + with. **Default:** `0`. * `encoding` {string} If `fill` is a string, this is its encoding. **Default:** `'utf8'`. @@ -958,6 +958,8 @@ type: property name: [index] --> +* `index` {integer} + The index operator `[index]` can be used to get and set the octet at position `index` in `buf`. The values refer to individual bytes, so the legal value range is between `0x00` and `0xFF` (hex) or `0` and `255` (decimal). @@ -1176,8 +1178,8 @@ changes: description: The arguments can now be `Uint8Array`s. --> -* `otherBuffer` {Buffer} A `Buffer` or [`Uint8Array`] with which to compare - `buf`. +* `otherBuffer` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`] with which to + compare `buf`. * Returns: {boolean} Returns `true` if both `buf` and `otherBuffer` have exactly the same bytes, @@ -1217,7 +1219,7 @@ changes: description: The `encoding` parameter is supported now. --> -* `value` {string|Buffer|integer} The value with which to fill `buf`. +* `value` {string|Buffer|Uint8Array|integer} The value with which to fill `buf`. * `offset` {integer} Number of bytes to skip before starting to fill `buf`. **Default:** `0`. * `end` {integer} Where to stop filling `buf` (not inclusive). **Default:** @@ -1271,7 +1273,7 @@ console.log(buf.fill('zz', 'hex')); added: v5.3.0 --> -* `value` {string|Buffer|integer} What to search for. +* `value` {string|Buffer|Uint8Array|integer} What to search for. * `byteOffset` {integer} Where to begin searching in `buf`. **Default:** `0`. * `encoding` {string} If `value` is a string, this is its encoding. **Default:** `'utf8'`. @@ -2515,6 +2517,7 @@ changes: * `source` {Buffer|Uint8Array} A `Buffer` or `Uint8Array` instance. * `fromEnc` {string} The current encoding. * `toEnc` {string} To target encoding. +* Returns: {Buffer} Re-encodes the given `Buffer` or `Uint8Array` instance from one character encoding to another. Returns a new `Buffer` instance. From 5fd4053a0d9c7afc0e1a14460fdad7b83498ae39 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sun, 31 Mar 2019 11:08:16 +0300 Subject: [PATCH 092/133] doc: unify number/integer types in buffer.md PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index d1e1357088d1c9..969668dd7a977a 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -867,11 +867,11 @@ A `TypeError` will be thrown if `buffer` is not a `Buffer`. added: v8.2.0 --> -* `object` {Object} An object supporting `Symbol.toPrimitive` or `valueOf()` -* `offsetOrEncoding` {number|string} A byte-offset or encoding, depending on +* `object` {Object} An object supporting `Symbol.toPrimitive` or `valueOf()`. +* `offsetOrEncoding` {integer|string} A byte-offset or encoding, depending on the value returned either by `object.valueOf()` or `object[Symbol.toPrimitive]()`. -* `length` {number} A length, depending on the value returned either by +* `length` {integer} A length, depending on the value returned either by `object.valueOf()` or `object[Symbol.toPrimitive]()`. For objects whose `valueOf()` function returns a value not strictly equal to From 3a35d8a79e3098fa73220ece8ed0325e6dd7b6be Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sat, 30 Mar 2019 20:45:19 +0200 Subject: [PATCH 093/133] doc: fix error notes in `Buffer.from()` variants Make notes about `TypeError` conditions in `Buffer.from()` variants more accurate. PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 969668dd7a977a..afeef8b3c203ae 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -787,7 +787,8 @@ Allocates a new `Buffer` using an `array` of octets. const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); ``` -A `TypeError` will be thrown if `array` is not an `Array`. +A `TypeError` will be thrown if `array` is not an `Array` or other type +appropriate for `Buffer.from()` variants. ### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 8`. + satisfy `0 <= offset <= buf.length - 8`. **Default:** `0`. * Returns: {number} Reads a 64-bit double from `buf` at the specified `offset` with specified @@ -1571,8 +1571,8 @@ console.log(buf.readDoubleLE(1)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readFloatBE(offset) -### buf.readFloatLE(offset) +### buf.readFloatBE([offset]) +### buf.readFloatLE([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 4`. + satisfy `0 <= offset <= buf.length - 4`. **Default:** `0`. * Returns: {number} Reads a 32-bit float from `buf` at the specified `offset` with specified @@ -1601,7 +1601,7 @@ console.log(buf.readFloatLE(1)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readInt8(offset) +### buf.readInt8([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 1`. + satisfy `0 <= offset <= buf.length - 1`. **Default:** `0`. * Returns: {integer} Reads a signed 8-bit integer from `buf` at the specified `offset`. @@ -1630,8 +1630,8 @@ console.log(buf.readInt8(2)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readInt16BE(offset) -### buf.readInt16LE(offset) +### buf.readInt16BE([offset]) +### buf.readInt16LE([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 2`. + satisfy `0 <= offset <= buf.length - 2`. **Default:** `0`. * Returns: {integer} Reads a signed 16-bit integer from `buf` at the specified `offset` with @@ -1662,8 +1662,8 @@ console.log(buf.readInt16LE(1)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readInt32BE(offset) -### buf.readInt32LE(offset) +### buf.readInt32BE([offset]) +### buf.readInt32LE([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 4`. + satisfy `0 <= offset <= buf.length - 4`. **Default:** `0`. * Returns: {integer} Reads a signed 32-bit integer from `buf` at the specified `offset` with @@ -1728,7 +1728,7 @@ console.log(buf.readIntBE(1, 0).toString(16)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readUInt8(offset) +### buf.readUInt8([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 1`. + satisfy `0 <= offset <= buf.length - 1`. **Default:** `0`. * Returns: {integer} Reads an unsigned 8-bit integer from `buf` at the specified `offset`. @@ -1755,8 +1755,8 @@ console.log(buf.readUInt8(2)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readUInt16BE(offset) -### buf.readUInt16LE(offset) +### buf.readUInt16BE([offset]) +### buf.readUInt16LE([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 2`. + satisfy `0 <= offset <= buf.length - 2`. **Default:** `0`. * Returns: {integer} Reads an unsigned 16-bit integer from `buf` at the specified `offset` with @@ -1789,8 +1789,8 @@ console.log(buf.readUInt16LE(2).toString(16)); // Throws ERR_OUT_OF_RANGE ``` -### buf.readUInt32BE(offset) -### buf.readUInt32LE(offset) +### buf.readUInt32BE([offset]) +### buf.readUInt32LE([offset]) * `offset` {integer} Number of bytes to skip before starting to read. Must - satisfy `0 <= offset <= buf.length - 4`. + satisfy `0 <= offset <= buf.length - 4`. **Default:** `0`. * Returns: {integer} Reads an unsigned 32-bit integer from `buf` at the specified `offset` with @@ -2144,8 +2144,8 @@ console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`); // Prints: 12 bytes: ½ + ¼ = ¾ ``` -### buf.writeDoubleBE(value, offset) -### buf.writeDoubleLE(value, offset) +### buf.writeDoubleBE(value[, offset]) +### buf.writeDoubleLE(value[, offset]) * `value` {string|Buffer|Uint8Array|integer} What to search for. -* `byteOffset` {integer} Where to begin searching in `buf`. **Default:** `0`. +* `byteOffset` {integer} Where to begin searching in `buf`. If negative, then + offset is calculated from the end of `buf`. **Default:** `0`. * `encoding` {string} If `value` is a string, this is its encoding. **Default:** `'utf8'`. * Returns: {boolean} `true` if `value` was found in `buf`, `false` otherwise. @@ -1321,7 +1322,8 @@ changes: --> * `value` {string|Buffer|Uint8Array|integer} What to search for. -* `byteOffset` {integer} Where to begin searching in `buf`. **Default:** `0`. +* `byteOffset` {integer} Where to begin searching in `buf`. If negative, then + offset is calculated from the end of `buf`. **Default:** `0`. * `encoding` {string} If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. **Default:** `'utf8'`. @@ -1423,8 +1425,9 @@ changes: --> * `value` {string|Buffer|Uint8Array|integer} What to search for. -* `byteOffset` {integer} Where to begin searching in `buf`. - **Default:** [`buf.length`]` - 1`. +* `byteOffset` {integer} Where to begin searching in `buf`. If negative, then + offset is calculated from the end of `buf`. **Default:** + [`buf.length`]` - 1`. * `encoding` {string} If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. **Default:** `'utf8'`. From 221bcfb5f8084a74eb2df8e73cbbfbf5f8321b68 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sat, 30 Mar 2019 19:59:44 +0200 Subject: [PATCH 097/133] doc: unify periods in comments in buffer.md "Prints: ..." comments were excepted to avoid confusion. PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 98 +++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 6ea304128de4c6..4f6e909a579daf 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -230,9 +230,9 @@ const arr = new Uint16Array(2); arr[0] = 5000; arr[1] = 4000; -// Copies the contents of `arr` +// Copies the contents of `arr`. const buf1 = Buffer.from(arr); -// Shares memory with `arr` +// Shares memory with `arr`. const buf2 = Buffer.from(arr.buffer); console.log(buf1); @@ -322,7 +322,7 @@ changes: Allocates a new `Buffer` using an `array` of octets. ```js -// Creates a new Buffer containing the UTF-8 bytes of the string 'buffer' +// Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'. const buf = new Buffer([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); ``` @@ -370,13 +370,13 @@ const arr = new Uint16Array(2); arr[0] = 5000; arr[1] = 4000; -// Shares memory with `arr` +// Shares memory with `arr`. const buf = new Buffer(arr.buffer); console.log(buf); // Prints: -// Changing the original Uint16Array changes the Buffer also +// Changing the original Uint16Array changes the Buffer also. arr[1] = 6000; console.log(buf); @@ -585,7 +585,7 @@ initialized*. The contents of the newly created `Buffer` are unknown and const buf = Buffer.allocUnsafe(10); console.log(buf); -// Prints: (contents may vary): +// Prints (contents may vary): buf.fill(0); @@ -638,16 +638,16 @@ to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and then copying out the relevant bits. ```js -// Need to keep around a few small chunks of memory +// Need to keep around a few small chunks of memory. const store = []; socket.on('readable', () => { let data; while (null !== (data = readable.read())) { - // Allocate for retained data + // Allocate for retained data. const sb = Buffer.allocUnsafeSlow(10); - // Copy the data into the new allocation + // Copy the data into the new allocation. data.copy(sb, 0, 0, 10); store.push(sb); @@ -722,7 +722,7 @@ const arr = [buf1, buf2]; console.log(arr.sort(Buffer.compare)); // Prints: [ , ] -// (This result is equal to: [buf2, buf1]) +// (This result is equal to: [buf2, buf1].) ``` ### Class Method: Buffer.concat(list[, totalLength]) @@ -784,7 +784,7 @@ added: v5.10.0 Allocates a new `Buffer` using an `array` of octets. ```js -// Creates a new Buffer containing UTF-8 bytes of the string 'buffer' +// Creates a new Buffer containing UTF-8 bytes of the string 'buffer'. const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); ``` @@ -813,13 +813,13 @@ const arr = new Uint16Array(2); arr[0] = 5000; arr[1] = 4000; -// Shares memory with `arr` +// Shares memory with `arr`. const buf = Buffer.from(arr.buffer); console.log(buf); // Prints: -// Changing the original Uint16Array changes the Buffer also +// Changing the original Uint16Array changes the Buffer also. arr[1] = 6000; console.log(buf); @@ -1076,7 +1076,7 @@ console.log(buf2.compare(buf3)); // Prints: 1 console.log([buf1, buf2, buf3].sort(Buffer.compare)); // Prints: [ , , ] -// (This result is equal to: [buf1, buf3, buf2]) +// (This result is equal to: [buf1, buf3, buf2].) ``` The optional `targetStart`, `targetEnd`, `sourceStart`, and `sourceEnd` @@ -1121,11 +1121,11 @@ const buf1 = Buffer.allocUnsafe(26); const buf2 = Buffer.allocUnsafe(26).fill('!'); for (let i = 0; i < 26; i++) { - // 97 is the decimal ASCII value for 'a' + // 97 is the decimal ASCII value for 'a'. buf1[i] = i + 97; } -// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2` +// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`. buf1.copy(buf2, 8, 16, 20); console.log(buf2.toString('ascii', 0, 25)); @@ -1139,7 +1139,7 @@ console.log(buf2.toString('ascii', 0, 25)); const buf = Buffer.allocUnsafe(26); for (let i = 0; i < 26; i++) { - // 97 is the decimal ASCII value for 'a' + // 97 is the decimal ASCII value for 'a'. buf[i] = i + 97; } @@ -1374,13 +1374,13 @@ behavior matches [`String#indexOf()`]. ```js const b = Buffer.from('abcdef'); -// Passing a value that's a number, but not a valid byte -// Prints: 2, equivalent to searching for 99 or 'c' +// Passing a value that's a number, but not a valid byte. +// Prints: 2, equivalent to searching for 99 or 'c'. console.log(b.indexOf(99.9)); console.log(b.indexOf(256 + 99)); -// Passing a byteOffset that coerces to NaN or 0 -// Prints: 1, searching the whole buffer +// Passing a byteOffset that coerces to NaN or 0. +// Prints: 1, searching the whole buffer. console.log(b.indexOf('b', undefined)); console.log(b.indexOf('b', {})); console.log(b.indexOf('b', null)); @@ -1474,18 +1474,18 @@ This behavior matches [`String#lastIndexOf()`]. ```js const b = Buffer.from('abcdef'); -// Passing a value that's a number, but not a valid byte -// Prints: 2, equivalent to searching for 99 or 'c' +// Passing a value that's a number, but not a valid byte. +// Prints: 2, equivalent to searching for 99 or 'c'. console.log(b.lastIndexOf(99.9)); console.log(b.lastIndexOf(256 + 99)); -// Passing a byteOffset that coerces to NaN -// Prints: 1, searching the whole buffer +// Passing a byteOffset that coerces to NaN. +// Prints: 1, searching the whole buffer. console.log(b.lastIndexOf('b', undefined)); console.log(b.lastIndexOf('b', {})); -// Passing a byteOffset that coerces to 0 -// Prints: -1, equivalent to passing 0 +// Passing a byteOffset that coerces to 0. +// Prints: -1, equivalent to passing 0. console.log(b.lastIndexOf('b', null)); console.log(b.lastIndexOf('b', [])); ``` @@ -1571,7 +1571,7 @@ console.log(buf.readDoubleBE(0)); console.log(buf.readDoubleLE(0)); // Prints: 5.447603722011605e-270 console.log(buf.readDoubleLE(1)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readFloatBE([offset]) @@ -1601,7 +1601,7 @@ console.log(buf.readFloatBE(0)); console.log(buf.readFloatLE(0)); // Prints: 1.539989614439558e-36 console.log(buf.readFloatLE(1)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readInt8([offset]) @@ -1630,7 +1630,7 @@ console.log(buf.readInt8(0)); console.log(buf.readInt8(1)); // Prints: 5 console.log(buf.readInt8(2)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readInt16BE([offset]) @@ -1662,7 +1662,7 @@ console.log(buf.readInt16BE(0)); console.log(buf.readInt16LE(0)); // Prints: 1280 console.log(buf.readInt16LE(1)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readInt32BE([offset]) @@ -1694,7 +1694,7 @@ console.log(buf.readInt32BE(0)); console.log(buf.readInt32LE(0)); // Prints: 83886080 console.log(buf.readInt32LE(1)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readIntBE(offset, byteLength) @@ -1726,9 +1726,9 @@ console.log(buf.readIntLE(0, 6).toString(16)); console.log(buf.readIntBE(0, 6).toString(16)); // Prints: 1234567890ab console.log(buf.readIntBE(1, 6).toString(16)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. console.log(buf.readIntBE(1, 0).toString(16)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readUInt8([offset]) @@ -1755,7 +1755,7 @@ console.log(buf.readUInt8(0)); console.log(buf.readUInt8(1)); // Prints: 254 console.log(buf.readUInt8(2)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readUInt16BE([offset]) @@ -1789,7 +1789,7 @@ console.log(buf.readUInt16BE(1).toString(16)); console.log(buf.readUInt16LE(1).toString(16)); // Prints: 5634 console.log(buf.readUInt16LE(2).toString(16)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readUInt32BE([offset]) @@ -1819,7 +1819,7 @@ console.log(buf.readUInt32BE(0).toString(16)); console.log(buf.readUInt32LE(0).toString(16)); // Prints: 78563412 console.log(buf.readUInt32LE(1).toString(16)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.readUIntBE(offset, byteLength) @@ -1851,7 +1851,7 @@ console.log(buf.readUIntBE(0, 6).toString(16)); console.log(buf.readUIntLE(0, 6).toString(16)); // Prints: ab9078563412 console.log(buf.readUIntBE(1, 6).toString(16)); -// Throws ERR_OUT_OF_RANGE +// Throws ERR_OUT_OF_RANGE. ``` ### buf.slice([start[, end]]) @@ -1889,7 +1889,7 @@ because the allocated memory of the two objects overlap. const buf1 = Buffer.allocUnsafe(26); for (let i = 0; i < 26; i++) { - // 97 is the decimal ASCII value for 'a' + // 97 is the decimal ASCII value for 'a'. buf1[i] = i + 97; } @@ -1912,15 +1912,15 @@ const buf = Buffer.from('buffer'); console.log(buf.slice(-6, -1).toString()); // Prints: buffe -// (Equivalent to buf.slice(0, 5)) +// (Equivalent to buf.slice(0, 5).) console.log(buf.slice(-6, -2).toString()); // Prints: buff -// (Equivalent to buf.slice(0, 4)) +// (Equivalent to buf.slice(0, 4).) console.log(buf.slice(-5, -2).toString()); // Prints: uff -// (Equivalent to buf.slice(1, 4)) +// (Equivalent to buf.slice(1, 4).) ``` ### buf.swap16() @@ -1948,7 +1948,7 @@ console.log(buf1); const buf2 = Buffer.from([0x1, 0x2, 0x3]); buf2.swap16(); -// Throws ERR_INVALID_BUFFER_SIZE +// Throws ERR_INVALID_BUFFER_SIZE. ``` One convenient use of `buf.swap16()` is to perform a fast in-place conversion @@ -1984,7 +1984,7 @@ console.log(buf1); const buf2 = Buffer.from([0x1, 0x2, 0x3]); buf2.swap32(); -// Throws ERR_INVALID_BUFFER_SIZE +// Throws ERR_INVALID_BUFFER_SIZE. ``` ### buf.swap64() @@ -2011,7 +2011,7 @@ console.log(buf1); const buf2 = Buffer.from([0x1, 0x2, 0x3]); buf2.swap64(); -// Throws ERR_INVALID_BUFFER_SIZE +// Throws ERR_INVALID_BUFFER_SIZE. ``` Note that JavaScript cannot encode 64-bit integers. This method is intended @@ -2065,7 +2065,7 @@ as [`buffer.constants.MAX_STRING_LENGTH`][]. const buf1 = Buffer.allocUnsafe(26); for (let i = 0; i < 26; i++) { - // 97 is the decimal ASCII value for 'a' + // 97 is the decimal ASCII value for 'a'. buf1[i] = i + 97; } @@ -2573,16 +2573,16 @@ pool for an indeterminate amount of time, it may be appropriate to create an un-pooled `Buffer` instance using `SlowBuffer` then copy out the relevant bits. ```js -// Need to keep around a few small chunks of memory +// Need to keep around a few small chunks of memory. const store = []; socket.on('readable', () => { let data; while (null !== (data = readable.read())) { - // Allocate for retained data + // Allocate for retained data. const sb = SlowBuffer(10); - // Copy the data into the new allocation + // Copy the data into the new allocation. data.copy(sb, 0, 0, 10); store.push(sb); From 00eef26fb63a34ea029e2b9c8aeb03bea5255497 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Sun, 31 Mar 2019 11:37:33 +0300 Subject: [PATCH 098/133] doc: unify link formatting in buffer.md PR-URL: https://github.com/nodejs/node/pull/27030 Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/buffer.md | 234 +++++++++++++++++++++++----------------------- 1 file changed, 118 insertions(+), 116 deletions(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 4f6e909a579daf..202bd841714431 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -4,13 +4,14 @@ > Stability: 2 - Stable -Prior to the introduction of [`TypedArray`], the JavaScript language had no +Prior to the introduction of [`TypedArray`][], the JavaScript language had no mechanism for reading or manipulating streams of binary data. The `Buffer` class was introduced as part of the Node.js API to enable interaction with octet streams in TCP streams, file system operations, and other contexts. -With [`TypedArray`] now available, the `Buffer` class implements the -[`Uint8Array`] API in a manner that is more optimized and suitable for Node.js. +With [`TypedArray`][] now available, the `Buffer` class implements the +[`Uint8Array`][] API in a manner that is more optimized and suitable for +Node.js. Instances of the `Buffer` class are similar to arrays of integers from `0` to `255` (other integers are coerced to this range by `& 255` operation) but @@ -62,8 +63,8 @@ differently based on what arguments are provided: `new Buffer(num)` will return a `Buffer` with initialized memory. * Passing a string, array, or `Buffer` as the first argument copies the passed object's data into the `Buffer`. -* Passing an [`ArrayBuffer`] or a [`SharedArrayBuffer`] returns a `Buffer` that - shares allocated memory with the given array buffer. +* Passing an [`ArrayBuffer`][] or a [`SharedArrayBuffer`][] returns a `Buffer` + that shares allocated memory with the given array buffer. Because the behavior of `new Buffer()` is different depending on the type of the first argument, security and reliability issues can be inadvertently introduced @@ -72,18 +73,18 @@ performed. To make the creation of `Buffer` instances more reliable and less error-prone, the various forms of the `new Buffer()` constructor have been **deprecated** -and replaced by separate `Buffer.from()`, [`Buffer.alloc()`], and -[`Buffer.allocUnsafe()`] methods. +and replaced by separate `Buffer.from()`, [`Buffer.alloc()`][], and +[`Buffer.allocUnsafe()`][] methods. *Developers should migrate all existing uses of the `new Buffer()` constructors to one of these new APIs.* -* [`Buffer.from(array)`] returns a new `Buffer` that *contains a copy* of the +* [`Buffer.from(array)`][] returns a new `Buffer` that *contains a copy* of the provided octets. * [`Buffer.from(arrayBuffer[, byteOffset[, length]])`][`Buffer.from(arrayBuf)`] returns a new `Buffer` that *shares the same allocated memory* as the given - [`ArrayBuffer`]. -* [`Buffer.from(buffer)`] returns a new `Buffer` that *contains a copy* of the + [`ArrayBuffer`][]. +* [`Buffer.from(buffer)`][] returns a new `Buffer` that *contains a copy* of the contents of the given `Buffer`. * [`Buffer.from(string[, encoding])`][`Buffer.from(string)`] returns a new `Buffer` that *contains a copy* of the provided string. @@ -98,10 +99,10 @@ to one of these new APIs.* uninitialized, the allocated segment of memory might contain old data that is potentially sensitive. -`Buffer` instances returned by [`Buffer.allocUnsafe()`] *may* be allocated off +`Buffer` instances returned by [`Buffer.allocUnsafe()`][] *may* be allocated off a shared internal memory pool if `size` is less than or equal to half -[`Buffer.poolSize`]. Instances returned by [`Buffer.allocUnsafeSlow()`] *never* -use the shared internal memory pool. +[`Buffer.poolSize`][]. Instances returned by [`Buffer.allocUnsafeSlow()`][] +*never* use the shared internal memory pool. ### The `--zero-fill-buffers` command line option -`Buffer` instances are also [`Uint8Array`] instances. However, there are subtle -incompatibilities with [`TypedArray`]. For example, while -[`ArrayBuffer#slice()`] creates a copy of the slice, the implementation of +`Buffer` instances are also [`Uint8Array`][] instances. However, there are +subtle incompatibilities with [`TypedArray`][]. For example, while +[`ArrayBuffer#slice()`][] creates a copy of the slice, the implementation of [`Buffer#slice()`][`buf.slice()`] creates a view over the existing `Buffer` without copying, making [`Buffer#slice()`][`buf.slice()`] far more efficient. -It is also possible to create new [`TypedArray`] instances from a `Buffer` with -the following caveats: +It is also possible to create new [`TypedArray`][] instances from a `Buffer` +with the following caveats: -1. The `Buffer` object's memory is copied to the [`TypedArray`], not shared. +1. The `Buffer` object's memory is copied to the [`TypedArray`][], not shared. 2. The `Buffer` object's memory is interpreted as an array of distinct elements, and not as a byte array of the target type. That is, -`new Uint32Array(Buffer.from([1, 2, 3, 4]))` creates a 4-element [`Uint32Array`] - with elements `[1, 2, 3, 4]`, not a [`Uint32Array`] with a single element - `[0x1020304]` or `[0x4030201]`. +`new Uint32Array(Buffer.from([1, 2, 3, 4]))` creates a 4-element +[`Uint32Array`][] with elements `[1, 2, 3, 4]`, not a [`Uint32Array`][] with a +single element `[0x1020304]` or `[0x4030201]`. It is possible to create a new `Buffer` that shares the same allocated memory as -a [`TypedArray`] instance by using the `TypedArray` object's `.buffer` property. +a [`TypedArray`][] instance by using the `TypedArray` object's `.buffer` +property. ```js const arr = new Uint16Array(2); @@ -248,8 +250,8 @@ console.log(buf2); // Prints: ``` -Note that when creating a `Buffer` using a [`TypedArray`]'s `.buffer`, it is -possible to use only a portion of the underlying [`ArrayBuffer`] by passing in +Note that when creating a `Buffer` using a [`TypedArray`][]'s `.buffer`, it is +possible to use only a portion of the underlying [`ArrayBuffer`][] by passing in `byteOffset` and `length` parameters. ```js @@ -260,8 +262,8 @@ console.log(buf.length); // Prints: 16 ``` -The `Buffer.from()` and [`TypedArray.from()`] have different signatures and -implementations. Specifically, the [`TypedArray`] variants accept a second +The `Buffer.from()` and [`TypedArray.from()`][] have different signatures and +implementations. Specifically, the [`TypedArray`][] variants accept a second argument that is a mapping function that is invoked on every element of the typed array: @@ -270,8 +272,8 @@ typed array: The `Buffer.from()` method, however, does not support the use of a mapping function: -* [`Buffer.from(array)`] -* [`Buffer.from(buffer)`] +* [`Buffer.from(array)`][] +* [`Buffer.from(buffer)`][] * [`Buffer.from(arrayBuffer[, byteOffset[, length]])`][`Buffer.from(arrayBuf)`] * [`Buffer.from(string[, encoding])`][`Buffer.from(string)`] @@ -291,8 +293,8 @@ for (const b of buf) { // 3 ``` -Additionally, the [`buf.values()`], [`buf.keys()`], and -[`buf.entries()`] methods can be used to create iterators. +Additionally, the [`buf.values()`][], [`buf.keys()`][], and +[`buf.entries()`][] methods can be used to create iterators. ## Class: Buffer @@ -315,7 +317,7 @@ changes: description: Calling this constructor emits a deprecation warning now. --> -> Stability: 0 - Deprecated: Use [`Buffer.from(array)`] instead. +> Stability: 0 - Deprecated: Use [`Buffer.from(array)`][] instead. * `array` {integer[]} An array of bytes to copy from. @@ -350,16 +352,16 @@ changes: > [`Buffer.from(arrayBuffer[, byteOffset[, length]])`][`Buffer.from(arrayBuf)`] > instead. -* `arrayBuffer` {ArrayBuffer|SharedArrayBuffer} An [`ArrayBuffer`], - [`SharedArrayBuffer`] or the `.buffer` property of a [`TypedArray`]. +* `arrayBuffer` {ArrayBuffer|SharedArrayBuffer} An [`ArrayBuffer`][], + [`SharedArrayBuffer`][] or the `.buffer` property of a [`TypedArray`][]. * `byteOffset` {integer} Index of first byte to expose. **Default:** `0`. * `length` {integer} Number of bytes to expose. **Default:** `arrayBuffer.length - byteOffset`. -This creates a view of the [`ArrayBuffer`] or [`SharedArrayBuffer`] without +This creates a view of the [`ArrayBuffer`][] or [`SharedArrayBuffer`][] without copying the underlying memory. For example, when passed a reference to the -`.buffer` property of a [`TypedArray`] instance, the newly created `Buffer` will -share the same allocated memory as the [`TypedArray`]. +`.buffer` property of a [`TypedArray`][] instance, the newly created `Buffer` +will share the same allocated memory as the [`TypedArray`][]. The optional `byteOffset` and `length` arguments specify a memory range within the `arrayBuffer` that will be shared by the `Buffer`. @@ -399,10 +401,10 @@ changes: description: Calling this constructor emits a deprecation warning now. --> -> Stability: 0 - Deprecated: Use [`Buffer.from(buffer)`] instead. +> Stability: 0 - Deprecated: Use [`Buffer.from(buffer)`][] instead. -* `buffer` {Buffer|Uint8Array} An existing `Buffer` or [`Uint8Array`] from which - to copy data. +* `buffer` {Buffer|Uint8Array} An existing `Buffer` or [`Uint8Array`][] from + which to copy data. Copies the passed `buffer` data onto a new `Buffer` instance. @@ -438,14 +440,14 @@ changes: description: Calling this constructor emits a deprecation warning now. --> -> Stability: 0 - Deprecated: Use [`Buffer.alloc()`] instead (also see -> [`Buffer.allocUnsafe()`]). +> Stability: 0 - Deprecated: Use [`Buffer.alloc()`][] instead (also see +> [`Buffer.allocUnsafe()`][]). * `size` {integer} The desired length of the new `Buffer`. Allocates a new `Buffer` of `size` bytes. If `size` is larger than -[`buffer.constants.MAX_LENGTH`] or smaller than 0, [`ERR_INVALID_OPT_VALUE`] is -thrown. A zero-length `Buffer` is created if `size` is 0. +[`buffer.constants.MAX_LENGTH`][] or smaller than 0, [`ERR_INVALID_OPT_VALUE`][] +is thrown. A zero-length `Buffer` is created if `size` is 0. Prior to Node.js 8.0.0, the underlying memory for `Buffer` instances created in this way is *not initialized*. The contents of a newly created @@ -532,8 +534,8 @@ console.log(buf); ``` If `size` is larger than -[`buffer.constants.MAX_LENGTH`] or smaller than 0, [`ERR_INVALID_OPT_VALUE`] is -thrown. A zero-length `Buffer` is created if `size` is 0. +[`buffer.constants.MAX_LENGTH`][] or smaller than 0, [`ERR_INVALID_OPT_VALUE`][] +is thrown. A zero-length `Buffer` is created if `size` is 0. If `fill` is specified, the allocated `Buffer` will be initialized by calling [`buf.fill(fill)`][`buf.fill()`]. @@ -555,8 +557,8 @@ console.log(buf); // Prints: ``` -Calling [`Buffer.alloc()`] can be significantly slower than the alternative -[`Buffer.allocUnsafe()`] but ensures that the newly created `Buffer` instance +Calling [`Buffer.alloc()`][] can be significantly slower than the alternative +[`Buffer.allocUnsafe()`][] but ensures that the newly created `Buffer` instance contents will *never contain sensitive data*. A `TypeError` will be thrown if `size` is not a number. @@ -573,12 +575,12 @@ changes: * `size` {integer} The desired length of the new `Buffer`. Allocates a new `Buffer` of `size` bytes. If `size` is larger than -[`buffer.constants.MAX_LENGTH`] or smaller than 0, [`ERR_INVALID_OPT_VALUE`] is -thrown. A zero-length `Buffer` is created if `size` is 0. +[`buffer.constants.MAX_LENGTH`][] or smaller than 0, [`ERR_INVALID_OPT_VALUE`][] +is thrown. A zero-length `Buffer` is created if `size` is 0. The underlying memory for `Buffer` instances created in this way is *not initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`Buffer.alloc()`] instead to initialize +*may contain sensitive data*. Use [`Buffer.alloc()`][] instead to initialize `Buffer` instances with zeroes. ```js @@ -596,18 +598,18 @@ console.log(buf); A `TypeError` will be thrown if `size` is not a number. Note that the `Buffer` module pre-allocates an internal `Buffer` instance of -size [`Buffer.poolSize`] that is used as a pool for the fast allocation of new -`Buffer` instances created using [`Buffer.allocUnsafe()`] and the deprecated +size [`Buffer.poolSize`][] that is used as a pool for the fast allocation of new +`Buffer` instances created using [`Buffer.allocUnsafe()`][] and the deprecated `new Buffer(size)` constructor only when `size` is less than or equal to -`Buffer.poolSize >> 1` (floor of [`Buffer.poolSize`] divided by two). +`Buffer.poolSize >> 1` (floor of [`Buffer.poolSize`][] divided by two). Use of this pre-allocated internal memory pool is a key difference between calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. Specifically, `Buffer.alloc(size, fill)` will *never* use the internal `Buffer` pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal -`Buffer` pool if `size` is less than or equal to half [`Buffer.poolSize`]. The +`Buffer` pool if `size` is less than or equal to half [`Buffer.poolSize`][]. The difference is subtle but can be important when an application requires the -additional performance that [`Buffer.allocUnsafe()`] provides. +additional performance that [`Buffer.allocUnsafe()`][] provides. ### Class Method: Buffer.allocUnsafeSlow(size) -* `list` {Buffer[] | Uint8Array[]} List of `Buffer` or [`Uint8Array`] instances - to concat. +* `list` {Buffer[] | Uint8Array[]} List of `Buffer` or [`Uint8Array`][] + instances to concat. * `totalLength` {integer} Total length of the `Buffer` instances in `list` when concatenated. * Returns: {Buffer} @@ -796,16 +798,16 @@ appropriate for `Buffer.from()` variants. added: v5.10.0 --> -* `arrayBuffer` {ArrayBuffer|SharedArrayBuffer} An [`ArrayBuffer`], - [`SharedArrayBuffer`], or the `.buffer` property of a [`TypedArray`]. +* `arrayBuffer` {ArrayBuffer|SharedArrayBuffer} An [`ArrayBuffer`][], + [`SharedArrayBuffer`][], or the `.buffer` property of a [`TypedArray`][]. * `byteOffset` {integer} Index of first byte to expose. **Default:** `0`. * `length` {integer} Number of bytes to expose. **Default:** `arrayBuffer.length - byteOffset`. -This creates a view of the [`ArrayBuffer`] without copying the underlying +This creates a view of the [`ArrayBuffer`][] without copying the underlying memory. For example, when passed a reference to the `.buffer` property of a -[`TypedArray`] instance, the newly created `Buffer` will share the same -allocated memory as the [`TypedArray`]. +[`TypedArray`][] instance, the newly created `Buffer` will share the same +allocated memory as the [`TypedArray`][]. ```js const arr = new Uint16Array(2); @@ -837,16 +839,16 @@ console.log(buf.length); // Prints: 2 ``` -A `TypeError` will be thrown if `arrayBuffer` is not an [`ArrayBuffer`] or a -[`SharedArrayBuffer`] or other type appropriate for `Buffer.from()` variants. +A `TypeError` will be thrown if `arrayBuffer` is not an [`ArrayBuffer`][] or a +[`SharedArrayBuffer`][] or other type appropriate for `Buffer.from()` variants. ### Class Method: Buffer.from(buffer) -* `buffer` {Buffer|Uint8Array} An existing `Buffer` or [`Uint8Array`] from which - to copy data. +* `buffer` {Buffer|Uint8Array} An existing `Buffer` or [`Uint8Array`][] from + which to copy data. Copies the passed `buffer` data onto a new `Buffer` instance. @@ -1039,7 +1041,7 @@ changes: description: Additional parameters for specifying offsets are supported now. --> -* `target` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`] with which to +* `target` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`][] with which to compare `buf`. * `targetStart` {integer} The offset within `target` at which to begin comparison. **Default:** `0`. @@ -1048,7 +1050,7 @@ changes: * `sourceStart` {integer} The offset within `buf` at which to begin comparison. **Default:** `0`. * `sourceEnd` {integer} The offset within `buf` at which to end comparison - (not inclusive). **Default:** [`buf.length`]. + (not inclusive). **Default:** [`buf.length`][]. * Returns: {integer} Compares `buf` with `target` and returns a number indicating whether `buf` @@ -1095,7 +1097,7 @@ console.log(buf1.compare(buf2, 5, 6, 5)); // Prints: 1 ``` -[`ERR_OUT_OF_RANGE`] is thrown if `targetStart < 0`, `sourceStart < 0`, +[`ERR_OUT_OF_RANGE`][] is thrown if `targetStart < 0`, `sourceStart < 0`, `targetEnd > target.byteLength`, or `sourceEnd > source.byteLength`. ### buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]) @@ -1103,13 +1105,13 @@ console.log(buf1.compare(buf2, 5, 6, 5)); added: v0.1.90 --> -* `target` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`] to copy into. +* `target` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`][] to copy into. * `targetStart` {integer} The offset within `target` at which to begin writing. **Default:** `0`. * `sourceStart` {integer} The offset within `buf` from which to begin copying. **Default:** `0`. * `sourceEnd` {integer} The offset within `buf` at which to stop copying (not - inclusive). **Default:** [`buf.length`]. + inclusive). **Default:** [`buf.length`][]. * Returns: {integer} The number of bytes copied. Copies data from a region of `buf` to a region in `target` even if the `target` @@ -1156,8 +1158,8 @@ added: v1.1.0 * Returns: {Iterator} -Creates and returns an [iterator] of `[index, byte]` pairs from the contents of -`buf`. +Creates and returns an [iterator][] of `[index, byte]` pairs from the contents +of `buf`. ```js // Log the entire contents of a `Buffer`. @@ -1185,7 +1187,7 @@ changes: description: The arguments can now be `Uint8Array`s. --> -* `otherBuffer` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`] with which to +* `otherBuffer` {Buffer|Uint8Array} A `Buffer` or [`Uint8Array`][] with which to compare `buf`. * Returns: {boolean} @@ -1230,7 +1232,7 @@ changes: * `offset` {integer} Number of bytes to skip before starting to fill `buf`. **Default:** `0`. * `end` {integer} Where to stop filling `buf` (not inclusive). **Default:** - [`buf.length`]. + [`buf.length`][]. * `encoding` {string} The encoding for `value` if `value` is a string. **Default:** `'utf8'`. * Returns: {Buffer} A reference to `buf`. @@ -1334,8 +1336,8 @@ If `value` is: * a string, `value` is interpreted according to the character encoding in `encoding`. - * a `Buffer` or [`Uint8Array`], `value` will be used in its entirety. - To compare a partial `Buffer`, use [`buf.slice()`]. + * a `Buffer` or [`Uint8Array`][], `value` will be used in its entirety. + To compare a partial `Buffer`, use [`buf.slice()`][]. * a number, `value` will be interpreted as an unsigned 8-bit integer value between `0` and `255`. @@ -1369,7 +1371,7 @@ an integer between 0 and 255. If `byteOffset` is not a number, it will be coerced to a number. If the result of coercion is `NaN` or `0`, then the entire buffer will be searched. This -behavior matches [`String#indexOf()`]. +behavior matches [`String#indexOf()`][]. ```js const b = Buffer.from('abcdef'); @@ -1398,7 +1400,7 @@ added: v1.1.0 * Returns: {Iterator} -Creates and returns an [iterator] of `buf` keys (indices). +Creates and returns an [iterator][] of `buf` keys (indices). ```js const buf = Buffer.from('buffer'); @@ -1427,14 +1429,14 @@ changes: * `value` {string|Buffer|Uint8Array|integer} What to search for. * `byteOffset` {integer} Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. **Default:** - [`buf.length`]` - 1`. + [`buf.length`][]` - 1`. * `encoding` {string} If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. **Default:** `'utf8'`. * Returns: {integer} The index of the last occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. -Identical to [`buf.indexOf()`], except the last occurrence of `value` is found +Identical to [`buf.indexOf()`][], except the last occurrence of `value` is found rather than the first occurrence. ```js @@ -1469,7 +1471,7 @@ an integer between 0 and 255. If `byteOffset` is not a number, it will be coerced to a number. Any arguments that coerce to `NaN`, like `{}` or `undefined`, will search the whole buffer. -This behavior matches [`String#lastIndexOf()`]. +This behavior matches [`String#lastIndexOf()`][]. ```js const b = Buffer.from('abcdef'); @@ -1519,7 +1521,7 @@ console.log(buf.length); While the `length` property is not immutable, changing the value of `length` can result in undefined and inconsistent behavior. Applications that wish to modify the length of a `Buffer` should therefore treat `length` as read-only and -use [`buf.slice()`] to create a new `Buffer`. +use [`buf.slice()`][] to create a new `Buffer`. ```js let buf = Buffer.allocUnsafe(10); @@ -1540,7 +1542,7 @@ console.log(buf.length); deprecated: v8.0.0 --> -> Stability: 0 - Deprecated: Use [`buf.buffer`] instead. +> Stability: 0 - Deprecated: Use [`buf.buffer`][] instead. The `buf.parent` property is a deprecated alias for `buf.buffer`. @@ -1870,14 +1872,14 @@ changes: * `start` {integer} Where the new `Buffer` will start. **Default:** `0`. * `end` {integer} Where the new `Buffer` will end (not inclusive). - **Default:** [`buf.length`]. + **Default:** [`buf.length`][]. * Returns: {Buffer} Returns a new `Buffer` that references the same memory as the original, but offset and cropped by the `start` and `end` indices. -Specifying `end` greater than [`buf.length`] will return the same result as -that of `end` equal to [`buf.length`]. +Specifying `end` greater than [`buf.length`][] will return the same result as +that of `end` equal to [`buf.length`][]. Modifying the new `Buffer` slice will modify the memory in the original `Buffer` because the allocated memory of the two objects overlap. @@ -1931,8 +1933,8 @@ added: v5.10.0 * Returns: {Buffer} A reference to `buf`. Interprets `buf` as an array of unsigned 16-bit integers and swaps the -byte order *in-place*. Throws [`ERR_INVALID_BUFFER_SIZE`] if [`buf.length`] is -not a multiple of 2. +byte order *in-place*. Throws [`ERR_INVALID_BUFFER_SIZE`][] if [`buf.length`][] +is not a multiple of 2. ```js const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); @@ -1967,8 +1969,8 @@ added: v5.10.0 * Returns: {Buffer} A reference to `buf`. Interprets `buf` as an array of unsigned 32-bit integers and swaps the -byte order *in-place*. Throws [`ERR_INVALID_BUFFER_SIZE`] if [`buf.length`] is -not a multiple of 4. +byte order *in-place*. Throws [`ERR_INVALID_BUFFER_SIZE`][] if [`buf.length`][] +is not a multiple of 4. ```js const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); @@ -1995,7 +1997,7 @@ added: v6.3.0 * Returns: {Buffer} A reference to `buf`. Interprets `buf` as an array of 64-bit numbers and swaps byte order *in-place*. -Throws [`ERR_INVALID_BUFFER_SIZE`] if [`buf.length`] is not a multiple of 8. +Throws [`ERR_INVALID_BUFFER_SIZE`][] if [`buf.length`][] is not a multiple of 8. ```js const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); @@ -2024,7 +2026,7 @@ added: v0.9.2 * Returns: {Object} -Returns a JSON representation of `buf`. [`JSON.stringify()`] implicitly calls +Returns a JSON representation of `buf`. [`JSON.stringify()`][] implicitly calls this function when stringifying a `Buffer` instance. ```js @@ -2052,7 +2054,7 @@ added: v0.1.90 * `encoding` {string} The character encoding to use. **Default:** `'utf8'`. * `start` {integer} The byte offset to start decoding at. **Default:** `0`. * `end` {integer} The byte offset to stop decoding at (not inclusive). - **Default:** [`buf.length`]. + **Default:** [`buf.length`][]. * Returns: {string} Decodes `buf` to a string according to the specified character encoding in @@ -2091,7 +2093,7 @@ added: v1.1.0 * Returns: {Iterator} -Creates and returns an [iterator] for `buf` values (bytes). This function is +Creates and returns an [iterator][] for `buf` values (bytes). This function is called automatically when a `Buffer` is used in a `for..of` statement. ```js @@ -2498,7 +2500,7 @@ added: v0.5.4 Returns the maximum number of bytes that will be returned when `buf.inspect()` is called. This can be overridden by user modules. See -[`util.inspect()`] for more details on `buf.inspect()` behavior. +[`util.inspect()`][] for more details on `buf.inspect()` behavior. Note that this is a property on the `buffer` module returned by `require('buffer')`, not on the `Buffer` global or a `Buffer` instance. @@ -2560,7 +2562,7 @@ Note that this is a property on the `buffer` module returned by deprecated: v6.0.0 --> -> Stability: 0 - Deprecated: Use [`Buffer.allocUnsafeSlow()`] instead. +> Stability: 0 - Deprecated: Use [`Buffer.allocUnsafeSlow()`][] instead. Returns an un-pooled `Buffer`. @@ -2598,13 +2600,13 @@ has observed undue memory retention in their applications. deprecated: v6.0.0 --> -> Stability: 0 - Deprecated: Use [`Buffer.allocUnsafeSlow()`] instead. +> Stability: 0 - Deprecated: Use [`Buffer.allocUnsafeSlow()`][] instead. * `size` {integer} The desired length of the new `SlowBuffer`. Allocates a new `Buffer` of `size` bytes. If `size` is larger than -[`buffer.constants.MAX_LENGTH`] or smaller than 0, [`ERR_INVALID_OPT_VALUE`] is -thrown. A zero-length `Buffer` is created if `size` is 0. +[`buffer.constants.MAX_LENGTH`][] or smaller than 0, [`ERR_INVALID_OPT_VALUE`][] +is thrown. A zero-length `Buffer` is created if `size` is 0. The underlying memory for `SlowBuffer` instances is *not initialized*. The contents of a newly created `SlowBuffer` are unknown and may contain sensitive From e40bfd899e18fdc843047ad2defd655aefe5cfbe Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 03:59:28 +0100 Subject: [PATCH 099/133] util: `inspect()` should not exceed `breakLength` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using `util.inspect()` with the `compact` option set to a number could result in output that exceeded the `breakLength` option. This change makes sure that limit is taken into account. PR-URL: https://github.com/nodejs/node/pull/26914 Reviewed-By: Michaël Zasso Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- lib/internal/assert/assertion_error.js | 9 ++- lib/internal/util/inspect.js | 2 + test/parallel/test-util-inspect.js | 90 ++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/lib/internal/assert/assertion_error.js b/lib/internal/assert/assertion_error.js index 2d272907f6b650..87a69042af6442 100644 --- a/lib/internal/assert/assertion_error.js +++ b/lib/internal/assert/assertion_error.js @@ -18,8 +18,8 @@ const kReadableOperator = { equal: 'Expected values to be loosely equal:', notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:', notStrictEqual: 'Expected "actual" to be strictly unequal to:', - // eslint-disable-next-line max-len - notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":', + notStrictEqualObject: + 'Expected "actual" not to be reference-equal to "expected":', notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:', notEqual: 'Expected "actual" to be loosely unequal to:', notIdentical: 'Values identical but not reference-equal:', @@ -52,7 +52,10 @@ function inspectValue(val) { // Assert compares only enumerable properties (with a few exceptions). showHidden: false, // Having a long line as error is better than wrapping the line for - // comparison. + // comparison for now. + // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we + // have meta information about the inspected properties (i.e., know where + // in what line the property starts and ends). breakLength: Infinity, // Assert does not detect proxies currently. showProxy: false, diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 6cbae6f73970f1..c1cdb5c8f9eeff 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -890,6 +890,8 @@ function groupArrayElements(ctx, output) { approxCharHeights * (actualMax - bias) * output.length ) / (actualMax - bias) ), + // Do not exceed the breakLength. + Math.floor((ctx.breakLength - ctx.indentationLvl) / actualMax), // Limit array grouping for small `compact` modes as the user requested // minimal grouping. ctx.compact * 3, diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 5f4779095c98b9..f72deaab5754af 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -2213,4 +2213,94 @@ assert.strictEqual( '\u001b[33m3\u001b[39m, \u001b[33m4\u001b[39m ]'; assert.strictEqual(out, expected); + + obj = [ + 'Object', 'Function', 'Array', + 'Number', 'parseFloat', 'parseInt', + 'Infinity', 'NaN', 'undefined', + 'Boolean', 'String', 'Symbol', + 'Date', 'Promise', 'RegExp', + 'Error', 'EvalError', 'RangeError', + 'ReferenceError', 'SyntaxError', 'TypeError', + 'URIError', 'JSON', 'Math', + 'console', 'Intl', 'ArrayBuffer', + 'Uint8Array', 'Int8Array', 'Uint16Array', + 'Int16Array', 'Uint32Array', 'Int32Array', + 'Float32Array', 'Float64Array', 'Uint8ClampedArray', + 'BigUint64Array', 'BigInt64Array', 'DataView', + 'Map', 'BigInt', 'Set', + 'WeakMap', 'WeakSet', 'Proxy', + 'Reflect', 'decodeURI', 'decodeURIComponent', + 'encodeURI', 'encodeURIComponent', 'escape', + 'unescape', 'eval', 'isFinite', + 'isNaN', 'SharedArrayBuffer', 'Atomics', + 'globalThis', 'WebAssembly', 'global', + 'process', 'GLOBAL', 'root', + 'Buffer', 'URL', 'URLSearchParams', + 'TextEncoder', 'TextDecoder', 'clearInterval', + 'clearTimeout', 'setInterval', 'setTimeout', + 'queueMicrotask', 'clearImmediate', 'setImmediate', + 'module', 'require', 'assert', + 'async_hooks', 'buffer', 'child_process', + 'cluster', 'crypto', 'dgram', + 'dns', 'domain', 'events', + 'fs', 'http', 'http2', + 'https', 'inspector', 'net', + 'os', 'path', 'perf_hooks', + 'punycode', 'querystring', 'readline', + 'repl', 'stream', 'string_decoder', + 'tls', 'trace_events', 'tty', + 'url', 'v8', 'vm', + 'worker_threads', 'zlib', '_', + '_error', 'util' + ]; + + out = util.inspect( + obj, + { compact: 3, breakLength: 80, maxArrayLength: 250 } + ); + expected = [ + '[', + " 'Object', 'Function', 'Array',", + " 'Number', 'parseFloat', 'parseInt',", + " 'Infinity', 'NaN', 'undefined',", + " 'Boolean', 'String', 'Symbol',", + " 'Date', 'Promise', 'RegExp',", + " 'Error', 'EvalError', 'RangeError',", + " 'ReferenceError', 'SyntaxError', 'TypeError',", + " 'URIError', 'JSON', 'Math',", + " 'console', 'Intl', 'ArrayBuffer',", + " 'Uint8Array', 'Int8Array', 'Uint16Array',", + " 'Int16Array', 'Uint32Array', 'Int32Array',", + " 'Float32Array', 'Float64Array', 'Uint8ClampedArray',", + " 'BigUint64Array', 'BigInt64Array', 'DataView',", + " 'Map', 'BigInt', 'Set',", + " 'WeakMap', 'WeakSet', 'Proxy',", + " 'Reflect', 'decodeURI', 'decodeURIComponent',", + " 'encodeURI', 'encodeURIComponent', 'escape',", + " 'unescape', 'eval', 'isFinite',", + " 'isNaN', 'SharedArrayBuffer', 'Atomics',", + " 'globalThis', 'WebAssembly', 'global',", + " 'process', 'GLOBAL', 'root',", + " 'Buffer', 'URL', 'URLSearchParams',", + " 'TextEncoder', 'TextDecoder', 'clearInterval',", + " 'clearTimeout', 'setInterval', 'setTimeout',", + " 'queueMicrotask', 'clearImmediate', 'setImmediate',", + " 'module', 'require', 'assert',", + " 'async_hooks', 'buffer', 'child_process',", + " 'cluster', 'crypto', 'dgram',", + " 'dns', 'domain', 'events',", + " 'fs', 'http', 'http2',", + " 'https', 'inspector', 'net',", + " 'os', 'path', 'perf_hooks',", + " 'punycode', 'querystring', 'readline',", + " 'repl', 'stream', 'string_decoder',", + " 'tls', 'trace_events', 'tty',", + " 'url', 'v8', 'vm',", + " 'worker_threads', 'zlib', '_',", + " '_error', 'util'", + ']' + ].join('\n'); + + assert.strictEqual(out, expected); } From a318cbcec048fb918f3428cb9ee583c2a65da75c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Arboleda?= Date: Thu, 21 Mar 2019 15:28:10 -0500 Subject: [PATCH 100/133] src: elevate v8::Task namespace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/26909 Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- src/node_platform.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/node_platform.cc b/src/node_platform.cc index ba5ca794c06927..3c729e50fa575e 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -158,9 +158,9 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { } uv_sem_t ready_; - TaskQueue* pending_worker_tasks_; + TaskQueue* pending_worker_tasks_; - TaskQueue tasks_; + TaskQueue tasks_; uv_loop_t loop_; uv_async_t flush_tasks_; std::unordered_set timers_; @@ -201,7 +201,7 @@ void WorkerThreadsTaskRunner::PostTask(std::unique_ptr task) { pending_worker_tasks_.Push(std::move(task)); } -void WorkerThreadsTaskRunner::PostDelayedTask(std::unique_ptr task, +void WorkerThreadsTaskRunner::PostDelayedTask(std::unique_ptr task, double delay_in_seconds) { delayed_task_scheduler_->PostDelayedTask(std::move(task), delay_in_seconds); } @@ -408,11 +408,11 @@ bool PerIsolatePlatformData::FlushForegroundTasksInternal() { return did_work; } -void NodePlatform::CallOnWorkerThread(std::unique_ptr task) { +void NodePlatform::CallOnWorkerThread(std::unique_ptr task) { worker_thread_task_runner_->PostTask(std::move(task)); } -void NodePlatform::CallDelayedOnWorkerThread(std::unique_ptr task, +void NodePlatform::CallDelayedOnWorkerThread(std::unique_ptr task, double delay_in_seconds) { worker_thread_task_runner_->PostDelayedTask(std::move(task), delay_in_seconds); From addc73af5c4e5f40a4986a1de54642df441415a1 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 07:18:17 +0100 Subject: [PATCH 101/133] path: refactor for less indentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This just switches the statements in a way that it reduces the overall indentation. The function has a very deep indentation in general and this should improve the readability. PR-URL: https://github.com/nodejs/node/pull/26917 Reviewed-By: Michaël Zasso Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- lib/path.js | 86 ++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/lib/path.js b/lib/path.js index 3bfb746251b05b..e376afae7c2daa 100644 --- a/lib/path.js +++ b/lib/path.js @@ -165,63 +165,63 @@ const win32 = { const code = path.charCodeAt(0); // Try to match a root - if (len > 1) { + if (len === 1) { if (isPathSeparator(code)) { - // Possible UNC root - - // If we started with a separator, we know we at least have an - // absolute path of some kind (UNC or otherwise) + // `path` contains just a path separator + rootEnd = 1; isAbsolute = true; + } + } else if (isPathSeparator(code)) { + // Possible UNC root - if (isPathSeparator(path.charCodeAt(1))) { - // Matched double path separator at beginning - let j = 2; - let last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { j++; } if (j < len && j !== last) { - const firstPart = path.slice(last, j); // Matched! last = j; - // Match 1 or more path separators - while (j < len && isPathSeparator(path.charCodeAt(j))) { + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { j++; } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j === len || j !== last) { - // We matched a UNC root - device = `\\\\${firstPart}\\${path.slice(last, j)}`; - rootEnd = j; - } + if (j === len || j !== last) { + // We matched a UNC root + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; } } - } else { - rootEnd = 1; - } - } else if (isWindowsDeviceRoot(code) && - path.charCodeAt(1) === CHAR_COLON) { - // Possible device root - device = path.slice(0, 2); - rootEnd = 2; - if (len > 2 && isPathSeparator(path.charCodeAt(2))) { - // Treat separator following drive name as an absolute path - // indicator - isAbsolute = true; - rootEnd = 3; } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; } - } else if (isPathSeparator(code)) { - // `path` contains just a path separator - rootEnd = 1; - isAbsolute = true; } if (device.length > 0) { From 316372c0f7cded21a1923971d7adbd22a3330828 Mon Sep 17 00:00:00 2001 From: Minwoo Jung Date: Fri, 29 Mar 2019 12:12:48 +0900 Subject: [PATCH 102/133] doc: remove old system_errors Remove old errors_system_errors, any useful information in it moved into the SystemError class docs. Fixes: https://github.com/nodejs/node/issues/26861 PR-URL: https://github.com/nodejs/node/pull/27037 Reviewed-By: Sam Roberts Signed-off-by: Beth Griggs --- doc/api/errors.md | 30 ++++++++++-------------------- doc/api/os.md | 1 - 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/doc/api/errors.md b/doc/api/errors.md index 986c8e7e7e8d71..4115d70115b60f 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -355,9 +355,6 @@ The number of frames captured by the stack trace is bounded by the smaller of `Error.stackTraceLimit` or the number of available frames on the current event loop tick. -System-level errors are generated as augmented `Error` instances, which are -detailed [here](#errors_system_errors). - ## Class: AssertionError A subclass of `Error` that indicates the failure of an assertion. For details, @@ -442,20 +439,13 @@ Some exceptions are *unrecoverable* at the JavaScript layer. Such exceptions will *always* cause the Node.js process to crash. Examples include `assert()` checks or `abort()` calls in the C++ layer. -## System Errors +## Class: SystemError Node.js generates system errors when exceptions occur within its runtime environment. These usually occur when an application violates an operating system constraint. For example, a system error will occur if an application attempts to read a file that does not exist. -System errors are usually generated at the syscall level. For a comprehensive -list, see the [`errno`(3) man page][]. - -In Node.js, system errors are `Error` objects with extra properties. - -### Class: SystemError - * `address` {string} If present, the address to which a network connection failed * `code` {string} The string error code @@ -468,27 +458,27 @@ In Node.js, system errors are `Error` objects with extra properties. * `port` {number} If present, the network connection port that is not available * `syscall` {string} The name of the system call that triggered the error -#### error.address +### error.address * {string} If present, `error.address` is a string describing the address to which a network connection failed. -#### error.code +### error.code * {string} The `error.code` property is a string representing the error code. -#### error.dest +### error.dest * {string} If present, `error.dest` is the file path destination when reporting a file system error. -#### error.errno +### error.errno * {string|number} @@ -498,31 +488,31 @@ negative value which corresponds to the error code defined in (`deps/uv/include/uv/errno.h` in the Node.js source tree) for details. In case of a string, it is the same as `error.code`. -#### error.info +### error.info * {Object} If present, `error.info` is an object with details about the error condition. -#### error.message +### error.message * {string} `error.message` is a system-provided human-readable description of the error. -#### error.path +### error.path * {string} If present, `error.path` is a string containing a relevant invalid pathname. -#### error.port +### error.port * {number} If present, `error.port` is the network connection port that is not available. -#### error.syscall +### error.syscall * {string} diff --git a/doc/api/os.md b/doc/api/os.md index 0a71dff7f70bf9..b41067111f14f7 100644 --- a/doc/api/os.md +++ b/doc/api/os.md @@ -1315,7 +1315,6 @@ The following process scheduling constants are exported by -[`SystemError`]: errors.html#errors_system_errors [`process.arch`]: process.html#process_process_arch [`process.platform`]: process.html#process_process_platform [Android building]: https://github.com/nodejs/node/blob/master/BUILDING.md#androidandroid-based-devices-eg-firefox-os From fec9f76037dbba59772218fc87de294e32a601d2 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 20 Mar 2019 00:12:23 +0800 Subject: [PATCH 103/133] process: run RunBootstrapping in CreateEnvironment Also creates `CreateMainEnvironment` to encapsulate the code creating the main environment from the provided Isolate data and arguments. PR-URL: https://github.com/nodejs/node/pull/26788 Reviewed-By: Anna Henningsen Reviewed-By: Refael Ackermann Signed-off-by: Beth Griggs --- lib/internal/bootstrap/cache.js | 1 + lib/internal/bootstrap/environment.js | 13 +++ node.gyp | 1 + src/api/environment.cc | 17 +++ src/node.cc | 147 +++++++++++++++----------- src/node.h | 2 + src/node_internals.h | 7 +- test/cctest/node_test_fixture.h | 2 - test/cctest/test_environment.cc | 18 ++++ 9 files changed, 141 insertions(+), 67 deletions(-) create mode 100644 lib/internal/bootstrap/environment.js diff --git a/lib/internal/bootstrap/cache.js b/lib/internal/bootstrap/cache.js index a68060c19643df..60450da805d22c 100644 --- a/lib/internal/bootstrap/cache.js +++ b/lib/internal/bootstrap/cache.js @@ -20,6 +20,7 @@ const cannotBeRequired = [ 'internal/test/binding', + 'internal/bootstrap/environment', 'internal/bootstrap/primordials', 'internal/bootstrap/loaders', 'internal/bootstrap/node', diff --git a/lib/internal/bootstrap/environment.js b/lib/internal/bootstrap/environment.js new file mode 100644 index 00000000000000..79a67dae378202 --- /dev/null +++ b/lib/internal/bootstrap/environment.js @@ -0,0 +1,13 @@ +'use strict'; + +// This runs necessary preparations to prepare a complete Node.js context +// that depends on run time states. +// It is currently only intended for preparing contexts for embedders. + +/* global markBootstrapComplete */ +const { + prepareMainThreadExecution +} = require('internal/bootstrap/pre_execution'); + +prepareMainThreadExecution(); +markBootstrapComplete(); diff --git a/node.gyp b/node.gyp index 1a0738008796d3..f6d8d8c6cbe734 100644 --- a/node.gyp +++ b/node.gyp @@ -29,6 +29,7 @@ 'library_files': [ 'lib/internal/bootstrap/primordials.js', 'lib/internal/bootstrap/cache.js', + 'lib/internal/bootstrap/environment.js', 'lib/internal/bootstrap/loaders.js', 'lib/internal/bootstrap/node.js', 'lib/internal/bootstrap/pre_execution.js', diff --git a/src/api/environment.cc b/src/api/environment.cc index c6da872ae95fc0..735630e72b6b9c 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -243,6 +243,23 @@ Environment* CreateEnvironment(IsolateData* isolate_data, Environment::kOwnsInspector)); env->InitializeLibuv(per_process::v8_is_profiling); env->ProcessCliArgs(args, exec_args); + if (RunBootstrapping(env).IsEmpty()) { + return nullptr; + } + + std::vector> parameters = { + env->require_string(), + FIXED_ONE_BYTE_STRING(env->isolate(), "markBootstrapComplete")}; + std::vector> arguments = { + env->native_module_require(), + env->NewFunctionTemplate(MarkBootstrapComplete) + ->GetFunction(env->context()) + .ToLocalChecked()}; + if (ExecuteBootstrapper( + env, "internal/bootstrap/environment", ¶meters, &arguments) + .IsEmpty()) { + return nullptr; + } return env; } diff --git a/src/node.cc b/src/node.cc index ae4465aa2ae23e..f53cb98ee7681e 100644 --- a/src/node.cc +++ b/src/node.cc @@ -200,11 +200,10 @@ void SignalExit(int signo) { raise(signo); } -static MaybeLocal ExecuteBootstrapper( - Environment* env, - const char* id, - std::vector>* parameters, - std::vector>* arguments) { +MaybeLocal ExecuteBootstrapper(Environment* env, + const char* id, + std::vector>* parameters, + std::vector>* arguments) { EscapableHandleScope scope(env->isolate()); MaybeLocal maybe_fn = per_process::native_module_loader.LookupAndCompile( @@ -453,9 +452,7 @@ void LoadEnvironment(Environment* env) { // StartMainThreadExecution() make sense for embedders. Pick the // useful ones out, and allow embedders to customize the entry // point more directly without using _third_party_main.js - if (!RunBootstrapping(env).IsEmpty()) { - USE(StartMainThreadExecution(env)); - } + USE(StartMainThreadExecution(env)); } @@ -780,90 +777,117 @@ void RunBeforeExit(Environment* env) { EmitBeforeExit(env); } -inline int StartNodeWithIsolate(Isolate* isolate, - IsolateData* isolate_data, - const std::vector& args, - const std::vector& exec_args) { +// TODO(joyeecheung): align this with the CreateEnvironment exposed in node.h +// and the environment creation routine in workers somehow. +inline std::unique_ptr CreateMainEnvironment( + IsolateData* isolate_data, + const std::vector& args, + const std::vector& exec_args, + int* exit_code) { + Isolate* isolate = isolate_data->isolate(); HandleScope handle_scope(isolate); + + // TODO(addaleax): This should load a real per-Isolate option, currently + // this is still effectively per-process. + if (isolate_data->options()->track_heap_objects) { + isolate->GetHeapProfiler()->StartTrackingHeapObjects(true); + } + Local context = NewContext(isolate); Context::Scope context_scope(context); - int exit_code = 0; - Environment env( + + std::unique_ptr env = std::make_unique( isolate_data, context, static_cast(Environment::kIsMainThread | Environment::kOwnsProcessState | Environment::kOwnsInspector)); - env.InitializeLibuv(per_process::v8_is_profiling); - env.ProcessCliArgs(args, exec_args); + env->InitializeLibuv(per_process::v8_is_profiling); + env->ProcessCliArgs(args, exec_args); #if HAVE_INSPECTOR && NODE_USE_V8_PLATFORM - CHECK(!env.inspector_agent()->IsListening()); + CHECK(!env->inspector_agent()->IsListening()); // Inspector agent can't fail to start, but if it was configured to listen // right away on the websocket port and fails to bind/etc, this will return // false. - env.inspector_agent()->Start(args.size() > 1 ? args[1].c_str() : "", - env.options()->debug_options(), - env.inspector_host_port(), - true); - if (env.options()->debug_options().inspector_enabled && - !env.inspector_agent()->IsListening()) { - exit_code = 12; // Signal internal error. - goto exit; + env->inspector_agent()->Start(args.size() > 1 ? args[1].c_str() : "", + env->options()->debug_options(), + env->inspector_host_port(), + true); + if (env->options()->debug_options().inspector_enabled && + !env->inspector_agent()->IsListening()) { + *exit_code = 12; // Signal internal error. + return env; } #else // inspector_enabled can't be true if !HAVE_INSPECTOR or !NODE_USE_V8_PLATFORM // - the option parser should not allow that. - CHECK(!env.options()->debug_options().inspector_enabled); + CHECK(!env->options()->debug_options().inspector_enabled); #endif // HAVE_INSPECTOR && NODE_USE_V8_PLATFORM - { - AsyncCallbackScope callback_scope(&env); - env.async_hooks()->push_async_ids(1, 0); - LoadEnvironment(&env); - env.async_hooks()->pop_async_id(1); + if (RunBootstrapping(env.get()).IsEmpty()) { + *exit_code = 1; } - { - SealHandleScope seal(isolate); - bool more; - env.performance_state()->Mark( - node::performance::NODE_PERFORMANCE_MILESTONE_LOOP_START); - do { - uv_run(env.event_loop(), UV_RUN_DEFAULT); + return env; +} - per_process::v8_platform.DrainVMTasks(isolate); +inline int StartNodeWithIsolate(Isolate* isolate, + IsolateData* isolate_data, + const std::vector& args, + const std::vector& exec_args) { + int exit_code = 0; + std::unique_ptr env = + CreateMainEnvironment(isolate_data, args, exec_args, &exit_code); + CHECK_NOT_NULL(env); + HandleScope handle_scope(env->isolate()); + Context::Scope context_scope(env->context()); + + if (exit_code == 0) { + { + AsyncCallbackScope callback_scope(env.get()); + env->async_hooks()->push_async_ids(1, 0); + LoadEnvironment(env.get()); + env->async_hooks()->pop_async_id(1); + } - more = uv_loop_alive(env.event_loop()); - if (more && !env.is_stopping()) continue; + { + SealHandleScope seal(isolate); + bool more; + env->performance_state()->Mark( + node::performance::NODE_PERFORMANCE_MILESTONE_LOOP_START); + do { + uv_run(env->event_loop(), UV_RUN_DEFAULT); - RunBeforeExit(&env); + per_process::v8_platform.DrainVMTasks(isolate); - // Emit `beforeExit` if the loop became alive either after emitting - // event, or after running some callbacks. - more = uv_loop_alive(env.event_loop()); - } while (more == true && !env.is_stopping()); - env.performance_state()->Mark( - node::performance::NODE_PERFORMANCE_MILESTONE_LOOP_EXIT); - } + more = uv_loop_alive(env->event_loop()); + if (more && !env->is_stopping()) continue; - env.set_trace_sync_io(false); + RunBeforeExit(env.get()); - exit_code = EmitExit(&env); + // Emit `beforeExit` if the loop became alive either after emitting + // event, or after running some callbacks. + more = uv_loop_alive(env->event_loop()); + } while (more == true && !env->is_stopping()); + env->performance_state()->Mark( + node::performance::NODE_PERFORMANCE_MILESTONE_LOOP_EXIT); + } - WaitForInspectorDisconnect(&env); + env->set_trace_sync_io(false); + exit_code = EmitExit(env.get()); + WaitForInspectorDisconnect(env.get()); + } -#if HAVE_INSPECTOR && NODE_USE_V8_PLATFORM -exit: -#endif - env.set_can_call_into_js(false); - env.stop_sub_worker_contexts(); + env->set_can_call_into_js(false); + env->stop_sub_worker_contexts(); uv_tty_reset_mode(); - env.RunCleanup(); - RunAtExit(&env); + env->RunCleanup(); + RunAtExit(env.get()); per_process::v8_platform.DrainVMTasks(isolate); per_process::v8_platform.CancelVMTasks(isolate); + #if defined(LEAK_SANITIZER) __lsan_do_leak_check(); #endif @@ -891,11 +915,6 @@ inline int StartNodeWithLoopAndArgs(uv_loop_t* event_loop, per_process::v8_platform.Platform(), allocator.get()), &FreeIsolateData); - // TODO(addaleax): This should load a real per-Isolate option, currently - // this is still effectively per-process. - if (isolate_data->options()->track_heap_objects) { - isolate->GetHeapProfiler()->StartTrackingHeapObjects(true); - } exit_code = StartNodeWithIsolate(isolate, isolate_data.get(), args, exec_args); } diff --git a/src/node.h b/src/node.h index 3717ab08490616..31b7eb6d6fa8cf 100644 --- a/src/node.h +++ b/src/node.h @@ -299,6 +299,8 @@ NODE_EXTERN void FreeIsolateData(IsolateData* isolate_data); // TODO(addaleax): Add an official variant using STL containers, and move // per-Environment options parsing here. +// Returns nullptr when the Environment cannot be created e.g. there are +// pending JavaScript exceptions. NODE_EXTERN Environment* CreateEnvironment(IsolateData* isolate_data, v8::Local context, int argc, diff --git a/src/node_internals.h b/src/node_internals.h index 687c7115f57a0c..44b68b4ccdb907 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -302,7 +302,12 @@ v8::MaybeLocal RunBootstrapping(Environment* env); v8::MaybeLocal StartExecution(Environment* env, const char* main_script_id); v8::MaybeLocal GetPerContextExports(v8::Local context); - +v8::MaybeLocal ExecuteBootstrapper( + Environment* env, + const char* id, + std::vector>* parameters, + std::vector>* arguments); +void MarkBootstrapComplete(const v8::FunctionCallbackInfo& args); namespace profiler { void StartCoverageCollection(Environment* env); } diff --git a/test/cctest/node_test_fixture.h b/test/cctest/node_test_fixture.h index 0359ec3c76a939..a6b704d13fe6b1 100644 --- a/test/cctest/node_test_fixture.h +++ b/test/cctest/node_test_fixture.h @@ -131,8 +131,6 @@ class EnvironmentTestFixture : public NodeTestFixture { 1, *argv, argv.nr_args(), *argv); CHECK_NE(nullptr, environment_); - // TODO(addaleax): Make this a public API. - CHECK(!RunBootstrapping(environment_).IsEmpty()); } ~Env() { diff --git a/test/cctest/test_environment.cc b/test/cctest/test_environment.cc index aba4b719477e03..1ec4ae21008a55 100644 --- a/test/cctest/test_environment.cc +++ b/test/cctest/test_environment.cc @@ -23,6 +23,24 @@ class EnvironmentTest : public EnvironmentTestFixture { } }; +TEST_F(EnvironmentTest, PreExeuctionPreparation) { + const v8::HandleScope handle_scope(isolate_); + const Argv argv; + Env env {handle_scope, argv}; + + v8::Local context = isolate_->GetCurrentContext(); + + const char* run_script = "process.argv0"; + v8::Local script = v8::Script::Compile( + context, + v8::String::NewFromOneByte(isolate_, + reinterpret_cast(run_script), + v8::NewStringType::kNormal).ToLocalChecked()) + .ToLocalChecked(); + v8::Local result = script->Run(context).ToLocalChecked(); + CHECK(result->IsString()); +} + TEST_F(EnvironmentTest, AtExitWithEnvironment) { const v8::HandleScope handle_scope(isolate_); const Argv argv; From d3c148118cc25e7240790a5e76c57e41f1066ed0 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 30 Mar 2019 23:05:48 -0400 Subject: [PATCH 104/133] report: add cwd to report The diagnostic report currently contains command line information, and the environment, which contains the PWD environment variable. This combination covers the majority of cases, but it would be useful to have the result of uv_cwd() as an additional data point. This commit adds that information. PR-URL: https://github.com/nodejs/node/pull/27022 Reviewed-By: Richard Lau Reviewed-By: Ruben Bridgewater Reviewed-By: Luigi Pinca Signed-off-by: Beth Griggs --- doc/api/report.md | 1 + src/node_report.cc | 16 ++++++++++++++++ test/common/report.js | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/api/report.md b/doc/api/report.md index a7715751d5761f..5427d3d8329d3b 100644 --- a/doc/api/report.md +++ b/doc/api/report.md @@ -28,6 +28,7 @@ is provided below for reference. "dumpEventTime": "2018-12-21T00:50:11Z", "dumpEventTimeStamp": "1545371411331", "processId": 8974, + "cwd": "/home/nodeuser/project/node", "commandLine": [ "/home/nodeuser/project/node/out/Release/node", "--experimental-report", diff --git a/src/node_report.cc b/src/node_report.cc index f9cf9211434bfc..3ca120457f113d 100644 --- a/src/node_report.cc +++ b/src/node_report.cc @@ -18,6 +18,14 @@ #include #include #include +#include // PATH_MAX + +#ifdef _WIN32 +/* MAX_PATH is in characters, not bytes. Make sure we have enough headroom. */ +#define PATH_MAX_BYTES (MAX_PATH * 4) +#else +#define PATH_MAX_BYTES (PATH_MAX) +#endif #ifndef _WIN32 extern char** environ; @@ -213,6 +221,14 @@ static void WriteNodeReport(Isolate* isolate, // Report native process ID writer.json_keyvalue("processId", pid); + { + // Report the process cwd. + char buf[PATH_MAX_BYTES]; + size_t cwd_size = sizeof(buf); + if (uv_cwd(buf, &cwd_size) == 0) + writer.json_keyvalue("cwd", buf); + } + // Report out the command line. if (!node::per_process::cli_options->cmdline.empty()) { writer.json_arraystart("commandLine"); diff --git a/test/common/report.js b/test/common/report.js index a9c1d038d22bd5..f3942c5d298abf 100644 --- a/test/common/report.js +++ b/test/common/report.js @@ -63,7 +63,7 @@ function _validateContent(data) { 'nodejsVersion', 'wordSize', 'arch', 'platform', 'componentVersions', 'release', 'osName', 'osRelease', 'osVersion', 'osMachine', 'host', 'glibcVersionRuntime', - 'glibcVersionCompiler']; + 'glibcVersionCompiler', 'cwd']; checkForUnknownFields(header, headerFields); assert.strictEqual(typeof header.event, 'string'); assert.strictEqual(typeof header.trigger, 'string'); @@ -76,6 +76,7 @@ function _validateContent(data) { assert(String(+header.dumpEventTimeStamp), header.dumpEventTimeStamp); assert(Number.isSafeInteger(header.processId)); + assert.strictEqual(typeof header.cwd, 'string'); assert(Array.isArray(header.commandLine)); header.commandLine.forEach((arg) => { assert.strictEqual(typeof arg, 'string'); From 0fc5dcc449567fed45c8fa52bb8179514d25a9df Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sun, 31 Mar 2019 15:27:13 -0700 Subject: [PATCH 105/133] doc: remove unnecessary intro in governance doc The introductory paragraph in GOVERNANCE.md does not add anything that isn't obvious from the document itself. Remove it. PR-URL: https://github.com/nodejs/node/pull/27036 Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- GOVERNANCE.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 11499b4c7814a1..1dcd7ec4c2bcec 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -1,9 +1,5 @@ # Node.js Project Governance -The Node.js project is governed by its Collaborators, including a Technical -Steering Committee (TSC) which is responsible for high-level guidance of the -project. - - [Collaborators](#collaborators) From 26af6fb8d5417d44d403c429365fa9ae1935de62 Mon Sep 17 00:00:00 2001 From: Luigi Pinca Date: Fri, 29 Mar 2019 21:42:02 +0100 Subject: [PATCH 106/133] doc: document the 'pause' and 'resume' events PR-URL: https://github.com/nodejs/node/pull/26999 Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- doc/api/stream.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/doc/api/stream.md b/doc/api/stream.md index 156f09f374c5bf..66627abf6a9b8d 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -799,6 +799,14 @@ to push an invalid chunk of data. The listener callback will be passed a single `Error` object. +##### Event: 'pause' + + +The `'pause'` event is emitted when [`stream.pause()`][stream-pause] is called +and `readableFlowing` is not `false`. + ##### Event: 'readable' + +The `'resume'` event is emitted when [`stream.resume()`][stream-resume] is +called and `readableFlowing` is not `true`. + ##### readable.destroy([error]) -> Stability: 1 - Experimental +> Stability: 2 - Stable * Returns: {AsyncIterator} to fully consume the stream. diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index 5f8b4a00d9609f..93621562638c30 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -46,7 +46,6 @@ const { ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_UNSHIFT_AFTER_END_EVENT } = require('internal/errors').codes; -const { emitExperimentalWarning } = require('internal/util'); // Lazy loaded to improve the startup performance. let StringDecoder; @@ -1036,7 +1035,6 @@ Readable.prototype.wrap = function(stream) { }; Readable.prototype[Symbol.asyncIterator] = function() { - emitExperimentalWarning('Readable[Symbol.asyncIterator]'); if (createReadableStreamAsyncIterator === undefined) { createReadableStreamAsyncIterator = require('internal/streams/async_iterator'); From 6d3946026e1036b7dffd063bb82fc655e4433c03 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Mon, 1 Apr 2019 10:07:57 +0200 Subject: [PATCH 108/133] readline: make Symbol.asyncIterator support stable PR-URL: https://github.com/nodejs/node/pull/26989 Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Masashi Hirano Reviewed-By: Anna Henningsen Reviewed-By: Benjamin Gruenbaum --- doc/api/readline.md | 6 +++++- lib/readline.js | 3 --- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/api/readline.md b/doc/api/readline.md index 4db4b0f899cae6..a3c89b26d90dfe 100644 --- a/doc/api/readline.md +++ b/doc/api/readline.md @@ -312,9 +312,13 @@ The `rl.write()` method will write the data to the `readline` `Interface`'s ### rl\[Symbol.asyncIterator\]() -> Stability: 1 - Experimental +> Stability: 2 - Stable * Returns: {AsyncIterator} diff --git a/lib/readline.js b/lib/readline.js index 387702ebdc902c..2cebe057c41709 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -33,7 +33,6 @@ const { } = require('internal/errors').codes; const { inspect, inherits } = require('util'); const { validateString } = require('internal/validators'); -const { emitExperimentalWarning } = require('internal/util'); const { Buffer } = require('buffer'); const EventEmitter = require('events'); const { @@ -1030,8 +1029,6 @@ Interface.prototype._ttyWrite = function(s, key) { }; Interface.prototype[Symbol.asyncIterator] = function() { - emitExperimentalWarning('readline Interface [Symbol.asyncIterator]'); - if (this[kLineObjectStream] === undefined) { if (Readable === undefined) { Readable = require('stream').Readable; From 58da8792c5252e80304e207b97e82e4426a852bb Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 16:28:53 +0100 Subject: [PATCH 109/133] module: fix repl require calling the same file again This makes sure multiple require calls will not fail in case a file was created after the first attempt. PR-URL: https://github.com/nodejs/node/pull/26928 Fixes: https://github.com/nodejs/node/issues/26926 Reviewed-By: Guy Bedford Reviewed-By: Jan Krems --- lib/internal/modules/cjs/loader.js | 16 ++++++------ .../parallel/test-repl-require-after-write.js | 25 +++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 test/parallel/test-repl-require-after-write.js diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 7564f8176bf91e..dbe07f051279f2 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -78,14 +78,15 @@ const { const isWindows = process.platform === 'win32'; let requireDepth = 0; -let statCache = new Map(); +let statCache = null; function stat(filename) { filename = path.toNamespacedPath(filename); - if (statCache === null) statCache = new Map(); - let result = statCache.get(filename); - if (result !== undefined) return result; - result = internalModuleStat(filename); - statCache.set(filename, result); + if (statCache !== null) { + const result = statCache.get(filename); + if (result !== undefined) return result; + } + const result = internalModuleStat(filename); + if (statCache !== null) statCache.set(filename, result); return result; } @@ -188,7 +189,7 @@ Module._debug = deprecate(debug, 'Module._debug is deprecated.', 'DEP0077'); // -> a. // -> a/index. -// check if the directory is a package.json dir +// Check if the directory is a package.json dir. const packageMainCache = Object.create(null); function readPackage(requestPath) { @@ -788,6 +789,7 @@ Module.prototype._compile = function(content, filename) { const exports = this.exports; const thisValue = exports; const module = this; + if (requireDepth === 0) statCache = new Map(); if (inspectorWrapper) { result = inspectorWrapper(compiledWrapper, thisValue, exports, require, module, filename, dirname); diff --git a/test/parallel/test-repl-require-after-write.js b/test/parallel/test-repl-require-after-write.js new file mode 100644 index 00000000000000..e4d9b2f5a024dc --- /dev/null +++ b/test/parallel/test-repl-require-after-write.js @@ -0,0 +1,25 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); + +const spawn = require('child_process').spawn; +// Use -i to force node into interactive mode, despite stdout not being a TTY +const child = spawn(process.execPath, ['-i']); + +let out = ''; +const input = "try { require('./non-existent.json'); } catch {} " + + "require('fs').writeFileSync('./non-existent.json', '1');" + + "require('./non-existent.json');"; + +child.stderr.on('data', common.mustNotCall()); + +child.stdout.setEncoding('utf8'); +child.stdout.on('data', (c) => { + out += c; +}); +child.stdout.on('end', common.mustCall(() => { + assert.strictEqual(out, '> 1\n> '); +})); + +child.stdin.end(input); From 3fce303c8131aa60e94be2e5eede0bca7c5676f3 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sat, 30 Mar 2019 21:23:39 +0100 Subject: [PATCH 110/133] test: make module test pass with NODE_PENDING_DEPRECATION Some people set the `NODE_PENDING_DEPRECATION` environment variable globally. This makes the test added in 115f0f5a57f50f6b039f28a pass when that is the case. Refs: https://github.com/nodejs/node/pull/26823 PR-URL: https://github.com/nodejs/node/pull/27019 Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Reviewed-By: Myles Borins --- test/sequential/test-module-loading.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/sequential/test-module-loading.js b/test/sequential/test-module-loading.js index db9d7e9d40ec9a..0ea8a298f40ac1 100644 --- a/test/sequential/test-module-loading.js +++ b/test/sequential/test-module-loading.js @@ -29,6 +29,9 @@ const path = require('path'); const backslash = /\\/g; +if (!process.env.NODE_PENDING_DEPRECATION) + process.on('warning', common.mustNotCall()); + console.error('load test-module-loading.js'); assert.strictEqual(require.main.id, '.'); From 3e4c03daa507ef70961d143dbf492bfbed546780 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Sat, 30 Mar 2019 00:22:54 +0800 Subject: [PATCH 111/133] deps: update nghttp2 to 1.37.0 PR-URL: https://github.com/nodejs/node/pull/26990 Reviewed-By: James M Snell Reviewed-By: Anna Henningsen Reviewed-By: Matteo Collina --- deps/nghttp2/lib/CMakeLists.txt | 25 +++++++------ deps/nghttp2/lib/includes/nghttp2/nghttp2.h | 8 ++++- .../nghttp2/lib/includes/nghttp2/nghttp2ver.h | 4 +-- deps/nghttp2/lib/nghttp2_hd.c | 2 +- deps/nghttp2/lib/nghttp2_session.h | 3 -- deps/nghttp2/lib/nghttp2_stream.c | 35 +++++++++---------- deps/nghttp2/lib/nghttp2_stream.h | 4 +-- 7 files changed, 43 insertions(+), 38 deletions(-) diff --git a/deps/nghttp2/lib/CMakeLists.txt b/deps/nghttp2/lib/CMakeLists.txt index 17e422b22db790..c27ee99bb7fa46 100644 --- a/deps/nghttp2/lib/CMakeLists.txt +++ b/deps/nghttp2/lib/CMakeLists.txt @@ -38,16 +38,23 @@ if(WIN32) endif() # Public shared library -add_library(nghttp2 SHARED ${NGHTTP2_SOURCES} ${NGHTTP2_RES}) -set_target_properties(nghttp2 PROPERTIES - COMPILE_FLAGS "${WARNCFLAGS}" - VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION} - C_VISIBILITY_PRESET hidden -) -target_include_directories(nghttp2 INTERFACE +if(ENABLE_SHARED_LIB) + add_library(nghttp2 SHARED ${NGHTTP2_SOURCES} ${NGHTTP2_RES}) + set_target_properties(nghttp2 PROPERTIES + COMPILE_FLAGS "${WARNCFLAGS}" + VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION} + C_VISIBILITY_PRESET hidden + ) + target_include_directories(nghttp2 INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/includes" "${CMAKE_CURRENT_SOURCE_DIR}/includes" - ) + ) + + install(TARGETS nghttp2 + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") +endif() if(HAVE_CUNIT OR ENABLE_STATIC_LIB) # Static library (for unittests because of symbol visibility) @@ -64,8 +71,6 @@ if(HAVE_CUNIT OR ENABLE_STATIC_LIB) endif() endif() -install(TARGETS nghttp2 - DESTINATION "${CMAKE_INSTALL_LIBDIR}") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libnghttp2.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h index e7198b3d27314d..925a4cbcaf6d6a 100644 --- a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h +++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h @@ -31,6 +31,11 @@ # define WIN32 #endif +/* Compatibility for non-Clang compilers */ +#ifndef __has_declspec_attribute +# define __has_declspec_attribute(x) 0 +#endif + #ifdef __cplusplus extern "C" { #endif @@ -51,7 +56,8 @@ extern "C" { #ifdef NGHTTP2_STATICLIB # define NGHTTP2_EXTERN -#elif defined(WIN32) +#elif defined(WIN32) || (__has_declspec_attribute(dllexport) && \ + __has_declspec_attribute(dllimport)) # ifdef BUILDING_NGHTTP2 # define NGHTTP2_EXTERN __declspec(dllexport) # else /* !BUILDING_NGHTTP2 */ diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h index 420adbd53dddce..2384f5278773cb 100644 --- a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h +++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h @@ -29,7 +29,7 @@ * @macro * Version number of the nghttp2 library release */ -#define NGHTTP2_VERSION "1.34.0" +#define NGHTTP2_VERSION "1.37.0" /** * @macro @@ -37,6 +37,6 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define NGHTTP2_VERSION_NUM 0x012200 +#define NGHTTP2_VERSION_NUM 0x012500 #endif /* NGHTTP2VER_H */ diff --git a/deps/nghttp2/lib/nghttp2_hd.c b/deps/nghttp2/lib/nghttp2_hd.c index a61f0d47a6f79d..11ca3345f3c6b3 100644 --- a/deps/nghttp2/lib/nghttp2_hd.c +++ b/deps/nghttp2/lib/nghttp2_hd.c @@ -1390,7 +1390,7 @@ static int deflate_nv(nghttp2_hd_deflater *deflater, nghttp2_bufs *bufs, if (indexing_mode == NGHTTP2_HD_WITH_INDEXING) { nghttp2_hd_nv hd_nv; - if (idx != -1 && idx < (ssize_t)NGHTTP2_STATIC_TABLE_LENGTH) { + if (idx != -1) { hd_nv.name = nghttp2_hd_table_get(&deflater->ctx, (size_t)idx).name; nghttp2_rcbuf_incref(hd_nv.name); } else { diff --git a/deps/nghttp2/lib/nghttp2_session.h b/deps/nghttp2/lib/nghttp2_session.h index 40a8865a04b12f..bd7a5b35817599 100644 --- a/deps/nghttp2/lib/nghttp2_session.h +++ b/deps/nghttp2/lib/nghttp2_session.h @@ -209,9 +209,6 @@ struct nghttp2_session { nghttp2_session_callbacks callbacks; /* Memory allocator */ nghttp2_mem mem; - /* Base value when we schedule next DATA frame write. This is - updated when one frame was written. */ - uint64_t last_cycle; void *user_data; /* Points to the latest incoming closed stream. NULL if there is no closed stream. Only used when session is initialized as diff --git a/deps/nghttp2/lib/nghttp2_stream.c b/deps/nghttp2/lib/nghttp2_stream.c index eccd3174ef7bda..dc3a6b11ccbf75 100644 --- a/deps/nghttp2/lib/nghttp2_stream.c +++ b/deps/nghttp2/lib/nghttp2_stream.c @@ -30,6 +30,7 @@ #include "nghttp2_session.h" #include "nghttp2_helper.h" #include "nghttp2_debug.h" +#include "nghttp2_frame.h" /* Maximum distance between any two stream's cycle in the same prirority queue. Imagine stream A's cycle is A, and stream B's @@ -40,7 +41,8 @@ words, B is really greater than or equal to A. Otherwise, A is a result of overflow, and it is actually A > B if we consider that fact. */ -#define NGHTTP2_MAX_CYCLE_DISTANCE (16384 * 256 + 255) +#define NGHTTP2_MAX_CYCLE_DISTANCE \ + ((uint64_t)NGHTTP2_MAX_FRAME_SIZE_MAX * 256 + 255) static int stream_less(const void *lhsx, const void *rhsx) { const nghttp2_stream *lhs, *rhs; @@ -52,11 +54,7 @@ static int stream_less(const void *lhsx, const void *rhsx) { return lhs->seq < rhs->seq; } - if (lhs->cycle < rhs->cycle) { - return rhs->cycle - lhs->cycle <= NGHTTP2_MAX_CYCLE_DISTANCE; - } - - return lhs->cycle - rhs->cycle > NGHTTP2_MAX_CYCLE_DISTANCE; + return rhs->cycle - lhs->cycle <= NGHTTP2_MAX_CYCLE_DISTANCE; } void nghttp2_stream_init(nghttp2_stream *stream, int32_t stream_id, @@ -135,14 +133,14 @@ static int stream_subtree_active(nghttp2_stream *stream) { /* * Returns next cycle for |stream|. */ -static void stream_next_cycle(nghttp2_stream *stream, uint32_t last_cycle) { - uint32_t penalty; +static void stream_next_cycle(nghttp2_stream *stream, uint64_t last_cycle) { + uint64_t penalty; - penalty = (uint32_t)stream->last_writelen * NGHTTP2_MAX_WEIGHT + + penalty = (uint64_t)stream->last_writelen * NGHTTP2_MAX_WEIGHT + stream->pending_penalty; stream->cycle = last_cycle + penalty / (uint32_t)stream->weight; - stream->pending_penalty = penalty % (uint32_t)stream->weight; + stream->pending_penalty = (uint32_t)(penalty % (uint32_t)stream->weight); } static int stream_obq_push(nghttp2_stream *dep_stream, nghttp2_stream *stream) { @@ -153,7 +151,7 @@ static int stream_obq_push(nghttp2_stream *dep_stream, nghttp2_stream *stream) { stream_next_cycle(stream, dep_stream->descendant_last_cycle); stream->seq = dep_stream->descendant_next_seq++; - DEBUGF("stream: stream=%d obq push cycle=%d\n", stream->stream_id, + DEBUGF("stream: stream=%d obq push cycle=%lu\n", stream->stream_id, stream->cycle); DEBUGF("stream: push stream %d to stream %d\n", stream->stream_id, @@ -239,7 +237,7 @@ void nghttp2_stream_reschedule(nghttp2_stream *stream) { nghttp2_pq_push(&dep_stream->obq, &stream->pq_entry); - DEBUGF("stream: stream=%d obq resched cycle=%d\n", stream->stream_id, + DEBUGF("stream: stream=%d obq resched cycle=%lu\n", stream->stream_id, stream->cycle); dep_stream->last_writelen = stream->last_writelen; @@ -248,9 +246,9 @@ void nghttp2_stream_reschedule(nghttp2_stream *stream) { void nghttp2_stream_change_weight(nghttp2_stream *stream, int32_t weight) { nghttp2_stream *dep_stream; - uint32_t last_cycle; + uint64_t last_cycle; int32_t old_weight; - uint32_t wlen_penalty; + uint64_t wlen_penalty; if (stream->weight == weight) { return; @@ -273,7 +271,7 @@ void nghttp2_stream_change_weight(nghttp2_stream *stream, int32_t weight) { nghttp2_pq_remove(&dep_stream->obq, &stream->pq_entry); - wlen_penalty = (uint32_t)stream->last_writelen * NGHTTP2_MAX_WEIGHT; + wlen_penalty = (uint64_t)stream->last_writelen * NGHTTP2_MAX_WEIGHT; /* Compute old stream->pending_penalty we used to calculate stream->cycle */ @@ -289,9 +287,8 @@ void nghttp2_stream_change_weight(nghttp2_stream *stream, int32_t weight) { place */ stream_next_cycle(stream, last_cycle); - if (stream->cycle < dep_stream->descendant_last_cycle && - (dep_stream->descendant_last_cycle - stream->cycle) <= - NGHTTP2_MAX_CYCLE_DISTANCE) { + if (dep_stream->descendant_last_cycle - stream->cycle <= + NGHTTP2_MAX_CYCLE_DISTANCE) { stream->cycle = dep_stream->descendant_last_cycle; } @@ -299,7 +296,7 @@ void nghttp2_stream_change_weight(nghttp2_stream *stream, int32_t weight) { nghttp2_pq_push(&dep_stream->obq, &stream->pq_entry); - DEBUGF("stream: stream=%d obq resched cycle=%d\n", stream->stream_id, + DEBUGF("stream: stream=%d obq resched cycle=%lu\n", stream->stream_id, stream->cycle); } diff --git a/deps/nghttp2/lib/nghttp2_stream.h b/deps/nghttp2/lib/nghttp2_stream.h index fb8dc14d67be6d..a1b807d295c05c 100644 --- a/deps/nghttp2/lib/nghttp2_stream.h +++ b/deps/nghttp2/lib/nghttp2_stream.h @@ -148,9 +148,9 @@ struct nghttp2_stream { /* Received body so far */ int64_t recv_content_length; /* Base last_cycle for direct descendent streams. */ - uint32_t descendant_last_cycle; + uint64_t descendant_last_cycle; /* Next scheduled time to sent item */ - uint32_t cycle; + uint64_t cycle; /* Next seq used for direct descendant streams */ uint64_t descendant_next_seq; /* Secondary key for prioritization to break a tie for cycle. This From 438bc52e238faadba3b360af84251bd0847e6024 Mon Sep 17 00:00:00 2001 From: gengjiawen Date: Sun, 24 Mar 2019 16:15:09 +0800 Subject: [PATCH 112/133] src: apply clang-tidy rule bugprone-incorrect-roundings PR-URL: https://github.com/nodejs/node/pull/26885 Reviewed-By: James M Snell Reviewed-By: Minwoo Jung Reviewed-By: Refael Ackermann Signed-off-by: Beth Griggs --- src/node_platform.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/node_platform.cc b/src/node_platform.cc index 3c729e50fa575e..37a2195517b56d 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -5,6 +5,7 @@ #include "debug_utils.h" #include "util.h" #include +#include #include namespace node { @@ -126,8 +127,7 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { delay_in_seconds_(delay_in_seconds) {} void Run() override { - uint64_t delay_millis = - static_cast(delay_in_seconds_ + 0.5) * 1000; + uint64_t delay_millis = llround(delay_in_seconds_ * 1000); std::unique_ptr timer(new uv_timer_t()); CHECK_EQ(0, uv_timer_init(&scheduler_->loop_, timer.get())); timer->data = task_.release(); @@ -378,8 +378,8 @@ bool PerIsolatePlatformData::FlushForegroundTasksInternal() { while (std::unique_ptr delayed = foreground_delayed_tasks_.Pop()) { did_work = true; - uint64_t delay_millis = - static_cast(delayed->timeout + 0.5) * 1000; + uint64_t delay_millis = llround(delayed->timeout * 1000); + delayed->timer.data = static_cast(delayed.get()); uv_timer_init(loop_, &delayed->timer); // Timers may not guarantee queue ordering of events with the same delay if From 1bbe5b3f9585688def03bafad88573c460dd872e Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 20 Mar 2019 07:55:59 +0800 Subject: [PATCH 113/133] process: store argv in Environment This gets rid of Environment::ExecutionMode as well now that we use the original arguments to determine execution mode. PR-URL: https://github.com/nodejs/node/pull/26945 Reviewed-By: Gus Caplan Reviewed-By: Benjamin Gruenbaum Signed-off-by: Beth Griggs --- src/env-inl.h | 4 ++++ src/env.cc | 13 ++----------- src/env.h | 20 ++------------------ src/node.cc | 17 +++++++---------- src/node_worker.cc | 4 ++-- src/node_worker.h | 2 ++ 6 files changed, 19 insertions(+), 41 deletions(-) diff --git a/src/env-inl.h b/src/env-inl.h index b5d10382e9bb48..20432a3b5de8f3 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -630,6 +630,10 @@ inline std::shared_ptr Environment::options() { return options_; } +inline const std::vector& Environment::argv() { + return argv_; +} + inline const std::vector& Environment::exec_argv() { return exec_argv_; } diff --git a/src/env.cc b/src/env.cc index f45e6ecfff458c..b4c67f84e0d8e4 100644 --- a/src/env.cc +++ b/src/env.cc @@ -379,16 +379,8 @@ void Environment::ExitEnv() { MaybeLocal Environment::ProcessCliArgs( const std::vector& args, const std::vector& exec_args) { - if (args.size() > 1) { - std::string first_arg = args[1]; - if (first_arg == "inspect") { - execution_mode_ = ExecutionMode::kInspect; - } else if (first_arg == "debug") { - execution_mode_ = ExecutionMode::kDebug; - } else if (first_arg != "-") { - execution_mode_ = ExecutionMode::kRunMainModule; - } - } + argv_ = args; + exec_argv_ = exec_args; if (*TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED( TRACING_CATEGORY_NODE1(environment)) != 0) { @@ -406,7 +398,6 @@ MaybeLocal Environment::ProcessCliArgs( std::move(traced_value)); } - exec_argv_ = exec_args; Local process_object = node::CreateProcessObject(this, args, exec_args) .FromMaybe(Local()); diff --git a/src/env.h b/src/env.h index 0740787559d7ee..0516c49f36ddcd 100644 --- a/src/env.h +++ b/src/env.h @@ -753,6 +753,7 @@ class Environment { const std::vector& args, const std::vector& exec_args); inline const std::vector& exec_argv(); + inline const std::vector& argv(); typedef void (*HandleCleanupCb)(Environment* env, uv_handle_t* handle, @@ -1057,23 +1058,6 @@ class Environment { inline std::shared_ptr options(); inline std::shared_ptr inspector_host_port(); - enum class ExecutionMode { - kDefault, - kInspect, // node inspect - kDebug, // node debug - kPrintHelp, // node --help - kPrintBashCompletion, // node --completion-bash - kProfProcess, // node --prof-process - kEvalString, // node --eval without --interactive - kCheckSyntax, // node --check (incompatible with --eval) - kRepl, - kEvalStdin, - kRunMainModule - }; - - inline ExecutionMode execution_mode() { return execution_mode_; } - - inline void set_execution_mode(ExecutionMode mode) { execution_mode_ = mode; } inline AsyncRequest* thread_stopper() { return &thread_stopper_; } private: @@ -1085,7 +1069,6 @@ class Environment { inline void ThrowError(v8::Local (*fun)(v8::Local), const char* errmsg); - ExecutionMode execution_mode_ = ExecutionMode::kDefault; std::list loaded_addons_; v8::Isolate* const isolate_; IsolateData* const isolate_data_; @@ -1117,6 +1100,7 @@ class Environment { // used. std::shared_ptr inspector_host_port_; std::vector exec_argv_; + std::vector argv_; uint32_t module_id_counter_ = 0; uint32_t script_id_counter_ = 0; diff --git a/src/node.cc b/src/node.cc index f53cb98ee7681e..ec5b77c0987d70 100644 --- a/src/node.cc +++ b/src/node.cc @@ -402,47 +402,44 @@ MaybeLocal StartMainThreadExecution(Environment* env) { return StartExecution(env, "internal/main/run_third_party_main"); } - if (env->execution_mode() == Environment::ExecutionMode::kInspect || - env->execution_mode() == Environment::ExecutionMode::kDebug) { + std::string first_argv; + if (env->argv().size() > 1) { + first_argv = env->argv()[1]; + } + + if (first_argv == "inspect" || first_argv == "debug") { return StartExecution(env, "internal/main/inspect"); } if (per_process::cli_options->print_help) { - env->set_execution_mode(Environment::ExecutionMode::kPrintHelp); return StartExecution(env, "internal/main/print_help"); } if (per_process::cli_options->print_bash_completion) { - env->set_execution_mode(Environment::ExecutionMode::kPrintBashCompletion); return StartExecution(env, "internal/main/print_bash_completion"); } if (env->options()->prof_process) { - env->set_execution_mode(Environment::ExecutionMode::kProfProcess); return StartExecution(env, "internal/main/prof_process"); } // -e/--eval without -i/--interactive if (env->options()->has_eval_string && !env->options()->force_repl) { - env->set_execution_mode(Environment::ExecutionMode::kEvalString); return StartExecution(env, "internal/main/eval_string"); } if (env->options()->syntax_check_only) { - env->set_execution_mode(Environment::ExecutionMode::kCheckSyntax); return StartExecution(env, "internal/main/check_syntax"); } - if (env->execution_mode() == Environment::ExecutionMode::kRunMainModule) { + if (!first_argv.empty() && first_argv != "-") { return StartExecution(env, "internal/main/run_main_module"); } if (env->options()->force_repl || uv_guess_handle(STDIN_FILENO) == UV_TTY) { - env->set_execution_mode(Environment::ExecutionMode::kRepl); return StartExecution(env, "internal/main/repl"); } - env->set_execution_mode(Environment::ExecutionMode::kEvalStdin); return StartExecution(env, "internal/main/eval_stdin"); } diff --git a/src/node_worker.cc b/src/node_worker.cc index 8ca5bddf0a4c72..9d7161fa4f2563 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -96,6 +96,7 @@ Worker::Worker(Environment* env, env->inspector_agent()->GetParentHandle(thread_id_, url); #endif + argv_ = std::vector{env->argv()[0]}; // Mark this Worker object as weak until we actually start the thread. MakeWeak(); @@ -256,8 +257,7 @@ void Worker::Run() { env_->set_worker_context(this); env_->InitializeLibuv(profiler_idle_notifier_started_); - env_->ProcessCliArgs(std::vector{}, - std::move(exec_argv_)); + env_->ProcessCliArgs(std::move(argv_), std::move(exec_argv_)); } { Mutex::ScopedLock lock(mutex_); diff --git a/src/node_worker.h b/src/node_worker.h index 94af8160c68ba5..8239826a0e8b04 100644 --- a/src/node_worker.h +++ b/src/node_worker.h @@ -58,6 +58,8 @@ class Worker : public AsyncWrap { std::shared_ptr per_isolate_opts_; std::vector exec_argv_; + std::vector argv_; + MultiIsolatePlatform* platform_; v8::Isolate* isolate_ = nullptr; bool profiler_idle_notifier_started_; From a58437da3ff0e3b94731381875d4233c6e3bf644 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Sun, 31 Mar 2019 14:22:58 -0400 Subject: [PATCH 114/133] build: only emit download ICU warnings once The check that the user specified `icu` in `--download` only needs to be done once and not for each entry in `tools/icu/current_ver.dep`. Fixes: https://github.com/nodejs/node/issues/26860 PR-URL: https://github.com/nodejs/node/pull/27031 Reviewed-By: Refael Ackermann Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- configure.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.py b/configure.py index 8ae56fdeff2b7e..9f780ab9bca150 100755 --- a/configure.py +++ b/configure.py @@ -1311,13 +1311,14 @@ def icu_download(path): if not os.access(options.download_path, os.W_OK): error('''Cannot write to desired download path. Either create it or verify permissions.''') + attemptdownload = nodedownload.candownload(auto_downloads, "icu") for icu in icus: url = icu['url'] md5 = icu['md5'] local = url.split('/')[-1] targetfile = os.path.join(options.download_path, local) if not os.path.isfile(targetfile): - if nodedownload.candownload(auto_downloads, "icu"): + if attemptdownload: nodedownload.retrievefile(url, targetfile) else: print('Re-using existing %s' % targetfile) From 7547d8e5033558ce9f8f5d673a3189ae2902b62d Mon Sep 17 00:00:00 2001 From: kohta ito Date: Mon, 17 Sep 2018 18:19:26 +0900 Subject: [PATCH 115/133] doc: fix default maxBuffer size Correctly document the default maxBuffer size for execSync, execFileSync, and spawnSync. It is 200 * 1024, not Infinity. Add tests to verify behaviour is as documented. PR-URL: https://github.com/nodejs/node/pull/22894 Reviewed-By: Sam Roberts Signed-off-by: Beth Griggs --- doc/api/child_process.md | 6 +- ...r.js => test-child-process-exec-maxbuf.js} | 23 +++++ .../test-child-process-execfile-maxbuf.js | 94 +++++++++++++++++++ .../test-child-process-execfilesync-maxbuf.js | 46 +++++++++ .../test-child-process-execsync-maxbuf.js | 37 ++++++++ .../test-child-process-spawnsync-maxbuf.js | 8 ++ 6 files changed, 211 insertions(+), 3 deletions(-) rename test/parallel/{test-child-process-exec-maxBuffer.js => test-child-process-exec-maxbuf.js} (79%) create mode 100644 test/parallel/test-child-process-execfile-maxbuf.js create mode 100644 test/parallel/test-child-process-execfilesync-maxbuf.js create mode 100644 test/parallel/test-child-process-execsync-maxbuf.js diff --git a/doc/api/child_process.md b/doc/api/child_process.md index b2208c006ccaeb..4fdf6d77b3f44e 100644 --- a/doc/api/child_process.md +++ b/doc/api/child_process.md @@ -721,7 +721,7 @@ changes: process will be killed. **Default:** `'SIGTERM'`. * `maxBuffer` {number} Largest amount of data in bytes allowed on stdout or stderr. If exceeded, the child process is terminated. See caveat at - [`maxBuffer` and Unicode][]. **Default:** `200 * 1024`. + [`maxBuffer` and Unicode][]. **Default:** `Infinity`. * `encoding` {string} The encoding used for all stdio inputs and outputs. **Default:** `'buffer'`. * `windowsHide` {boolean} Hide the subprocess console window that would @@ -788,7 +788,7 @@ changes: * `maxBuffer` {number} Largest amount of data in bytes allowed on stdout or stderr. If exceeded, the child process is terminated and any output is truncated. See caveat at [`maxBuffer` and Unicode][]. - **Default:** `200 * 1024`. + **Default:** `Infinity`. * `encoding` {string} The encoding used for all stdio inputs and outputs. **Default:** `'buffer'`. * `windowsHide` {boolean} Hide the subprocess console window that would @@ -852,7 +852,7 @@ changes: * `maxBuffer` {number} Largest amount of data in bytes allowed on stdout or stderr. If exceeded, the child process is terminated and any output is truncated. See caveat at [`maxBuffer` and Unicode][]. - **Default:** `200 * 1024`. + **Default:** `Infinity`. * `encoding` {string} The encoding used for all stdio inputs and outputs. **Default:** `'buffer'`. * `shell` {boolean|string} If `true`, runs `command` inside of a shell. Uses diff --git a/test/parallel/test-child-process-exec-maxBuffer.js b/test/parallel/test-child-process-exec-maxbuf.js similarity index 79% rename from test/parallel/test-child-process-exec-maxBuffer.js rename to test/parallel/test-child-process-exec-maxbuf.js index dfa46b0b000aab..1a47cbee3c2cf1 100644 --- a/test/parallel/test-child-process-exec-maxBuffer.js +++ b/test/parallel/test-child-process-exec-maxbuf.js @@ -10,6 +10,29 @@ function runChecks(err, stdio, streamName, expected) { assert.deepStrictEqual(stdio[streamName], expected); } +// default value +{ + const cmd = `"${process.execPath}" -e "console.log('a'.repeat(200 * 1024))"`; + + cp.exec(cmd, common.mustCall((err) => { + assert(err instanceof RangeError); + assert.strictEqual(err.message, 'stdout maxBuffer length exceeded'); + assert.strictEqual(err.code, 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER'); + })); +} + +// default value +{ + const cmd = + `${process.execPath} -e "console.log('a'.repeat(200 * 1024 - 1))"`; + + cp.exec(cmd, common.mustCall((err, stdout, stderr) => { + assert.ifError(err); + assert.strictEqual(stdout.trim(), 'a'.repeat(200 * 1024 - 1)); + assert.strictEqual(stderr, ''); + })); +} + { const cmd = `"${process.execPath}" -e "console.log('hello world');"`; const options = { maxBuffer: Infinity }; diff --git a/test/parallel/test-child-process-execfile-maxbuf.js b/test/parallel/test-child-process-execfile-maxbuf.js new file mode 100644 index 00000000000000..ba074630a14a6b --- /dev/null +++ b/test/parallel/test-child-process-execfile-maxbuf.js @@ -0,0 +1,94 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { execFile } = require('child_process'); + +function checkFactory(streamName) { + return common.mustCall((err) => { + assert(err instanceof RangeError); + assert.strictEqual(err.message, `${streamName} maxBuffer length exceeded`); + assert.strictEqual(err.code, 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER'); + }); +} + +// default value +{ + execFile( + process.execPath, + ['-e', 'console.log("a".repeat(200 * 1024))'], + checkFactory('stdout') + ); +} + +// default value +{ + execFile( + process.execPath, + ['-e', 'console.log("a".repeat(200 * 1024 - 1))'], + common.mustCall((err, stdout, stderr) => { + assert.ifError(err); + assert.strictEqual(stdout.trim(), 'a'.repeat(200 * 1024 - 1)); + assert.strictEqual(stderr, ''); + }) + ); +} + +{ + const options = { maxBuffer: Infinity }; + + execFile( + process.execPath, + ['-e', 'console.log("hello world");'], + options, + common.mustCall((err, stdout, stderr) => { + assert.ifError(err); + assert.strictEqual(stdout.trim(), 'hello world'); + assert.strictEqual(stderr, ''); + }) + ); +} + +{ + execFile('echo', ['hello world'], { maxBuffer: 5 }, checkFactory('stdout')); +} + +const unicode = '中文测试'; // length = 4, byte length = 12 + +{ + execFile( + process.execPath, + ['-e', `console.log('${unicode}');`], + { maxBuffer: 10 }, + checkFactory('stdout')); +} + +{ + execFile( + process.execPath, + ['-e', `console.error('${unicode}');`], + { maxBuffer: 10 }, + checkFactory('stderr') + ); +} + +{ + const child = execFile( + process.execPath, + ['-e', `console.log('${unicode}');`], + { encoding: null, maxBuffer: 10 }, + checkFactory('stdout') + ); + + child.stdout.setEncoding('utf-8'); +} + +{ + const child = execFile( + process.execPath, + ['-e', `console.error('${unicode}');`], + { encoding: null, maxBuffer: 10 }, + checkFactory('stderr') + ); + + child.stderr.setEncoding('utf-8'); +} diff --git a/test/parallel/test-child-process-execfilesync-maxbuf.js b/test/parallel/test-child-process-execfilesync-maxbuf.js new file mode 100644 index 00000000000000..7ea7a0645d65cb --- /dev/null +++ b/test/parallel/test-child-process-execfilesync-maxbuf.js @@ -0,0 +1,46 @@ +'use strict'; +require('../common'); + +// This test checks that the maxBuffer option for child_process.spawnSync() +// works as expected. + +const assert = require('assert'); +const execFileSync = require('child_process').execFileSync; +const msgOut = 'this is stdout'; +const msgOutBuf = Buffer.from(`${msgOut}\n`); + +const args = [ + '-e', + `console.log("${msgOut}");` +]; + +// Verify that an error is returned if maxBuffer is surpassed. +{ + assert.throws( + () => execFileSync(process.execPath, args, { maxBuffer: 1 }), + (e) => { + assert.ok(e, 'maxBuffer should error'); + assert.strictEqual(e.errno, 'ENOBUFS'); + assert.deepStrictEqual(e.stdout, msgOutBuf); + return true; + } + ); +} + +// Verify that a maxBuffer size of Infinity works. +{ + const ret = execFileSync(process.execPath, args, { maxBuffer: Infinity }); + + assert.deepStrictEqual(ret, msgOutBuf); +} + +// maxBuffer size is Infinity at default. +{ + const ret = execFileSync( + process.execPath, + ['-e', "console.log('a'.repeat(200 * 1024))"], + { encoding: 'utf-8' } + ); + + assert.ifError(ret.error); +} diff --git a/test/parallel/test-child-process-execsync-maxbuf.js b/test/parallel/test-child-process-execsync-maxbuf.js new file mode 100644 index 00000000000000..0d2fa306939b59 --- /dev/null +++ b/test/parallel/test-child-process-execsync-maxbuf.js @@ -0,0 +1,37 @@ +'use strict'; +require('../common'); + +// This test checks that the maxBuffer option for child_process.spawnSync() +// works as expected. + +const assert = require('assert'); +const { execSync } = require('child_process'); +const msgOut = 'this is stdout'; +const msgOutBuf = Buffer.from(`${msgOut}\n`); + +const args = [ + '-e', + `"console.log('${msgOut}')";` +]; + +// Verify that an error is returned if maxBuffer is surpassed. +{ + assert.throws(() => { + execSync(`"${process.execPath}" ${args.join(' ')}`, { maxBuffer: 1 }); + }, (e) => { + assert.ok(e, 'maxBuffer should error'); + assert.strictEqual(e.errno, 'ENOBUFS'); + assert.deepStrictEqual(e.stdout, msgOutBuf); + return true; + }); +} + +// Verify that a maxBuffer size of Infinity works. +{ + const ret = execSync( + `"${process.execPath}" ${args.join(' ')}`, + { maxBuffer: Infinity } + ); + + assert.deepStrictEqual(ret, msgOutBuf); +} diff --git a/test/parallel/test-child-process-spawnsync-maxbuf.js b/test/parallel/test-child-process-spawnsync-maxbuf.js index 022c090c338d13..aec42b555bcd47 100644 --- a/test/parallel/test-child-process-spawnsync-maxbuf.js +++ b/test/parallel/test-child-process-spawnsync-maxbuf.js @@ -32,3 +32,11 @@ const args = [ assert.ifError(ret.error); assert.deepStrictEqual(ret.stdout, msgOutBuf); } + +// maxBuffer size is Infinity at default. +{ + const args = ['-e', "console.log('a'.repeat(200 * 1024))"]; + const ret = spawnSync(process.execPath, args, { encoding: 'utf-8' }); + + assert.ifError(ret.error); +} From 2f1da9205267e2ce215bff0073ec6d88586c79b5 Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh Date: Wed, 3 Apr 2019 13:07:42 -0700 Subject: [PATCH 116/133] meta: move ofrobots to TSC emeritus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/27076 Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau Reviewed-By: Yuta Hiroto Reviewed-By: Michaël Zasso Reviewed-By: Michael Dawson Reviewed-By: Gireesh Punathil Reviewed-By: Daniel Bevenius Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 979ca5e99443b4..b5fdf80c65010a 100644 --- a/README.md +++ b/README.md @@ -193,8 +193,6 @@ For information about the governance of the Node.js project, see **Michael Dawson** <michael_dawson@ca.ibm.com> (he/him) * [MylesBorins](https://github.com/MylesBorins) - **Myles Borins** <myles.borins@gmail.com> (he/him) -* [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) * [rvagg](https://github.com/rvagg) - **Rod Vagg** <rod@vagg.org> * [targos](https://github.com/targos) - @@ -226,6 +224,8 @@ For information about the governance of the Node.js project, see **Brian White** <mscdex@mscdex.net> * [nebrius](https://github.com/nebrius) - **Bryan Hughes** <bryan@nebri.us> +* [ofrobots](https://github.com/ofrobots) - +**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) * [orangemocha](https://github.com/orangemocha) - **Alexis Campailla** <orangemocha@nodejs.org> * [piscisaureus](https://github.com/piscisaureus) - From a21bee77efb36eaf32f60616a0c9ec2acfed49d0 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 1 Apr 2019 10:45:53 +0200 Subject: [PATCH 117/133] src: use sizeof(var) instead of sizeof(type) Change `memset(&s, 0, sizeof(type))` to `memset(&s, 0, sizeof(s))`. The former is dangerous when the type of `s` changes. PR-URL: https://github.com/nodejs/node/pull/27038 Reviewed-By: Anna Henningsen Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: Santiago Gimeno Signed-off-by: Beth Griggs --- src/cares_wrap.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index aeb525b33e7efa..6c6fca53312158 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -1969,7 +1969,7 @@ void GetAddrInfo(const FunctionCallbackInfo& args) { args[4]->IsTrue()); struct addrinfo hints; - memset(&hints, 0, sizeof(struct addrinfo)); + memset(&hints, 0, sizeof(hints)); hints.ai_family = family; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = flags; From c62b1a26c96815d2ec205d5e6906bd3b21ccf007 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 2 Jan 2019 13:54:51 +0100 Subject: [PATCH 118/133] benchmark: add new module loading benchmarks PR-URL: https://github.com/nodejs/node/pull/26970 Refs: https://github.com/nodejs/node/pull/25362 Reviewed-By: Guy Bedford Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- benchmark/module/module-loader-deep.js | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 benchmark/module/module-loader-deep.js diff --git a/benchmark/module/module-loader-deep.js b/benchmark/module/module-loader-deep.js new file mode 100644 index 00000000000000..f686b8df47dfba --- /dev/null +++ b/benchmark/module/module-loader-deep.js @@ -0,0 +1,51 @@ +'use strict'; +const fs = require('fs'); +const path = require('path'); +const common = require('../common.js'); + +const tmpdir = require('../../test/common/tmpdir'); +const benchmarkDirectory = path.join(tmpdir.path, 'nodejs-benchmark-module'); + +const bench = common.createBenchmark(main, { + ext: ['', '.js'], + files: [1e3], + cache: ['true', 'false'] +}); + +function main({ ext, cache, files }) { + tmpdir.refresh(); + fs.mkdirSync(benchmarkDirectory); + fs.writeFileSync( + `${benchmarkDirectory}/a.js`, + 'module.exports = {};' + ); + for (var i = 0; i <= files; i++) { + fs.mkdirSync(`${benchmarkDirectory}/${i}`); + fs.writeFileSync( + `${benchmarkDirectory}/${i}/package.json`, + '{"main": "index.js"}' + ); + fs.writeFileSync( + `${benchmarkDirectory}/${i}/index.js`, + `require('../a${ext}');` + ); + } + + measureDir(cache === 'true', files); + + tmpdir.refresh(); +} + +function measureDir(cache, files) { + var i; + if (cache) { + for (i = 0; i <= files; i++) { + require(`${benchmarkDirectory}/${i}`); + } + } + bench.start(); + for (i = 0; i <= files; i++) { + require(`${benchmarkDirectory}/${i}`); + } + bench.end(files); +} From 4c7a2f187c40a5f4c5493395f054a781d5ab436d Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Thu, 28 Mar 2019 22:31:43 +0100 Subject: [PATCH 119/133] benchmark: improve module-loader benchmark Add more benchmark options to properly verify the gains. This makes sure the benchmark also tests requiring the same module again instead of only loading each module only once. PR-URL: https://github.com/nodejs/node/pull/26970 Refs: https://github.com/nodejs/node/pull/25362 Reviewed-By: Guy Bedford Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- benchmark/module/module-loader.js | 60 +++++++++++++++---------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/benchmark/module/module-loader.js b/benchmark/module/module-loader.js index e780d6376b5e8d..3b8e9be2d60636 100644 --- a/benchmark/module/module-loader.js +++ b/benchmark/module/module-loader.js @@ -1,21 +1,27 @@ 'use strict'; const fs = require('fs'); const path = require('path'); +const { builtinModules } = require('module'); const common = require('../common.js'); const tmpdir = require('../../test/common/tmpdir'); -const benchmarkDirectory = path.join(tmpdir.path, 'nodejs-benchmark-module'); +let benchmarkDirectory = path.join(tmpdir.path, 'nodejs-benchmark-module'); + +// Filter all irregular modules. +const otherModules = builtinModules.filter((name) => !/\/|^_|^sys/.test(name)); const bench = common.createBenchmark(main, { - n: [5e4], - fullPath: ['true', 'false'], - useCache: ['true', 'false'] + name: ['', '/', '/index.js'], + dir: ['rel', 'abs'], + files: [5e2], + n: [1, 1e3], + cache: ['true', 'false'] }); -function main({ n, fullPath, useCache }) { +function main({ n, name, cache, files, dir }) { tmpdir.refresh(); - try { fs.mkdirSync(benchmarkDirectory); } catch {} - for (var i = 0; i <= n; i++) { + fs.mkdirSync(benchmarkDirectory); + for (var i = 0; i <= files; i++) { fs.mkdirSync(`${benchmarkDirectory}${i}`); fs.writeFileSync( `${benchmarkDirectory}${i}/package.json`, @@ -27,38 +33,28 @@ function main({ n, fullPath, useCache }) { ); } - if (fullPath === 'true') - measureFull(n, useCache === 'true'); - else - measureDir(n, useCache === 'true'); + if (dir === 'rel') + benchmarkDirectory = path.relative(__dirname, benchmarkDirectory); - tmpdir.refresh(); -} + measureDir(n, cache === 'true', files, name); -function measureFull(n, useCache) { - var i; - if (useCache) { - for (i = 0; i <= n; i++) { - require(`${benchmarkDirectory}${i}/index.js`); - } - } - bench.start(); - for (i = 0; i <= n; i++) { - require(`${benchmarkDirectory}${i}/index.js`); - } - bench.end(n); + tmpdir.refresh(); } -function measureDir(n, useCache) { +function measureDir(n, cache, files, name) { var i; - if (useCache) { - for (i = 0; i <= n; i++) { - require(`${benchmarkDirectory}${i}`); + if (cache) { + for (i = 0; i <= files; i++) { + require(`${benchmarkDirectory}${i}${name}`); } } bench.start(); - for (i = 0; i <= n; i++) { - require(`${benchmarkDirectory}${i}`); + for (i = 0; i <= files; i++) { + for (var j = 0; j < n; j++) + require(`${benchmarkDirectory}${i}${name}`); + // Pretend mixed input (otherwise the results are less representative due to + // highly specialized code). + require(otherModules[i % otherModules.length]); } - bench.end(n); + bench.end(n * files); } From cdb0d8418c6ee97ac37c275610bd66abd2ab3d0d Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Thu, 28 Mar 2019 22:42:06 +0100 Subject: [PATCH 120/133] module: inline try catch Moving `try / catch` into separate functions is not necessary anymore due to V8 optimizations. PR-URL: https://github.com/nodejs/node/pull/26970 Refs: https://github.com/nodejs/node/pull/25362 Reviewed-By: Guy Bedford Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- lib/internal/modules/cjs/loader.js | 12 ++++-------- test/message/assert_throws_stack.out | 1 - test/message/console.out | 1 - test/message/core_line_numbers.out | 1 - test/message/error_exit.out | 1 - test/message/events_unhandled_error_common_trace.out | 1 - test/message/events_unhandled_error_nexttick.out | 1 - test/message/events_unhandled_error_sameline.out | 1 - test/message/if-error-has-good-stack.out | 2 +- test/message/undefined_reference_in_new_context.out | 2 +- test/message/unhandled_promise_trace_warnings.out | 2 -- test/message/util_inspect_error.out | 5 ----- test/message/vm_display_runtime_error.out | 4 ++-- test/message/vm_display_syntax_error.out | 4 ++-- test/message/vm_dont_display_runtime_error.out | 2 +- test/message/vm_dont_display_syntax_error.out | 2 +- 16 files changed, 12 insertions(+), 30 deletions(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index dbe07f051279f2..5ea3f55c52fffc 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -595,13 +595,7 @@ Module._load = function(request, parent, isMain) { Module._cache[filename] = module; - tryModuleLoad(module, filename); - - return module.exports; -}; - -function tryModuleLoad(module, filename) { - var threw = true; + let threw = true; try { module.load(filename); threw = false; @@ -610,7 +604,9 @@ function tryModuleLoad(module, filename) { delete Module._cache[filename]; } } -} + + return module.exports; +}; Module._resolveFilename = function(request, parent, isMain, options) { if (NativeModule.canBeRequiredByUsers(request)) { diff --git a/test/message/assert_throws_stack.out b/test/message/assert_throws_stack.out index 0457670d6a317c..7d4a7aecbcd410 100644 --- a/test/message/assert_throws_stack.out +++ b/test/message/assert_throws_stack.out @@ -16,4 +16,3 @@ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: at * at * at * - at * diff --git a/test/message/console.out b/test/message/console.out index 0ede283a54a25c..d55e59fa306588 100644 --- a/test/message/console.out +++ b/test/message/console.out @@ -7,4 +7,3 @@ Trace: foo at * at * at * - at * diff --git a/test/message/core_line_numbers.out b/test/message/core_line_numbers.out index 0336e5b451651e..53d3894825b4a4 100644 --- a/test/message/core_line_numbers.out +++ b/test/message/core_line_numbers.out @@ -9,7 +9,6 @@ RangeError: Invalid input at Module._compile (internal/modules/cjs/loader.js:*:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*:*) at Module.load (internal/modules/cjs/loader.js:*:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) at internal/main/run_main_module.js:*:* diff --git a/test/message/error_exit.out b/test/message/error_exit.out index 3364210099ca75..b975d41a55d929 100644 --- a/test/message/error_exit.out +++ b/test/message/error_exit.out @@ -11,7 +11,6 @@ AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: at Module._compile (internal/modules/cjs/loader.js:*:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*:*) at Module.load (internal/modules/cjs/loader.js:*:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) at internal/main/run_main_module.js:*:* diff --git a/test/message/events_unhandled_error_common_trace.out b/test/message/events_unhandled_error_common_trace.out index 0d64143c67f865..610ea6064ddc00 100644 --- a/test/message/events_unhandled_error_common_trace.out +++ b/test/message/events_unhandled_error_common_trace.out @@ -9,7 +9,6 @@ Error: foo:bar at Module._compile (internal/modules/cjs/loader.js:*:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*:*) at Module.load (internal/modules/cjs/loader.js:*:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) at internal/main/run_main_module.js:*:* diff --git a/test/message/events_unhandled_error_nexttick.out b/test/message/events_unhandled_error_nexttick.out index fba05879fcc003..3e7fa5055dc628 100644 --- a/test/message/events_unhandled_error_nexttick.out +++ b/test/message/events_unhandled_error_nexttick.out @@ -7,7 +7,6 @@ Error at Module._compile (internal/modules/cjs/loader.js:*:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*:*) at Module.load (internal/modules/cjs/loader.js:*:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) at internal/main/run_main_module.js:*:* diff --git a/test/message/events_unhandled_error_sameline.out b/test/message/events_unhandled_error_sameline.out index f877b254aafe97..798061a39bac8b 100644 --- a/test/message/events_unhandled_error_sameline.out +++ b/test/message/events_unhandled_error_sameline.out @@ -7,7 +7,6 @@ Error at Module._compile (internal/modules/cjs/loader.js:*:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*:*) at Module.load (internal/modules/cjs/loader.js:*:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) at internal/main/run_main_module.js:*:* diff --git a/test/message/if-error-has-good-stack.out b/test/message/if-error-has-good-stack.out index 2a4dfe8fb26630..c762d74aedbca2 100644 --- a/test/message/if-error-has-good-stack.out +++ b/test/message/if-error-has-good-stack.out @@ -14,6 +14,6 @@ AssertionError [ERR_ASSERTION]: ifError got unwanted exception: test error at Module._compile (internal/modules/cjs/loader.js:*:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*:*) at Module.load (internal/modules/cjs/loader.js:*:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) + at internal/main/run_main_module.js:*:* diff --git a/test/message/undefined_reference_in_new_context.out b/test/message/undefined_reference_in_new_context.out index 6b5fedfa993701..9cc5eced7ceaa2 100644 --- a/test/message/undefined_reference_in_new_context.out +++ b/test/message/undefined_reference_in_new_context.out @@ -12,5 +12,5 @@ ReferenceError: foo is not defined at Module._compile (internal/modules/cjs/loader.js:*) at *..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*:*) + at Function.Module.runMain (internal/modules/cjs/loader.js:*:*) diff --git a/test/message/unhandled_promise_trace_warnings.out b/test/message/unhandled_promise_trace_warnings.out index 60c08805f5cd54..901de1bd65d0c7 100644 --- a/test/message/unhandled_promise_trace_warnings.out +++ b/test/message/unhandled_promise_trace_warnings.out @@ -12,7 +12,6 @@ at * at * at * - at * (node:*) Error: This was rejected at * (*test*message*unhandled_promise_trace_warnings.js:*) at * @@ -21,7 +20,6 @@ at * at * at * - at * (node:*) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. at * at * diff --git a/test/message/util_inspect_error.out b/test/message/util_inspect_error.out index 31b65eb2e2bf3c..644ccd58831ef7 100644 --- a/test/message/util_inspect_error.out +++ b/test/message/util_inspect_error.out @@ -8,7 +8,6 @@ at * at * at * - at * nested: { err: Error: foo @@ -20,7 +19,6 @@ at * at * at * - at * { err: Error: foo bar @@ -31,7 +29,6 @@ at * at * at * - at * nested: { err: Error: foo bar @@ -42,7 +39,6 @@ at * at * at * - at * } } { Error: foo @@ -54,5 +50,4 @@ bar at * at * at * - at * foo: 'bar' } diff --git a/test/message/vm_display_runtime_error.out b/test/message/vm_display_runtime_error.out index bc95b2a7b092f5..7927510c4152ee 100644 --- a/test/message/vm_display_runtime_error.out +++ b/test/message/vm_display_runtime_error.out @@ -11,9 +11,9 @@ Error: boo! at Module._compile (internal/modules/cjs/loader.js:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*) + at internal/main/run_main_module.js:*:* test.vm:1 throw new Error("spooky!") ^ @@ -26,6 +26,6 @@ Error: spooky! at Module._compile (internal/modules/cjs/loader.js:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*) + at internal/main/run_main_module.js:*:* diff --git a/test/message/vm_display_syntax_error.out b/test/message/vm_display_syntax_error.out index f0692723e81257..71d4a0ea1311f9 100644 --- a/test/message/vm_display_syntax_error.out +++ b/test/message/vm_display_syntax_error.out @@ -10,9 +10,9 @@ SyntaxError: Unexpected number at Module._compile (internal/modules/cjs/loader.js:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*) + at internal/main/run_main_module.js:*:* test.vm:1 var 5; ^ @@ -24,6 +24,6 @@ SyntaxError: Unexpected number at Module._compile (internal/modules/cjs/loader.js:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*) + at internal/main/run_main_module.js:*:* diff --git a/test/message/vm_dont_display_runtime_error.out b/test/message/vm_dont_display_runtime_error.out index 532cfbf4dd8125..831ec8b6be4eab 100644 --- a/test/message/vm_dont_display_runtime_error.out +++ b/test/message/vm_dont_display_runtime_error.out @@ -12,6 +12,6 @@ Error: boo! at Module._compile (internal/modules/cjs/loader.js:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*) + at internal/main/run_main_module.js:*:* diff --git a/test/message/vm_dont_display_syntax_error.out b/test/message/vm_dont_display_syntax_error.out index f27cb1a0859d8c..22924e7a6e72e1 100644 --- a/test/message/vm_dont_display_syntax_error.out +++ b/test/message/vm_dont_display_syntax_error.out @@ -12,6 +12,6 @@ SyntaxError: Unexpected number at Module._compile (internal/modules/cjs/loader.js:*) at Object.Module._extensions..js (internal/modules/cjs/loader.js:*) at Module.load (internal/modules/cjs/loader.js:*) - at tryModuleLoad (internal/modules/cjs/loader.js:*:*) at Function.Module._load (internal/modules/cjs/loader.js:*) at Function.Module.runMain (internal/modules/cjs/loader.js:*) + at internal/main/run_main_module.js:*:* From 8f6921e93aa37b1ad9cf1da2e79625534aefb343 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Thu, 28 Mar 2019 23:34:24 +0100 Subject: [PATCH 121/133] module: add path to the module object This adds the `path` property to the module object. It contains the current directory as path. That is necessary to add an extra caching layer. It also makes sure the `id` uses a default in case it's not set. Otherwise the `path.dirname(id)` command could fail. PR-URL: https://github.com/nodejs/node/pull/26970 Refs: https://github.com/nodejs/node/pull/25362 Reviewed-By: Guy Bedford Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- lib/internal/modules/cjs/loader.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 5ea3f55c52fffc..b8eed4b808a965 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -96,8 +96,9 @@ function updateChildren(parent, child, scan) { children.push(child); } -function Module(id, parent) { +function Module(id = '', parent) { this.id = id; + this.path = path.dirname(id); this.exports = {}; this.parent = parent; updateChildren(parent, this, false); From 5917f4d49b8eda431208619abb20fadd371f2897 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Thu, 28 Mar 2019 23:37:07 +0100 Subject: [PATCH 122/133] module: add extra caching layer This adds an extra modules caching layer that operates on the parent's `path` property and the current require argument. That together can be used as unique identifier to speed up loading the same module more than once. It is a cache on top of the current modules cache. It has the nice feature that this cache does not only work in the same file but it works for the whole current directory. So if the same file is loaded in any other file from the same directory, it will also hit this cache instead of having to resolve the file again. To keep it backwards compatible with the old modules cache, it detects invalidation of that cache. PR-URL: https://github.com/nodejs/node/pull/26970 Refs: https://github.com/nodejs/node/pull/25362 Reviewed-By: Guy Bedford Reviewed-By: Matteo Collina Signed-off-by: Beth Griggs --- lib/internal/modules/cjs/loader.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index b8eed4b808a965..de97f03dd47abe 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -77,6 +77,8 @@ const { const isWindows = process.platform === 'win32'; +const relativeResolveCache = Object.create(null); + let requireDepth = 0; let statCache = null; function stat(filename) { @@ -568,14 +570,28 @@ Module._resolveLookupPaths = function(request, parent, newReturn) { // Then have it load the file contents before returning its exports // object. Module._load = function(request, parent, isMain) { + let relResolveCacheIdentifier; if (parent) { debug('Module._load REQUEST %s parent: %s', request, parent.id); + // Fast path for (lazy loaded) modules in the same directory. The indirect + // caching is required to allow cache invalidation without changing the old + // cache key names. + relResolveCacheIdentifier = `${parent.path}\x00${request}`; + const filename = relativeResolveCache[relResolveCacheIdentifier]; + if (filename !== undefined) { + const cachedModule = Module._cache[filename]; + if (cachedModule !== undefined) { + updateChildren(parent, cachedModule, true); + return cachedModule.exports; + } + delete relativeResolveCache[relResolveCacheIdentifier]; + } } const filename = Module._resolveFilename(request, parent, isMain); const cachedModule = Module._cache[filename]; - if (cachedModule) { + if (cachedModule !== undefined) { updateChildren(parent, cachedModule, true); return cachedModule.exports; } @@ -595,6 +611,9 @@ Module._load = function(request, parent, isMain) { } Module._cache[filename] = module; + if (parent !== undefined) { + relativeResolveCache[relResolveCacheIdentifier] = filename; + } let threw = true; try { @@ -603,6 +622,9 @@ Module._load = function(request, parent, isMain) { } finally { if (threw) { delete Module._cache[filename]; + if (parent !== undefined) { + delete relativeResolveCache[relResolveCacheIdentifier]; + } } } From 36714e16c2ce99ce0874f57ded9ba0a9f1a036e1 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 2 Apr 2019 05:00:10 +0200 Subject: [PATCH 123/133] buffer: fix concat error message The list argument may only be of type array, not of any other type as it actually suggests. PR-URL: https://github.com/nodejs/node/pull/27050 Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca Reviewed-By: Yongsheng Zhang Signed-off-by: Beth Griggs --- lib/buffer.js | 3 +-- test/parallel/test-buffer-concat.js | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/buffer.js b/lib/buffer.js index c4b7e3165b8ae5..2c797033a3f2ee 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -446,8 +446,7 @@ Buffer[kIsEncodingSymbol] = Buffer.isEncoding; Buffer.concat = function concat(list, length) { let i; if (!Array.isArray(list)) { - throw new ERR_INVALID_ARG_TYPE( - 'list', ['Array', 'Buffer', 'Uint8Array'], list); + throw new ERR_INVALID_ARG_TYPE('list', 'Array', list); } if (list.length === 0) diff --git a/test/parallel/test-buffer-concat.js b/test/parallel/test-buffer-concat.js index 07c2189d97db43..7ef5b9cd3591b2 100644 --- a/test/parallel/test-buffer-concat.js +++ b/test/parallel/test-buffer-concat.js @@ -49,8 +49,8 @@ assert.strictEqual(flatLongLen.toString(), check); Buffer.concat(value); }, { code: 'ERR_INVALID_ARG_TYPE', - message: 'The "list" argument must be one of type Array, Buffer, ' + - `or Uint8Array. Received type ${typeof value}` + message: 'The "list" argument must be of type Array. ' + + `Received type ${typeof value}` }); }); From cee079f8545db81a114d50d613a85b472ed035b6 Mon Sep 17 00:00:00 2001 From: Shigeki Ohtsu Date: Sun, 24 Feb 2019 02:47:25 +0900 Subject: [PATCH 124/133] deps: add ARM64 Windows support in openssl This adds ARM64 Windows support in the OpenSSL build system. Since OpenSSL's ARM64 Windows support does not have support for ASM-- that is, VC-WIN64-ARM inherits from VC-noCE-common which has no ASM files--`openssl_no_asm.gypi` is always used for building. This essentially forces the 'no-asm' Configure flag. PR-URL: https://github.com/nodejs/node/pull/26001 Fixes: https://github.com/nodejs/node/issues/25998 Reviewed-By: James M Snell Reviewed-By: Sam Roberts Signed-off-by: Beth Griggs --- deps/openssl/config/Makefile | 16 ++- deps/openssl/config/Makefile_VC-WIN64-ARM | 147 ++++++++++++++++++++++ deps/openssl/config/bn_conf_no-asm.h | 2 + deps/openssl/config/dso_conf_no-asm.h | 2 + deps/openssl/config/opensslconf_no-asm.h | 2 + deps/openssl/openssl-cl_no_asm.gypi | 2 + deps/openssl/openssl.gyp | 12 +- deps/openssl/openssl_no_asm.gypi | 2 + 8 files changed, 178 insertions(+), 7 deletions(-) create mode 100644 deps/openssl/config/Makefile_VC-WIN64-ARM diff --git a/deps/openssl/config/Makefile b/deps/openssl/config/Makefile index 5de96ab84d1dbc..ff87bba7126534 100644 --- a/deps/openssl/config/Makefile +++ b/deps/openssl/config/Makefile @@ -9,12 +9,14 @@ endif PERL = perl # Supported architecture list -ARCHS = aix-gcc aix64-gcc BSD-x86_64 \ +ASM_ARCHS = aix-gcc aix64-gcc BSD-x86_64 \ darwin64-x86_64-cc darwin-i386-cc linux-aarch64 \ linux-armv4 linux-elf linux-x32 linux-x86_64 linux-ppc \ linux-ppc64 linux-ppc64le linux32-s390x linux64-s390x \ solaris-x86-gcc solaris64-x86_64-gcc VC-WIN64A VC-WIN32 +NO_ASM_ARCHS = VC-WIN64-ARM + CC = gcc FAKE_GCC = ../config/fake_gcc.pl @@ -40,17 +42,23 @@ INT_CFG_DIR = $(OPSSL_SRC)/crypto/include/internal PHONY = all clean replace .PHONY: $(PHONY) -all: $(ARCHS) replace +all: $(ASM_ARCHS) $(NO_ASM_ARCHS) replace # Configure and generate openssl asm files for each archs -$(ARCHS): +$(ASM_ARCHS): cd $(OPSSL_SRC); $(NO_WARN_ENV) CC=$(CC) $(PERL) $(CONFIGURE) $(COPTS) $@; $(PERL) -w -I$(OPSSL_SRC) $(GENERATE) asm $@ # Confgure asm_avx2 and generate upto avx2 support cd $(OPSSL_SRC); $(NO_WARN_ENV) CC=$(FAKE_GCC) $(PERL) $(CONFIGURE) \ $(COPTS) $@; $(PERL) -w -I$(OPSSL_SRC) $(GENERATE) asm_avx2 $@ -# Confgure no-asm and generate no-asm sources +# Configure no-asm and generate no-asm sources + cd $(OPSSL_SRC); $(NO_WARN_ENV) $(PERL) $(CONFIGURE) $(COPTS) \ + no-asm $@; + $(PERL) -w -I$(OPSSL_SRC) $(GENERATE) no-asm $@ + +$(NO_ASM_ARCHS): +# Configure no-asm and generate no-asm sources cd $(OPSSL_SRC); $(NO_WARN_ENV) $(PERL) $(CONFIGURE) $(COPTS) \ no-asm $@; $(PERL) -w -I$(OPSSL_SRC) $(GENERATE) no-asm $@ diff --git a/deps/openssl/config/Makefile_VC-WIN64-ARM b/deps/openssl/config/Makefile_VC-WIN64-ARM new file mode 100644 index 00000000000000..9937bd5492a39b --- /dev/null +++ b/deps/openssl/config/Makefile_VC-WIN64-ARM @@ -0,0 +1,147 @@ + +## +## Makefile for OpenSSL +## +## WARNING: do not edit! +## Generated by Configure from Configurations/common0.tmpl, Configurations/windows-makefile.tmpl, Configurations/common.tmpl + + +PLATFORM=VC-WIN64-ARM +SRCDIR=. +BLDDIR=. + +VERSION=1.1.1a +MAJOR=1 +MINOR=1.1 + +SHLIB_VERSION_NUMBER=1.1 + +GENERATED_MANDATORY=crypto/include/internal/bn_conf.h crypto/include/internal/dso_conf.h include/openssl/opensslconf.h + +INSTALL_LIBS="libcrypto.lib" "libssl.lib" +INSTALL_SHLIBS="libcrypto-1_1-arm64.dll" "libssl-1_1-arm64.dll" +INSTALL_SHLIBPDBS="libcrypto-1_1-arm64.pdb" "libssl-1_1-arm64.pdb" +INSTALL_ENGINES="engines/capi.dll" "engines/padlock.dll" +INSTALL_ENGINEPDBS="engines/capi.pdb" "engines/padlock.pdb" +INSTALL_PROGRAMS="apps/openssl.exe" +INSTALL_PROGRAMPDBS="apps/openssl.pdb" + +BIN_SCRIPTS="$(BLDDIR)\tools\c_rehash.pl" +MISC_SCRIPTS="$(BLDDIR)\apps\CA.pl" "$(BLDDIR)\apps\tsget.pl" + + +APPS_OPENSSL="apps/openssl" + +# Do not edit these manually. Use Configure with --prefix or --openssldir +# to change this! Short explanation in the top comment in Configure +INSTALLTOP_dev= +INSTALLTOP_dir=\OpenSSL +OPENSSLDIR_dev= +OPENSSLDIR_dir=\SSL +LIBDIR=lib +ENGINESDIR_dev= +ENGINESDIR_dir=\OpenSSL/lib/engines-1_1 +INSTALLTOP=$(INSTALLTOP_dev)$(INSTALLTOP_dir) +OPENSSLDIR=$(OPENSSLDIR_dev)$(OPENSSLDIR_dir) +ENGINESDIR=$(ENGINESDIR_dev)$(ENGINESDIR_dir) + +# $(libdir) is chosen to be compatible with the GNU coding standards +libdir=$(INSTALLTOP)\$(LIBDIR) + +##### User defined commands and flags ################################ + +CC=cl +CPP=$(CC) /EP /C +CPPFLAGS= +CFLAGS=/W3 /wd4090 /nologo /O2 +LD=link +LDFLAGS=/nologo /debug +EX_LIBS= + +PERL=/usr/bin/perl + +AR=lib +ARFLAGS= /nologo + +MT=mt +MTFLAGS= -nologo + +AS= +ASFLAGS= + +RC=rc + +ECHO="$(PERL)" "$(SRCDIR)\util\echo.pl" + +##### Special command flags ########################################## + +COUTFLAG=/Fo$(OSSL_EMPTY) +LDOUTFLAG=/out:$(OSSL_EMPTY) +AROUTFLAG=/out:$(OSSL_EMPTY) +MTINFLAG=-manifest $(OSSL_EMPTY) +MTOUTFLAG=-outputresource:$(OSSL_EMPTY) +ASOUTFLAG=$(OSSL_EMPTY) +RCOUTFLAG=/fo$(OSSL_EMPTY) + +##### Project flags ################################################## + +# Variables starting with CNF_ are common variables for all product types + +CNF_ASFLAGS= +CNF_CPPFLAGS=-D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE" -D"OPENSSL_SYS_WIN_CORE" -D"NDEBUG" +CNF_CFLAGS=/Gs0 /GF /Gy /MD +CNF_CXXFLAGS= +CNF_LDFLAGS=/NODEFAULTLIB:kernel32.lib +CNF_EX_LIBS=onecore.lib + +# Variables starting with LIB_ are used to build library object files +# and shared libraries. +# Variables starting with DSO_ are used to build DSOs and their object files. +# Variables starting with BIN_ are used to build programs and their object +# files. + +LIB_ASFLAGS=$(CNF_ASFLAGS) $(ASFLAGS) +LIB_CPPFLAGS=-D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\"\\SSL\"" -D"ENGINESDIR=\"\\OpenSSL/lib/engines-1_1\"" $(CNF_CPPFLAGS) $(CPPFLAGS) +LIB_CFLAGS=/Zi /Fdossl_static.pdb $(CNF_CFLAGS) $(CFLAGS) +LIB_LDFLAGS=/dll $(CNF_LDFLAGS) $(LDFLAGS) +LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) +DSO_ASFLAGS=$(CNF_ASFLAGS) $(ASFLAGS) +DSO_CPPFLAGS=$(CNF_CPPFLAGS) $(CPPFLAGS) +DSO_CFLAGS=/Zi /Fddso.pdb $(CNF_CFLAGS) $(CFLAGS) +DSO_LDFLAGS=/dll $(CNF_LDFLAGS) $(LDFLAGS) +DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) +BIN_ASFLAGS=$(CNF_ASFLAGS) $(ASFLAGS) +BIN_CPPFLAGS=$(CNF_CPPFLAGS) $(CPPFLAGS) +BIN_CFLAGS=/Zi /Fdapp.pdb $(CNF_CFLAGS) $(CFLAGS) +BIN_LDFLAGS=/subsystem:console /opt:ref $(CNF_LDFLAGS) $(LDFLAGS) +BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) + +# CPPFLAGS_Q is used for one thing only: to build up buildinf.h +CPPFLAGS_Q=-D"L_ENDIAN" -D"OPENSSL_PIC" + +PERLASM_SCHEME= + +PROCESSOR= + +build_generated: $(GENERATED_MANDATORY) + +crypto/buildinf.h: + "$(PERL)" "util/mkbuildinf.pl" "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)" > $@ + +apps/progs.h: + "$(PERL)" "apps/progs.pl" $(APPS_OPENSSL) > $@ + +crypto/include/internal/bn_conf.h: + "$(PERL)" "-I$(BLDDIR)" -Mconfigdata "util/dofile.pl" \ + "-omakefile" "crypto/include/internal/bn_conf.h.in" > $@ +crypto/include/internal/dso_conf.h: + "$(PERL)" "-I$(BLDDIR)" -Mconfigdata "util/dofile.pl" \ + "-omakefile" "crypto/include/internal/dso_conf.h.in" > $@ +include/openssl/opensslconf.h: + "$(PERL)" "-I$(BLDDIR)" -Mconfigdata "util/dofile.pl" \ + "-omakefile" "include/openssl/opensslconf.h.in" > $@ + +distclean: + $(RM) $(GENERATED) + $(RM) /Q /F configdata.pm + $(RM) /Q /F makefile diff --git a/deps/openssl/config/bn_conf_no-asm.h b/deps/openssl/config/bn_conf_no-asm.h index d577b15c77e47b..e7cbb88d966148 100644 --- a/deps/openssl/config/bn_conf_no-asm.h +++ b/deps/openssl/config/bn_conf_no-asm.h @@ -21,6 +21,8 @@ # include "./archs/VC-WIN32/no-asm/crypto/include/internal/bn_conf.h" #elif defined(_WIN32) && defined(_M_X64) # include "./archs/VC-WIN64A/no-asm/crypto/include/internal/bn_conf.h" +#elif defined(_WIN32) && defined(_M_ARM64) +# include "./archs/VC-WIN64-ARM/no-asm/crypto/include/internal/bn_conf.h" #elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__i386__) # include "./archs/BSD-x86/no-asm/crypto/include/internal/bn_conf.h" #elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__x86_64__) diff --git a/deps/openssl/config/dso_conf_no-asm.h b/deps/openssl/config/dso_conf_no-asm.h index 9d0e3e0e1c4e63..c3507ce3d24fde 100644 --- a/deps/openssl/config/dso_conf_no-asm.h +++ b/deps/openssl/config/dso_conf_no-asm.h @@ -21,6 +21,8 @@ # include "./archs/VC-WIN32/no-asm/crypto/include/internal/dso_conf.h" #elif defined(_WIN32) && defined(_M_X64) # include "./archs/VC-WIN64A/no-asm/crypto/include/internal/dso_conf.h" +#elif defined(_WIN32) && defined(_M_ARM64) +# include "./archs/VC-WIN64-ARM/no-asm/crypto/include/internal/dso_conf.h" #elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__i386__) # include "./archs/BSD-x86/no-asm/crypto/include/internal/dso_conf.h" #elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__x86_64__) diff --git a/deps/openssl/config/opensslconf_no-asm.h b/deps/openssl/config/opensslconf_no-asm.h index 7ef62f91820fff..1a8763f631525a 100644 --- a/deps/openssl/config/opensslconf_no-asm.h +++ b/deps/openssl/config/opensslconf_no-asm.h @@ -16,6 +16,8 @@ # include "./archs/VC-WIN32/no-asm/include/openssl/opensslconf.h" #elif defined(_WIN32) && defined(_M_X64) # include "./archs/VC-WIN64A/no-asm/include/openssl/opensslconf.h" +#elif defined(_WIN32) && defined(_M_ARM64) +# include "./archs/VC-WIN64-ARM/no-asm/include/openssl/opensslconf.h" #elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__i386__) # include "./archs/BSD-x86/no-asm/include/openssl/opensslconf.h" #elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__x86_64__) diff --git a/deps/openssl/openssl-cl_no_asm.gypi b/deps/openssl/openssl-cl_no_asm.gypi index 8b44e1f64fe677..8ba246d3035fee 100644 --- a/deps/openssl/openssl-cl_no_asm.gypi +++ b/deps/openssl/openssl-cl_no_asm.gypi @@ -18,6 +18,8 @@ 'includes': ['config/archs/linux-armv4/no-asm/openssl-cl.gypi'], }, 'target_arch=="arm64" and OS=="linux"', { 'includes': ['config/archs/linux-aarch64/no-asm/openssl-cl.gypi'], + }, 'target_arch=="arm64" and OS=="win"', { + 'includes': ['config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi'], }, 'target_arch=="ia32" and OS=="linux"', { 'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'], }, 'target_arch=="ia32" and OS=="mac"', { diff --git a/deps/openssl/openssl.gyp b/deps/openssl/openssl.gyp index 5f532487563601..60f6ee03a7a9e4 100644 --- a/deps/openssl/openssl.gyp +++ b/deps/openssl/openssl.gyp @@ -18,6 +18,9 @@ 'conditions': [ [ 'openssl_no_asm==1', { 'includes': ['./openssl_no_asm.gypi'], + }, 'target_arch=="arm64" and OS=="win"', { + # VC-WIN64-ARM inherits from VC-noCE-common that has no asms. + 'includes': ['./openssl_no_asm.gypi'], }, 'gas_version >= "2.26" or nasm_version >= "2.11.8"', { # Require AVX512IFMA supported. See # https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_ia32cap.html @@ -37,10 +40,13 @@ 'dependencies': ['openssl'], 'includes': ['./openssl_common.gypi'], 'conditions': [ - ['openssl_no_asm==0', { - 'includes': ['./openssl-cl_asm.gypi'], - }, { + ['openssl_no_asm==1', { 'includes': ['./openssl-cl_no_asm.gypi'], + }, 'target_arch=="arm64" and OS=="win"', { + # VC-WIN64-ARM inherits from VC-noCE-common that has no asms. + 'includes': ['./openssl-cl_no_asm.gypi'], + }, { + 'includes': ['./openssl-cl_asm.gypi'], }], ], }, diff --git a/deps/openssl/openssl_no_asm.gypi b/deps/openssl/openssl_no_asm.gypi index 2e0d9639590a69..d09f944539bb26 100644 --- a/deps/openssl/openssl_no_asm.gypi +++ b/deps/openssl/openssl_no_asm.gypi @@ -38,6 +38,8 @@ 'includes': ['config/archs/solaris64-x86_64-gcc/no-asm/openssl.gypi'], }, 'target_arch=="x64" and OS=="win"', { 'includes': ['config/archs/VC-WIN64A/no-asm/openssl.gypi'], + }, 'target_arch=="arm64" and OS=="win"', { + 'includes': ['config/archs/VC-WIN64-ARM/no-asm/openssl.gypi'], }, 'target_arch=="x64" and OS=="linux"', { 'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'], }, { From ddf74775176b372c71f4a72a14d5582a9539c554 Mon Sep 17 00:00:00 2001 From: Jon Kunkee Date: Thu, 7 Mar 2019 19:27:19 -0800 Subject: [PATCH 125/133] deps: add ARM64 Windows configurations in openssl This change adds the generated files required for building OpenSSL for Node.js for ARM64 Windows. I did this on a VM running Ubuntu 18.04. The basic workflow is to cd to deps/openssl/config and run `make`, installing any needed packages until all architectures build correctly. Note that OpenSSL 1.1.1 does not support ASM on ARM64 Windows, so this change also supports only no-asm on ARM64 Windows. PR-URL: https://github.com/nodejs/node/pull/26001 Fixes: https://github.com/nodejs/node/issues/25998 Reviewed-By: James M Snell Reviewed-By: Sam Roberts Signed-off-by: Beth Griggs --- .../archs/VC-WIN64-ARM/no-asm/configdata.pm | 15941 ++++++++++++++++ .../VC-WIN64-ARM/no-asm/crypto/buildinf.h | 29 + .../no-asm/crypto/include/internal/bn_conf.h | 28 + .../no-asm/crypto/include/internal/dso_conf.h | 18 + .../no-asm/include/openssl/opensslconf.h | 207 + .../archs/VC-WIN64-ARM/no-asm/include/progs.h | 507 + .../archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi | 86 + .../archs/VC-WIN64-ARM/no-asm/openssl.gypi | 717 + 8 files changed, 17533 insertions(+) create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/bn_conf.h create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/dso_conf.h create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslconf.h create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi create mode 100644 deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm new file mode 100644 index 00000000000000..f2b41b089b1376 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm @@ -0,0 +1,15941 @@ +#! /usr/bin/env perl + +package configdata; + +use strict; +use warnings; + +use Exporter; +#use vars qw(@ISA @EXPORT); +our @ISA = qw(Exporter); +our @EXPORT = qw(%config %target %disabled %withargs %unified_info @disablables); + +our %config = ( + AR => "lib", + ARFLAGS => [ "/nologo" ], + CC => "cl", + CFLAGS => [ "/W3 /wd4090 /nologo /O2" ], + CPP => "\$(CC) /EP /C", + CPPDEFINES => [ ], + CPPFLAGS => [ ], + CPPINCLUDES => [ ], + CXXFLAGS => [ ], + HASHBANGPERL => "/usr/bin/env perl", + LD => "link", + LDFLAGS => [ "/nologo /debug" ], + LDLIBS => [ ], + MT => "mt", + MTFLAGS => [ "-nologo" ], + PERL => "/usr/bin/perl", + RANLIB => "ranlib", + RC => "rc", + b32 => "0", + b64 => "1", + b64l => "0", + bn_ll => "0", + build_file => "makefile", + build_file_templates => [ "Configurations/common0.tmpl", "Configurations/windows-makefile.tmpl", "Configurations/common.tmpl" ], + build_infos => [ "./build.info", "crypto/build.info", "ssl/build.info", "engines/build.info", "apps/build.info", "test/build.info", "util/build.info", "tools/build.info", "fuzz/build.info", "crypto/objects/build.info", "crypto/md4/build.info", "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", "crypto/poly1305/build.info", "crypto/blake2/build.info", "crypto/siphash/build.info", "crypto/sm3/build.info", "crypto/des/build.info", "crypto/aes/build.info", "crypto/rc2/build.info", "crypto/rc4/build.info", "crypto/idea/build.info", "crypto/aria/build.info", "crypto/bf/build.info", "crypto/cast/build.info", "crypto/camellia/build.info", "crypto/seed/build.info", "crypto/sm4/build.info", "crypto/chacha/build.info", "crypto/modes/build.info", "crypto/bn/build.info", "crypto/ec/build.info", "crypto/rsa/build.info", "crypto/dsa/build.info", "crypto/dh/build.info", "crypto/sm2/build.info", "crypto/dso/build.info", "crypto/engine/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", "crypto/rand/build.info", "crypto/err/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", "crypto/pem/build.info", "crypto/x509/build.info", "crypto/x509v3/build.info", "crypto/conf/build.info", "crypto/txt_db/build.info", "crypto/pkcs7/build.info", "crypto/pkcs12/build.info", "crypto/ocsp/build.info", "crypto/ui/build.info", "crypto/cms/build.info", "crypto/ts/build.info", "crypto/srp/build.info", "crypto/cmac/build.info", "crypto/ct/build.info", "crypto/async/build.info", "crypto/kdf/build.info", "crypto/store/build.info", "test/ossl_shim/build.info" ], + build_type => "release", + builddir => ".", + cflags => [ ], + conf_files => [ "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/50-win-onecore.conf", "Configurations/shared-info.pl" ], + cppflags => [ ], + cxxflags => [ ], + defines => [ "NDEBUG" ], + dirs => [ "crypto", "ssl", "engines", "apps", "test", "util", "tools", "fuzz" ], + dynamic_engines => "0", + engdirs => [ ], + ex_libs => [ ], + export_var_as_fn => "1", + includes => [ ], + lflags => [ ], + lib_defines => [ "OPENSSL_PIC" ], + libdir => "", + major => "1", + minor => "1.1", + openssl_algorithm_defines => [ "OPENSSL_NO_COMP", "OPENSSL_NO_MD2", "OPENSSL_NO_RC5" ], + openssl_api_defines => [ ], + openssl_other_defines => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", "OPENSSL_NO_HEARTBEATS", "OPENSSL_NO_MSAN", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL_TRACE", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_WEAK_SSL_CIPHERS", "OPENSSL_NO_DYNAMIC_ENGINE", "OPENSSL_NO_AFALGENG" ], + openssl_sys_defines => [ ], + openssl_thread_defines => [ "OPENSSL_THREADS" ], + openssldir => "", + options => " no-afalgeng no-asan no-asm no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-heartbeats no-md2 no-msan no-rc5 no-sctp no-shared no-ssl-trace no-ssl3 no-ssl3-method no-ubsan no-unit-test no-weak-ssl-ciphers no-zlib no-zlib-dynamic", + perl_archname => "x86_64-linux-gnu-thread-multi", + perl_cmd => "/usr/bin/perl", + perl_version => "5.26.1", + perlargv => [ "no-comp", "no-shared", "no-afalgeng", "no-asm", "VC-WIN64-ARM" ], + perlenv => { + "AR" => undef, + "ARFLAGS" => undef, + "AS" => undef, + "ASFLAGS" => undef, + "BUILDFILE" => undef, + "CC" => undef, + "CFLAGS" => undef, + "CPP" => undef, + "CPPDEFINES" => undef, + "CPPFLAGS" => undef, + "CPPINCLUDES" => undef, + "CROSS_COMPILE" => undef, + "CXX" => undef, + "CXXFLAGS" => undef, + "HASHBANGPERL" => undef, + "LD" => undef, + "LDFLAGS" => undef, + "LDLIBS" => undef, + "MT" => undef, + "MTFLAGS" => undef, + "OPENSSL_LOCAL_CONFIG_DIR" => undef, + "PERL" => undef, + "RANLIB" => undef, + "RC" => undef, + "RCFLAGS" => undef, + "RM" => undef, + "WINDRES" => undef, + "__CNF_CFLAGS" => undef, + "__CNF_CPPDEFINES" => undef, + "__CNF_CPPFLAGS" => undef, + "__CNF_CPPINCLUDES" => undef, + "__CNF_CXXFLAGS" => undef, + "__CNF_LDFLAGS" => undef, + "__CNF_LDLIBS" => undef, + }, + prefix => "", + processor => "", + rc4_int => "unsigned char", + sdirs => [ "objects", "md4", "md5", "sha", "mdc2", "hmac", "ripemd", "whrlpool", "poly1305", "blake2", "siphash", "sm3", "des", "aes", "rc2", "rc4", "idea", "aria", "bf", "cast", "camellia", "seed", "sm4", "chacha", "modes", "bn", "ec", "rsa", "dsa", "dh", "sm2", "dso", "engine", "buffer", "bio", "stack", "lhash", "rand", "err", "evp", "asn1", "pem", "x509", "x509v3", "conf", "txt_db", "pkcs7", "pkcs12", "ocsp", "ui", "cms", "ts", "srp", "cmac", "ct", "async", "kdf", "store" ], + shlib_major => "1", + shlib_minor => "1", + shlib_version_history => "", + shlib_version_number => "1.1", + sourcedir => ".", + target => "VC-WIN64-ARM", + tdirs => [ "ossl_shim" ], + version => "1.1.1b", + version_num => "0x1010102fL", +); + +our %target = ( + AR => "lib", + ARFLAGS => "/nologo", + CC => "cl", + CFLAGS => "/W3 /wd4090 /nologo /O2", + CPP => "\$(CC) /EP /C", + HASHBANGPERL => "/usr/bin/env perl", + LD => "link", + LDFLAGS => "/nologo /debug", + MT => "mt", + MTFLAGS => "-nologo", + RANLIB => "CODE(0x7fffc48da440)", + RC => "rc", + _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/50-win-onecore.conf", "Configurations/shared-info.pl" ], + aes_asm_src => "aes_core.c aes_cbc.c", + aes_obj => "aes_core.o aes_cbc.o", + apps_aux_src => "win32_init.c", + apps_init_src => "", + apps_obj => "win32_init.o", + aroutflag => "/out:", + bf_asm_src => "bf_enc.c", + bf_obj => "bf_enc.o", + bin_cflags => "/Zi /Fdapp.pdb /MT", + bin_lflags => "/subsystem:console /opt:ref", + bn_asm_src => "bn_asm.c", + bn_obj => "bn_asm.o", + bn_ops => "SIXTY_FOUR_BIT RC4_CHAR EXPORT_VAR_AS_FN", + build_file => "makefile", + build_scheme => [ "unified", "windows", "VC-common" ], + cast_asm_src => "c_enc.c", + cast_obj => "c_enc.o", + cflags => "/Gs0 /GF /Gy", + chacha_asm_src => "chacha_enc.c", + chacha_obj => "chacha_enc.o", + cmll_asm_src => "camellia.c cmll_misc.c cmll_cbc.c", + cmll_obj => "camellia.o cmll_misc.o cmll_cbc.o", + coutflag => "/Fo", + cppflags => "", + cpuid_asm_src => "mem_clr.c", + cpuid_obj => "mem_clr.o", + defines => [ "OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN", "UNICODE", "_UNICODE", "_CRT_SECURE_NO_DEPRECATE", "_WINSOCK_DEPRECATED_NO_WARNINGS", "_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE", "OPENSSL_SYS_WIN_CORE" ], + des_asm_src => "des_enc.c fcrypt_b.c", + des_obj => "des_enc.o fcrypt_b.o", + disable => [ ], + dso_cflags => "/Zi /Fddso.pdb", + dso_extension => ".dll", + dso_scheme => "win32", + ec_asm_src => "", + ec_obj => "", + enable => [ ], + ex_libs => "onecore.lib", + exe_extension => "", + includes => [ ], + keccak1600_asm_src => "keccak1600.c", + keccak1600_obj => "keccak1600.o", + ldoutflag => "/out:", + lflags => "/NODEFAULTLIB:kernel32.lib", + lib_cflags => "/Zi /Fdossl_static.pdb /MT /Zl", + lib_cppflags => "", + lib_defines => [ "L_ENDIAN" ], + md5_asm_src => "", + md5_obj => "", + modes_asm_src => "", + modes_obj => "", + module_cflags => "", + module_cxxflags => "", + module_ldflags => "/dll", + mtinflag => "-manifest ", + mtoutflag => "-outputresource:", + multilib => "-arm64", + padlock_asm_src => "", + padlock_obj => "", + poly1305_asm_src => "", + poly1305_obj => "", + rc4_asm_src => "rc4_enc.c rc4_skey.c", + rc4_obj => "rc4_enc.o rc4_skey.o", + rc5_asm_src => "rc5_enc.c", + rc5_obj => "rc5_enc.o", + rcoutflag => "/fo", + rmd160_asm_src => "", + rmd160_obj => "", + shared_cflag => "", + shared_defines => [ ], + shared_extension => ".dll", + shared_extension_simple => ".dll", + shared_ldflag => "/dll", + shared_rcflag => "", + shared_target => "win-shared", + template => "1", + thread_defines => [ ], + thread_scheme => "winthreads", + unistd => "", + uplink_aux_src => "", + uplink_obj => "", + wp_asm_src => "wp_block.c", + wp_obj => "wp_block.o", +); + +our %available_protocols = ( + tls => [ "ssl3", "tls1", "tls1_1", "tls1_2", "tls1_3" ], + dtls => [ "dtls1", "dtls1_2" ], +); + +our @disablables = ( + "afalgeng", + "aria", + "asan", + "asm", + "async", + "autoalginit", + "autoerrinit", + "autoload-config", + "bf", + "blake2", + "camellia", + "capieng", + "cast", + "chacha", + "cmac", + "cms", + "comp", + "crypto-mdebug", + "crypto-mdebug-backtrace", + "ct", + "deprecated", + "des", + "devcryptoeng", + "dgram", + "dh", + "dsa", + "dso", + "dtls", + "dynamic-engine", + "ec", + "ec2m", + "ecdh", + "ecdsa", + "ec_nistp_64_gcc_128", + "egd", + "engine", + "err", + "external-tests", + "filenames", + "fuzz-libfuzzer", + "fuzz-afl", + "gost", + "heartbeats", + "hw(-.+)?", + "idea", + "makedepend", + "md2", + "md4", + "mdc2", + "msan", + "multiblock", + "nextprotoneg", + "pinshared", + "ocb", + "ocsp", + "pic", + "poly1305", + "posix-io", + "psk", + "rc2", + "rc4", + "rc5", + "rdrand", + "rfc3779", + "rmd160", + "scrypt", + "sctp", + "seed", + "shared", + "siphash", + "sm2", + "sm3", + "sm4", + "sock", + "srp", + "srtp", + "sse2", + "ssl", + "ssl-trace", + "static-engine", + "stdio", + "tests", + "threads", + "tls", + "ts", + "ubsan", + "ui-console", + "unit-test", + "whirlpool", + "weak-ssl-ciphers", + "zlib", + "zlib-dynamic", + "ssl3", + "ssl3-method", + "tls1", + "tls1-method", + "tls1_1", + "tls1_1-method", + "tls1_2", + "tls1_2-method", + "tls1_3", + "dtls1", + "dtls1-method", + "dtls1_2", + "dtls1_2-method", +); + +our %disabled = ( + "afalgeng" => "option", + "asan" => "default", + "asm" => "option", + "comp" => "option", + "crypto-mdebug" => "default", + "crypto-mdebug-backtrace" => "default", + "devcryptoeng" => "default", + "dynamic-engine" => "forced", + "ec_nistp_64_gcc_128" => "default", + "egd" => "default", + "external-tests" => "default", + "fuzz-afl" => "default", + "fuzz-libfuzzer" => "default", + "heartbeats" => "default", + "md2" => "default", + "msan" => "default", + "rc5" => "default", + "sctp" => "default", + "shared" => "option", + "ssl-trace" => "default", + "ssl3" => "default", + "ssl3-method" => "default", + "ubsan" => "default", + "unit-test" => "default", + "weak-ssl-ciphers" => "default", + "zlib" => "default", + "zlib-dynamic" => "default", +); + +our %withargs = ( +); + +our %unified_info = ( + "depends" => + { + "" => + [ + "crypto/include/internal/bn_conf.h", + "crypto/include/internal/dso_conf.h", + "include/openssl/opensslconf.h", + ], + "apps/asn1pars.o" => + [ + "apps/progs.h", + ], + "apps/ca.o" => + [ + "apps/progs.h", + ], + "apps/ciphers.o" => + [ + "apps/progs.h", + ], + "apps/cms.o" => + [ + "apps/progs.h", + ], + "apps/crl.o" => + [ + "apps/progs.h", + ], + "apps/crl2p7.o" => + [ + "apps/progs.h", + ], + "apps/dgst.o" => + [ + "apps/progs.h", + ], + "apps/dhparam.o" => + [ + "apps/progs.h", + ], + "apps/dsa.o" => + [ + "apps/progs.h", + ], + "apps/dsaparam.o" => + [ + "apps/progs.h", + ], + "apps/ec.o" => + [ + "apps/progs.h", + ], + "apps/ecparam.o" => + [ + "apps/progs.h", + ], + "apps/enc.o" => + [ + "apps/progs.h", + ], + "apps/engine.o" => + [ + "apps/progs.h", + ], + "apps/errstr.o" => + [ + "apps/progs.h", + ], + "apps/gendsa.o" => + [ + "apps/progs.h", + ], + "apps/genpkey.o" => + [ + "apps/progs.h", + ], + "apps/genrsa.o" => + [ + "apps/progs.h", + ], + "apps/nseq.o" => + [ + "apps/progs.h", + ], + "apps/ocsp.o" => + [ + "apps/progs.h", + ], + "apps/openssl" => + [ + "apps/libapps.a", + "libssl", + ], + "apps/openssl.o" => + [ + "apps/progs.h", + ], + "apps/passwd.o" => + [ + "apps/progs.h", + ], + "apps/pkcs12.o" => + [ + "apps/progs.h", + ], + "apps/pkcs7.o" => + [ + "apps/progs.h", + ], + "apps/pkcs8.o" => + [ + "apps/progs.h", + ], + "apps/pkey.o" => + [ + "apps/progs.h", + ], + "apps/pkeyparam.o" => + [ + "apps/progs.h", + ], + "apps/pkeyutl.o" => + [ + "apps/progs.h", + ], + "apps/prime.o" => + [ + "apps/progs.h", + ], + "apps/progs.h" => + [ + "configdata.pm", + ], + "apps/rand.o" => + [ + "apps/progs.h", + ], + "apps/rehash.o" => + [ + "apps/progs.h", + ], + "apps/req.o" => + [ + "apps/progs.h", + ], + "apps/rsa.o" => + [ + "apps/progs.h", + ], + "apps/rsautl.o" => + [ + "apps/progs.h", + ], + "apps/s_client.o" => + [ + "apps/progs.h", + ], + "apps/s_server.o" => + [ + "apps/progs.h", + ], + "apps/s_time.o" => + [ + "apps/progs.h", + ], + "apps/sess_id.o" => + [ + "apps/progs.h", + ], + "apps/smime.o" => + [ + "apps/progs.h", + ], + "apps/speed.o" => + [ + "apps/progs.h", + ], + "apps/spkac.o" => + [ + "apps/progs.h", + ], + "apps/srp.o" => + [ + "apps/progs.h", + ], + "apps/storeutl.o" => + [ + "apps/progs.h", + ], + "apps/ts.o" => + [ + "apps/progs.h", + ], + "apps/verify.o" => + [ + "apps/progs.h", + ], + "apps/version.o" => + [ + "apps/progs.h", + ], + "apps/x509.o" => + [ + "apps/progs.h", + ], + "crypto/aes/aes-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/aes/aesni-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/aes/aest4-sparcv9.S" => + [ + "crypto/perlasm/sparcv9_modes.pl", + ], + "crypto/aes/vpaes-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bf/bf-586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/bn-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/co-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/x86-gf2m.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/x86-mont.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/buildinf.h" => + [ + "configdata.pm", + ], + "crypto/camellia/cmll-x86.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/camellia/cmllt4-sparcv9.S" => + [ + "crypto/perlasm/sparcv9_modes.pl", + ], + "crypto/cast/cast-586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/cversion.o" => + [ + "crypto/buildinf.h", + ], + "crypto/des/crypt586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/des/des-586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/include/internal/bn_conf.h" => + [ + "configdata.pm", + ], + "crypto/include/internal/dso_conf.h" => + [ + "configdata.pm", + ], + "crypto/rc4/rc4-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/ripemd/rmd-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/sha/sha1-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/sha/sha256-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/sha/sha512-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/whrlpool/wp-mmx.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/x86cpuid.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "fuzz/asn1-test" => + [ + "libcrypto", + "libssl", + ], + "fuzz/asn1parse-test" => + [ + "libcrypto", + ], + "fuzz/bignum-test" => + [ + "libcrypto", + ], + "fuzz/bndiv-test" => + [ + "libcrypto", + ], + "fuzz/client-test" => + [ + "libcrypto", + "libssl", + ], + "fuzz/cms-test" => + [ + "libcrypto", + ], + "fuzz/conf-test" => + [ + "libcrypto", + ], + "fuzz/crl-test" => + [ + "libcrypto", + ], + "fuzz/ct-test" => + [ + "libcrypto", + ], + "fuzz/server-test" => + [ + "libcrypto", + "libssl", + ], + "fuzz/x509-test" => + [ + "libcrypto", + ], + "include/openssl/opensslconf.h" => + [ + "configdata.pm", + ], + "libcrypto.def" => + [ + "util/libcrypto.num", + ], + "libssl" => + [ + "libcrypto", + ], + "libssl.def" => + [ + "util/libssl.num", + ], + "test/aborttest" => + [ + "libcrypto", + ], + "test/afalgtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_decode_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_encode_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/asn1_string_table_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_time_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asynciotest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/asynctest" => + [ + "libcrypto", + ], + "test/bad_dtls_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/bftest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bio_callback_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bio_enc_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bio_memleak_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bioprinttest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bntest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/buildtest_aes" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_asn1" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_asn1t" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_async" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_bio" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_blowfish" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_bn" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_buffer" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_camellia" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_cast" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_cmac" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_cms" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_conf" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_conf_api" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_crypto" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ct" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_des" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_dh" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_dsa" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_dtls1" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_e_os2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ebcdic" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ec" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ecdh" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ecdsa" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_engine" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_evp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_hmac" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_idea" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_kdf" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_lhash" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_md4" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_md5" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_mdc2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_modes" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_obj_mac" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_objects" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ocsp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_opensslv" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ossl_typ" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_pem" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_pem2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_pkcs12" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_pkcs7" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_rand" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_rand_drbg" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_rc2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_rc4" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ripemd" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_rsa" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_safestack" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_seed" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_sha" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_srp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_srtp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ssl" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ssl2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_stack" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_store" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_symhacks" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_tls1" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ts" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_txt_db" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_ui" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_whrlpool" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_x509" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_x509_vfy" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_x509v3" => + [ + "libcrypto", + "libssl", + ], + "test/casttest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/chacha_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/cipher_overhead_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/cipherbytes_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/cipherlist_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ciphername_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/clienthellotest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/cmsapitest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/conf_include_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/constant_time_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/crltest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ct_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ctype_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/curve448_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/d2i_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/danetest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/destest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/dhtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/drbg_cavs_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/drbgtest" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/dsa_no_digest_size_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/dsatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/dtls_mtu_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/dtlstest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/dtlsv1listentest" => + [ + "libssl", + "test/libtestutil.a", + ], + "test/ec_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/ecdsatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ecstresstest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ectest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/enginetest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/errtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/evp_extra_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/evp_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/exdatatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/exptest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/fatalerrtest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/gmdifftest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/gosttest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/hmactest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ideatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/igetest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/lhash_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/libtestutil.a" => + [ + "libcrypto", + ], + "test/md2test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/mdc2_internal_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/mdc2test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/memleaktest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/modes_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/ocspapitest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/packettest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pbelutest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pemtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pkey_meth_kdf_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pkey_meth_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/poly1305_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/rc2test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rc4test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rc5test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rdrand_sanitytest" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/recordlentest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/rsa_mp_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rsa_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/sanitytest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/secmemtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/servername_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/siphash_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/sm2_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/sm4_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/srptest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ssl_cert_table_internal_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ssl_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ssl_test_ctx_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/sslapitest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/sslbuffertest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/sslcorrupttest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ssltest_old" => + [ + "libcrypto", + "libssl", + ], + "test/stack_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/sysdefaulttest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/test_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/threadstest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/time_offset_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/tls13ccstest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/tls13encryptiontest" => + [ + "libcrypto", + "libssl.a", + "test/libtestutil.a", + ], + "test/uitest" => + [ + "apps/libapps.a", + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/v3ext" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/v3nametest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/verify_extra_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/versions" => + [ + "libcrypto", + ], + "test/wpackettest" => + [ + "libcrypto", + "libssl.a", + "test/libtestutil.a", + ], + "test/x509_check_cert_pkey_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/x509_dup_cert_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/x509_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/x509_time_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/x509aux" => + [ + "libcrypto", + "test/libtestutil.a", + ], + }, + "dirinfo" => + { + "apps" => + { + "products" => + { + "bin" => + [ + "apps/openssl", + ], + "lib" => + [ + "apps/libapps.a", + ], + "script" => + [ + "apps/CA.pl", + "apps/tsget.pl", + ], + }, + }, + "crypto" => + { + "deps" => + [ + "crypto/cpt_err.o", + "crypto/cryptlib.o", + "crypto/ctype.o", + "crypto/cversion.o", + "crypto/ebcdic.o", + "crypto/ex_data.o", + "crypto/getenv.o", + "crypto/init.o", + "crypto/mem.o", + "crypto/mem_clr.o", + "crypto/mem_dbg.o", + "crypto/mem_sec.o", + "crypto/o_dir.o", + "crypto/o_fips.o", + "crypto/o_fopen.o", + "crypto/o_init.o", + "crypto/o_str.o", + "crypto/o_time.o", + "crypto/threads_none.o", + "crypto/threads_pthread.o", + "crypto/threads_win.o", + "crypto/uid.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/aes" => + { + "deps" => + [ + "crypto/aes/aes_cbc.o", + "crypto/aes/aes_cfb.o", + "crypto/aes/aes_core.o", + "crypto/aes/aes_ecb.o", + "crypto/aes/aes_ige.o", + "crypto/aes/aes_misc.o", + "crypto/aes/aes_ofb.o", + "crypto/aes/aes_wrap.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/aria" => + { + "deps" => + [ + "crypto/aria/aria.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/asn1" => + { + "deps" => + [ + "crypto/asn1/a_bitstr.o", + "crypto/asn1/a_d2i_fp.o", + "crypto/asn1/a_digest.o", + "crypto/asn1/a_dup.o", + "crypto/asn1/a_gentm.o", + "crypto/asn1/a_i2d_fp.o", + "crypto/asn1/a_int.o", + "crypto/asn1/a_mbstr.o", + "crypto/asn1/a_object.o", + "crypto/asn1/a_octet.o", + "crypto/asn1/a_print.o", + "crypto/asn1/a_sign.o", + "crypto/asn1/a_strex.o", + "crypto/asn1/a_strnid.o", + "crypto/asn1/a_time.o", + "crypto/asn1/a_type.o", + "crypto/asn1/a_utctm.o", + "crypto/asn1/a_utf8.o", + "crypto/asn1/a_verify.o", + "crypto/asn1/ameth_lib.o", + "crypto/asn1/asn1_err.o", + "crypto/asn1/asn1_gen.o", + "crypto/asn1/asn1_item_list.o", + "crypto/asn1/asn1_lib.o", + "crypto/asn1/asn1_par.o", + "crypto/asn1/asn_mime.o", + "crypto/asn1/asn_moid.o", + "crypto/asn1/asn_mstbl.o", + "crypto/asn1/asn_pack.o", + "crypto/asn1/bio_asn1.o", + "crypto/asn1/bio_ndef.o", + "crypto/asn1/d2i_pr.o", + "crypto/asn1/d2i_pu.o", + "crypto/asn1/evp_asn1.o", + "crypto/asn1/f_int.o", + "crypto/asn1/f_string.o", + "crypto/asn1/i2d_pr.o", + "crypto/asn1/i2d_pu.o", + "crypto/asn1/n_pkey.o", + "crypto/asn1/nsseq.o", + "crypto/asn1/p5_pbe.o", + "crypto/asn1/p5_pbev2.o", + "crypto/asn1/p5_scrypt.o", + "crypto/asn1/p8_pkey.o", + "crypto/asn1/t_bitst.o", + "crypto/asn1/t_pkey.o", + "crypto/asn1/t_spki.o", + "crypto/asn1/tasn_dec.o", + "crypto/asn1/tasn_enc.o", + "crypto/asn1/tasn_fre.o", + "crypto/asn1/tasn_new.o", + "crypto/asn1/tasn_prn.o", + "crypto/asn1/tasn_scn.o", + "crypto/asn1/tasn_typ.o", + "crypto/asn1/tasn_utl.o", + "crypto/asn1/x_algor.o", + "crypto/asn1/x_bignum.o", + "crypto/asn1/x_info.o", + "crypto/asn1/x_int64.o", + "crypto/asn1/x_long.o", + "crypto/asn1/x_pkey.o", + "crypto/asn1/x_sig.o", + "crypto/asn1/x_spki.o", + "crypto/asn1/x_val.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/async" => + { + "deps" => + [ + "crypto/async/async.o", + "crypto/async/async_err.o", + "crypto/async/async_wait.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/async/arch" => + { + "deps" => + [ + "crypto/async/arch/async_null.o", + "crypto/async/arch/async_posix.o", + "crypto/async/arch/async_win.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/bf" => + { + "deps" => + [ + "crypto/bf/bf_cfb64.o", + "crypto/bf/bf_ecb.o", + "crypto/bf/bf_enc.o", + "crypto/bf/bf_ofb64.o", + "crypto/bf/bf_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/bio" => + { + "deps" => + [ + "crypto/bio/b_addr.o", + "crypto/bio/b_dump.o", + "crypto/bio/b_print.o", + "crypto/bio/b_sock.o", + "crypto/bio/b_sock2.o", + "crypto/bio/bf_buff.o", + "crypto/bio/bf_lbuf.o", + "crypto/bio/bf_nbio.o", + "crypto/bio/bf_null.o", + "crypto/bio/bio_cb.o", + "crypto/bio/bio_err.o", + "crypto/bio/bio_lib.o", + "crypto/bio/bio_meth.o", + "crypto/bio/bss_acpt.o", + "crypto/bio/bss_bio.o", + "crypto/bio/bss_conn.o", + "crypto/bio/bss_dgram.o", + "crypto/bio/bss_fd.o", + "crypto/bio/bss_file.o", + "crypto/bio/bss_log.o", + "crypto/bio/bss_mem.o", + "crypto/bio/bss_null.o", + "crypto/bio/bss_sock.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/blake2" => + { + "deps" => + [ + "crypto/blake2/blake2b.o", + "crypto/blake2/blake2s.o", + "crypto/blake2/m_blake2b.o", + "crypto/blake2/m_blake2s.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/bn" => + { + "deps" => + [ + "crypto/bn/bn_add.o", + "crypto/bn/bn_asm.o", + "crypto/bn/bn_blind.o", + "crypto/bn/bn_const.o", + "crypto/bn/bn_ctx.o", + "crypto/bn/bn_depr.o", + "crypto/bn/bn_dh.o", + "crypto/bn/bn_div.o", + "crypto/bn/bn_err.o", + "crypto/bn/bn_exp.o", + "crypto/bn/bn_exp2.o", + "crypto/bn/bn_gcd.o", + "crypto/bn/bn_gf2m.o", + "crypto/bn/bn_intern.o", + "crypto/bn/bn_kron.o", + "crypto/bn/bn_lib.o", + "crypto/bn/bn_mod.o", + "crypto/bn/bn_mont.o", + "crypto/bn/bn_mpi.o", + "crypto/bn/bn_mul.o", + "crypto/bn/bn_nist.o", + "crypto/bn/bn_prime.o", + "crypto/bn/bn_print.o", + "crypto/bn/bn_rand.o", + "crypto/bn/bn_recp.o", + "crypto/bn/bn_shift.o", + "crypto/bn/bn_sqr.o", + "crypto/bn/bn_sqrt.o", + "crypto/bn/bn_srp.o", + "crypto/bn/bn_word.o", + "crypto/bn/bn_x931p.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/buffer" => + { + "deps" => + [ + "crypto/buffer/buf_err.o", + "crypto/buffer/buffer.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/camellia" => + { + "deps" => + [ + "crypto/camellia/camellia.o", + "crypto/camellia/cmll_cbc.o", + "crypto/camellia/cmll_cfb.o", + "crypto/camellia/cmll_ctr.o", + "crypto/camellia/cmll_ecb.o", + "crypto/camellia/cmll_misc.o", + "crypto/camellia/cmll_ofb.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/cast" => + { + "deps" => + [ + "crypto/cast/c_cfb64.o", + "crypto/cast/c_ecb.o", + "crypto/cast/c_enc.o", + "crypto/cast/c_ofb64.o", + "crypto/cast/c_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/chacha" => + { + "deps" => + [ + "crypto/chacha/chacha_enc.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/cmac" => + { + "deps" => + [ + "crypto/cmac/cm_ameth.o", + "crypto/cmac/cm_pmeth.o", + "crypto/cmac/cmac.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/cms" => + { + "deps" => + [ + "crypto/cms/cms_asn1.o", + "crypto/cms/cms_att.o", + "crypto/cms/cms_cd.o", + "crypto/cms/cms_dd.o", + "crypto/cms/cms_enc.o", + "crypto/cms/cms_env.o", + "crypto/cms/cms_err.o", + "crypto/cms/cms_ess.o", + "crypto/cms/cms_io.o", + "crypto/cms/cms_kari.o", + "crypto/cms/cms_lib.o", + "crypto/cms/cms_pwri.o", + "crypto/cms/cms_sd.o", + "crypto/cms/cms_smime.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/conf" => + { + "deps" => + [ + "crypto/conf/conf_api.o", + "crypto/conf/conf_def.o", + "crypto/conf/conf_err.o", + "crypto/conf/conf_lib.o", + "crypto/conf/conf_mall.o", + "crypto/conf/conf_mod.o", + "crypto/conf/conf_sap.o", + "crypto/conf/conf_ssl.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ct" => + { + "deps" => + [ + "crypto/ct/ct_b64.o", + "crypto/ct/ct_err.o", + "crypto/ct/ct_log.o", + "crypto/ct/ct_oct.o", + "crypto/ct/ct_policy.o", + "crypto/ct/ct_prn.o", + "crypto/ct/ct_sct.o", + "crypto/ct/ct_sct_ctx.o", + "crypto/ct/ct_vfy.o", + "crypto/ct/ct_x509v3.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/des" => + { + "deps" => + [ + "crypto/des/cbc_cksm.o", + "crypto/des/cbc_enc.o", + "crypto/des/cfb64ede.o", + "crypto/des/cfb64enc.o", + "crypto/des/cfb_enc.o", + "crypto/des/des_enc.o", + "crypto/des/ecb3_enc.o", + "crypto/des/ecb_enc.o", + "crypto/des/fcrypt.o", + "crypto/des/fcrypt_b.o", + "crypto/des/ofb64ede.o", + "crypto/des/ofb64enc.o", + "crypto/des/ofb_enc.o", + "crypto/des/pcbc_enc.o", + "crypto/des/qud_cksm.o", + "crypto/des/rand_key.o", + "crypto/des/set_key.o", + "crypto/des/str2key.o", + "crypto/des/xcbc_enc.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/dh" => + { + "deps" => + [ + "crypto/dh/dh_ameth.o", + "crypto/dh/dh_asn1.o", + "crypto/dh/dh_check.o", + "crypto/dh/dh_depr.o", + "crypto/dh/dh_err.o", + "crypto/dh/dh_gen.o", + "crypto/dh/dh_kdf.o", + "crypto/dh/dh_key.o", + "crypto/dh/dh_lib.o", + "crypto/dh/dh_meth.o", + "crypto/dh/dh_pmeth.o", + "crypto/dh/dh_prn.o", + "crypto/dh/dh_rfc5114.o", + "crypto/dh/dh_rfc7919.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/dsa" => + { + "deps" => + [ + "crypto/dsa/dsa_ameth.o", + "crypto/dsa/dsa_asn1.o", + "crypto/dsa/dsa_depr.o", + "crypto/dsa/dsa_err.o", + "crypto/dsa/dsa_gen.o", + "crypto/dsa/dsa_key.o", + "crypto/dsa/dsa_lib.o", + "crypto/dsa/dsa_meth.o", + "crypto/dsa/dsa_ossl.o", + "crypto/dsa/dsa_pmeth.o", + "crypto/dsa/dsa_prn.o", + "crypto/dsa/dsa_sign.o", + "crypto/dsa/dsa_vrf.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/dso" => + { + "deps" => + [ + "crypto/dso/dso_dl.o", + "crypto/dso/dso_dlfcn.o", + "crypto/dso/dso_err.o", + "crypto/dso/dso_lib.o", + "crypto/dso/dso_openssl.o", + "crypto/dso/dso_vms.o", + "crypto/dso/dso_win32.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ec" => + { + "deps" => + [ + "crypto/ec/curve25519.o", + "crypto/ec/ec2_oct.o", + "crypto/ec/ec2_smpl.o", + "crypto/ec/ec_ameth.o", + "crypto/ec/ec_asn1.o", + "crypto/ec/ec_check.o", + "crypto/ec/ec_curve.o", + "crypto/ec/ec_cvt.o", + "crypto/ec/ec_err.o", + "crypto/ec/ec_key.o", + "crypto/ec/ec_kmeth.o", + "crypto/ec/ec_lib.o", + "crypto/ec/ec_mult.o", + "crypto/ec/ec_oct.o", + "crypto/ec/ec_pmeth.o", + "crypto/ec/ec_print.o", + "crypto/ec/ecdh_kdf.o", + "crypto/ec/ecdh_ossl.o", + "crypto/ec/ecdsa_ossl.o", + "crypto/ec/ecdsa_sign.o", + "crypto/ec/ecdsa_vrf.o", + "crypto/ec/eck_prn.o", + "crypto/ec/ecp_mont.o", + "crypto/ec/ecp_nist.o", + "crypto/ec/ecp_nistp224.o", + "crypto/ec/ecp_nistp256.o", + "crypto/ec/ecp_nistp521.o", + "crypto/ec/ecp_nistputil.o", + "crypto/ec/ecp_oct.o", + "crypto/ec/ecp_smpl.o", + "crypto/ec/ecx_meth.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ec/curve448" => + { + "deps" => + [ + "crypto/ec/curve448/curve448.o", + "crypto/ec/curve448/curve448_tables.o", + "crypto/ec/curve448/eddsa.o", + "crypto/ec/curve448/f_generic.o", + "crypto/ec/curve448/scalar.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ec/curve448/arch_32" => + { + "deps" => + [ + "crypto/ec/curve448/arch_32/f_impl.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/engine" => + { + "deps" => + [ + "crypto/engine/eng_all.o", + "crypto/engine/eng_cnf.o", + "crypto/engine/eng_ctrl.o", + "crypto/engine/eng_dyn.o", + "crypto/engine/eng_err.o", + "crypto/engine/eng_fat.o", + "crypto/engine/eng_init.o", + "crypto/engine/eng_lib.o", + "crypto/engine/eng_list.o", + "crypto/engine/eng_openssl.o", + "crypto/engine/eng_pkey.o", + "crypto/engine/eng_rdrand.o", + "crypto/engine/eng_table.o", + "crypto/engine/tb_asnmth.o", + "crypto/engine/tb_cipher.o", + "crypto/engine/tb_dh.o", + "crypto/engine/tb_digest.o", + "crypto/engine/tb_dsa.o", + "crypto/engine/tb_eckey.o", + "crypto/engine/tb_pkmeth.o", + "crypto/engine/tb_rand.o", + "crypto/engine/tb_rsa.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/err" => + { + "deps" => + [ + "crypto/err/err.o", + "crypto/err/err_all.o", + "crypto/err/err_prn.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/evp" => + { + "deps" => + [ + "crypto/evp/bio_b64.o", + "crypto/evp/bio_enc.o", + "crypto/evp/bio_md.o", + "crypto/evp/bio_ok.o", + "crypto/evp/c_allc.o", + "crypto/evp/c_alld.o", + "crypto/evp/cmeth_lib.o", + "crypto/evp/digest.o", + "crypto/evp/e_aes.o", + "crypto/evp/e_aes_cbc_hmac_sha1.o", + "crypto/evp/e_aes_cbc_hmac_sha256.o", + "crypto/evp/e_aria.o", + "crypto/evp/e_bf.o", + "crypto/evp/e_camellia.o", + "crypto/evp/e_cast.o", + "crypto/evp/e_chacha20_poly1305.o", + "crypto/evp/e_des.o", + "crypto/evp/e_des3.o", + "crypto/evp/e_idea.o", + "crypto/evp/e_null.o", + "crypto/evp/e_old.o", + "crypto/evp/e_rc2.o", + "crypto/evp/e_rc4.o", + "crypto/evp/e_rc4_hmac_md5.o", + "crypto/evp/e_rc5.o", + "crypto/evp/e_seed.o", + "crypto/evp/e_sm4.o", + "crypto/evp/e_xcbc_d.o", + "crypto/evp/encode.o", + "crypto/evp/evp_cnf.o", + "crypto/evp/evp_enc.o", + "crypto/evp/evp_err.o", + "crypto/evp/evp_key.o", + "crypto/evp/evp_lib.o", + "crypto/evp/evp_pbe.o", + "crypto/evp/evp_pkey.o", + "crypto/evp/m_md2.o", + "crypto/evp/m_md4.o", + "crypto/evp/m_md5.o", + "crypto/evp/m_md5_sha1.o", + "crypto/evp/m_mdc2.o", + "crypto/evp/m_null.o", + "crypto/evp/m_ripemd.o", + "crypto/evp/m_sha1.o", + "crypto/evp/m_sha3.o", + "crypto/evp/m_sigver.o", + "crypto/evp/m_wp.o", + "crypto/evp/names.o", + "crypto/evp/p5_crpt.o", + "crypto/evp/p5_crpt2.o", + "crypto/evp/p_dec.o", + "crypto/evp/p_enc.o", + "crypto/evp/p_lib.o", + "crypto/evp/p_open.o", + "crypto/evp/p_seal.o", + "crypto/evp/p_sign.o", + "crypto/evp/p_verify.o", + "crypto/evp/pbe_scrypt.o", + "crypto/evp/pmeth_fn.o", + "crypto/evp/pmeth_gn.o", + "crypto/evp/pmeth_lib.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/hmac" => + { + "deps" => + [ + "crypto/hmac/hm_ameth.o", + "crypto/hmac/hm_pmeth.o", + "crypto/hmac/hmac.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/idea" => + { + "deps" => + [ + "crypto/idea/i_cbc.o", + "crypto/idea/i_cfb64.o", + "crypto/idea/i_ecb.o", + "crypto/idea/i_ofb64.o", + "crypto/idea/i_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/kdf" => + { + "deps" => + [ + "crypto/kdf/hkdf.o", + "crypto/kdf/kdf_err.o", + "crypto/kdf/scrypt.o", + "crypto/kdf/tls1_prf.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/lhash" => + { + "deps" => + [ + "crypto/lhash/lh_stats.o", + "crypto/lhash/lhash.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/md4" => + { + "deps" => + [ + "crypto/md4/md4_dgst.o", + "crypto/md4/md4_one.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/md5" => + { + "deps" => + [ + "crypto/md5/md5_dgst.o", + "crypto/md5/md5_one.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/mdc2" => + { + "deps" => + [ + "crypto/mdc2/mdc2_one.o", + "crypto/mdc2/mdc2dgst.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/modes" => + { + "deps" => + [ + "crypto/modes/cbc128.o", + "crypto/modes/ccm128.o", + "crypto/modes/cfb128.o", + "crypto/modes/ctr128.o", + "crypto/modes/cts128.o", + "crypto/modes/gcm128.o", + "crypto/modes/ocb128.o", + "crypto/modes/ofb128.o", + "crypto/modes/wrap128.o", + "crypto/modes/xts128.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/objects" => + { + "deps" => + [ + "crypto/objects/o_names.o", + "crypto/objects/obj_dat.o", + "crypto/objects/obj_err.o", + "crypto/objects/obj_lib.o", + "crypto/objects/obj_xref.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ocsp" => + { + "deps" => + [ + "crypto/ocsp/ocsp_asn.o", + "crypto/ocsp/ocsp_cl.o", + "crypto/ocsp/ocsp_err.o", + "crypto/ocsp/ocsp_ext.o", + "crypto/ocsp/ocsp_ht.o", + "crypto/ocsp/ocsp_lib.o", + "crypto/ocsp/ocsp_prn.o", + "crypto/ocsp/ocsp_srv.o", + "crypto/ocsp/ocsp_vfy.o", + "crypto/ocsp/v3_ocsp.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/pem" => + { + "deps" => + [ + "crypto/pem/pem_all.o", + "crypto/pem/pem_err.o", + "crypto/pem/pem_info.o", + "crypto/pem/pem_lib.o", + "crypto/pem/pem_oth.o", + "crypto/pem/pem_pk8.o", + "crypto/pem/pem_pkey.o", + "crypto/pem/pem_sign.o", + "crypto/pem/pem_x509.o", + "crypto/pem/pem_xaux.o", + "crypto/pem/pvkfmt.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/pkcs12" => + { + "deps" => + [ + "crypto/pkcs12/p12_add.o", + "crypto/pkcs12/p12_asn.o", + "crypto/pkcs12/p12_attr.o", + "crypto/pkcs12/p12_crpt.o", + "crypto/pkcs12/p12_crt.o", + "crypto/pkcs12/p12_decr.o", + "crypto/pkcs12/p12_init.o", + "crypto/pkcs12/p12_key.o", + "crypto/pkcs12/p12_kiss.o", + "crypto/pkcs12/p12_mutl.o", + "crypto/pkcs12/p12_npas.o", + "crypto/pkcs12/p12_p8d.o", + "crypto/pkcs12/p12_p8e.o", + "crypto/pkcs12/p12_sbag.o", + "crypto/pkcs12/p12_utl.o", + "crypto/pkcs12/pk12err.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/pkcs7" => + { + "deps" => + [ + "crypto/pkcs7/bio_pk7.o", + "crypto/pkcs7/pk7_asn1.o", + "crypto/pkcs7/pk7_attr.o", + "crypto/pkcs7/pk7_doit.o", + "crypto/pkcs7/pk7_lib.o", + "crypto/pkcs7/pk7_mime.o", + "crypto/pkcs7/pk7_smime.o", + "crypto/pkcs7/pkcs7err.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/poly1305" => + { + "deps" => + [ + "crypto/poly1305/poly1305.o", + "crypto/poly1305/poly1305_ameth.o", + "crypto/poly1305/poly1305_pmeth.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rand" => + { + "deps" => + [ + "crypto/rand/drbg_ctr.o", + "crypto/rand/drbg_lib.o", + "crypto/rand/rand_egd.o", + "crypto/rand/rand_err.o", + "crypto/rand/rand_lib.o", + "crypto/rand/rand_unix.o", + "crypto/rand/rand_vms.o", + "crypto/rand/rand_win.o", + "crypto/rand/randfile.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rc2" => + { + "deps" => + [ + "crypto/rc2/rc2_cbc.o", + "crypto/rc2/rc2_ecb.o", + "crypto/rc2/rc2_skey.o", + "crypto/rc2/rc2cfb64.o", + "crypto/rc2/rc2ofb64.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rc4" => + { + "deps" => + [ + "crypto/rc4/rc4_enc.o", + "crypto/rc4/rc4_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ripemd" => + { + "deps" => + [ + "crypto/ripemd/rmd_dgst.o", + "crypto/ripemd/rmd_one.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rsa" => + { + "deps" => + [ + "crypto/rsa/rsa_ameth.o", + "crypto/rsa/rsa_asn1.o", + "crypto/rsa/rsa_chk.o", + "crypto/rsa/rsa_crpt.o", + "crypto/rsa/rsa_depr.o", + "crypto/rsa/rsa_err.o", + "crypto/rsa/rsa_gen.o", + "crypto/rsa/rsa_lib.o", + "crypto/rsa/rsa_meth.o", + "crypto/rsa/rsa_mp.o", + "crypto/rsa/rsa_none.o", + "crypto/rsa/rsa_oaep.o", + "crypto/rsa/rsa_ossl.o", + "crypto/rsa/rsa_pk1.o", + "crypto/rsa/rsa_pmeth.o", + "crypto/rsa/rsa_prn.o", + "crypto/rsa/rsa_pss.o", + "crypto/rsa/rsa_saos.o", + "crypto/rsa/rsa_sign.o", + "crypto/rsa/rsa_ssl.o", + "crypto/rsa/rsa_x931.o", + "crypto/rsa/rsa_x931g.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/seed" => + { + "deps" => + [ + "crypto/seed/seed.o", + "crypto/seed/seed_cbc.o", + "crypto/seed/seed_cfb.o", + "crypto/seed/seed_ecb.o", + "crypto/seed/seed_ofb.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sha" => + { + "deps" => + [ + "crypto/sha/keccak1600.o", + "crypto/sha/sha1_one.o", + "crypto/sha/sha1dgst.o", + "crypto/sha/sha256.o", + "crypto/sha/sha512.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/siphash" => + { + "deps" => + [ + "crypto/siphash/siphash.o", + "crypto/siphash/siphash_ameth.o", + "crypto/siphash/siphash_pmeth.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sm2" => + { + "deps" => + [ + "crypto/sm2/sm2_crypt.o", + "crypto/sm2/sm2_err.o", + "crypto/sm2/sm2_pmeth.o", + "crypto/sm2/sm2_sign.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sm3" => + { + "deps" => + [ + "crypto/sm3/m_sm3.o", + "crypto/sm3/sm3.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sm4" => + { + "deps" => + [ + "crypto/sm4/sm4.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/srp" => + { + "deps" => + [ + "crypto/srp/srp_lib.o", + "crypto/srp/srp_vfy.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/stack" => + { + "deps" => + [ + "crypto/stack/stack.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/store" => + { + "deps" => + [ + "crypto/store/loader_file.o", + "crypto/store/store_err.o", + "crypto/store/store_init.o", + "crypto/store/store_lib.o", + "crypto/store/store_register.o", + "crypto/store/store_strings.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ts" => + { + "deps" => + [ + "crypto/ts/ts_asn1.o", + "crypto/ts/ts_conf.o", + "crypto/ts/ts_err.o", + "crypto/ts/ts_lib.o", + "crypto/ts/ts_req_print.o", + "crypto/ts/ts_req_utils.o", + "crypto/ts/ts_rsp_print.o", + "crypto/ts/ts_rsp_sign.o", + "crypto/ts/ts_rsp_utils.o", + "crypto/ts/ts_rsp_verify.o", + "crypto/ts/ts_verify_ctx.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/txt_db" => + { + "deps" => + [ + "crypto/txt_db/txt_db.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ui" => + { + "deps" => + [ + "crypto/ui/ui_err.o", + "crypto/ui/ui_lib.o", + "crypto/ui/ui_null.o", + "crypto/ui/ui_openssl.o", + "crypto/ui/ui_util.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/whrlpool" => + { + "deps" => + [ + "crypto/whrlpool/wp_block.o", + "crypto/whrlpool/wp_dgst.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/x509" => + { + "deps" => + [ + "crypto/x509/by_dir.o", + "crypto/x509/by_file.o", + "crypto/x509/t_crl.o", + "crypto/x509/t_req.o", + "crypto/x509/t_x509.o", + "crypto/x509/x509_att.o", + "crypto/x509/x509_cmp.o", + "crypto/x509/x509_d2.o", + "crypto/x509/x509_def.o", + "crypto/x509/x509_err.o", + "crypto/x509/x509_ext.o", + "crypto/x509/x509_lu.o", + "crypto/x509/x509_meth.o", + "crypto/x509/x509_obj.o", + "crypto/x509/x509_r2x.o", + "crypto/x509/x509_req.o", + "crypto/x509/x509_set.o", + "crypto/x509/x509_trs.o", + "crypto/x509/x509_txt.o", + "crypto/x509/x509_v3.o", + "crypto/x509/x509_vfy.o", + "crypto/x509/x509_vpm.o", + "crypto/x509/x509cset.o", + "crypto/x509/x509name.o", + "crypto/x509/x509rset.o", + "crypto/x509/x509spki.o", + "crypto/x509/x509type.o", + "crypto/x509/x_all.o", + "crypto/x509/x_attrib.o", + "crypto/x509/x_crl.o", + "crypto/x509/x_exten.o", + "crypto/x509/x_name.o", + "crypto/x509/x_pubkey.o", + "crypto/x509/x_req.o", + "crypto/x509/x_x509.o", + "crypto/x509/x_x509a.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/x509v3" => + { + "deps" => + [ + "crypto/x509v3/pcy_cache.o", + "crypto/x509v3/pcy_data.o", + "crypto/x509v3/pcy_lib.o", + "crypto/x509v3/pcy_map.o", + "crypto/x509v3/pcy_node.o", + "crypto/x509v3/pcy_tree.o", + "crypto/x509v3/v3_addr.o", + "crypto/x509v3/v3_admis.o", + "crypto/x509v3/v3_akey.o", + "crypto/x509v3/v3_akeya.o", + "crypto/x509v3/v3_alt.o", + "crypto/x509v3/v3_asid.o", + "crypto/x509v3/v3_bcons.o", + "crypto/x509v3/v3_bitst.o", + "crypto/x509v3/v3_conf.o", + "crypto/x509v3/v3_cpols.o", + "crypto/x509v3/v3_crld.o", + "crypto/x509v3/v3_enum.o", + "crypto/x509v3/v3_extku.o", + "crypto/x509v3/v3_genn.o", + "crypto/x509v3/v3_ia5.o", + "crypto/x509v3/v3_info.o", + "crypto/x509v3/v3_int.o", + "crypto/x509v3/v3_lib.o", + "crypto/x509v3/v3_ncons.o", + "crypto/x509v3/v3_pci.o", + "crypto/x509v3/v3_pcia.o", + "crypto/x509v3/v3_pcons.o", + "crypto/x509v3/v3_pku.o", + "crypto/x509v3/v3_pmaps.o", + "crypto/x509v3/v3_prn.o", + "crypto/x509v3/v3_purp.o", + "crypto/x509v3/v3_skey.o", + "crypto/x509v3/v3_sxnet.o", + "crypto/x509v3/v3_tlsf.o", + "crypto/x509v3/v3_utl.o", + "crypto/x509v3/v3err.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "engines" => + { + "deps" => + [ + "engines/e_capi.o", + "engines/e_padlock.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "fuzz" => + { + "products" => + { + "bin" => + [ + "fuzz/asn1-test", + "fuzz/asn1parse-test", + "fuzz/bignum-test", + "fuzz/bndiv-test", + "fuzz/client-test", + "fuzz/cms-test", + "fuzz/conf-test", + "fuzz/crl-test", + "fuzz/ct-test", + "fuzz/server-test", + "fuzz/x509-test", + ], + }, + }, + "ssl" => + { + "deps" => + [ + "ssl/bio_ssl.o", + "ssl/d1_lib.o", + "ssl/d1_msg.o", + "ssl/d1_srtp.o", + "ssl/methods.o", + "ssl/packet.o", + "ssl/pqueue.o", + "ssl/s3_cbc.o", + "ssl/s3_enc.o", + "ssl/s3_lib.o", + "ssl/s3_msg.o", + "ssl/ssl_asn1.o", + "ssl/ssl_cert.o", + "ssl/ssl_ciph.o", + "ssl/ssl_conf.o", + "ssl/ssl_err.o", + "ssl/ssl_init.o", + "ssl/ssl_lib.o", + "ssl/ssl_mcnf.o", + "ssl/ssl_rsa.o", + "ssl/ssl_sess.o", + "ssl/ssl_stat.o", + "ssl/ssl_txt.o", + "ssl/ssl_utst.o", + "ssl/t1_enc.o", + "ssl/t1_lib.o", + "ssl/t1_trce.o", + "ssl/tls13_enc.o", + "ssl/tls_srp.o", + ], + "products" => + { + "lib" => + [ + "libssl", + ], + }, + }, + "ssl/record" => + { + "deps" => + [ + "ssl/record/dtls1_bitmap.o", + "ssl/record/rec_layer_d1.o", + "ssl/record/rec_layer_s3.o", + "ssl/record/ssl3_buffer.o", + "ssl/record/ssl3_record.o", + "ssl/record/ssl3_record_tls13.o", + ], + "products" => + { + "lib" => + [ + "libssl", + ], + }, + }, + "ssl/statem" => + { + "deps" => + [ + "ssl/statem/extensions.o", + "ssl/statem/extensions_clnt.o", + "ssl/statem/extensions_cust.o", + "ssl/statem/extensions_srvr.o", + "ssl/statem/statem.o", + "ssl/statem/statem_clnt.o", + "ssl/statem/statem_dtls.o", + "ssl/statem/statem_lib.o", + "ssl/statem/statem_srvr.o", + ], + "products" => + { + "lib" => + [ + "libssl", + ], + }, + }, + "test/testutil" => + { + "deps" => + [ + "test/testutil/basic_output.o", + "test/testutil/cb.o", + "test/testutil/driver.o", + "test/testutil/format_output.o", + "test/testutil/init.o", + "test/testutil/main.o", + "test/testutil/output_helpers.o", + "test/testutil/stanza.o", + "test/testutil/tap_bio.o", + "test/testutil/test_cleanup.o", + "test/testutil/tests.o", + ], + "products" => + { + "lib" => + [ + "test/libtestutil.a", + ], + }, + }, + "tools" => + { + "products" => + { + "script" => + [ + "tools/c_rehash.pl", + ], + }, + }, + }, + "engines" => + [ + ], + "extra" => + [ + "crypto/alphacpuid.pl", + "crypto/arm64cpuid.pl", + "crypto/armv4cpuid.pl", + "crypto/ia64cpuid.S", + "crypto/pariscid.pl", + "crypto/ppccpuid.pl", + "crypto/x86_64cpuid.pl", + "crypto/x86cpuid.pl", + "ms/applink.c", + "ms/uplink-x86.pl", + "ms/uplink.c", + ], + "generate" => + { + "apps/openssl.rc" => + [ + "util/mkrc.pl", + "openssl", + ], + "apps/progs.h" => + [ + "apps/progs.pl", + "\$(APPS_OPENSSL)", + ], + "crypto/aes/aes-586.s" => + [ + "crypto/aes/asm/aes-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/aes/aes-armv4.S" => + [ + "crypto/aes/asm/aes-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-ia64.s" => + [ + "crypto/aes/asm/aes-ia64.S", + ], + "crypto/aes/aes-mips.S" => + [ + "crypto/aes/asm/aes-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-parisc.s" => + [ + "crypto/aes/asm/aes-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-ppc.s" => + [ + "crypto/aes/asm/aes-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-s390x.S" => + [ + "crypto/aes/asm/aes-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-sparcv9.S" => + [ + "crypto/aes/asm/aes-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-x86_64.s" => + [ + "crypto/aes/asm/aes-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesfx-sparcv9.S" => + [ + "crypto/aes/asm/aesfx-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-mb-x86_64.s" => + [ + "crypto/aes/asm/aesni-mb-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-sha1-x86_64.s" => + [ + "crypto/aes/asm/aesni-sha1-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-sha256-x86_64.s" => + [ + "crypto/aes/asm/aesni-sha256-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-x86.s" => + [ + "crypto/aes/asm/aesni-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/aes/aesni-x86_64.s" => + [ + "crypto/aes/asm/aesni-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesp8-ppc.s" => + [ + "crypto/aes/asm/aesp8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aest4-sparcv9.S" => + [ + "crypto/aes/asm/aest4-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesv8-armx.S" => + [ + "crypto/aes/asm/aesv8-armx.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/bsaes-armv7.S" => + [ + "crypto/aes/asm/bsaes-armv7.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/bsaes-x86_64.s" => + [ + "crypto/aes/asm/bsaes-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/vpaes-armv8.S" => + [ + "crypto/aes/asm/vpaes-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/vpaes-ppc.s" => + [ + "crypto/aes/asm/vpaes-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/vpaes-x86.s" => + [ + "crypto/aes/asm/vpaes-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/aes/vpaes-x86_64.s" => + [ + "crypto/aes/asm/vpaes-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/alphacpuid.s" => + [ + "crypto/alphacpuid.pl", + ], + "crypto/arm64cpuid.S" => + [ + "crypto/arm64cpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/armv4cpuid.S" => + [ + "crypto/armv4cpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bf/bf-586.s" => + [ + "crypto/bf/asm/bf-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/alpha-mont.S" => + [ + "crypto/bn/asm/alpha-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/armv4-gf2m.S" => + [ + "crypto/bn/asm/armv4-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/armv4-mont.S" => + [ + "crypto/bn/asm/armv4-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/armv8-mont.S" => + [ + "crypto/bn/asm/armv8-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/bn-586.s" => + [ + "crypto/bn/asm/bn-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/bn-ia64.s" => + [ + "crypto/bn/asm/ia64.S", + ], + "crypto/bn/bn-mips.S" => + [ + "crypto/bn/asm/mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/bn-ppc.s" => + [ + "crypto/bn/asm/ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/co-586.s" => + [ + "crypto/bn/asm/co-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/ia64-mont.s" => + [ + "crypto/bn/asm/ia64-mont.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/bn/mips-mont.S" => + [ + "crypto/bn/asm/mips-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/parisc-mont.s" => + [ + "crypto/bn/asm/parisc-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/ppc-mont.s" => + [ + "crypto/bn/asm/ppc-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/ppc64-mont.s" => + [ + "crypto/bn/asm/ppc64-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/rsaz-avx2.s" => + [ + "crypto/bn/asm/rsaz-avx2.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/rsaz-x86_64.s" => + [ + "crypto/bn/asm/rsaz-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/s390x-gf2m.s" => + [ + "crypto/bn/asm/s390x-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/s390x-mont.S" => + [ + "crypto/bn/asm/s390x-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparct4-mont.S" => + [ + "crypto/bn/asm/sparct4-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparcv9-gf2m.S" => + [ + "crypto/bn/asm/sparcv9-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparcv9-mont.S" => + [ + "crypto/bn/asm/sparcv9-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparcv9a-mont.S" => + [ + "crypto/bn/asm/sparcv9a-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/vis3-mont.S" => + [ + "crypto/bn/asm/vis3-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/x86-gf2m.s" => + [ + "crypto/bn/asm/x86-gf2m.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/x86-mont.s" => + [ + "crypto/bn/asm/x86-mont.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/x86_64-gf2m.s" => + [ + "crypto/bn/asm/x86_64-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/x86_64-mont.s" => + [ + "crypto/bn/asm/x86_64-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/x86_64-mont5.s" => + [ + "crypto/bn/asm/x86_64-mont5.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/buildinf.h" => + [ + "util/mkbuildinf.pl", + "\"\$(CC)", + "\$(LIB_CFLAGS)", + "\$(CPPFLAGS_Q)\"", + "\"\$(PLATFORM)\"", + ], + "crypto/camellia/cmll-x86.s" => + [ + "crypto/camellia/asm/cmll-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/camellia/cmll-x86_64.s" => + [ + "crypto/camellia/asm/cmll-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/camellia/cmllt4-sparcv9.S" => + [ + "crypto/camellia/asm/cmllt4-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/cast/cast-586.s" => + [ + "crypto/cast/asm/cast-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/chacha/chacha-armv4.S" => + [ + "crypto/chacha/asm/chacha-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-armv8.S" => + [ + "crypto/chacha/asm/chacha-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-ppc.s" => + [ + "crypto/chacha/asm/chacha-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-s390x.S" => + [ + "crypto/chacha/asm/chacha-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-x86.s" => + [ + "crypto/chacha/asm/chacha-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/chacha/chacha-x86_64.s" => + [ + "crypto/chacha/asm/chacha-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/des/crypt586.s" => + [ + "crypto/des/asm/crypt586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/des/des-586.s" => + [ + "crypto/des/asm/des-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/des/des_enc-sparc.S" => + [ + "crypto/des/asm/des_enc.m4", + ], + "crypto/des/dest4-sparcv9.S" => + [ + "crypto/des/asm/dest4-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-armv4.S" => + [ + "crypto/ec/asm/ecp_nistz256-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-armv8.S" => + [ + "crypto/ec/asm/ecp_nistz256-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-avx2.s" => + [ + "crypto/ec/asm/ecp_nistz256-avx2.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-ppc64.s" => + [ + "crypto/ec/asm/ecp_nistz256-ppc64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-sparcv9.S" => + [ + "crypto/ec/asm/ecp_nistz256-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-x86.s" => + [ + "crypto/ec/asm/ecp_nistz256-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/ec/ecp_nistz256-x86_64.s" => + [ + "crypto/ec/asm/ecp_nistz256-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/x25519-ppc64.s" => + [ + "crypto/ec/asm/x25519-ppc64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/x25519-x86_64.s" => + [ + "crypto/ec/asm/x25519-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ia64cpuid.s" => + [ + "crypto/ia64cpuid.S", + ], + "crypto/include/internal/bn_conf.h" => + [ + "crypto/include/internal/bn_conf.h.in", + ], + "crypto/include/internal/dso_conf.h" => + [ + "crypto/include/internal/dso_conf.h.in", + ], + "crypto/md5/md5-586.s" => + [ + "crypto/md5/asm/md5-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/md5/md5-sparcv9.S" => + [ + "crypto/md5/asm/md5-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/md5/md5-x86_64.s" => + [ + "crypto/md5/asm/md5-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/aesni-gcm-x86_64.s" => + [ + "crypto/modes/asm/aesni-gcm-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-alpha.S" => + [ + "crypto/modes/asm/ghash-alpha.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-armv4.S" => + [ + "crypto/modes/asm/ghash-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-ia64.s" => + [ + "crypto/modes/asm/ghash-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/modes/ghash-parisc.s" => + [ + "crypto/modes/asm/ghash-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-s390x.S" => + [ + "crypto/modes/asm/ghash-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-sparcv9.S" => + [ + "crypto/modes/asm/ghash-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-x86.s" => + [ + "crypto/modes/asm/ghash-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/modes/ghash-x86_64.s" => + [ + "crypto/modes/asm/ghash-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghashp8-ppc.s" => + [ + "crypto/modes/asm/ghashp8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghashv8-armx.S" => + [ + "crypto/modes/asm/ghashv8-armx.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/pariscid.s" => + [ + "crypto/pariscid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-armv4.S" => + [ + "crypto/poly1305/asm/poly1305-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-armv8.S" => + [ + "crypto/poly1305/asm/poly1305-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-mips.S" => + [ + "crypto/poly1305/asm/poly1305-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-ppc.s" => + [ + "crypto/poly1305/asm/poly1305-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-ppcfp.s" => + [ + "crypto/poly1305/asm/poly1305-ppcfp.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-s390x.S" => + [ + "crypto/poly1305/asm/poly1305-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-sparcv9.S" => + [ + "crypto/poly1305/asm/poly1305-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-x86.s" => + [ + "crypto/poly1305/asm/poly1305-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/poly1305/poly1305-x86_64.s" => + [ + "crypto/poly1305/asm/poly1305-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ppccpuid.s" => + [ + "crypto/ppccpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-586.s" => + [ + "crypto/rc4/asm/rc4-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/rc4/rc4-md5-x86_64.s" => + [ + "crypto/rc4/asm/rc4-md5-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-parisc.s" => + [ + "crypto/rc4/asm/rc4-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-s390x.s" => + [ + "crypto/rc4/asm/rc4-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-x86_64.s" => + [ + "crypto/rc4/asm/rc4-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ripemd/rmd-586.s" => + [ + "crypto/ripemd/asm/rmd-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/s390xcpuid.S" => + [ + "crypto/s390xcpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-armv4.S" => + [ + "crypto/sha/asm/keccak1600-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-armv8.S" => + [ + "crypto/sha/asm/keccak1600-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-ppc64.s" => + [ + "crypto/sha/asm/keccak1600-ppc64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-s390x.S" => + [ + "crypto/sha/asm/keccak1600-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-x86_64.s" => + [ + "crypto/sha/asm/keccak1600-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-586.s" => + [ + "crypto/sha/asm/sha1-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/sha/sha1-alpha.S" => + [ + "crypto/sha/asm/sha1-alpha.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-armv4-large.S" => + [ + "crypto/sha/asm/sha1-armv4-large.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-armv8.S" => + [ + "crypto/sha/asm/sha1-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-ia64.s" => + [ + "crypto/sha/asm/sha1-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/sha/sha1-mb-x86_64.s" => + [ + "crypto/sha/asm/sha1-mb-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-mips.S" => + [ + "crypto/sha/asm/sha1-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-parisc.s" => + [ + "crypto/sha/asm/sha1-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-ppc.s" => + [ + "crypto/sha/asm/sha1-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-s390x.S" => + [ + "crypto/sha/asm/sha1-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-sparcv9.S" => + [ + "crypto/sha/asm/sha1-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-x86_64.s" => + [ + "crypto/sha/asm/sha1-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-586.s" => + [ + "crypto/sha/asm/sha256-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/sha/sha256-armv4.S" => + [ + "crypto/sha/asm/sha256-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-armv8.S" => + [ + "crypto/sha/asm/sha512-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-ia64.s" => + [ + "crypto/sha/asm/sha512-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/sha/sha256-mb-x86_64.s" => + [ + "crypto/sha/asm/sha256-mb-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-mips.S" => + [ + "crypto/sha/asm/sha512-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-parisc.s" => + [ + "crypto/sha/asm/sha512-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-ppc.s" => + [ + "crypto/sha/asm/sha512-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-s390x.S" => + [ + "crypto/sha/asm/sha512-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-sparcv9.S" => + [ + "crypto/sha/asm/sha512-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-x86_64.s" => + [ + "crypto/sha/asm/sha512-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256p8-ppc.s" => + [ + "crypto/sha/asm/sha512p8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-586.s" => + [ + "crypto/sha/asm/sha512-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/sha/sha512-armv4.S" => + [ + "crypto/sha/asm/sha512-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-armv8.S" => + [ + "crypto/sha/asm/sha512-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-ia64.s" => + [ + "crypto/sha/asm/sha512-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/sha/sha512-mips.S" => + [ + "crypto/sha/asm/sha512-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-parisc.s" => + [ + "crypto/sha/asm/sha512-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-ppc.s" => + [ + "crypto/sha/asm/sha512-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-s390x.S" => + [ + "crypto/sha/asm/sha512-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-sparcv9.S" => + [ + "crypto/sha/asm/sha512-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-x86_64.s" => + [ + "crypto/sha/asm/sha512-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512p8-ppc.s" => + [ + "crypto/sha/asm/sha512p8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/uplink-ia64.s" => + [ + "ms/uplink-ia64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/uplink-x86.s" => + [ + "ms/uplink-x86.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/uplink-x86_64.s" => + [ + "ms/uplink-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/whrlpool/wp-mmx.s" => + [ + "crypto/whrlpool/asm/wp-mmx.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/whrlpool/wp-x86_64.s" => + [ + "crypto/whrlpool/asm/wp-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/x86_64cpuid.s" => + [ + "crypto/x86_64cpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/x86cpuid.s" => + [ + "crypto/x86cpuid.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "engines/e_padlock-x86.s" => + [ + "engines/asm/e_padlock-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "engines/e_padlock-x86_64.s" => + [ + "engines/asm/e_padlock-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "include/openssl/opensslconf.h" => + [ + "include/openssl/opensslconf.h.in", + ], + "libcrypto.def" => + [ + "util/mkdef.pl", + "crypto", + "32", + ], + "libcrypto.rc" => + [ + "util/mkrc.pl", + "libcrypto", + ], + "libssl.def" => + [ + "util/mkdef.pl", + "ssl", + "32", + ], + "libssl.rc" => + [ + "util/mkrc.pl", + "libssl", + ], + "test/buildtest_aes.c" => + [ + "test/generate_buildtest.pl", + "aes", + ], + "test/buildtest_asn1.c" => + [ + "test/generate_buildtest.pl", + "asn1", + ], + "test/buildtest_asn1t.c" => + [ + "test/generate_buildtest.pl", + "asn1t", + ], + "test/buildtest_async.c" => + [ + "test/generate_buildtest.pl", + "async", + ], + "test/buildtest_bio.c" => + [ + "test/generate_buildtest.pl", + "bio", + ], + "test/buildtest_blowfish.c" => + [ + "test/generate_buildtest.pl", + "blowfish", + ], + "test/buildtest_bn.c" => + [ + "test/generate_buildtest.pl", + "bn", + ], + "test/buildtest_buffer.c" => + [ + "test/generate_buildtest.pl", + "buffer", + ], + "test/buildtest_camellia.c" => + [ + "test/generate_buildtest.pl", + "camellia", + ], + "test/buildtest_cast.c" => + [ + "test/generate_buildtest.pl", + "cast", + ], + "test/buildtest_cmac.c" => + [ + "test/generate_buildtest.pl", + "cmac", + ], + "test/buildtest_cms.c" => + [ + "test/generate_buildtest.pl", + "cms", + ], + "test/buildtest_conf.c" => + [ + "test/generate_buildtest.pl", + "conf", + ], + "test/buildtest_conf_api.c" => + [ + "test/generate_buildtest.pl", + "conf_api", + ], + "test/buildtest_crypto.c" => + [ + "test/generate_buildtest.pl", + "crypto", + ], + "test/buildtest_ct.c" => + [ + "test/generate_buildtest.pl", + "ct", + ], + "test/buildtest_des.c" => + [ + "test/generate_buildtest.pl", + "des", + ], + "test/buildtest_dh.c" => + [ + "test/generate_buildtest.pl", + "dh", + ], + "test/buildtest_dsa.c" => + [ + "test/generate_buildtest.pl", + "dsa", + ], + "test/buildtest_dtls1.c" => + [ + "test/generate_buildtest.pl", + "dtls1", + ], + "test/buildtest_e_os2.c" => + [ + "test/generate_buildtest.pl", + "e_os2", + ], + "test/buildtest_ebcdic.c" => + [ + "test/generate_buildtest.pl", + "ebcdic", + ], + "test/buildtest_ec.c" => + [ + "test/generate_buildtest.pl", + "ec", + ], + "test/buildtest_ecdh.c" => + [ + "test/generate_buildtest.pl", + "ecdh", + ], + "test/buildtest_ecdsa.c" => + [ + "test/generate_buildtest.pl", + "ecdsa", + ], + "test/buildtest_engine.c" => + [ + "test/generate_buildtest.pl", + "engine", + ], + "test/buildtest_evp.c" => + [ + "test/generate_buildtest.pl", + "evp", + ], + "test/buildtest_hmac.c" => + [ + "test/generate_buildtest.pl", + "hmac", + ], + "test/buildtest_idea.c" => + [ + "test/generate_buildtest.pl", + "idea", + ], + "test/buildtest_kdf.c" => + [ + "test/generate_buildtest.pl", + "kdf", + ], + "test/buildtest_lhash.c" => + [ + "test/generate_buildtest.pl", + "lhash", + ], + "test/buildtest_md4.c" => + [ + "test/generate_buildtest.pl", + "md4", + ], + "test/buildtest_md5.c" => + [ + "test/generate_buildtest.pl", + "md5", + ], + "test/buildtest_mdc2.c" => + [ + "test/generate_buildtest.pl", + "mdc2", + ], + "test/buildtest_modes.c" => + [ + "test/generate_buildtest.pl", + "modes", + ], + "test/buildtest_obj_mac.c" => + [ + "test/generate_buildtest.pl", + "obj_mac", + ], + "test/buildtest_objects.c" => + [ + "test/generate_buildtest.pl", + "objects", + ], + "test/buildtest_ocsp.c" => + [ + "test/generate_buildtest.pl", + "ocsp", + ], + "test/buildtest_opensslv.c" => + [ + "test/generate_buildtest.pl", + "opensslv", + ], + "test/buildtest_ossl_typ.c" => + [ + "test/generate_buildtest.pl", + "ossl_typ", + ], + "test/buildtest_pem.c" => + [ + "test/generate_buildtest.pl", + "pem", + ], + "test/buildtest_pem2.c" => + [ + "test/generate_buildtest.pl", + "pem2", + ], + "test/buildtest_pkcs12.c" => + [ + "test/generate_buildtest.pl", + "pkcs12", + ], + "test/buildtest_pkcs7.c" => + [ + "test/generate_buildtest.pl", + "pkcs7", + ], + "test/buildtest_rand.c" => + [ + "test/generate_buildtest.pl", + "rand", + ], + "test/buildtest_rand_drbg.c" => + [ + "test/generate_buildtest.pl", + "rand_drbg", + ], + "test/buildtest_rc2.c" => + [ + "test/generate_buildtest.pl", + "rc2", + ], + "test/buildtest_rc4.c" => + [ + "test/generate_buildtest.pl", + "rc4", + ], + "test/buildtest_ripemd.c" => + [ + "test/generate_buildtest.pl", + "ripemd", + ], + "test/buildtest_rsa.c" => + [ + "test/generate_buildtest.pl", + "rsa", + ], + "test/buildtest_safestack.c" => + [ + "test/generate_buildtest.pl", + "safestack", + ], + "test/buildtest_seed.c" => + [ + "test/generate_buildtest.pl", + "seed", + ], + "test/buildtest_sha.c" => + [ + "test/generate_buildtest.pl", + "sha", + ], + "test/buildtest_srp.c" => + [ + "test/generate_buildtest.pl", + "srp", + ], + "test/buildtest_srtp.c" => + [ + "test/generate_buildtest.pl", + "srtp", + ], + "test/buildtest_ssl.c" => + [ + "test/generate_buildtest.pl", + "ssl", + ], + "test/buildtest_ssl2.c" => + [ + "test/generate_buildtest.pl", + "ssl2", + ], + "test/buildtest_stack.c" => + [ + "test/generate_buildtest.pl", + "stack", + ], + "test/buildtest_store.c" => + [ + "test/generate_buildtest.pl", + "store", + ], + "test/buildtest_symhacks.c" => + [ + "test/generate_buildtest.pl", + "symhacks", + ], + "test/buildtest_tls1.c" => + [ + "test/generate_buildtest.pl", + "tls1", + ], + "test/buildtest_ts.c" => + [ + "test/generate_buildtest.pl", + "ts", + ], + "test/buildtest_txt_db.c" => + [ + "test/generate_buildtest.pl", + "txt_db", + ], + "test/buildtest_ui.c" => + [ + "test/generate_buildtest.pl", + "ui", + ], + "test/buildtest_whrlpool.c" => + [ + "test/generate_buildtest.pl", + "whrlpool", + ], + "test/buildtest_x509.c" => + [ + "test/generate_buildtest.pl", + "x509", + ], + "test/buildtest_x509_vfy.c" => + [ + "test/generate_buildtest.pl", + "x509_vfy", + ], + "test/buildtest_x509v3.c" => + [ + "test/generate_buildtest.pl", + "x509v3", + ], + }, + "includes" => + { + "apps/app_rand.o" => + [ + ".", + "include", + ], + "apps/apps.o" => + [ + ".", + "include", + ], + "apps/asn1pars.o" => + [ + ".", + "include", + "apps", + ], + "apps/bf_prefix.o" => + [ + ".", + "include", + ], + "apps/ca.o" => + [ + ".", + "include", + "apps", + ], + "apps/ciphers.o" => + [ + ".", + "include", + "apps", + ], + "apps/cms.o" => + [ + ".", + "include", + "apps", + ], + "apps/crl.o" => + [ + ".", + "include", + "apps", + ], + "apps/crl2p7.o" => + [ + ".", + "include", + "apps", + ], + "apps/dgst.o" => + [ + ".", + "include", + "apps", + ], + "apps/dhparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/dsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/dsaparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/ec.o" => + [ + ".", + "include", + "apps", + ], + "apps/ecparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/enc.o" => + [ + ".", + "include", + "apps", + ], + "apps/engine.o" => + [ + ".", + "include", + "apps", + ], + "apps/errstr.o" => + [ + ".", + "include", + "apps", + ], + "apps/gendsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/genpkey.o" => + [ + ".", + "include", + "apps", + ], + "apps/genrsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/nseq.o" => + [ + ".", + "include", + "apps", + ], + "apps/ocsp.o" => + [ + ".", + "include", + "apps", + ], + "apps/openssl.o" => + [ + ".", + "include", + "apps", + ], + "apps/opt.o" => + [ + ".", + "include", + ], + "apps/passwd.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkcs12.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkcs7.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkcs8.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkey.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkeyparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkeyutl.o" => + [ + ".", + "include", + "apps", + ], + "apps/prime.o" => + [ + ".", + "include", + "apps", + ], + "apps/progs.h" => + [ + ".", + ], + "apps/rand.o" => + [ + ".", + "include", + "apps", + ], + "apps/rehash.o" => + [ + ".", + "include", + "apps", + ], + "apps/req.o" => + [ + ".", + "include", + "apps", + ], + "apps/rsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/rsautl.o" => + [ + ".", + "include", + "apps", + ], + "apps/s_cb.o" => + [ + ".", + "include", + ], + "apps/s_client.o" => + [ + ".", + "include", + "apps", + ], + "apps/s_server.o" => + [ + ".", + "include", + "apps", + ], + "apps/s_socket.o" => + [ + ".", + "include", + ], + "apps/s_time.o" => + [ + ".", + "include", + "apps", + ], + "apps/sess_id.o" => + [ + ".", + "include", + "apps", + ], + "apps/smime.o" => + [ + ".", + "include", + "apps", + ], + "apps/speed.o" => + [ + ".", + "include", + "apps", + ], + "apps/spkac.o" => + [ + ".", + "include", + "apps", + ], + "apps/srp.o" => + [ + ".", + "include", + "apps", + ], + "apps/storeutl.o" => + [ + ".", + "include", + "apps", + ], + "apps/ts.o" => + [ + ".", + "include", + "apps", + ], + "apps/verify.o" => + [ + ".", + "include", + "apps", + ], + "apps/version.o" => + [ + ".", + "include", + "apps", + ], + "apps/win32_init.o" => + [ + ".", + "include", + ], + "apps/x509.o" => + [ + ".", + "include", + "apps", + ], + "crypto/aes/aes-armv4.o" => + [ + "crypto", + ], + "crypto/aes/aes-mips.o" => + [ + "crypto", + ], + "crypto/aes/aes-s390x.o" => + [ + "crypto", + ], + "crypto/aes/aes-sparcv9.o" => + [ + "crypto", + ], + "crypto/aes/aes_cbc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_cfb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_core.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_ige.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_misc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_ofb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aes_wrap.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/aes/aesfx-sparcv9.o" => + [ + "crypto", + ], + "crypto/aes/aest4-sparcv9.o" => + [ + "crypto", + ], + "crypto/aes/aesv8-armx.o" => + [ + "crypto", + ], + "crypto/aes/bsaes-armv7.o" => + [ + "crypto", + ], + "crypto/aria/aria.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/arm64cpuid.o" => + [ + "crypto", + ], + "crypto/armv4cpuid.o" => + [ + "crypto", + ], + "crypto/asn1/a_bitstr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_d2i_fp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_digest.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_dup.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_gentm.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_i2d_fp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_int.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_mbstr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_object.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_octet.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_print.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_strex.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_strnid.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_time.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_type.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_utctm.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_utf8.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/a_verify.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/ameth_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn1_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn1_gen.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn1_item_list.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn1_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn1_par.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn_mime.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn_moid.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn_mstbl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/asn_pack.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/bio_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/bio_ndef.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/d2i_pr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/d2i_pu.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/evp_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/f_int.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/f_string.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/i2d_pr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/i2d_pu.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/n_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/nsseq.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/p5_pbe.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/p5_pbev2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/p5_scrypt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/p8_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/t_bitst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/t_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/t_spki.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_dec.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_fre.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_new.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_scn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_typ.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/tasn_utl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_algor.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_bignum.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_info.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_int64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_long.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_sig.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_spki.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/asn1/x_val.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/async/arch/async_null.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/async/arch/async_posix.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/async/arch/async_win.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/async/async.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/async/async_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/async/async_wait.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bf/bf_cfb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bf/bf_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bf/bf_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bf/bf_ofb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bf/bf_skey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/b_addr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/b_dump.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/b_print.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/b_sock.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/b_sock2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bf_buff.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bf_lbuf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bf_nbio.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bf_null.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bio_cb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bio_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bio_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bio_meth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_acpt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_bio.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_conn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_dgram.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_fd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_file.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_log.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_mem.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_null.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bio/bss_sock.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/blake2/blake2b.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/blake2/blake2s.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/blake2/m_blake2b.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/blake2/m_blake2s.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/armv4-gf2m.o" => + [ + "crypto", + ], + "crypto/bn/armv4-mont.o" => + [ + "crypto", + ], + "crypto/bn/bn-mips.o" => + [ + "crypto", + ], + "crypto/bn/bn_add.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_asm.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_blind.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_const.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_ctx.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_depr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_dh.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_div.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_exp.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + ], + "crypto/bn/bn_exp2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_gcd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_gf2m.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_intern.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_kron.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_mod.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_mont.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_mpi.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_mul.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_nist.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_prime.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_print.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_rand.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_recp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_shift.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_sqr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_sqrt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_srp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_word.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/bn_x931p.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/bn/mips-mont.o" => + [ + "crypto", + ], + "crypto/bn/sparct4-mont.o" => + [ + "crypto", + ], + "crypto/bn/sparcv9-gf2m.o" => + [ + "crypto", + ], + "crypto/bn/sparcv9-mont.o" => + [ + "crypto", + ], + "crypto/bn/sparcv9a-mont.o" => + [ + "crypto", + ], + "crypto/bn/vis3-mont.o" => + [ + "crypto", + ], + "crypto/buffer/buf_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/buffer/buffer.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/buildinf.h" => + [ + ".", + ], + "crypto/camellia/camellia.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmll_cbc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmll_cfb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmll_ctr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmll_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmll_misc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmll_ofb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/camellia/cmllt4-sparcv9.o" => + [ + "crypto", + ], + "crypto/cast/c_cfb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cast/c_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cast/c_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cast/c_ofb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cast/c_skey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/chacha/chacha-armv4.o" => + [ + "crypto", + ], + "crypto/chacha/chacha-armv8.o" => + [ + "crypto", + ], + "crypto/chacha/chacha-s390x.o" => + [ + "crypto", + ], + "crypto/chacha/chacha_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cmac/cm_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cmac/cm_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cmac/cmac.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_att.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_cd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_dd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_env.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_ess.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_io.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_kari.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_pwri.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_sd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cms/cms_smime.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_api.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_def.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_mall.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_mod.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_sap.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/conf/conf_ssl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cpt_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cryptlib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_b64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_log.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_oct.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_policy.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_sct.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_sct_ctx.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_vfy.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ct/ct_x509v3.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ctype.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/cversion.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + ], + "crypto/des/cbc_cksm.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/cbc_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/cfb64ede.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/cfb64enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/cfb_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/des_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/dest4-sparcv9.o" => + [ + "crypto", + ], + "crypto/des/ecb3_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/ecb_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/fcrypt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/fcrypt_b.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/ofb64ede.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/ofb64enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/ofb_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/pcbc_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/qud_cksm.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/rand_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/set_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/str2key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/des/xcbc_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_check.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_depr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_gen.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_kdf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_meth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_rfc5114.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dh/dh_rfc7919.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_depr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_gen.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_meth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_ossl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dsa/dsa_vrf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_dl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_dlfcn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_openssl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_vms.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/dso/dso_win32.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ebcdic.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/curve25519.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/curve448/arch_32/f_impl.o" => + [ + ".", + "crypto/include", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/curve448.o" => + [ + ".", + "crypto/include", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/curve448_tables.o" => + [ + ".", + "crypto/include", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/eddsa.o" => + [ + ".", + "crypto/include", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/f_generic.o" => + [ + ".", + "crypto/include", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/scalar.o" => + [ + ".", + "crypto/include", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/ec2_oct.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec2_smpl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_check.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_curve.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_cvt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_kmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_mult.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_oct.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ec_print.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecdh_kdf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecdh_ossl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecdsa_ossl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecdsa_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecdsa_vrf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/eck_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_mont.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_nist.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_nistp224.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_nistp256.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_nistp521.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_nistputil.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_nistz256-armv4.o" => + [ + "crypto", + ], + "crypto/ec/ecp_nistz256-armv8.o" => + [ + "crypto", + ], + "crypto/ec/ecp_nistz256-sparcv9.o" => + [ + "crypto", + ], + "crypto/ec/ecp_oct.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecp_smpl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ec/ecx_meth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_all.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_cnf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_ctrl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_dyn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_fat.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_init.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_list.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_openssl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_rdrand.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/eng_table.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_asnmth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_cipher.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_dh.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_digest.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_dsa.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_eckey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_pkmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_rand.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/engine/tb_rsa.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/err/err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/err/err_all.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/err/err_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/bio_b64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/bio_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/bio_md.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/bio_ok.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/c_allc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/c_alld.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/cmeth_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/digest.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_aes.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_aes_cbc_hmac_sha1.o" => + [ + ".", + "crypto/include", + "include", + "crypto/modes", + ], + "crypto/evp/e_aes_cbc_hmac_sha256.o" => + [ + ".", + "crypto/include", + "include", + "crypto/modes", + ], + "crypto/evp/e_aria.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_bf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_camellia.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_cast.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_chacha20_poly1305.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_des.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + ], + "crypto/evp/e_des3.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + ], + "crypto/evp/e_idea.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_null.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_old.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_rc2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_rc4.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_rc4_hmac_md5.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_rc5.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_seed.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/e_sm4.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_xcbc_d.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/encode.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_cnf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_pbe.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/evp_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_md2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_md4.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_md5.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_md5_sha1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_mdc2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_null.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_ripemd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_sha1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_sha3.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + ], + "crypto/evp/m_sigver.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/m_wp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/names.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p5_crpt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p5_crpt2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_dec.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_open.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_seal.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/p_verify.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/pbe_scrypt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/pmeth_fn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/pmeth_gn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/evp/pmeth_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ex_data.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/getenv.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/hmac/hm_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/hmac/hm_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/hmac/hmac.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/idea/i_cbc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/idea/i_cfb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/idea/i_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/idea/i_ofb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/idea/i_skey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/include/internal/bn_conf.h" => + [ + ".", + ], + "crypto/include/internal/dso_conf.h" => + [ + ".", + ], + "crypto/init.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/kdf/hkdf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/kdf/kdf_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/kdf/scrypt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/kdf/tls1_prf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/lhash/lh_stats.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/lhash/lhash.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/md4/md4_dgst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/md4/md4_one.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/md5/md5-sparcv9.o" => + [ + "crypto", + ], + "crypto/md5/md5_dgst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/md5/md5_one.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/mdc2/mdc2_one.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/mdc2/mdc2dgst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/mem.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/mem_clr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/mem_dbg.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/mem_sec.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/cbc128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/ccm128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/cfb128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/ctr128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/cts128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/gcm128.o" => + [ + ".", + "crypto/include", + "include", + "crypto", + ], + "crypto/modes/ghash-armv4.o" => + [ + "crypto", + ], + "crypto/modes/ghash-s390x.o" => + [ + "crypto", + ], + "crypto/modes/ghash-sparcv9.o" => + [ + "crypto", + ], + "crypto/modes/ghashv8-armx.o" => + [ + "crypto", + ], + "crypto/modes/ocb128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/ofb128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/wrap128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/modes/xts128.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/o_dir.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/o_fips.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/o_fopen.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/o_init.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/o_str.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/o_time.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/objects/o_names.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/objects/obj_dat.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/objects/obj_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/objects/obj_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/objects/obj_xref.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_asn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_cl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_ext.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_ht.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_srv.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/ocsp_vfy.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ocsp/v3_ocsp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_all.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_info.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_oth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_pk8.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_pkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_x509.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pem_xaux.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pem/pvkfmt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_add.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_asn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_attr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_crpt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_crt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_decr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_init.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_key.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_kiss.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_mutl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_npas.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_p8d.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_p8e.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_sbag.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/p12_utl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs12/pk12err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/bio_pk7.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pk7_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pk7_attr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pk7_doit.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pk7_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pk7_mime.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pk7_smime.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/pkcs7/pkcs7err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/poly1305/poly1305-armv4.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-armv8.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-mips.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-s390x.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-sparcv9.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/poly1305/poly1305_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/poly1305/poly1305_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/drbg_ctr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/drbg_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/rand_egd.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/rand_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/rand_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/rand_unix.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/rand_vms.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/rand_win.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rand/randfile.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc2/rc2_cbc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc2/rc2_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc2/rc2_skey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc2/rc2cfb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc2/rc2ofb64.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc4/rc4_enc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rc4/rc4_skey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ripemd/rmd_dgst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ripemd/rmd_one.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_chk.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_crpt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_depr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_gen.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_meth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_mp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_none.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_oaep.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_ossl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_pk1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_pss.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_saos.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_ssl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_x931.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/rsa/rsa_x931g.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/s390xcpuid.o" => + [ + "crypto", + ], + "crypto/seed/seed.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/seed/seed_cbc.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/seed/seed_cfb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/seed/seed_ecb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/seed/seed_ofb.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sha/keccak1600-armv4.o" => + [ + "crypto", + ], + "crypto/sha/keccak1600.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sha/sha1-armv4-large.o" => + [ + "crypto", + ], + "crypto/sha/sha1-armv8.o" => + [ + "crypto", + ], + "crypto/sha/sha1-mips.o" => + [ + "crypto", + ], + "crypto/sha/sha1-s390x.o" => + [ + "crypto", + ], + "crypto/sha/sha1-sparcv9.o" => + [ + "crypto", + ], + "crypto/sha/sha1_one.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sha/sha1dgst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sha/sha256-armv4.o" => + [ + "crypto", + ], + "crypto/sha/sha256-armv8.o" => + [ + "crypto", + ], + "crypto/sha/sha256-mips.o" => + [ + "crypto", + ], + "crypto/sha/sha256-s390x.o" => + [ + "crypto", + ], + "crypto/sha/sha256-sparcv9.o" => + [ + "crypto", + ], + "crypto/sha/sha256.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sha/sha512-armv4.o" => + [ + "crypto", + ], + "crypto/sha/sha512-armv8.o" => + [ + "crypto", + ], + "crypto/sha/sha512-mips.o" => + [ + "crypto", + ], + "crypto/sha/sha512-s390x.o" => + [ + "crypto", + ], + "crypto/sha/sha512-sparcv9.o" => + [ + "crypto", + ], + "crypto/sha/sha512.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/siphash/siphash.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/siphash/siphash_ameth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/siphash/siphash_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm2/sm2_crypt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm2/sm2_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm2/sm2_pmeth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm2/sm2_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm3/m_sm3.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm3/sm3.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/sm4/sm4.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/srp/srp_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/srp/srp_vfy.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/stack/stack.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/store/loader_file.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/store/store_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/store/store_init.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/store/store_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/store/store_register.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/store/store_strings.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/threads_none.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/threads_pthread.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/threads_win.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_asn1.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_conf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_req_print.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_req_utils.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_rsp_print.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_rsp_sign.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_rsp_utils.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_rsp_verify.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ts/ts_verify_ctx.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/txt_db/txt_db.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ui/ui_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ui/ui_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ui/ui_null.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ui/ui_openssl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/ui/ui_util.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/uid.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/whrlpool/wp_block.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/whrlpool/wp_dgst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/by_dir.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/by_file.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/t_crl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/t_req.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/t_x509.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_att.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_cmp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_d2.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_def.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_err.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_ext.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_lu.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_meth.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_obj.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_r2x.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_req.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_set.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_trs.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_txt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_v3.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_vfy.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509_vpm.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509cset.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509name.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509rset.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509spki.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x509type.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_all.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_attrib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_crl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_exten.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_name.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_pubkey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_req.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_x509.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509/x_x509a.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/pcy_cache.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/pcy_data.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/pcy_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/pcy_map.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/pcy_node.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/pcy_tree.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_addr.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_admis.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_akey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_akeya.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_alt.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_asid.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_bcons.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_bitst.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_conf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_cpols.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_crld.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_enum.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_extku.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_genn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_ia5.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_info.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_int.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_lib.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_ncons.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_pci.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_pcia.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_pcons.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_pku.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_pmaps.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_prn.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_purp.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_skey.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_sxnet.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_tlsf.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3_utl.o" => + [ + ".", + "crypto/include", + "include", + ], + "crypto/x509v3/v3err.o" => + [ + ".", + "crypto/include", + "include", + ], + "engines/e_capi.o" => + [ + ".", + "crypto/include", + "include", + ], + "engines/e_padlock.o" => + [ + ".", + "crypto/include", + "include", + ], + "fuzz/asn1.o" => + [ + "include", + ], + "fuzz/asn1parse.o" => + [ + "include", + ], + "fuzz/bignum.o" => + [ + "include", + ], + "fuzz/bndiv.o" => + [ + "include", + ], + "fuzz/client.o" => + [ + "include", + ], + "fuzz/cms.o" => + [ + "include", + ], + "fuzz/conf.o" => + [ + "include", + ], + "fuzz/crl.o" => + [ + "include", + ], + "fuzz/ct.o" => + [ + "include", + ], + "fuzz/server.o" => + [ + "include", + ], + "fuzz/test-corpus.o" => + [ + "include", + ], + "fuzz/x509.o" => + [ + "include", + ], + "include/openssl/opensslconf.h" => + [ + ".", + ], + "ssl/bio_ssl.o" => + [ + ".", + "include", + ], + "ssl/d1_lib.o" => + [ + ".", + "include", + ], + "ssl/d1_msg.o" => + [ + ".", + "include", + ], + "ssl/d1_srtp.o" => + [ + ".", + "include", + ], + "ssl/methods.o" => + [ + ".", + "include", + ], + "ssl/packet.o" => + [ + ".", + "include", + ], + "ssl/pqueue.o" => + [ + ".", + "include", + ], + "ssl/record/dtls1_bitmap.o" => + [ + ".", + "include", + ], + "ssl/record/rec_layer_d1.o" => + [ + ".", + "include", + ], + "ssl/record/rec_layer_s3.o" => + [ + ".", + "include", + ], + "ssl/record/ssl3_buffer.o" => + [ + ".", + "include", + ], + "ssl/record/ssl3_record.o" => + [ + ".", + "include", + ], + "ssl/record/ssl3_record_tls13.o" => + [ + ".", + "include", + ], + "ssl/s3_cbc.o" => + [ + ".", + "include", + ], + "ssl/s3_enc.o" => + [ + ".", + "include", + ], + "ssl/s3_lib.o" => + [ + ".", + "include", + ], + "ssl/s3_msg.o" => + [ + ".", + "include", + ], + "ssl/ssl_asn1.o" => + [ + ".", + "include", + ], + "ssl/ssl_cert.o" => + [ + ".", + "include", + ], + "ssl/ssl_ciph.o" => + [ + ".", + "include", + ], + "ssl/ssl_conf.o" => + [ + ".", + "include", + ], + "ssl/ssl_err.o" => + [ + ".", + "include", + ], + "ssl/ssl_init.o" => + [ + ".", + "include", + ], + "ssl/ssl_lib.o" => + [ + ".", + "include", + ], + "ssl/ssl_mcnf.o" => + [ + ".", + "include", + ], + "ssl/ssl_rsa.o" => + [ + ".", + "include", + ], + "ssl/ssl_sess.o" => + [ + ".", + "include", + ], + "ssl/ssl_stat.o" => + [ + ".", + "include", + ], + "ssl/ssl_txt.o" => + [ + ".", + "include", + ], + "ssl/ssl_utst.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions_clnt.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions_cust.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions_srvr.o" => + [ + ".", + "include", + ], + "ssl/statem/statem.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_clnt.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_dtls.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_lib.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_srvr.o" => + [ + ".", + "include", + ], + "ssl/t1_enc.o" => + [ + ".", + "include", + ], + "ssl/t1_lib.o" => + [ + ".", + "include", + ], + "ssl/t1_trce.o" => + [ + ".", + "include", + ], + "ssl/tls13_enc.o" => + [ + ".", + "include", + ], + "ssl/tls_srp.o" => + [ + ".", + "include", + ], + "test/aborttest.o" => + [ + "include", + ], + "test/afalgtest.o" => + [ + "include", + ], + "test/asn1_decode_test.o" => + [ + "include", + ], + "test/asn1_encode_test.o" => + [ + "include", + ], + "test/asn1_internal_test.o" => + [ + ".", + "include", + "crypto/include", + ], + "test/asn1_string_table_test.o" => + [ + "include", + ], + "test/asn1_time_test.o" => + [ + "include", + ], + "test/asynciotest.o" => + [ + "include", + ], + "test/asynctest.o" => + [ + "include", + ], + "test/bad_dtls_test.o" => + [ + "include", + ], + "test/bftest.o" => + [ + "include", + ], + "test/bio_callback_test.o" => + [ + "include", + ], + "test/bio_enc_test.o" => + [ + "include", + ], + "test/bio_memleak_test.o" => + [ + "include", + ], + "test/bioprinttest.o" => + [ + "include", + ], + "test/bntest.o" => + [ + "include", + ], + "test/buildtest_aes.o" => + [ + "include", + ], + "test/buildtest_asn1.o" => + [ + "include", + ], + "test/buildtest_asn1t.o" => + [ + "include", + ], + "test/buildtest_async.o" => + [ + "include", + ], + "test/buildtest_bio.o" => + [ + "include", + ], + "test/buildtest_blowfish.o" => + [ + "include", + ], + "test/buildtest_bn.o" => + [ + "include", + ], + "test/buildtest_buffer.o" => + [ + "include", + ], + "test/buildtest_camellia.o" => + [ + "include", + ], + "test/buildtest_cast.o" => + [ + "include", + ], + "test/buildtest_cmac.o" => + [ + "include", + ], + "test/buildtest_cms.o" => + [ + "include", + ], + "test/buildtest_conf.o" => + [ + "include", + ], + "test/buildtest_conf_api.o" => + [ + "include", + ], + "test/buildtest_crypto.o" => + [ + "include", + ], + "test/buildtest_ct.o" => + [ + "include", + ], + "test/buildtest_des.o" => + [ + "include", + ], + "test/buildtest_dh.o" => + [ + "include", + ], + "test/buildtest_dsa.o" => + [ + "include", + ], + "test/buildtest_dtls1.o" => + [ + "include", + ], + "test/buildtest_e_os2.o" => + [ + "include", + ], + "test/buildtest_ebcdic.o" => + [ + "include", + ], + "test/buildtest_ec.o" => + [ + "include", + ], + "test/buildtest_ecdh.o" => + [ + "include", + ], + "test/buildtest_ecdsa.o" => + [ + "include", + ], + "test/buildtest_engine.o" => + [ + "include", + ], + "test/buildtest_evp.o" => + [ + "include", + ], + "test/buildtest_hmac.o" => + [ + "include", + ], + "test/buildtest_idea.o" => + [ + "include", + ], + "test/buildtest_kdf.o" => + [ + "include", + ], + "test/buildtest_lhash.o" => + [ + "include", + ], + "test/buildtest_md4.o" => + [ + "include", + ], + "test/buildtest_md5.o" => + [ + "include", + ], + "test/buildtest_mdc2.o" => + [ + "include", + ], + "test/buildtest_modes.o" => + [ + "include", + ], + "test/buildtest_obj_mac.o" => + [ + "include", + ], + "test/buildtest_objects.o" => + [ + "include", + ], + "test/buildtest_ocsp.o" => + [ + "include", + ], + "test/buildtest_opensslv.o" => + [ + "include", + ], + "test/buildtest_ossl_typ.o" => + [ + "include", + ], + "test/buildtest_pem.o" => + [ + "include", + ], + "test/buildtest_pem2.o" => + [ + "include", + ], + "test/buildtest_pkcs12.o" => + [ + "include", + ], + "test/buildtest_pkcs7.o" => + [ + "include", + ], + "test/buildtest_rand.o" => + [ + "include", + ], + "test/buildtest_rand_drbg.o" => + [ + "include", + ], + "test/buildtest_rc2.o" => + [ + "include", + ], + "test/buildtest_rc4.o" => + [ + "include", + ], + "test/buildtest_ripemd.o" => + [ + "include", + ], + "test/buildtest_rsa.o" => + [ + "include", + ], + "test/buildtest_safestack.o" => + [ + "include", + ], + "test/buildtest_seed.o" => + [ + "include", + ], + "test/buildtest_sha.o" => + [ + "include", + ], + "test/buildtest_srp.o" => + [ + "include", + ], + "test/buildtest_srtp.o" => + [ + "include", + ], + "test/buildtest_ssl.o" => + [ + "include", + ], + "test/buildtest_ssl2.o" => + [ + "include", + ], + "test/buildtest_stack.o" => + [ + "include", + ], + "test/buildtest_store.o" => + [ + "include", + ], + "test/buildtest_symhacks.o" => + [ + "include", + ], + "test/buildtest_tls1.o" => + [ + "include", + ], + "test/buildtest_ts.o" => + [ + "include", + ], + "test/buildtest_txt_db.o" => + [ + "include", + ], + "test/buildtest_ui.o" => + [ + "include", + ], + "test/buildtest_whrlpool.o" => + [ + "include", + ], + "test/buildtest_x509.o" => + [ + "include", + ], + "test/buildtest_x509_vfy.o" => + [ + "include", + ], + "test/buildtest_x509v3.o" => + [ + "include", + ], + "test/casttest.o" => + [ + "include", + ], + "test/chacha_internal_test.o" => + [ + ".", + "include", + "crypto/include", + ], + "test/cipher_overhead_test.o" => + [ + ".", + "include", + ], + "test/cipherbytes_test.o" => + [ + "include", + ], + "test/cipherlist_test.o" => + [ + "include", + ], + "test/ciphername_test.o" => + [ + "include", + ], + "test/clienthellotest.o" => + [ + "include", + ], + "test/cmsapitest.o" => + [ + "include", + ], + "test/conf_include_test.o" => + [ + "include", + ], + "test/constant_time_test.o" => + [ + "include", + ], + "test/crltest.o" => + [ + "include", + ], + "test/ct_test.o" => + [ + "include", + ], + "test/ctype_internal_test.o" => + [ + ".", + "crypto/include", + "include", + ], + "test/curve448_internal_test.o" => + [ + ".", + "include", + "crypto/ec/curve448", + ], + "test/d2i_test.o" => + [ + "include", + ], + "test/danetest.o" => + [ + "include", + ], + "test/destest.o" => + [ + "include", + ], + "test/dhtest.o" => + [ + "include", + ], + "test/drbg_cavs_data.o" => + [ + "include", + "test", + ".", + ], + "test/drbg_cavs_test.o" => + [ + "include", + "test", + ".", + ], + "test/drbgtest.o" => + [ + "include", + ], + "test/dsa_no_digest_size_test.o" => + [ + "include", + ], + "test/dsatest.o" => + [ + "include", + ], + "test/dtls_mtu_test.o" => + [ + ".", + "include", + ], + "test/dtlstest.o" => + [ + "include", + ], + "test/dtlsv1listentest.o" => + [ + "include", + ], + "test/ec_internal_test.o" => + [ + "include", + "crypto/ec", + "crypto/include", + ], + "test/ecdsatest.o" => + [ + "include", + ], + "test/ecstresstest.o" => + [ + "include", + ], + "test/ectest.o" => + [ + "include", + ], + "test/enginetest.o" => + [ + "include", + ], + "test/errtest.o" => + [ + "include", + ], + "test/evp_extra_test.o" => + [ + "include", + "crypto/include", + ], + "test/evp_test.o" => + [ + "include", + ], + "test/exdatatest.o" => + [ + "include", + ], + "test/exptest.o" => + [ + "include", + ], + "test/fatalerrtest.o" => + [ + "include", + ], + "test/gmdifftest.o" => + [ + "include", + ], + "test/gosttest.o" => + [ + "include", + ".", + ], + "test/handshake_helper.o" => + [ + ".", + "include", + ], + "test/hmactest.o" => + [ + "include", + ], + "test/ideatest.o" => + [ + "include", + ], + "test/igetest.o" => + [ + "include", + ], + "test/lhash_test.o" => + [ + "include", + ], + "test/md2test.o" => + [ + "include", + ], + "test/mdc2_internal_test.o" => + [ + ".", + "include", + ], + "test/mdc2test.o" => + [ + "include", + ], + "test/memleaktest.o" => + [ + "include", + ], + "test/modes_internal_test.o" => + [ + ".", + "include", + ], + "test/ocspapitest.o" => + [ + "include", + ], + "test/packettest.o" => + [ + "include", + ], + "test/pbelutest.o" => + [ + "include", + ], + "test/pemtest.o" => + [ + "include", + ], + "test/pkey_meth_kdf_test.o" => + [ + "include", + ], + "test/pkey_meth_test.o" => + [ + "include", + ], + "test/poly1305_internal_test.o" => + [ + ".", + "include", + "crypto/include", + ], + "test/rc2test.o" => + [ + "include", + ], + "test/rc4test.o" => + [ + "include", + ], + "test/rc5test.o" => + [ + "include", + ], + "test/rdrand_sanitytest.o" => + [ + "include", + ], + "test/recordlentest.o" => + [ + "include", + ], + "test/rsa_complex.o" => + [ + "include", + ], + "test/rsa_mp_test.o" => + [ + "include", + ], + "test/rsa_test.o" => + [ + "include", + ], + "test/sanitytest.o" => + [ + "include", + ], + "test/secmemtest.o" => + [ + "include", + ], + "test/servername_test.o" => + [ + "include", + ], + "test/siphash_internal_test.o" => + [ + ".", + "include", + "crypto/include", + ], + "test/sm2_internal_test.o" => + [ + "include", + "crypto/include", + ], + "test/sm4_internal_test.o" => + [ + ".", + "include", + "crypto/include", + ], + "test/srptest.o" => + [ + "include", + ], + "test/ssl_cert_table_internal_test.o" => + [ + ".", + "include", + ], + "test/ssl_test.o" => + [ + "include", + ], + "test/ssl_test_ctx.o" => + [ + "include", + ], + "test/ssl_test_ctx_test.o" => + [ + "include", + ], + "test/sslapitest.o" => + [ + "include", + ".", + ], + "test/sslbuffertest.o" => + [ + "include", + ], + "test/sslcorrupttest.o" => + [ + "include", + ], + "test/ssltest_old.o" => + [ + ".", + "include", + ], + "test/ssltestlib.o" => + [ + ".", + "include", + ], + "test/stack_test.o" => + [ + "include", + ], + "test/sysdefaulttest.o" => + [ + "include", + ], + "test/test_test.o" => + [ + "include", + ], + "test/testutil/basic_output.o" => + [ + "include", + ], + "test/testutil/cb.o" => + [ + "include", + ], + "test/testutil/driver.o" => + [ + "include", + ], + "test/testutil/format_output.o" => + [ + "include", + ], + "test/testutil/init.o" => + [ + "include", + ], + "test/testutil/main.o" => + [ + "include", + ], + "test/testutil/output_helpers.o" => + [ + "include", + ], + "test/testutil/stanza.o" => + [ + "include", + ], + "test/testutil/tap_bio.o" => + [ + "include", + ], + "test/testutil/test_cleanup.o" => + [ + "include", + ], + "test/testutil/tests.o" => + [ + "include", + ], + "test/threadstest.o" => + [ + "include", + ], + "test/time_offset_test.o" => + [ + "include", + ], + "test/tls13ccstest.o" => + [ + "include", + ], + "test/tls13encryptiontest.o" => + [ + ".", + "include", + ], + "test/uitest.o" => + [ + ".", + "include", + "apps", + ], + "test/v3ext.o" => + [ + "include", + ], + "test/v3nametest.o" => + [ + "include", + ], + "test/verify_extra_test.o" => + [ + "include", + ], + "test/versions.o" => + [ + "include", + ], + "test/wpackettest.o" => + [ + "include", + ], + "test/x509_check_cert_pkey_test.o" => + [ + "include", + ], + "test/x509_dup_cert_test.o" => + [ + "include", + ], + "test/x509_internal_test.o" => + [ + ".", + "include", + ], + "test/x509_time_test.o" => + [ + "include", + ], + "test/x509aux.o" => + [ + "include", + ], + }, + "install" => + { + "libraries" => + [ + "libcrypto", + "libssl", + ], + "programs" => + [ + "apps/openssl", + ], + "scripts" => + [ + "apps/CA.pl", + "apps/tsget.pl", + "tools/c_rehash.pl", + ], + }, + "ldadd" => + { + }, + "libraries" => + [ + "apps/libapps.a", + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "overrides" => + [ + ], + "programs" => + [ + "apps/openssl", + "fuzz/asn1-test", + "fuzz/asn1parse-test", + "fuzz/bignum-test", + "fuzz/bndiv-test", + "fuzz/client-test", + "fuzz/cms-test", + "fuzz/conf-test", + "fuzz/crl-test", + "fuzz/ct-test", + "fuzz/server-test", + "fuzz/x509-test", + "test/aborttest", + "test/afalgtest", + "test/asn1_decode_test", + "test/asn1_encode_test", + "test/asn1_internal_test", + "test/asn1_string_table_test", + "test/asn1_time_test", + "test/asynciotest", + "test/asynctest", + "test/bad_dtls_test", + "test/bftest", + "test/bio_callback_test", + "test/bio_enc_test", + "test/bio_memleak_test", + "test/bioprinttest", + "test/bntest", + "test/buildtest_aes", + "test/buildtest_asn1", + "test/buildtest_asn1t", + "test/buildtest_async", + "test/buildtest_bio", + "test/buildtest_blowfish", + "test/buildtest_bn", + "test/buildtest_buffer", + "test/buildtest_camellia", + "test/buildtest_cast", + "test/buildtest_cmac", + "test/buildtest_cms", + "test/buildtest_conf", + "test/buildtest_conf_api", + "test/buildtest_crypto", + "test/buildtest_ct", + "test/buildtest_des", + "test/buildtest_dh", + "test/buildtest_dsa", + "test/buildtest_dtls1", + "test/buildtest_e_os2", + "test/buildtest_ebcdic", + "test/buildtest_ec", + "test/buildtest_ecdh", + "test/buildtest_ecdsa", + "test/buildtest_engine", + "test/buildtest_evp", + "test/buildtest_hmac", + "test/buildtest_idea", + "test/buildtest_kdf", + "test/buildtest_lhash", + "test/buildtest_md4", + "test/buildtest_md5", + "test/buildtest_mdc2", + "test/buildtest_modes", + "test/buildtest_obj_mac", + "test/buildtest_objects", + "test/buildtest_ocsp", + "test/buildtest_opensslv", + "test/buildtest_ossl_typ", + "test/buildtest_pem", + "test/buildtest_pem2", + "test/buildtest_pkcs12", + "test/buildtest_pkcs7", + "test/buildtest_rand", + "test/buildtest_rand_drbg", + "test/buildtest_rc2", + "test/buildtest_rc4", + "test/buildtest_ripemd", + "test/buildtest_rsa", + "test/buildtest_safestack", + "test/buildtest_seed", + "test/buildtest_sha", + "test/buildtest_srp", + "test/buildtest_srtp", + "test/buildtest_ssl", + "test/buildtest_ssl2", + "test/buildtest_stack", + "test/buildtest_store", + "test/buildtest_symhacks", + "test/buildtest_tls1", + "test/buildtest_ts", + "test/buildtest_txt_db", + "test/buildtest_ui", + "test/buildtest_whrlpool", + "test/buildtest_x509", + "test/buildtest_x509_vfy", + "test/buildtest_x509v3", + "test/casttest", + "test/chacha_internal_test", + "test/cipher_overhead_test", + "test/cipherbytes_test", + "test/cipherlist_test", + "test/ciphername_test", + "test/clienthellotest", + "test/cmsapitest", + "test/conf_include_test", + "test/constant_time_test", + "test/crltest", + "test/ct_test", + "test/ctype_internal_test", + "test/curve448_internal_test", + "test/d2i_test", + "test/danetest", + "test/destest", + "test/dhtest", + "test/drbg_cavs_test", + "test/drbgtest", + "test/dsa_no_digest_size_test", + "test/dsatest", + "test/dtls_mtu_test", + "test/dtlstest", + "test/dtlsv1listentest", + "test/ec_internal_test", + "test/ecdsatest", + "test/ecstresstest", + "test/ectest", + "test/enginetest", + "test/errtest", + "test/evp_extra_test", + "test/evp_test", + "test/exdatatest", + "test/exptest", + "test/fatalerrtest", + "test/gmdifftest", + "test/gosttest", + "test/hmactest", + "test/ideatest", + "test/igetest", + "test/lhash_test", + "test/md2test", + "test/mdc2_internal_test", + "test/mdc2test", + "test/memleaktest", + "test/modes_internal_test", + "test/ocspapitest", + "test/packettest", + "test/pbelutest", + "test/pemtest", + "test/pkey_meth_kdf_test", + "test/pkey_meth_test", + "test/poly1305_internal_test", + "test/rc2test", + "test/rc4test", + "test/rc5test", + "test/rdrand_sanitytest", + "test/recordlentest", + "test/rsa_complex", + "test/rsa_mp_test", + "test/rsa_test", + "test/sanitytest", + "test/secmemtest", + "test/servername_test", + "test/siphash_internal_test", + "test/sm2_internal_test", + "test/sm4_internal_test", + "test/srptest", + "test/ssl_cert_table_internal_test", + "test/ssl_test", + "test/ssl_test_ctx_test", + "test/sslapitest", + "test/sslbuffertest", + "test/sslcorrupttest", + "test/ssltest_old", + "test/stack_test", + "test/sysdefaulttest", + "test/test_test", + "test/threadstest", + "test/time_offset_test", + "test/tls13ccstest", + "test/tls13encryptiontest", + "test/uitest", + "test/v3ext", + "test/v3nametest", + "test/verify_extra_test", + "test/versions", + "test/wpackettest", + "test/x509_check_cert_pkey_test", + "test/x509_dup_cert_test", + "test/x509_internal_test", + "test/x509_time_test", + "test/x509aux", + ], + "rawlines" => + [ + ], + "rename" => + { + }, + "scripts" => + [ + "apps/CA.pl", + "apps/tsget.pl", + "tools/c_rehash.pl", + ], + "shared_sources" => + { + }, + "sources" => + { + "apps/CA.pl" => + [ + "apps/CA.pl.in", + ], + "apps/app_rand.o" => + [ + "apps/app_rand.c", + ], + "apps/apps.o" => + [ + "apps/apps.c", + ], + "apps/asn1pars.o" => + [ + "apps/asn1pars.c", + ], + "apps/bf_prefix.o" => + [ + "apps/bf_prefix.c", + ], + "apps/ca.o" => + [ + "apps/ca.c", + ], + "apps/ciphers.o" => + [ + "apps/ciphers.c", + ], + "apps/cms.o" => + [ + "apps/cms.c", + ], + "apps/crl.o" => + [ + "apps/crl.c", + ], + "apps/crl2p7.o" => + [ + "apps/crl2p7.c", + ], + "apps/dgst.o" => + [ + "apps/dgst.c", + ], + "apps/dhparam.o" => + [ + "apps/dhparam.c", + ], + "apps/dsa.o" => + [ + "apps/dsa.c", + ], + "apps/dsaparam.o" => + [ + "apps/dsaparam.c", + ], + "apps/ec.o" => + [ + "apps/ec.c", + ], + "apps/ecparam.o" => + [ + "apps/ecparam.c", + ], + "apps/enc.o" => + [ + "apps/enc.c", + ], + "apps/engine.o" => + [ + "apps/engine.c", + ], + "apps/errstr.o" => + [ + "apps/errstr.c", + ], + "apps/gendsa.o" => + [ + "apps/gendsa.c", + ], + "apps/genpkey.o" => + [ + "apps/genpkey.c", + ], + "apps/genrsa.o" => + [ + "apps/genrsa.c", + ], + "apps/libapps.a" => + [ + "apps/app_rand.o", + "apps/apps.o", + "apps/bf_prefix.o", + "apps/opt.o", + "apps/s_cb.o", + "apps/s_socket.o", + "apps/win32_init.o", + ], + "apps/nseq.o" => + [ + "apps/nseq.c", + ], + "apps/ocsp.o" => + [ + "apps/ocsp.c", + ], + "apps/openssl" => + [ + "apps/asn1pars.o", + "apps/ca.o", + "apps/ciphers.o", + "apps/cms.o", + "apps/crl.o", + "apps/crl2p7.o", + "apps/dgst.o", + "apps/dhparam.o", + "apps/dsa.o", + "apps/dsaparam.o", + "apps/ec.o", + "apps/ecparam.o", + "apps/enc.o", + "apps/engine.o", + "apps/errstr.o", + "apps/gendsa.o", + "apps/genpkey.o", + "apps/genrsa.o", + "apps/nseq.o", + "apps/ocsp.o", + "apps/openssl.o", + "apps/openssl.res", + "apps/passwd.o", + "apps/pkcs12.o", + "apps/pkcs7.o", + "apps/pkcs8.o", + "apps/pkey.o", + "apps/pkeyparam.o", + "apps/pkeyutl.o", + "apps/prime.o", + "apps/rand.o", + "apps/rehash.o", + "apps/req.o", + "apps/rsa.o", + "apps/rsautl.o", + "apps/s_client.o", + "apps/s_server.o", + "apps/s_time.o", + "apps/sess_id.o", + "apps/smime.o", + "apps/speed.o", + "apps/spkac.o", + "apps/srp.o", + "apps/storeutl.o", + "apps/ts.o", + "apps/verify.o", + "apps/version.o", + "apps/x509.o", + ], + "apps/openssl.o" => + [ + "apps/openssl.c", + ], + "apps/openssl.res" => + [ + "apps/openssl.rc", + ], + "apps/opt.o" => + [ + "apps/opt.c", + ], + "apps/passwd.o" => + [ + "apps/passwd.c", + ], + "apps/pkcs12.o" => + [ + "apps/pkcs12.c", + ], + "apps/pkcs7.o" => + [ + "apps/pkcs7.c", + ], + "apps/pkcs8.o" => + [ + "apps/pkcs8.c", + ], + "apps/pkey.o" => + [ + "apps/pkey.c", + ], + "apps/pkeyparam.o" => + [ + "apps/pkeyparam.c", + ], + "apps/pkeyutl.o" => + [ + "apps/pkeyutl.c", + ], + "apps/prime.o" => + [ + "apps/prime.c", + ], + "apps/rand.o" => + [ + "apps/rand.c", + ], + "apps/rehash.o" => + [ + "apps/rehash.c", + ], + "apps/req.o" => + [ + "apps/req.c", + ], + "apps/rsa.o" => + [ + "apps/rsa.c", + ], + "apps/rsautl.o" => + [ + "apps/rsautl.c", + ], + "apps/s_cb.o" => + [ + "apps/s_cb.c", + ], + "apps/s_client.o" => + [ + "apps/s_client.c", + ], + "apps/s_server.o" => + [ + "apps/s_server.c", + ], + "apps/s_socket.o" => + [ + "apps/s_socket.c", + ], + "apps/s_time.o" => + [ + "apps/s_time.c", + ], + "apps/sess_id.o" => + [ + "apps/sess_id.c", + ], + "apps/smime.o" => + [ + "apps/smime.c", + ], + "apps/speed.o" => + [ + "apps/speed.c", + ], + "apps/spkac.o" => + [ + "apps/spkac.c", + ], + "apps/srp.o" => + [ + "apps/srp.c", + ], + "apps/storeutl.o" => + [ + "apps/storeutl.c", + ], + "apps/ts.o" => + [ + "apps/ts.c", + ], + "apps/tsget.pl" => + [ + "apps/tsget.in", + ], + "apps/verify.o" => + [ + "apps/verify.c", + ], + "apps/version.o" => + [ + "apps/version.c", + ], + "apps/win32_init.o" => + [ + "apps/win32_init.c", + ], + "apps/x509.o" => + [ + "apps/x509.c", + ], + "crypto/aes/aes_cbc.o" => + [ + "crypto/aes/aes_cbc.c", + ], + "crypto/aes/aes_cfb.o" => + [ + "crypto/aes/aes_cfb.c", + ], + "crypto/aes/aes_core.o" => + [ + "crypto/aes/aes_core.c", + ], + "crypto/aes/aes_ecb.o" => + [ + "crypto/aes/aes_ecb.c", + ], + "crypto/aes/aes_ige.o" => + [ + "crypto/aes/aes_ige.c", + ], + "crypto/aes/aes_misc.o" => + [ + "crypto/aes/aes_misc.c", + ], + "crypto/aes/aes_ofb.o" => + [ + "crypto/aes/aes_ofb.c", + ], + "crypto/aes/aes_wrap.o" => + [ + "crypto/aes/aes_wrap.c", + ], + "crypto/aria/aria.o" => + [ + "crypto/aria/aria.c", + ], + "crypto/asn1/a_bitstr.o" => + [ + "crypto/asn1/a_bitstr.c", + ], + "crypto/asn1/a_d2i_fp.o" => + [ + "crypto/asn1/a_d2i_fp.c", + ], + "crypto/asn1/a_digest.o" => + [ + "crypto/asn1/a_digest.c", + ], + "crypto/asn1/a_dup.o" => + [ + "crypto/asn1/a_dup.c", + ], + "crypto/asn1/a_gentm.o" => + [ + "crypto/asn1/a_gentm.c", + ], + "crypto/asn1/a_i2d_fp.o" => + [ + "crypto/asn1/a_i2d_fp.c", + ], + "crypto/asn1/a_int.o" => + [ + "crypto/asn1/a_int.c", + ], + "crypto/asn1/a_mbstr.o" => + [ + "crypto/asn1/a_mbstr.c", + ], + "crypto/asn1/a_object.o" => + [ + "crypto/asn1/a_object.c", + ], + "crypto/asn1/a_octet.o" => + [ + "crypto/asn1/a_octet.c", + ], + "crypto/asn1/a_print.o" => + [ + "crypto/asn1/a_print.c", + ], + "crypto/asn1/a_sign.o" => + [ + "crypto/asn1/a_sign.c", + ], + "crypto/asn1/a_strex.o" => + [ + "crypto/asn1/a_strex.c", + ], + "crypto/asn1/a_strnid.o" => + [ + "crypto/asn1/a_strnid.c", + ], + "crypto/asn1/a_time.o" => + [ + "crypto/asn1/a_time.c", + ], + "crypto/asn1/a_type.o" => + [ + "crypto/asn1/a_type.c", + ], + "crypto/asn1/a_utctm.o" => + [ + "crypto/asn1/a_utctm.c", + ], + "crypto/asn1/a_utf8.o" => + [ + "crypto/asn1/a_utf8.c", + ], + "crypto/asn1/a_verify.o" => + [ + "crypto/asn1/a_verify.c", + ], + "crypto/asn1/ameth_lib.o" => + [ + "crypto/asn1/ameth_lib.c", + ], + "crypto/asn1/asn1_err.o" => + [ + "crypto/asn1/asn1_err.c", + ], + "crypto/asn1/asn1_gen.o" => + [ + "crypto/asn1/asn1_gen.c", + ], + "crypto/asn1/asn1_item_list.o" => + [ + "crypto/asn1/asn1_item_list.c", + ], + "crypto/asn1/asn1_lib.o" => + [ + "crypto/asn1/asn1_lib.c", + ], + "crypto/asn1/asn1_par.o" => + [ + "crypto/asn1/asn1_par.c", + ], + "crypto/asn1/asn_mime.o" => + [ + "crypto/asn1/asn_mime.c", + ], + "crypto/asn1/asn_moid.o" => + [ + "crypto/asn1/asn_moid.c", + ], + "crypto/asn1/asn_mstbl.o" => + [ + "crypto/asn1/asn_mstbl.c", + ], + "crypto/asn1/asn_pack.o" => + [ + "crypto/asn1/asn_pack.c", + ], + "crypto/asn1/bio_asn1.o" => + [ + "crypto/asn1/bio_asn1.c", + ], + "crypto/asn1/bio_ndef.o" => + [ + "crypto/asn1/bio_ndef.c", + ], + "crypto/asn1/d2i_pr.o" => + [ + "crypto/asn1/d2i_pr.c", + ], + "crypto/asn1/d2i_pu.o" => + [ + "crypto/asn1/d2i_pu.c", + ], + "crypto/asn1/evp_asn1.o" => + [ + "crypto/asn1/evp_asn1.c", + ], + "crypto/asn1/f_int.o" => + [ + "crypto/asn1/f_int.c", + ], + "crypto/asn1/f_string.o" => + [ + "crypto/asn1/f_string.c", + ], + "crypto/asn1/i2d_pr.o" => + [ + "crypto/asn1/i2d_pr.c", + ], + "crypto/asn1/i2d_pu.o" => + [ + "crypto/asn1/i2d_pu.c", + ], + "crypto/asn1/n_pkey.o" => + [ + "crypto/asn1/n_pkey.c", + ], + "crypto/asn1/nsseq.o" => + [ + "crypto/asn1/nsseq.c", + ], + "crypto/asn1/p5_pbe.o" => + [ + "crypto/asn1/p5_pbe.c", + ], + "crypto/asn1/p5_pbev2.o" => + [ + "crypto/asn1/p5_pbev2.c", + ], + "crypto/asn1/p5_scrypt.o" => + [ + "crypto/asn1/p5_scrypt.c", + ], + "crypto/asn1/p8_pkey.o" => + [ + "crypto/asn1/p8_pkey.c", + ], + "crypto/asn1/t_bitst.o" => + [ + "crypto/asn1/t_bitst.c", + ], + "crypto/asn1/t_pkey.o" => + [ + "crypto/asn1/t_pkey.c", + ], + "crypto/asn1/t_spki.o" => + [ + "crypto/asn1/t_spki.c", + ], + "crypto/asn1/tasn_dec.o" => + [ + "crypto/asn1/tasn_dec.c", + ], + "crypto/asn1/tasn_enc.o" => + [ + "crypto/asn1/tasn_enc.c", + ], + "crypto/asn1/tasn_fre.o" => + [ + "crypto/asn1/tasn_fre.c", + ], + "crypto/asn1/tasn_new.o" => + [ + "crypto/asn1/tasn_new.c", + ], + "crypto/asn1/tasn_prn.o" => + [ + "crypto/asn1/tasn_prn.c", + ], + "crypto/asn1/tasn_scn.o" => + [ + "crypto/asn1/tasn_scn.c", + ], + "crypto/asn1/tasn_typ.o" => + [ + "crypto/asn1/tasn_typ.c", + ], + "crypto/asn1/tasn_utl.o" => + [ + "crypto/asn1/tasn_utl.c", + ], + "crypto/asn1/x_algor.o" => + [ + "crypto/asn1/x_algor.c", + ], + "crypto/asn1/x_bignum.o" => + [ + "crypto/asn1/x_bignum.c", + ], + "crypto/asn1/x_info.o" => + [ + "crypto/asn1/x_info.c", + ], + "crypto/asn1/x_int64.o" => + [ + "crypto/asn1/x_int64.c", + ], + "crypto/asn1/x_long.o" => + [ + "crypto/asn1/x_long.c", + ], + "crypto/asn1/x_pkey.o" => + [ + "crypto/asn1/x_pkey.c", + ], + "crypto/asn1/x_sig.o" => + [ + "crypto/asn1/x_sig.c", + ], + "crypto/asn1/x_spki.o" => + [ + "crypto/asn1/x_spki.c", + ], + "crypto/asn1/x_val.o" => + [ + "crypto/asn1/x_val.c", + ], + "crypto/async/arch/async_null.o" => + [ + "crypto/async/arch/async_null.c", + ], + "crypto/async/arch/async_posix.o" => + [ + "crypto/async/arch/async_posix.c", + ], + "crypto/async/arch/async_win.o" => + [ + "crypto/async/arch/async_win.c", + ], + "crypto/async/async.o" => + [ + "crypto/async/async.c", + ], + "crypto/async/async_err.o" => + [ + "crypto/async/async_err.c", + ], + "crypto/async/async_wait.o" => + [ + "crypto/async/async_wait.c", + ], + "crypto/bf/bf_cfb64.o" => + [ + "crypto/bf/bf_cfb64.c", + ], + "crypto/bf/bf_ecb.o" => + [ + "crypto/bf/bf_ecb.c", + ], + "crypto/bf/bf_enc.o" => + [ + "crypto/bf/bf_enc.c", + ], + "crypto/bf/bf_ofb64.o" => + [ + "crypto/bf/bf_ofb64.c", + ], + "crypto/bf/bf_skey.o" => + [ + "crypto/bf/bf_skey.c", + ], + "crypto/bio/b_addr.o" => + [ + "crypto/bio/b_addr.c", + ], + "crypto/bio/b_dump.o" => + [ + "crypto/bio/b_dump.c", + ], + "crypto/bio/b_print.o" => + [ + "crypto/bio/b_print.c", + ], + "crypto/bio/b_sock.o" => + [ + "crypto/bio/b_sock.c", + ], + "crypto/bio/b_sock2.o" => + [ + "crypto/bio/b_sock2.c", + ], + "crypto/bio/bf_buff.o" => + [ + "crypto/bio/bf_buff.c", + ], + "crypto/bio/bf_lbuf.o" => + [ + "crypto/bio/bf_lbuf.c", + ], + "crypto/bio/bf_nbio.o" => + [ + "crypto/bio/bf_nbio.c", + ], + "crypto/bio/bf_null.o" => + [ + "crypto/bio/bf_null.c", + ], + "crypto/bio/bio_cb.o" => + [ + "crypto/bio/bio_cb.c", + ], + "crypto/bio/bio_err.o" => + [ + "crypto/bio/bio_err.c", + ], + "crypto/bio/bio_lib.o" => + [ + "crypto/bio/bio_lib.c", + ], + "crypto/bio/bio_meth.o" => + [ + "crypto/bio/bio_meth.c", + ], + "crypto/bio/bss_acpt.o" => + [ + "crypto/bio/bss_acpt.c", + ], + "crypto/bio/bss_bio.o" => + [ + "crypto/bio/bss_bio.c", + ], + "crypto/bio/bss_conn.o" => + [ + "crypto/bio/bss_conn.c", + ], + "crypto/bio/bss_dgram.o" => + [ + "crypto/bio/bss_dgram.c", + ], + "crypto/bio/bss_fd.o" => + [ + "crypto/bio/bss_fd.c", + ], + "crypto/bio/bss_file.o" => + [ + "crypto/bio/bss_file.c", + ], + "crypto/bio/bss_log.o" => + [ + "crypto/bio/bss_log.c", + ], + "crypto/bio/bss_mem.o" => + [ + "crypto/bio/bss_mem.c", + ], + "crypto/bio/bss_null.o" => + [ + "crypto/bio/bss_null.c", + ], + "crypto/bio/bss_sock.o" => + [ + "crypto/bio/bss_sock.c", + ], + "crypto/blake2/blake2b.o" => + [ + "crypto/blake2/blake2b.c", + ], + "crypto/blake2/blake2s.o" => + [ + "crypto/blake2/blake2s.c", + ], + "crypto/blake2/m_blake2b.o" => + [ + "crypto/blake2/m_blake2b.c", + ], + "crypto/blake2/m_blake2s.o" => + [ + "crypto/blake2/m_blake2s.c", + ], + "crypto/bn/bn_add.o" => + [ + "crypto/bn/bn_add.c", + ], + "crypto/bn/bn_asm.o" => + [ + "crypto/bn/bn_asm.c", + ], + "crypto/bn/bn_blind.o" => + [ + "crypto/bn/bn_blind.c", + ], + "crypto/bn/bn_const.o" => + [ + "crypto/bn/bn_const.c", + ], + "crypto/bn/bn_ctx.o" => + [ + "crypto/bn/bn_ctx.c", + ], + "crypto/bn/bn_depr.o" => + [ + "crypto/bn/bn_depr.c", + ], + "crypto/bn/bn_dh.o" => + [ + "crypto/bn/bn_dh.c", + ], + "crypto/bn/bn_div.o" => + [ + "crypto/bn/bn_div.c", + ], + "crypto/bn/bn_err.o" => + [ + "crypto/bn/bn_err.c", + ], + "crypto/bn/bn_exp.o" => + [ + "crypto/bn/bn_exp.c", + ], + "crypto/bn/bn_exp2.o" => + [ + "crypto/bn/bn_exp2.c", + ], + "crypto/bn/bn_gcd.o" => + [ + "crypto/bn/bn_gcd.c", + ], + "crypto/bn/bn_gf2m.o" => + [ + "crypto/bn/bn_gf2m.c", + ], + "crypto/bn/bn_intern.o" => + [ + "crypto/bn/bn_intern.c", + ], + "crypto/bn/bn_kron.o" => + [ + "crypto/bn/bn_kron.c", + ], + "crypto/bn/bn_lib.o" => + [ + "crypto/bn/bn_lib.c", + ], + "crypto/bn/bn_mod.o" => + [ + "crypto/bn/bn_mod.c", + ], + "crypto/bn/bn_mont.o" => + [ + "crypto/bn/bn_mont.c", + ], + "crypto/bn/bn_mpi.o" => + [ + "crypto/bn/bn_mpi.c", + ], + "crypto/bn/bn_mul.o" => + [ + "crypto/bn/bn_mul.c", + ], + "crypto/bn/bn_nist.o" => + [ + "crypto/bn/bn_nist.c", + ], + "crypto/bn/bn_prime.o" => + [ + "crypto/bn/bn_prime.c", + ], + "crypto/bn/bn_print.o" => + [ + "crypto/bn/bn_print.c", + ], + "crypto/bn/bn_rand.o" => + [ + "crypto/bn/bn_rand.c", + ], + "crypto/bn/bn_recp.o" => + [ + "crypto/bn/bn_recp.c", + ], + "crypto/bn/bn_shift.o" => + [ + "crypto/bn/bn_shift.c", + ], + "crypto/bn/bn_sqr.o" => + [ + "crypto/bn/bn_sqr.c", + ], + "crypto/bn/bn_sqrt.o" => + [ + "crypto/bn/bn_sqrt.c", + ], + "crypto/bn/bn_srp.o" => + [ + "crypto/bn/bn_srp.c", + ], + "crypto/bn/bn_word.o" => + [ + "crypto/bn/bn_word.c", + ], + "crypto/bn/bn_x931p.o" => + [ + "crypto/bn/bn_x931p.c", + ], + "crypto/buffer/buf_err.o" => + [ + "crypto/buffer/buf_err.c", + ], + "crypto/buffer/buffer.o" => + [ + "crypto/buffer/buffer.c", + ], + "crypto/camellia/camellia.o" => + [ + "crypto/camellia/camellia.c", + ], + "crypto/camellia/cmll_cbc.o" => + [ + "crypto/camellia/cmll_cbc.c", + ], + "crypto/camellia/cmll_cfb.o" => + [ + "crypto/camellia/cmll_cfb.c", + ], + "crypto/camellia/cmll_ctr.o" => + [ + "crypto/camellia/cmll_ctr.c", + ], + "crypto/camellia/cmll_ecb.o" => + [ + "crypto/camellia/cmll_ecb.c", + ], + "crypto/camellia/cmll_misc.o" => + [ + "crypto/camellia/cmll_misc.c", + ], + "crypto/camellia/cmll_ofb.o" => + [ + "crypto/camellia/cmll_ofb.c", + ], + "crypto/cast/c_cfb64.o" => + [ + "crypto/cast/c_cfb64.c", + ], + "crypto/cast/c_ecb.o" => + [ + "crypto/cast/c_ecb.c", + ], + "crypto/cast/c_enc.o" => + [ + "crypto/cast/c_enc.c", + ], + "crypto/cast/c_ofb64.o" => + [ + "crypto/cast/c_ofb64.c", + ], + "crypto/cast/c_skey.o" => + [ + "crypto/cast/c_skey.c", + ], + "crypto/chacha/chacha_enc.o" => + [ + "crypto/chacha/chacha_enc.c", + ], + "crypto/cmac/cm_ameth.o" => + [ + "crypto/cmac/cm_ameth.c", + ], + "crypto/cmac/cm_pmeth.o" => + [ + "crypto/cmac/cm_pmeth.c", + ], + "crypto/cmac/cmac.o" => + [ + "crypto/cmac/cmac.c", + ], + "crypto/cms/cms_asn1.o" => + [ + "crypto/cms/cms_asn1.c", + ], + "crypto/cms/cms_att.o" => + [ + "crypto/cms/cms_att.c", + ], + "crypto/cms/cms_cd.o" => + [ + "crypto/cms/cms_cd.c", + ], + "crypto/cms/cms_dd.o" => + [ + "crypto/cms/cms_dd.c", + ], + "crypto/cms/cms_enc.o" => + [ + "crypto/cms/cms_enc.c", + ], + "crypto/cms/cms_env.o" => + [ + "crypto/cms/cms_env.c", + ], + "crypto/cms/cms_err.o" => + [ + "crypto/cms/cms_err.c", + ], + "crypto/cms/cms_ess.o" => + [ + "crypto/cms/cms_ess.c", + ], + "crypto/cms/cms_io.o" => + [ + "crypto/cms/cms_io.c", + ], + "crypto/cms/cms_kari.o" => + [ + "crypto/cms/cms_kari.c", + ], + "crypto/cms/cms_lib.o" => + [ + "crypto/cms/cms_lib.c", + ], + "crypto/cms/cms_pwri.o" => + [ + "crypto/cms/cms_pwri.c", + ], + "crypto/cms/cms_sd.o" => + [ + "crypto/cms/cms_sd.c", + ], + "crypto/cms/cms_smime.o" => + [ + "crypto/cms/cms_smime.c", + ], + "crypto/conf/conf_api.o" => + [ + "crypto/conf/conf_api.c", + ], + "crypto/conf/conf_def.o" => + [ + "crypto/conf/conf_def.c", + ], + "crypto/conf/conf_err.o" => + [ + "crypto/conf/conf_err.c", + ], + "crypto/conf/conf_lib.o" => + [ + "crypto/conf/conf_lib.c", + ], + "crypto/conf/conf_mall.o" => + [ + "crypto/conf/conf_mall.c", + ], + "crypto/conf/conf_mod.o" => + [ + "crypto/conf/conf_mod.c", + ], + "crypto/conf/conf_sap.o" => + [ + "crypto/conf/conf_sap.c", + ], + "crypto/conf/conf_ssl.o" => + [ + "crypto/conf/conf_ssl.c", + ], + "crypto/cpt_err.o" => + [ + "crypto/cpt_err.c", + ], + "crypto/cryptlib.o" => + [ + "crypto/cryptlib.c", + ], + "crypto/ct/ct_b64.o" => + [ + "crypto/ct/ct_b64.c", + ], + "crypto/ct/ct_err.o" => + [ + "crypto/ct/ct_err.c", + ], + "crypto/ct/ct_log.o" => + [ + "crypto/ct/ct_log.c", + ], + "crypto/ct/ct_oct.o" => + [ + "crypto/ct/ct_oct.c", + ], + "crypto/ct/ct_policy.o" => + [ + "crypto/ct/ct_policy.c", + ], + "crypto/ct/ct_prn.o" => + [ + "crypto/ct/ct_prn.c", + ], + "crypto/ct/ct_sct.o" => + [ + "crypto/ct/ct_sct.c", + ], + "crypto/ct/ct_sct_ctx.o" => + [ + "crypto/ct/ct_sct_ctx.c", + ], + "crypto/ct/ct_vfy.o" => + [ + "crypto/ct/ct_vfy.c", + ], + "crypto/ct/ct_x509v3.o" => + [ + "crypto/ct/ct_x509v3.c", + ], + "crypto/ctype.o" => + [ + "crypto/ctype.c", + ], + "crypto/cversion.o" => + [ + "crypto/cversion.c", + ], + "crypto/des/cbc_cksm.o" => + [ + "crypto/des/cbc_cksm.c", + ], + "crypto/des/cbc_enc.o" => + [ + "crypto/des/cbc_enc.c", + ], + "crypto/des/cfb64ede.o" => + [ + "crypto/des/cfb64ede.c", + ], + "crypto/des/cfb64enc.o" => + [ + "crypto/des/cfb64enc.c", + ], + "crypto/des/cfb_enc.o" => + [ + "crypto/des/cfb_enc.c", + ], + "crypto/des/des_enc.o" => + [ + "crypto/des/des_enc.c", + ], + "crypto/des/ecb3_enc.o" => + [ + "crypto/des/ecb3_enc.c", + ], + "crypto/des/ecb_enc.o" => + [ + "crypto/des/ecb_enc.c", + ], + "crypto/des/fcrypt.o" => + [ + "crypto/des/fcrypt.c", + ], + "crypto/des/fcrypt_b.o" => + [ + "crypto/des/fcrypt_b.c", + ], + "crypto/des/ofb64ede.o" => + [ + "crypto/des/ofb64ede.c", + ], + "crypto/des/ofb64enc.o" => + [ + "crypto/des/ofb64enc.c", + ], + "crypto/des/ofb_enc.o" => + [ + "crypto/des/ofb_enc.c", + ], + "crypto/des/pcbc_enc.o" => + [ + "crypto/des/pcbc_enc.c", + ], + "crypto/des/qud_cksm.o" => + [ + "crypto/des/qud_cksm.c", + ], + "crypto/des/rand_key.o" => + [ + "crypto/des/rand_key.c", + ], + "crypto/des/set_key.o" => + [ + "crypto/des/set_key.c", + ], + "crypto/des/str2key.o" => + [ + "crypto/des/str2key.c", + ], + "crypto/des/xcbc_enc.o" => + [ + "crypto/des/xcbc_enc.c", + ], + "crypto/dh/dh_ameth.o" => + [ + "crypto/dh/dh_ameth.c", + ], + "crypto/dh/dh_asn1.o" => + [ + "crypto/dh/dh_asn1.c", + ], + "crypto/dh/dh_check.o" => + [ + "crypto/dh/dh_check.c", + ], + "crypto/dh/dh_depr.o" => + [ + "crypto/dh/dh_depr.c", + ], + "crypto/dh/dh_err.o" => + [ + "crypto/dh/dh_err.c", + ], + "crypto/dh/dh_gen.o" => + [ + "crypto/dh/dh_gen.c", + ], + "crypto/dh/dh_kdf.o" => + [ + "crypto/dh/dh_kdf.c", + ], + "crypto/dh/dh_key.o" => + [ + "crypto/dh/dh_key.c", + ], + "crypto/dh/dh_lib.o" => + [ + "crypto/dh/dh_lib.c", + ], + "crypto/dh/dh_meth.o" => + [ + "crypto/dh/dh_meth.c", + ], + "crypto/dh/dh_pmeth.o" => + [ + "crypto/dh/dh_pmeth.c", + ], + "crypto/dh/dh_prn.o" => + [ + "crypto/dh/dh_prn.c", + ], + "crypto/dh/dh_rfc5114.o" => + [ + "crypto/dh/dh_rfc5114.c", + ], + "crypto/dh/dh_rfc7919.o" => + [ + "crypto/dh/dh_rfc7919.c", + ], + "crypto/dsa/dsa_ameth.o" => + [ + "crypto/dsa/dsa_ameth.c", + ], + "crypto/dsa/dsa_asn1.o" => + [ + "crypto/dsa/dsa_asn1.c", + ], + "crypto/dsa/dsa_depr.o" => + [ + "crypto/dsa/dsa_depr.c", + ], + "crypto/dsa/dsa_err.o" => + [ + "crypto/dsa/dsa_err.c", + ], + "crypto/dsa/dsa_gen.o" => + [ + "crypto/dsa/dsa_gen.c", + ], + "crypto/dsa/dsa_key.o" => + [ + "crypto/dsa/dsa_key.c", + ], + "crypto/dsa/dsa_lib.o" => + [ + "crypto/dsa/dsa_lib.c", + ], + "crypto/dsa/dsa_meth.o" => + [ + "crypto/dsa/dsa_meth.c", + ], + "crypto/dsa/dsa_ossl.o" => + [ + "crypto/dsa/dsa_ossl.c", + ], + "crypto/dsa/dsa_pmeth.o" => + [ + "crypto/dsa/dsa_pmeth.c", + ], + "crypto/dsa/dsa_prn.o" => + [ + "crypto/dsa/dsa_prn.c", + ], + "crypto/dsa/dsa_sign.o" => + [ + "crypto/dsa/dsa_sign.c", + ], + "crypto/dsa/dsa_vrf.o" => + [ + "crypto/dsa/dsa_vrf.c", + ], + "crypto/dso/dso_dl.o" => + [ + "crypto/dso/dso_dl.c", + ], + "crypto/dso/dso_dlfcn.o" => + [ + "crypto/dso/dso_dlfcn.c", + ], + "crypto/dso/dso_err.o" => + [ + "crypto/dso/dso_err.c", + ], + "crypto/dso/dso_lib.o" => + [ + "crypto/dso/dso_lib.c", + ], + "crypto/dso/dso_openssl.o" => + [ + "crypto/dso/dso_openssl.c", + ], + "crypto/dso/dso_vms.o" => + [ + "crypto/dso/dso_vms.c", + ], + "crypto/dso/dso_win32.o" => + [ + "crypto/dso/dso_win32.c", + ], + "crypto/ebcdic.o" => + [ + "crypto/ebcdic.c", + ], + "crypto/ec/curve25519.o" => + [ + "crypto/ec/curve25519.c", + ], + "crypto/ec/curve448/arch_32/f_impl.o" => + [ + "crypto/ec/curve448/arch_32/f_impl.c", + ], + "crypto/ec/curve448/curve448.o" => + [ + "crypto/ec/curve448/curve448.c", + ], + "crypto/ec/curve448/curve448_tables.o" => + [ + "crypto/ec/curve448/curve448_tables.c", + ], + "crypto/ec/curve448/eddsa.o" => + [ + "crypto/ec/curve448/eddsa.c", + ], + "crypto/ec/curve448/f_generic.o" => + [ + "crypto/ec/curve448/f_generic.c", + ], + "crypto/ec/curve448/scalar.o" => + [ + "crypto/ec/curve448/scalar.c", + ], + "crypto/ec/ec2_oct.o" => + [ + "crypto/ec/ec2_oct.c", + ], + "crypto/ec/ec2_smpl.o" => + [ + "crypto/ec/ec2_smpl.c", + ], + "crypto/ec/ec_ameth.o" => + [ + "crypto/ec/ec_ameth.c", + ], + "crypto/ec/ec_asn1.o" => + [ + "crypto/ec/ec_asn1.c", + ], + "crypto/ec/ec_check.o" => + [ + "crypto/ec/ec_check.c", + ], + "crypto/ec/ec_curve.o" => + [ + "crypto/ec/ec_curve.c", + ], + "crypto/ec/ec_cvt.o" => + [ + "crypto/ec/ec_cvt.c", + ], + "crypto/ec/ec_err.o" => + [ + "crypto/ec/ec_err.c", + ], + "crypto/ec/ec_key.o" => + [ + "crypto/ec/ec_key.c", + ], + "crypto/ec/ec_kmeth.o" => + [ + "crypto/ec/ec_kmeth.c", + ], + "crypto/ec/ec_lib.o" => + [ + "crypto/ec/ec_lib.c", + ], + "crypto/ec/ec_mult.o" => + [ + "crypto/ec/ec_mult.c", + ], + "crypto/ec/ec_oct.o" => + [ + "crypto/ec/ec_oct.c", + ], + "crypto/ec/ec_pmeth.o" => + [ + "crypto/ec/ec_pmeth.c", + ], + "crypto/ec/ec_print.o" => + [ + "crypto/ec/ec_print.c", + ], + "crypto/ec/ecdh_kdf.o" => + [ + "crypto/ec/ecdh_kdf.c", + ], + "crypto/ec/ecdh_ossl.o" => + [ + "crypto/ec/ecdh_ossl.c", + ], + "crypto/ec/ecdsa_ossl.o" => + [ + "crypto/ec/ecdsa_ossl.c", + ], + "crypto/ec/ecdsa_sign.o" => + [ + "crypto/ec/ecdsa_sign.c", + ], + "crypto/ec/ecdsa_vrf.o" => + [ + "crypto/ec/ecdsa_vrf.c", + ], + "crypto/ec/eck_prn.o" => + [ + "crypto/ec/eck_prn.c", + ], + "crypto/ec/ecp_mont.o" => + [ + "crypto/ec/ecp_mont.c", + ], + "crypto/ec/ecp_nist.o" => + [ + "crypto/ec/ecp_nist.c", + ], + "crypto/ec/ecp_nistp224.o" => + [ + "crypto/ec/ecp_nistp224.c", + ], + "crypto/ec/ecp_nistp256.o" => + [ + "crypto/ec/ecp_nistp256.c", + ], + "crypto/ec/ecp_nistp521.o" => + [ + "crypto/ec/ecp_nistp521.c", + ], + "crypto/ec/ecp_nistputil.o" => + [ + "crypto/ec/ecp_nistputil.c", + ], + "crypto/ec/ecp_oct.o" => + [ + "crypto/ec/ecp_oct.c", + ], + "crypto/ec/ecp_smpl.o" => + [ + "crypto/ec/ecp_smpl.c", + ], + "crypto/ec/ecx_meth.o" => + [ + "crypto/ec/ecx_meth.c", + ], + "crypto/engine/eng_all.o" => + [ + "crypto/engine/eng_all.c", + ], + "crypto/engine/eng_cnf.o" => + [ + "crypto/engine/eng_cnf.c", + ], + "crypto/engine/eng_ctrl.o" => + [ + "crypto/engine/eng_ctrl.c", + ], + "crypto/engine/eng_dyn.o" => + [ + "crypto/engine/eng_dyn.c", + ], + "crypto/engine/eng_err.o" => + [ + "crypto/engine/eng_err.c", + ], + "crypto/engine/eng_fat.o" => + [ + "crypto/engine/eng_fat.c", + ], + "crypto/engine/eng_init.o" => + [ + "crypto/engine/eng_init.c", + ], + "crypto/engine/eng_lib.o" => + [ + "crypto/engine/eng_lib.c", + ], + "crypto/engine/eng_list.o" => + [ + "crypto/engine/eng_list.c", + ], + "crypto/engine/eng_openssl.o" => + [ + "crypto/engine/eng_openssl.c", + ], + "crypto/engine/eng_pkey.o" => + [ + "crypto/engine/eng_pkey.c", + ], + "crypto/engine/eng_rdrand.o" => + [ + "crypto/engine/eng_rdrand.c", + ], + "crypto/engine/eng_table.o" => + [ + "crypto/engine/eng_table.c", + ], + "crypto/engine/tb_asnmth.o" => + [ + "crypto/engine/tb_asnmth.c", + ], + "crypto/engine/tb_cipher.o" => + [ + "crypto/engine/tb_cipher.c", + ], + "crypto/engine/tb_dh.o" => + [ + "crypto/engine/tb_dh.c", + ], + "crypto/engine/tb_digest.o" => + [ + "crypto/engine/tb_digest.c", + ], + "crypto/engine/tb_dsa.o" => + [ + "crypto/engine/tb_dsa.c", + ], + "crypto/engine/tb_eckey.o" => + [ + "crypto/engine/tb_eckey.c", + ], + "crypto/engine/tb_pkmeth.o" => + [ + "crypto/engine/tb_pkmeth.c", + ], + "crypto/engine/tb_rand.o" => + [ + "crypto/engine/tb_rand.c", + ], + "crypto/engine/tb_rsa.o" => + [ + "crypto/engine/tb_rsa.c", + ], + "crypto/err/err.o" => + [ + "crypto/err/err.c", + ], + "crypto/err/err_all.o" => + [ + "crypto/err/err_all.c", + ], + "crypto/err/err_prn.o" => + [ + "crypto/err/err_prn.c", + ], + "crypto/evp/bio_b64.o" => + [ + "crypto/evp/bio_b64.c", + ], + "crypto/evp/bio_enc.o" => + [ + "crypto/evp/bio_enc.c", + ], + "crypto/evp/bio_md.o" => + [ + "crypto/evp/bio_md.c", + ], + "crypto/evp/bio_ok.o" => + [ + "crypto/evp/bio_ok.c", + ], + "crypto/evp/c_allc.o" => + [ + "crypto/evp/c_allc.c", + ], + "crypto/evp/c_alld.o" => + [ + "crypto/evp/c_alld.c", + ], + "crypto/evp/cmeth_lib.o" => + [ + "crypto/evp/cmeth_lib.c", + ], + "crypto/evp/digest.o" => + [ + "crypto/evp/digest.c", + ], + "crypto/evp/e_aes.o" => + [ + "crypto/evp/e_aes.c", + ], + "crypto/evp/e_aes_cbc_hmac_sha1.o" => + [ + "crypto/evp/e_aes_cbc_hmac_sha1.c", + ], + "crypto/evp/e_aes_cbc_hmac_sha256.o" => + [ + "crypto/evp/e_aes_cbc_hmac_sha256.c", + ], + "crypto/evp/e_aria.o" => + [ + "crypto/evp/e_aria.c", + ], + "crypto/evp/e_bf.o" => + [ + "crypto/evp/e_bf.c", + ], + "crypto/evp/e_camellia.o" => + [ + "crypto/evp/e_camellia.c", + ], + "crypto/evp/e_cast.o" => + [ + "crypto/evp/e_cast.c", + ], + "crypto/evp/e_chacha20_poly1305.o" => + [ + "crypto/evp/e_chacha20_poly1305.c", + ], + "crypto/evp/e_des.o" => + [ + "crypto/evp/e_des.c", + ], + "crypto/evp/e_des3.o" => + [ + "crypto/evp/e_des3.c", + ], + "crypto/evp/e_idea.o" => + [ + "crypto/evp/e_idea.c", + ], + "crypto/evp/e_null.o" => + [ + "crypto/evp/e_null.c", + ], + "crypto/evp/e_old.o" => + [ + "crypto/evp/e_old.c", + ], + "crypto/evp/e_rc2.o" => + [ + "crypto/evp/e_rc2.c", + ], + "crypto/evp/e_rc4.o" => + [ + "crypto/evp/e_rc4.c", + ], + "crypto/evp/e_rc4_hmac_md5.o" => + [ + "crypto/evp/e_rc4_hmac_md5.c", + ], + "crypto/evp/e_rc5.o" => + [ + "crypto/evp/e_rc5.c", + ], + "crypto/evp/e_seed.o" => + [ + "crypto/evp/e_seed.c", + ], + "crypto/evp/e_sm4.o" => + [ + "crypto/evp/e_sm4.c", + ], + "crypto/evp/e_xcbc_d.o" => + [ + "crypto/evp/e_xcbc_d.c", + ], + "crypto/evp/encode.o" => + [ + "crypto/evp/encode.c", + ], + "crypto/evp/evp_cnf.o" => + [ + "crypto/evp/evp_cnf.c", + ], + "crypto/evp/evp_enc.o" => + [ + "crypto/evp/evp_enc.c", + ], + "crypto/evp/evp_err.o" => + [ + "crypto/evp/evp_err.c", + ], + "crypto/evp/evp_key.o" => + [ + "crypto/evp/evp_key.c", + ], + "crypto/evp/evp_lib.o" => + [ + "crypto/evp/evp_lib.c", + ], + "crypto/evp/evp_pbe.o" => + [ + "crypto/evp/evp_pbe.c", + ], + "crypto/evp/evp_pkey.o" => + [ + "crypto/evp/evp_pkey.c", + ], + "crypto/evp/m_md2.o" => + [ + "crypto/evp/m_md2.c", + ], + "crypto/evp/m_md4.o" => + [ + "crypto/evp/m_md4.c", + ], + "crypto/evp/m_md5.o" => + [ + "crypto/evp/m_md5.c", + ], + "crypto/evp/m_md5_sha1.o" => + [ + "crypto/evp/m_md5_sha1.c", + ], + "crypto/evp/m_mdc2.o" => + [ + "crypto/evp/m_mdc2.c", + ], + "crypto/evp/m_null.o" => + [ + "crypto/evp/m_null.c", + ], + "crypto/evp/m_ripemd.o" => + [ + "crypto/evp/m_ripemd.c", + ], + "crypto/evp/m_sha1.o" => + [ + "crypto/evp/m_sha1.c", + ], + "crypto/evp/m_sha3.o" => + [ + "crypto/evp/m_sha3.c", + ], + "crypto/evp/m_sigver.o" => + [ + "crypto/evp/m_sigver.c", + ], + "crypto/evp/m_wp.o" => + [ + "crypto/evp/m_wp.c", + ], + "crypto/evp/names.o" => + [ + "crypto/evp/names.c", + ], + "crypto/evp/p5_crpt.o" => + [ + "crypto/evp/p5_crpt.c", + ], + "crypto/evp/p5_crpt2.o" => + [ + "crypto/evp/p5_crpt2.c", + ], + "crypto/evp/p_dec.o" => + [ + "crypto/evp/p_dec.c", + ], + "crypto/evp/p_enc.o" => + [ + "crypto/evp/p_enc.c", + ], + "crypto/evp/p_lib.o" => + [ + "crypto/evp/p_lib.c", + ], + "crypto/evp/p_open.o" => + [ + "crypto/evp/p_open.c", + ], + "crypto/evp/p_seal.o" => + [ + "crypto/evp/p_seal.c", + ], + "crypto/evp/p_sign.o" => + [ + "crypto/evp/p_sign.c", + ], + "crypto/evp/p_verify.o" => + [ + "crypto/evp/p_verify.c", + ], + "crypto/evp/pbe_scrypt.o" => + [ + "crypto/evp/pbe_scrypt.c", + ], + "crypto/evp/pmeth_fn.o" => + [ + "crypto/evp/pmeth_fn.c", + ], + "crypto/evp/pmeth_gn.o" => + [ + "crypto/evp/pmeth_gn.c", + ], + "crypto/evp/pmeth_lib.o" => + [ + "crypto/evp/pmeth_lib.c", + ], + "crypto/ex_data.o" => + [ + "crypto/ex_data.c", + ], + "crypto/getenv.o" => + [ + "crypto/getenv.c", + ], + "crypto/hmac/hm_ameth.o" => + [ + "crypto/hmac/hm_ameth.c", + ], + "crypto/hmac/hm_pmeth.o" => + [ + "crypto/hmac/hm_pmeth.c", + ], + "crypto/hmac/hmac.o" => + [ + "crypto/hmac/hmac.c", + ], + "crypto/idea/i_cbc.o" => + [ + "crypto/idea/i_cbc.c", + ], + "crypto/idea/i_cfb64.o" => + [ + "crypto/idea/i_cfb64.c", + ], + "crypto/idea/i_ecb.o" => + [ + "crypto/idea/i_ecb.c", + ], + "crypto/idea/i_ofb64.o" => + [ + "crypto/idea/i_ofb64.c", + ], + "crypto/idea/i_skey.o" => + [ + "crypto/idea/i_skey.c", + ], + "crypto/init.o" => + [ + "crypto/init.c", + ], + "crypto/kdf/hkdf.o" => + [ + "crypto/kdf/hkdf.c", + ], + "crypto/kdf/kdf_err.o" => + [ + "crypto/kdf/kdf_err.c", + ], + "crypto/kdf/scrypt.o" => + [ + "crypto/kdf/scrypt.c", + ], + "crypto/kdf/tls1_prf.o" => + [ + "crypto/kdf/tls1_prf.c", + ], + "crypto/lhash/lh_stats.o" => + [ + "crypto/lhash/lh_stats.c", + ], + "crypto/lhash/lhash.o" => + [ + "crypto/lhash/lhash.c", + ], + "crypto/md4/md4_dgst.o" => + [ + "crypto/md4/md4_dgst.c", + ], + "crypto/md4/md4_one.o" => + [ + "crypto/md4/md4_one.c", + ], + "crypto/md5/md5_dgst.o" => + [ + "crypto/md5/md5_dgst.c", + ], + "crypto/md5/md5_one.o" => + [ + "crypto/md5/md5_one.c", + ], + "crypto/mdc2/mdc2_one.o" => + [ + "crypto/mdc2/mdc2_one.c", + ], + "crypto/mdc2/mdc2dgst.o" => + [ + "crypto/mdc2/mdc2dgst.c", + ], + "crypto/mem.o" => + [ + "crypto/mem.c", + ], + "crypto/mem_clr.o" => + [ + "crypto/mem_clr.c", + ], + "crypto/mem_dbg.o" => + [ + "crypto/mem_dbg.c", + ], + "crypto/mem_sec.o" => + [ + "crypto/mem_sec.c", + ], + "crypto/modes/cbc128.o" => + [ + "crypto/modes/cbc128.c", + ], + "crypto/modes/ccm128.o" => + [ + "crypto/modes/ccm128.c", + ], + "crypto/modes/cfb128.o" => + [ + "crypto/modes/cfb128.c", + ], + "crypto/modes/ctr128.o" => + [ + "crypto/modes/ctr128.c", + ], + "crypto/modes/cts128.o" => + [ + "crypto/modes/cts128.c", + ], + "crypto/modes/gcm128.o" => + [ + "crypto/modes/gcm128.c", + ], + "crypto/modes/ocb128.o" => + [ + "crypto/modes/ocb128.c", + ], + "crypto/modes/ofb128.o" => + [ + "crypto/modes/ofb128.c", + ], + "crypto/modes/wrap128.o" => + [ + "crypto/modes/wrap128.c", + ], + "crypto/modes/xts128.o" => + [ + "crypto/modes/xts128.c", + ], + "crypto/o_dir.o" => + [ + "crypto/o_dir.c", + ], + "crypto/o_fips.o" => + [ + "crypto/o_fips.c", + ], + "crypto/o_fopen.o" => + [ + "crypto/o_fopen.c", + ], + "crypto/o_init.o" => + [ + "crypto/o_init.c", + ], + "crypto/o_str.o" => + [ + "crypto/o_str.c", + ], + "crypto/o_time.o" => + [ + "crypto/o_time.c", + ], + "crypto/objects/o_names.o" => + [ + "crypto/objects/o_names.c", + ], + "crypto/objects/obj_dat.o" => + [ + "crypto/objects/obj_dat.c", + ], + "crypto/objects/obj_err.o" => + [ + "crypto/objects/obj_err.c", + ], + "crypto/objects/obj_lib.o" => + [ + "crypto/objects/obj_lib.c", + ], + "crypto/objects/obj_xref.o" => + [ + "crypto/objects/obj_xref.c", + ], + "crypto/ocsp/ocsp_asn.o" => + [ + "crypto/ocsp/ocsp_asn.c", + ], + "crypto/ocsp/ocsp_cl.o" => + [ + "crypto/ocsp/ocsp_cl.c", + ], + "crypto/ocsp/ocsp_err.o" => + [ + "crypto/ocsp/ocsp_err.c", + ], + "crypto/ocsp/ocsp_ext.o" => + [ + "crypto/ocsp/ocsp_ext.c", + ], + "crypto/ocsp/ocsp_ht.o" => + [ + "crypto/ocsp/ocsp_ht.c", + ], + "crypto/ocsp/ocsp_lib.o" => + [ + "crypto/ocsp/ocsp_lib.c", + ], + "crypto/ocsp/ocsp_prn.o" => + [ + "crypto/ocsp/ocsp_prn.c", + ], + "crypto/ocsp/ocsp_srv.o" => + [ + "crypto/ocsp/ocsp_srv.c", + ], + "crypto/ocsp/ocsp_vfy.o" => + [ + "crypto/ocsp/ocsp_vfy.c", + ], + "crypto/ocsp/v3_ocsp.o" => + [ + "crypto/ocsp/v3_ocsp.c", + ], + "crypto/pem/pem_all.o" => + [ + "crypto/pem/pem_all.c", + ], + "crypto/pem/pem_err.o" => + [ + "crypto/pem/pem_err.c", + ], + "crypto/pem/pem_info.o" => + [ + "crypto/pem/pem_info.c", + ], + "crypto/pem/pem_lib.o" => + [ + "crypto/pem/pem_lib.c", + ], + "crypto/pem/pem_oth.o" => + [ + "crypto/pem/pem_oth.c", + ], + "crypto/pem/pem_pk8.o" => + [ + "crypto/pem/pem_pk8.c", + ], + "crypto/pem/pem_pkey.o" => + [ + "crypto/pem/pem_pkey.c", + ], + "crypto/pem/pem_sign.o" => + [ + "crypto/pem/pem_sign.c", + ], + "crypto/pem/pem_x509.o" => + [ + "crypto/pem/pem_x509.c", + ], + "crypto/pem/pem_xaux.o" => + [ + "crypto/pem/pem_xaux.c", + ], + "crypto/pem/pvkfmt.o" => + [ + "crypto/pem/pvkfmt.c", + ], + "crypto/pkcs12/p12_add.o" => + [ + "crypto/pkcs12/p12_add.c", + ], + "crypto/pkcs12/p12_asn.o" => + [ + "crypto/pkcs12/p12_asn.c", + ], + "crypto/pkcs12/p12_attr.o" => + [ + "crypto/pkcs12/p12_attr.c", + ], + "crypto/pkcs12/p12_crpt.o" => + [ + "crypto/pkcs12/p12_crpt.c", + ], + "crypto/pkcs12/p12_crt.o" => + [ + "crypto/pkcs12/p12_crt.c", + ], + "crypto/pkcs12/p12_decr.o" => + [ + "crypto/pkcs12/p12_decr.c", + ], + "crypto/pkcs12/p12_init.o" => + [ + "crypto/pkcs12/p12_init.c", + ], + "crypto/pkcs12/p12_key.o" => + [ + "crypto/pkcs12/p12_key.c", + ], + "crypto/pkcs12/p12_kiss.o" => + [ + "crypto/pkcs12/p12_kiss.c", + ], + "crypto/pkcs12/p12_mutl.o" => + [ + "crypto/pkcs12/p12_mutl.c", + ], + "crypto/pkcs12/p12_npas.o" => + [ + "crypto/pkcs12/p12_npas.c", + ], + "crypto/pkcs12/p12_p8d.o" => + [ + "crypto/pkcs12/p12_p8d.c", + ], + "crypto/pkcs12/p12_p8e.o" => + [ + "crypto/pkcs12/p12_p8e.c", + ], + "crypto/pkcs12/p12_sbag.o" => + [ + "crypto/pkcs12/p12_sbag.c", + ], + "crypto/pkcs12/p12_utl.o" => + [ + "crypto/pkcs12/p12_utl.c", + ], + "crypto/pkcs12/pk12err.o" => + [ + "crypto/pkcs12/pk12err.c", + ], + "crypto/pkcs7/bio_pk7.o" => + [ + "crypto/pkcs7/bio_pk7.c", + ], + "crypto/pkcs7/pk7_asn1.o" => + [ + "crypto/pkcs7/pk7_asn1.c", + ], + "crypto/pkcs7/pk7_attr.o" => + [ + "crypto/pkcs7/pk7_attr.c", + ], + "crypto/pkcs7/pk7_doit.o" => + [ + "crypto/pkcs7/pk7_doit.c", + ], + "crypto/pkcs7/pk7_lib.o" => + [ + "crypto/pkcs7/pk7_lib.c", + ], + "crypto/pkcs7/pk7_mime.o" => + [ + "crypto/pkcs7/pk7_mime.c", + ], + "crypto/pkcs7/pk7_smime.o" => + [ + "crypto/pkcs7/pk7_smime.c", + ], + "crypto/pkcs7/pkcs7err.o" => + [ + "crypto/pkcs7/pkcs7err.c", + ], + "crypto/poly1305/poly1305.o" => + [ + "crypto/poly1305/poly1305.c", + ], + "crypto/poly1305/poly1305_ameth.o" => + [ + "crypto/poly1305/poly1305_ameth.c", + ], + "crypto/poly1305/poly1305_pmeth.o" => + [ + "crypto/poly1305/poly1305_pmeth.c", + ], + "crypto/rand/drbg_ctr.o" => + [ + "crypto/rand/drbg_ctr.c", + ], + "crypto/rand/drbg_lib.o" => + [ + "crypto/rand/drbg_lib.c", + ], + "crypto/rand/rand_egd.o" => + [ + "crypto/rand/rand_egd.c", + ], + "crypto/rand/rand_err.o" => + [ + "crypto/rand/rand_err.c", + ], + "crypto/rand/rand_lib.o" => + [ + "crypto/rand/rand_lib.c", + ], + "crypto/rand/rand_unix.o" => + [ + "crypto/rand/rand_unix.c", + ], + "crypto/rand/rand_vms.o" => + [ + "crypto/rand/rand_vms.c", + ], + "crypto/rand/rand_win.o" => + [ + "crypto/rand/rand_win.c", + ], + "crypto/rand/randfile.o" => + [ + "crypto/rand/randfile.c", + ], + "crypto/rc2/rc2_cbc.o" => + [ + "crypto/rc2/rc2_cbc.c", + ], + "crypto/rc2/rc2_ecb.o" => + [ + "crypto/rc2/rc2_ecb.c", + ], + "crypto/rc2/rc2_skey.o" => + [ + "crypto/rc2/rc2_skey.c", + ], + "crypto/rc2/rc2cfb64.o" => + [ + "crypto/rc2/rc2cfb64.c", + ], + "crypto/rc2/rc2ofb64.o" => + [ + "crypto/rc2/rc2ofb64.c", + ], + "crypto/rc4/rc4_enc.o" => + [ + "crypto/rc4/rc4_enc.c", + ], + "crypto/rc4/rc4_skey.o" => + [ + "crypto/rc4/rc4_skey.c", + ], + "crypto/ripemd/rmd_dgst.o" => + [ + "crypto/ripemd/rmd_dgst.c", + ], + "crypto/ripemd/rmd_one.o" => + [ + "crypto/ripemd/rmd_one.c", + ], + "crypto/rsa/rsa_ameth.o" => + [ + "crypto/rsa/rsa_ameth.c", + ], + "crypto/rsa/rsa_asn1.o" => + [ + "crypto/rsa/rsa_asn1.c", + ], + "crypto/rsa/rsa_chk.o" => + [ + "crypto/rsa/rsa_chk.c", + ], + "crypto/rsa/rsa_crpt.o" => + [ + "crypto/rsa/rsa_crpt.c", + ], + "crypto/rsa/rsa_depr.o" => + [ + "crypto/rsa/rsa_depr.c", + ], + "crypto/rsa/rsa_err.o" => + [ + "crypto/rsa/rsa_err.c", + ], + "crypto/rsa/rsa_gen.o" => + [ + "crypto/rsa/rsa_gen.c", + ], + "crypto/rsa/rsa_lib.o" => + [ + "crypto/rsa/rsa_lib.c", + ], + "crypto/rsa/rsa_meth.o" => + [ + "crypto/rsa/rsa_meth.c", + ], + "crypto/rsa/rsa_mp.o" => + [ + "crypto/rsa/rsa_mp.c", + ], + "crypto/rsa/rsa_none.o" => + [ + "crypto/rsa/rsa_none.c", + ], + "crypto/rsa/rsa_oaep.o" => + [ + "crypto/rsa/rsa_oaep.c", + ], + "crypto/rsa/rsa_ossl.o" => + [ + "crypto/rsa/rsa_ossl.c", + ], + "crypto/rsa/rsa_pk1.o" => + [ + "crypto/rsa/rsa_pk1.c", + ], + "crypto/rsa/rsa_pmeth.o" => + [ + "crypto/rsa/rsa_pmeth.c", + ], + "crypto/rsa/rsa_prn.o" => + [ + "crypto/rsa/rsa_prn.c", + ], + "crypto/rsa/rsa_pss.o" => + [ + "crypto/rsa/rsa_pss.c", + ], + "crypto/rsa/rsa_saos.o" => + [ + "crypto/rsa/rsa_saos.c", + ], + "crypto/rsa/rsa_sign.o" => + [ + "crypto/rsa/rsa_sign.c", + ], + "crypto/rsa/rsa_ssl.o" => + [ + "crypto/rsa/rsa_ssl.c", + ], + "crypto/rsa/rsa_x931.o" => + [ + "crypto/rsa/rsa_x931.c", + ], + "crypto/rsa/rsa_x931g.o" => + [ + "crypto/rsa/rsa_x931g.c", + ], + "crypto/seed/seed.o" => + [ + "crypto/seed/seed.c", + ], + "crypto/seed/seed_cbc.o" => + [ + "crypto/seed/seed_cbc.c", + ], + "crypto/seed/seed_cfb.o" => + [ + "crypto/seed/seed_cfb.c", + ], + "crypto/seed/seed_ecb.o" => + [ + "crypto/seed/seed_ecb.c", + ], + "crypto/seed/seed_ofb.o" => + [ + "crypto/seed/seed_ofb.c", + ], + "crypto/sha/keccak1600.o" => + [ + "crypto/sha/keccak1600.c", + ], + "crypto/sha/sha1_one.o" => + [ + "crypto/sha/sha1_one.c", + ], + "crypto/sha/sha1dgst.o" => + [ + "crypto/sha/sha1dgst.c", + ], + "crypto/sha/sha256.o" => + [ + "crypto/sha/sha256.c", + ], + "crypto/sha/sha512.o" => + [ + "crypto/sha/sha512.c", + ], + "crypto/siphash/siphash.o" => + [ + "crypto/siphash/siphash.c", + ], + "crypto/siphash/siphash_ameth.o" => + [ + "crypto/siphash/siphash_ameth.c", + ], + "crypto/siphash/siphash_pmeth.o" => + [ + "crypto/siphash/siphash_pmeth.c", + ], + "crypto/sm2/sm2_crypt.o" => + [ + "crypto/sm2/sm2_crypt.c", + ], + "crypto/sm2/sm2_err.o" => + [ + "crypto/sm2/sm2_err.c", + ], + "crypto/sm2/sm2_pmeth.o" => + [ + "crypto/sm2/sm2_pmeth.c", + ], + "crypto/sm2/sm2_sign.o" => + [ + "crypto/sm2/sm2_sign.c", + ], + "crypto/sm3/m_sm3.o" => + [ + "crypto/sm3/m_sm3.c", + ], + "crypto/sm3/sm3.o" => + [ + "crypto/sm3/sm3.c", + ], + "crypto/sm4/sm4.o" => + [ + "crypto/sm4/sm4.c", + ], + "crypto/srp/srp_lib.o" => + [ + "crypto/srp/srp_lib.c", + ], + "crypto/srp/srp_vfy.o" => + [ + "crypto/srp/srp_vfy.c", + ], + "crypto/stack/stack.o" => + [ + "crypto/stack/stack.c", + ], + "crypto/store/loader_file.o" => + [ + "crypto/store/loader_file.c", + ], + "crypto/store/store_err.o" => + [ + "crypto/store/store_err.c", + ], + "crypto/store/store_init.o" => + [ + "crypto/store/store_init.c", + ], + "crypto/store/store_lib.o" => + [ + "crypto/store/store_lib.c", + ], + "crypto/store/store_register.o" => + [ + "crypto/store/store_register.c", + ], + "crypto/store/store_strings.o" => + [ + "crypto/store/store_strings.c", + ], + "crypto/threads_none.o" => + [ + "crypto/threads_none.c", + ], + "crypto/threads_pthread.o" => + [ + "crypto/threads_pthread.c", + ], + "crypto/threads_win.o" => + [ + "crypto/threads_win.c", + ], + "crypto/ts/ts_asn1.o" => + [ + "crypto/ts/ts_asn1.c", + ], + "crypto/ts/ts_conf.o" => + [ + "crypto/ts/ts_conf.c", + ], + "crypto/ts/ts_err.o" => + [ + "crypto/ts/ts_err.c", + ], + "crypto/ts/ts_lib.o" => + [ + "crypto/ts/ts_lib.c", + ], + "crypto/ts/ts_req_print.o" => + [ + "crypto/ts/ts_req_print.c", + ], + "crypto/ts/ts_req_utils.o" => + [ + "crypto/ts/ts_req_utils.c", + ], + "crypto/ts/ts_rsp_print.o" => + [ + "crypto/ts/ts_rsp_print.c", + ], + "crypto/ts/ts_rsp_sign.o" => + [ + "crypto/ts/ts_rsp_sign.c", + ], + "crypto/ts/ts_rsp_utils.o" => + [ + "crypto/ts/ts_rsp_utils.c", + ], + "crypto/ts/ts_rsp_verify.o" => + [ + "crypto/ts/ts_rsp_verify.c", + ], + "crypto/ts/ts_verify_ctx.o" => + [ + "crypto/ts/ts_verify_ctx.c", + ], + "crypto/txt_db/txt_db.o" => + [ + "crypto/txt_db/txt_db.c", + ], + "crypto/ui/ui_err.o" => + [ + "crypto/ui/ui_err.c", + ], + "crypto/ui/ui_lib.o" => + [ + "crypto/ui/ui_lib.c", + ], + "crypto/ui/ui_null.o" => + [ + "crypto/ui/ui_null.c", + ], + "crypto/ui/ui_openssl.o" => + [ + "crypto/ui/ui_openssl.c", + ], + "crypto/ui/ui_util.o" => + [ + "crypto/ui/ui_util.c", + ], + "crypto/uid.o" => + [ + "crypto/uid.c", + ], + "crypto/whrlpool/wp_block.o" => + [ + "crypto/whrlpool/wp_block.c", + ], + "crypto/whrlpool/wp_dgst.o" => + [ + "crypto/whrlpool/wp_dgst.c", + ], + "crypto/x509/by_dir.o" => + [ + "crypto/x509/by_dir.c", + ], + "crypto/x509/by_file.o" => + [ + "crypto/x509/by_file.c", + ], + "crypto/x509/t_crl.o" => + [ + "crypto/x509/t_crl.c", + ], + "crypto/x509/t_req.o" => + [ + "crypto/x509/t_req.c", + ], + "crypto/x509/t_x509.o" => + [ + "crypto/x509/t_x509.c", + ], + "crypto/x509/x509_att.o" => + [ + "crypto/x509/x509_att.c", + ], + "crypto/x509/x509_cmp.o" => + [ + "crypto/x509/x509_cmp.c", + ], + "crypto/x509/x509_d2.o" => + [ + "crypto/x509/x509_d2.c", + ], + "crypto/x509/x509_def.o" => + [ + "crypto/x509/x509_def.c", + ], + "crypto/x509/x509_err.o" => + [ + "crypto/x509/x509_err.c", + ], + "crypto/x509/x509_ext.o" => + [ + "crypto/x509/x509_ext.c", + ], + "crypto/x509/x509_lu.o" => + [ + "crypto/x509/x509_lu.c", + ], + "crypto/x509/x509_meth.o" => + [ + "crypto/x509/x509_meth.c", + ], + "crypto/x509/x509_obj.o" => + [ + "crypto/x509/x509_obj.c", + ], + "crypto/x509/x509_r2x.o" => + [ + "crypto/x509/x509_r2x.c", + ], + "crypto/x509/x509_req.o" => + [ + "crypto/x509/x509_req.c", + ], + "crypto/x509/x509_set.o" => + [ + "crypto/x509/x509_set.c", + ], + "crypto/x509/x509_trs.o" => + [ + "crypto/x509/x509_trs.c", + ], + "crypto/x509/x509_txt.o" => + [ + "crypto/x509/x509_txt.c", + ], + "crypto/x509/x509_v3.o" => + [ + "crypto/x509/x509_v3.c", + ], + "crypto/x509/x509_vfy.o" => + [ + "crypto/x509/x509_vfy.c", + ], + "crypto/x509/x509_vpm.o" => + [ + "crypto/x509/x509_vpm.c", + ], + "crypto/x509/x509cset.o" => + [ + "crypto/x509/x509cset.c", + ], + "crypto/x509/x509name.o" => + [ + "crypto/x509/x509name.c", + ], + "crypto/x509/x509rset.o" => + [ + "crypto/x509/x509rset.c", + ], + "crypto/x509/x509spki.o" => + [ + "crypto/x509/x509spki.c", + ], + "crypto/x509/x509type.o" => + [ + "crypto/x509/x509type.c", + ], + "crypto/x509/x_all.o" => + [ + "crypto/x509/x_all.c", + ], + "crypto/x509/x_attrib.o" => + [ + "crypto/x509/x_attrib.c", + ], + "crypto/x509/x_crl.o" => + [ + "crypto/x509/x_crl.c", + ], + "crypto/x509/x_exten.o" => + [ + "crypto/x509/x_exten.c", + ], + "crypto/x509/x_name.o" => + [ + "crypto/x509/x_name.c", + ], + "crypto/x509/x_pubkey.o" => + [ + "crypto/x509/x_pubkey.c", + ], + "crypto/x509/x_req.o" => + [ + "crypto/x509/x_req.c", + ], + "crypto/x509/x_x509.o" => + [ + "crypto/x509/x_x509.c", + ], + "crypto/x509/x_x509a.o" => + [ + "crypto/x509/x_x509a.c", + ], + "crypto/x509v3/pcy_cache.o" => + [ + "crypto/x509v3/pcy_cache.c", + ], + "crypto/x509v3/pcy_data.o" => + [ + "crypto/x509v3/pcy_data.c", + ], + "crypto/x509v3/pcy_lib.o" => + [ + "crypto/x509v3/pcy_lib.c", + ], + "crypto/x509v3/pcy_map.o" => + [ + "crypto/x509v3/pcy_map.c", + ], + "crypto/x509v3/pcy_node.o" => + [ + "crypto/x509v3/pcy_node.c", + ], + "crypto/x509v3/pcy_tree.o" => + [ + "crypto/x509v3/pcy_tree.c", + ], + "crypto/x509v3/v3_addr.o" => + [ + "crypto/x509v3/v3_addr.c", + ], + "crypto/x509v3/v3_admis.o" => + [ + "crypto/x509v3/v3_admis.c", + ], + "crypto/x509v3/v3_akey.o" => + [ + "crypto/x509v3/v3_akey.c", + ], + "crypto/x509v3/v3_akeya.o" => + [ + "crypto/x509v3/v3_akeya.c", + ], + "crypto/x509v3/v3_alt.o" => + [ + "crypto/x509v3/v3_alt.c", + ], + "crypto/x509v3/v3_asid.o" => + [ + "crypto/x509v3/v3_asid.c", + ], + "crypto/x509v3/v3_bcons.o" => + [ + "crypto/x509v3/v3_bcons.c", + ], + "crypto/x509v3/v3_bitst.o" => + [ + "crypto/x509v3/v3_bitst.c", + ], + "crypto/x509v3/v3_conf.o" => + [ + "crypto/x509v3/v3_conf.c", + ], + "crypto/x509v3/v3_cpols.o" => + [ + "crypto/x509v3/v3_cpols.c", + ], + "crypto/x509v3/v3_crld.o" => + [ + "crypto/x509v3/v3_crld.c", + ], + "crypto/x509v3/v3_enum.o" => + [ + "crypto/x509v3/v3_enum.c", + ], + "crypto/x509v3/v3_extku.o" => + [ + "crypto/x509v3/v3_extku.c", + ], + "crypto/x509v3/v3_genn.o" => + [ + "crypto/x509v3/v3_genn.c", + ], + "crypto/x509v3/v3_ia5.o" => + [ + "crypto/x509v3/v3_ia5.c", + ], + "crypto/x509v3/v3_info.o" => + [ + "crypto/x509v3/v3_info.c", + ], + "crypto/x509v3/v3_int.o" => + [ + "crypto/x509v3/v3_int.c", + ], + "crypto/x509v3/v3_lib.o" => + [ + "crypto/x509v3/v3_lib.c", + ], + "crypto/x509v3/v3_ncons.o" => + [ + "crypto/x509v3/v3_ncons.c", + ], + "crypto/x509v3/v3_pci.o" => + [ + "crypto/x509v3/v3_pci.c", + ], + "crypto/x509v3/v3_pcia.o" => + [ + "crypto/x509v3/v3_pcia.c", + ], + "crypto/x509v3/v3_pcons.o" => + [ + "crypto/x509v3/v3_pcons.c", + ], + "crypto/x509v3/v3_pku.o" => + [ + "crypto/x509v3/v3_pku.c", + ], + "crypto/x509v3/v3_pmaps.o" => + [ + "crypto/x509v3/v3_pmaps.c", + ], + "crypto/x509v3/v3_prn.o" => + [ + "crypto/x509v3/v3_prn.c", + ], + "crypto/x509v3/v3_purp.o" => + [ + "crypto/x509v3/v3_purp.c", + ], + "crypto/x509v3/v3_skey.o" => + [ + "crypto/x509v3/v3_skey.c", + ], + "crypto/x509v3/v3_sxnet.o" => + [ + "crypto/x509v3/v3_sxnet.c", + ], + "crypto/x509v3/v3_tlsf.o" => + [ + "crypto/x509v3/v3_tlsf.c", + ], + "crypto/x509v3/v3_utl.o" => + [ + "crypto/x509v3/v3_utl.c", + ], + "crypto/x509v3/v3err.o" => + [ + "crypto/x509v3/v3err.c", + ], + "engines/e_capi.o" => + [ + "engines/e_capi.c", + ], + "engines/e_padlock.o" => + [ + "engines/e_padlock.c", + ], + "fuzz/asn1-test" => + [ + "fuzz/asn1.o", + "fuzz/test-corpus.o", + ], + "fuzz/asn1.o" => + [ + "fuzz/asn1.c", + ], + "fuzz/asn1parse-test" => + [ + "fuzz/asn1parse.o", + "fuzz/test-corpus.o", + ], + "fuzz/asn1parse.o" => + [ + "fuzz/asn1parse.c", + ], + "fuzz/bignum-test" => + [ + "fuzz/bignum.o", + "fuzz/test-corpus.o", + ], + "fuzz/bignum.o" => + [ + "fuzz/bignum.c", + ], + "fuzz/bndiv-test" => + [ + "fuzz/bndiv.o", + "fuzz/test-corpus.o", + ], + "fuzz/bndiv.o" => + [ + "fuzz/bndiv.c", + ], + "fuzz/client-test" => + [ + "fuzz/client.o", + "fuzz/test-corpus.o", + ], + "fuzz/client.o" => + [ + "fuzz/client.c", + ], + "fuzz/cms-test" => + [ + "fuzz/cms.o", + "fuzz/test-corpus.o", + ], + "fuzz/cms.o" => + [ + "fuzz/cms.c", + ], + "fuzz/conf-test" => + [ + "fuzz/conf.o", + "fuzz/test-corpus.o", + ], + "fuzz/conf.o" => + [ + "fuzz/conf.c", + ], + "fuzz/crl-test" => + [ + "fuzz/crl.o", + "fuzz/test-corpus.o", + ], + "fuzz/crl.o" => + [ + "fuzz/crl.c", + ], + "fuzz/ct-test" => + [ + "fuzz/ct.o", + "fuzz/test-corpus.o", + ], + "fuzz/ct.o" => + [ + "fuzz/ct.c", + ], + "fuzz/server-test" => + [ + "fuzz/server.o", + "fuzz/test-corpus.o", + ], + "fuzz/server.o" => + [ + "fuzz/server.c", + ], + "fuzz/test-corpus.o" => + [ + "fuzz/test-corpus.c", + ], + "fuzz/x509-test" => + [ + "fuzz/test-corpus.o", + "fuzz/x509.o", + ], + "fuzz/x509.o" => + [ + "fuzz/x509.c", + ], + "libcrypto" => + [ + "crypto/aes/aes_cbc.o", + "crypto/aes/aes_cfb.o", + "crypto/aes/aes_core.o", + "crypto/aes/aes_ecb.o", + "crypto/aes/aes_ige.o", + "crypto/aes/aes_misc.o", + "crypto/aes/aes_ofb.o", + "crypto/aes/aes_wrap.o", + "crypto/aria/aria.o", + "crypto/asn1/a_bitstr.o", + "crypto/asn1/a_d2i_fp.o", + "crypto/asn1/a_digest.o", + "crypto/asn1/a_dup.o", + "crypto/asn1/a_gentm.o", + "crypto/asn1/a_i2d_fp.o", + "crypto/asn1/a_int.o", + "crypto/asn1/a_mbstr.o", + "crypto/asn1/a_object.o", + "crypto/asn1/a_octet.o", + "crypto/asn1/a_print.o", + "crypto/asn1/a_sign.o", + "crypto/asn1/a_strex.o", + "crypto/asn1/a_strnid.o", + "crypto/asn1/a_time.o", + "crypto/asn1/a_type.o", + "crypto/asn1/a_utctm.o", + "crypto/asn1/a_utf8.o", + "crypto/asn1/a_verify.o", + "crypto/asn1/ameth_lib.o", + "crypto/asn1/asn1_err.o", + "crypto/asn1/asn1_gen.o", + "crypto/asn1/asn1_item_list.o", + "crypto/asn1/asn1_lib.o", + "crypto/asn1/asn1_par.o", + "crypto/asn1/asn_mime.o", + "crypto/asn1/asn_moid.o", + "crypto/asn1/asn_mstbl.o", + "crypto/asn1/asn_pack.o", + "crypto/asn1/bio_asn1.o", + "crypto/asn1/bio_ndef.o", + "crypto/asn1/d2i_pr.o", + "crypto/asn1/d2i_pu.o", + "crypto/asn1/evp_asn1.o", + "crypto/asn1/f_int.o", + "crypto/asn1/f_string.o", + "crypto/asn1/i2d_pr.o", + "crypto/asn1/i2d_pu.o", + "crypto/asn1/n_pkey.o", + "crypto/asn1/nsseq.o", + "crypto/asn1/p5_pbe.o", + "crypto/asn1/p5_pbev2.o", + "crypto/asn1/p5_scrypt.o", + "crypto/asn1/p8_pkey.o", + "crypto/asn1/t_bitst.o", + "crypto/asn1/t_pkey.o", + "crypto/asn1/t_spki.o", + "crypto/asn1/tasn_dec.o", + "crypto/asn1/tasn_enc.o", + "crypto/asn1/tasn_fre.o", + "crypto/asn1/tasn_new.o", + "crypto/asn1/tasn_prn.o", + "crypto/asn1/tasn_scn.o", + "crypto/asn1/tasn_typ.o", + "crypto/asn1/tasn_utl.o", + "crypto/asn1/x_algor.o", + "crypto/asn1/x_bignum.o", + "crypto/asn1/x_info.o", + "crypto/asn1/x_int64.o", + "crypto/asn1/x_long.o", + "crypto/asn1/x_pkey.o", + "crypto/asn1/x_sig.o", + "crypto/asn1/x_spki.o", + "crypto/asn1/x_val.o", + "crypto/async/arch/async_null.o", + "crypto/async/arch/async_posix.o", + "crypto/async/arch/async_win.o", + "crypto/async/async.o", + "crypto/async/async_err.o", + "crypto/async/async_wait.o", + "crypto/bf/bf_cfb64.o", + "crypto/bf/bf_ecb.o", + "crypto/bf/bf_enc.o", + "crypto/bf/bf_ofb64.o", + "crypto/bf/bf_skey.o", + "crypto/bio/b_addr.o", + "crypto/bio/b_dump.o", + "crypto/bio/b_print.o", + "crypto/bio/b_sock.o", + "crypto/bio/b_sock2.o", + "crypto/bio/bf_buff.o", + "crypto/bio/bf_lbuf.o", + "crypto/bio/bf_nbio.o", + "crypto/bio/bf_null.o", + "crypto/bio/bio_cb.o", + "crypto/bio/bio_err.o", + "crypto/bio/bio_lib.o", + "crypto/bio/bio_meth.o", + "crypto/bio/bss_acpt.o", + "crypto/bio/bss_bio.o", + "crypto/bio/bss_conn.o", + "crypto/bio/bss_dgram.o", + "crypto/bio/bss_fd.o", + "crypto/bio/bss_file.o", + "crypto/bio/bss_log.o", + "crypto/bio/bss_mem.o", + "crypto/bio/bss_null.o", + "crypto/bio/bss_sock.o", + "crypto/blake2/blake2b.o", + "crypto/blake2/blake2s.o", + "crypto/blake2/m_blake2b.o", + "crypto/blake2/m_blake2s.o", + "crypto/bn/bn_add.o", + "crypto/bn/bn_asm.o", + "crypto/bn/bn_blind.o", + "crypto/bn/bn_const.o", + "crypto/bn/bn_ctx.o", + "crypto/bn/bn_depr.o", + "crypto/bn/bn_dh.o", + "crypto/bn/bn_div.o", + "crypto/bn/bn_err.o", + "crypto/bn/bn_exp.o", + "crypto/bn/bn_exp2.o", + "crypto/bn/bn_gcd.o", + "crypto/bn/bn_gf2m.o", + "crypto/bn/bn_intern.o", + "crypto/bn/bn_kron.o", + "crypto/bn/bn_lib.o", + "crypto/bn/bn_mod.o", + "crypto/bn/bn_mont.o", + "crypto/bn/bn_mpi.o", + "crypto/bn/bn_mul.o", + "crypto/bn/bn_nist.o", + "crypto/bn/bn_prime.o", + "crypto/bn/bn_print.o", + "crypto/bn/bn_rand.o", + "crypto/bn/bn_recp.o", + "crypto/bn/bn_shift.o", + "crypto/bn/bn_sqr.o", + "crypto/bn/bn_sqrt.o", + "crypto/bn/bn_srp.o", + "crypto/bn/bn_word.o", + "crypto/bn/bn_x931p.o", + "crypto/buffer/buf_err.o", + "crypto/buffer/buffer.o", + "crypto/camellia/camellia.o", + "crypto/camellia/cmll_cbc.o", + "crypto/camellia/cmll_cfb.o", + "crypto/camellia/cmll_ctr.o", + "crypto/camellia/cmll_ecb.o", + "crypto/camellia/cmll_misc.o", + "crypto/camellia/cmll_ofb.o", + "crypto/cast/c_cfb64.o", + "crypto/cast/c_ecb.o", + "crypto/cast/c_enc.o", + "crypto/cast/c_ofb64.o", + "crypto/cast/c_skey.o", + "crypto/chacha/chacha_enc.o", + "crypto/cmac/cm_ameth.o", + "crypto/cmac/cm_pmeth.o", + "crypto/cmac/cmac.o", + "crypto/cms/cms_asn1.o", + "crypto/cms/cms_att.o", + "crypto/cms/cms_cd.o", + "crypto/cms/cms_dd.o", + "crypto/cms/cms_enc.o", + "crypto/cms/cms_env.o", + "crypto/cms/cms_err.o", + "crypto/cms/cms_ess.o", + "crypto/cms/cms_io.o", + "crypto/cms/cms_kari.o", + "crypto/cms/cms_lib.o", + "crypto/cms/cms_pwri.o", + "crypto/cms/cms_sd.o", + "crypto/cms/cms_smime.o", + "crypto/conf/conf_api.o", + "crypto/conf/conf_def.o", + "crypto/conf/conf_err.o", + "crypto/conf/conf_lib.o", + "crypto/conf/conf_mall.o", + "crypto/conf/conf_mod.o", + "crypto/conf/conf_sap.o", + "crypto/conf/conf_ssl.o", + "crypto/cpt_err.o", + "crypto/cryptlib.o", + "crypto/ct/ct_b64.o", + "crypto/ct/ct_err.o", + "crypto/ct/ct_log.o", + "crypto/ct/ct_oct.o", + "crypto/ct/ct_policy.o", + "crypto/ct/ct_prn.o", + "crypto/ct/ct_sct.o", + "crypto/ct/ct_sct_ctx.o", + "crypto/ct/ct_vfy.o", + "crypto/ct/ct_x509v3.o", + "crypto/ctype.o", + "crypto/cversion.o", + "crypto/des/cbc_cksm.o", + "crypto/des/cbc_enc.o", + "crypto/des/cfb64ede.o", + "crypto/des/cfb64enc.o", + "crypto/des/cfb_enc.o", + "crypto/des/des_enc.o", + "crypto/des/ecb3_enc.o", + "crypto/des/ecb_enc.o", + "crypto/des/fcrypt.o", + "crypto/des/fcrypt_b.o", + "crypto/des/ofb64ede.o", + "crypto/des/ofb64enc.o", + "crypto/des/ofb_enc.o", + "crypto/des/pcbc_enc.o", + "crypto/des/qud_cksm.o", + "crypto/des/rand_key.o", + "crypto/des/set_key.o", + "crypto/des/str2key.o", + "crypto/des/xcbc_enc.o", + "crypto/dh/dh_ameth.o", + "crypto/dh/dh_asn1.o", + "crypto/dh/dh_check.o", + "crypto/dh/dh_depr.o", + "crypto/dh/dh_err.o", + "crypto/dh/dh_gen.o", + "crypto/dh/dh_kdf.o", + "crypto/dh/dh_key.o", + "crypto/dh/dh_lib.o", + "crypto/dh/dh_meth.o", + "crypto/dh/dh_pmeth.o", + "crypto/dh/dh_prn.o", + "crypto/dh/dh_rfc5114.o", + "crypto/dh/dh_rfc7919.o", + "crypto/dsa/dsa_ameth.o", + "crypto/dsa/dsa_asn1.o", + "crypto/dsa/dsa_depr.o", + "crypto/dsa/dsa_err.o", + "crypto/dsa/dsa_gen.o", + "crypto/dsa/dsa_key.o", + "crypto/dsa/dsa_lib.o", + "crypto/dsa/dsa_meth.o", + "crypto/dsa/dsa_ossl.o", + "crypto/dsa/dsa_pmeth.o", + "crypto/dsa/dsa_prn.o", + "crypto/dsa/dsa_sign.o", + "crypto/dsa/dsa_vrf.o", + "crypto/dso/dso_dl.o", + "crypto/dso/dso_dlfcn.o", + "crypto/dso/dso_err.o", + "crypto/dso/dso_lib.o", + "crypto/dso/dso_openssl.o", + "crypto/dso/dso_vms.o", + "crypto/dso/dso_win32.o", + "crypto/ebcdic.o", + "crypto/ec/curve25519.o", + "crypto/ec/curve448/arch_32/f_impl.o", + "crypto/ec/curve448/curve448.o", + "crypto/ec/curve448/curve448_tables.o", + "crypto/ec/curve448/eddsa.o", + "crypto/ec/curve448/f_generic.o", + "crypto/ec/curve448/scalar.o", + "crypto/ec/ec2_oct.o", + "crypto/ec/ec2_smpl.o", + "crypto/ec/ec_ameth.o", + "crypto/ec/ec_asn1.o", + "crypto/ec/ec_check.o", + "crypto/ec/ec_curve.o", + "crypto/ec/ec_cvt.o", + "crypto/ec/ec_err.o", + "crypto/ec/ec_key.o", + "crypto/ec/ec_kmeth.o", + "crypto/ec/ec_lib.o", + "crypto/ec/ec_mult.o", + "crypto/ec/ec_oct.o", + "crypto/ec/ec_pmeth.o", + "crypto/ec/ec_print.o", + "crypto/ec/ecdh_kdf.o", + "crypto/ec/ecdh_ossl.o", + "crypto/ec/ecdsa_ossl.o", + "crypto/ec/ecdsa_sign.o", + "crypto/ec/ecdsa_vrf.o", + "crypto/ec/eck_prn.o", + "crypto/ec/ecp_mont.o", + "crypto/ec/ecp_nist.o", + "crypto/ec/ecp_nistp224.o", + "crypto/ec/ecp_nistp256.o", + "crypto/ec/ecp_nistp521.o", + "crypto/ec/ecp_nistputil.o", + "crypto/ec/ecp_oct.o", + "crypto/ec/ecp_smpl.o", + "crypto/ec/ecx_meth.o", + "crypto/engine/eng_all.o", + "crypto/engine/eng_cnf.o", + "crypto/engine/eng_ctrl.o", + "crypto/engine/eng_dyn.o", + "crypto/engine/eng_err.o", + "crypto/engine/eng_fat.o", + "crypto/engine/eng_init.o", + "crypto/engine/eng_lib.o", + "crypto/engine/eng_list.o", + "crypto/engine/eng_openssl.o", + "crypto/engine/eng_pkey.o", + "crypto/engine/eng_rdrand.o", + "crypto/engine/eng_table.o", + "crypto/engine/tb_asnmth.o", + "crypto/engine/tb_cipher.o", + "crypto/engine/tb_dh.o", + "crypto/engine/tb_digest.o", + "crypto/engine/tb_dsa.o", + "crypto/engine/tb_eckey.o", + "crypto/engine/tb_pkmeth.o", + "crypto/engine/tb_rand.o", + "crypto/engine/tb_rsa.o", + "crypto/err/err.o", + "crypto/err/err_all.o", + "crypto/err/err_prn.o", + "crypto/evp/bio_b64.o", + "crypto/evp/bio_enc.o", + "crypto/evp/bio_md.o", + "crypto/evp/bio_ok.o", + "crypto/evp/c_allc.o", + "crypto/evp/c_alld.o", + "crypto/evp/cmeth_lib.o", + "crypto/evp/digest.o", + "crypto/evp/e_aes.o", + "crypto/evp/e_aes_cbc_hmac_sha1.o", + "crypto/evp/e_aes_cbc_hmac_sha256.o", + "crypto/evp/e_aria.o", + "crypto/evp/e_bf.o", + "crypto/evp/e_camellia.o", + "crypto/evp/e_cast.o", + "crypto/evp/e_chacha20_poly1305.o", + "crypto/evp/e_des.o", + "crypto/evp/e_des3.o", + "crypto/evp/e_idea.o", + "crypto/evp/e_null.o", + "crypto/evp/e_old.o", + "crypto/evp/e_rc2.o", + "crypto/evp/e_rc4.o", + "crypto/evp/e_rc4_hmac_md5.o", + "crypto/evp/e_rc5.o", + "crypto/evp/e_seed.o", + "crypto/evp/e_sm4.o", + "crypto/evp/e_xcbc_d.o", + "crypto/evp/encode.o", + "crypto/evp/evp_cnf.o", + "crypto/evp/evp_enc.o", + "crypto/evp/evp_err.o", + "crypto/evp/evp_key.o", + "crypto/evp/evp_lib.o", + "crypto/evp/evp_pbe.o", + "crypto/evp/evp_pkey.o", + "crypto/evp/m_md2.o", + "crypto/evp/m_md4.o", + "crypto/evp/m_md5.o", + "crypto/evp/m_md5_sha1.o", + "crypto/evp/m_mdc2.o", + "crypto/evp/m_null.o", + "crypto/evp/m_ripemd.o", + "crypto/evp/m_sha1.o", + "crypto/evp/m_sha3.o", + "crypto/evp/m_sigver.o", + "crypto/evp/m_wp.o", + "crypto/evp/names.o", + "crypto/evp/p5_crpt.o", + "crypto/evp/p5_crpt2.o", + "crypto/evp/p_dec.o", + "crypto/evp/p_enc.o", + "crypto/evp/p_lib.o", + "crypto/evp/p_open.o", + "crypto/evp/p_seal.o", + "crypto/evp/p_sign.o", + "crypto/evp/p_verify.o", + "crypto/evp/pbe_scrypt.o", + "crypto/evp/pmeth_fn.o", + "crypto/evp/pmeth_gn.o", + "crypto/evp/pmeth_lib.o", + "crypto/ex_data.o", + "crypto/getenv.o", + "crypto/hmac/hm_ameth.o", + "crypto/hmac/hm_pmeth.o", + "crypto/hmac/hmac.o", + "crypto/idea/i_cbc.o", + "crypto/idea/i_cfb64.o", + "crypto/idea/i_ecb.o", + "crypto/idea/i_ofb64.o", + "crypto/idea/i_skey.o", + "crypto/init.o", + "crypto/kdf/hkdf.o", + "crypto/kdf/kdf_err.o", + "crypto/kdf/scrypt.o", + "crypto/kdf/tls1_prf.o", + "crypto/lhash/lh_stats.o", + "crypto/lhash/lhash.o", + "crypto/md4/md4_dgst.o", + "crypto/md4/md4_one.o", + "crypto/md5/md5_dgst.o", + "crypto/md5/md5_one.o", + "crypto/mdc2/mdc2_one.o", + "crypto/mdc2/mdc2dgst.o", + "crypto/mem.o", + "crypto/mem_clr.o", + "crypto/mem_dbg.o", + "crypto/mem_sec.o", + "crypto/modes/cbc128.o", + "crypto/modes/ccm128.o", + "crypto/modes/cfb128.o", + "crypto/modes/ctr128.o", + "crypto/modes/cts128.o", + "crypto/modes/gcm128.o", + "crypto/modes/ocb128.o", + "crypto/modes/ofb128.o", + "crypto/modes/wrap128.o", + "crypto/modes/xts128.o", + "crypto/o_dir.o", + "crypto/o_fips.o", + "crypto/o_fopen.o", + "crypto/o_init.o", + "crypto/o_str.o", + "crypto/o_time.o", + "crypto/objects/o_names.o", + "crypto/objects/obj_dat.o", + "crypto/objects/obj_err.o", + "crypto/objects/obj_lib.o", + "crypto/objects/obj_xref.o", + "crypto/ocsp/ocsp_asn.o", + "crypto/ocsp/ocsp_cl.o", + "crypto/ocsp/ocsp_err.o", + "crypto/ocsp/ocsp_ext.o", + "crypto/ocsp/ocsp_ht.o", + "crypto/ocsp/ocsp_lib.o", + "crypto/ocsp/ocsp_prn.o", + "crypto/ocsp/ocsp_srv.o", + "crypto/ocsp/ocsp_vfy.o", + "crypto/ocsp/v3_ocsp.o", + "crypto/pem/pem_all.o", + "crypto/pem/pem_err.o", + "crypto/pem/pem_info.o", + "crypto/pem/pem_lib.o", + "crypto/pem/pem_oth.o", + "crypto/pem/pem_pk8.o", + "crypto/pem/pem_pkey.o", + "crypto/pem/pem_sign.o", + "crypto/pem/pem_x509.o", + "crypto/pem/pem_xaux.o", + "crypto/pem/pvkfmt.o", + "crypto/pkcs12/p12_add.o", + "crypto/pkcs12/p12_asn.o", + "crypto/pkcs12/p12_attr.o", + "crypto/pkcs12/p12_crpt.o", + "crypto/pkcs12/p12_crt.o", + "crypto/pkcs12/p12_decr.o", + "crypto/pkcs12/p12_init.o", + "crypto/pkcs12/p12_key.o", + "crypto/pkcs12/p12_kiss.o", + "crypto/pkcs12/p12_mutl.o", + "crypto/pkcs12/p12_npas.o", + "crypto/pkcs12/p12_p8d.o", + "crypto/pkcs12/p12_p8e.o", + "crypto/pkcs12/p12_sbag.o", + "crypto/pkcs12/p12_utl.o", + "crypto/pkcs12/pk12err.o", + "crypto/pkcs7/bio_pk7.o", + "crypto/pkcs7/pk7_asn1.o", + "crypto/pkcs7/pk7_attr.o", + "crypto/pkcs7/pk7_doit.o", + "crypto/pkcs7/pk7_lib.o", + "crypto/pkcs7/pk7_mime.o", + "crypto/pkcs7/pk7_smime.o", + "crypto/pkcs7/pkcs7err.o", + "crypto/poly1305/poly1305.o", + "crypto/poly1305/poly1305_ameth.o", + "crypto/poly1305/poly1305_pmeth.o", + "crypto/rand/drbg_ctr.o", + "crypto/rand/drbg_lib.o", + "crypto/rand/rand_egd.o", + "crypto/rand/rand_err.o", + "crypto/rand/rand_lib.o", + "crypto/rand/rand_unix.o", + "crypto/rand/rand_vms.o", + "crypto/rand/rand_win.o", + "crypto/rand/randfile.o", + "crypto/rc2/rc2_cbc.o", + "crypto/rc2/rc2_ecb.o", + "crypto/rc2/rc2_skey.o", + "crypto/rc2/rc2cfb64.o", + "crypto/rc2/rc2ofb64.o", + "crypto/rc4/rc4_enc.o", + "crypto/rc4/rc4_skey.o", + "crypto/ripemd/rmd_dgst.o", + "crypto/ripemd/rmd_one.o", + "crypto/rsa/rsa_ameth.o", + "crypto/rsa/rsa_asn1.o", + "crypto/rsa/rsa_chk.o", + "crypto/rsa/rsa_crpt.o", + "crypto/rsa/rsa_depr.o", + "crypto/rsa/rsa_err.o", + "crypto/rsa/rsa_gen.o", + "crypto/rsa/rsa_lib.o", + "crypto/rsa/rsa_meth.o", + "crypto/rsa/rsa_mp.o", + "crypto/rsa/rsa_none.o", + "crypto/rsa/rsa_oaep.o", + "crypto/rsa/rsa_ossl.o", + "crypto/rsa/rsa_pk1.o", + "crypto/rsa/rsa_pmeth.o", + "crypto/rsa/rsa_prn.o", + "crypto/rsa/rsa_pss.o", + "crypto/rsa/rsa_saos.o", + "crypto/rsa/rsa_sign.o", + "crypto/rsa/rsa_ssl.o", + "crypto/rsa/rsa_x931.o", + "crypto/rsa/rsa_x931g.o", + "crypto/seed/seed.o", + "crypto/seed/seed_cbc.o", + "crypto/seed/seed_cfb.o", + "crypto/seed/seed_ecb.o", + "crypto/seed/seed_ofb.o", + "crypto/sha/keccak1600.o", + "crypto/sha/sha1_one.o", + "crypto/sha/sha1dgst.o", + "crypto/sha/sha256.o", + "crypto/sha/sha512.o", + "crypto/siphash/siphash.o", + "crypto/siphash/siphash_ameth.o", + "crypto/siphash/siphash_pmeth.o", + "crypto/sm2/sm2_crypt.o", + "crypto/sm2/sm2_err.o", + "crypto/sm2/sm2_pmeth.o", + "crypto/sm2/sm2_sign.o", + "crypto/sm3/m_sm3.o", + "crypto/sm3/sm3.o", + "crypto/sm4/sm4.o", + "crypto/srp/srp_lib.o", + "crypto/srp/srp_vfy.o", + "crypto/stack/stack.o", + "crypto/store/loader_file.o", + "crypto/store/store_err.o", + "crypto/store/store_init.o", + "crypto/store/store_lib.o", + "crypto/store/store_register.o", + "crypto/store/store_strings.o", + "crypto/threads_none.o", + "crypto/threads_pthread.o", + "crypto/threads_win.o", + "crypto/ts/ts_asn1.o", + "crypto/ts/ts_conf.o", + "crypto/ts/ts_err.o", + "crypto/ts/ts_lib.o", + "crypto/ts/ts_req_print.o", + "crypto/ts/ts_req_utils.o", + "crypto/ts/ts_rsp_print.o", + "crypto/ts/ts_rsp_sign.o", + "crypto/ts/ts_rsp_utils.o", + "crypto/ts/ts_rsp_verify.o", + "crypto/ts/ts_verify_ctx.o", + "crypto/txt_db/txt_db.o", + "crypto/ui/ui_err.o", + "crypto/ui/ui_lib.o", + "crypto/ui/ui_null.o", + "crypto/ui/ui_openssl.o", + "crypto/ui/ui_util.o", + "crypto/uid.o", + "crypto/whrlpool/wp_block.o", + "crypto/whrlpool/wp_dgst.o", + "crypto/x509/by_dir.o", + "crypto/x509/by_file.o", + "crypto/x509/t_crl.o", + "crypto/x509/t_req.o", + "crypto/x509/t_x509.o", + "crypto/x509/x509_att.o", + "crypto/x509/x509_cmp.o", + "crypto/x509/x509_d2.o", + "crypto/x509/x509_def.o", + "crypto/x509/x509_err.o", + "crypto/x509/x509_ext.o", + "crypto/x509/x509_lu.o", + "crypto/x509/x509_meth.o", + "crypto/x509/x509_obj.o", + "crypto/x509/x509_r2x.o", + "crypto/x509/x509_req.o", + "crypto/x509/x509_set.o", + "crypto/x509/x509_trs.o", + "crypto/x509/x509_txt.o", + "crypto/x509/x509_v3.o", + "crypto/x509/x509_vfy.o", + "crypto/x509/x509_vpm.o", + "crypto/x509/x509cset.o", + "crypto/x509/x509name.o", + "crypto/x509/x509rset.o", + "crypto/x509/x509spki.o", + "crypto/x509/x509type.o", + "crypto/x509/x_all.o", + "crypto/x509/x_attrib.o", + "crypto/x509/x_crl.o", + "crypto/x509/x_exten.o", + "crypto/x509/x_name.o", + "crypto/x509/x_pubkey.o", + "crypto/x509/x_req.o", + "crypto/x509/x_x509.o", + "crypto/x509/x_x509a.o", + "crypto/x509v3/pcy_cache.o", + "crypto/x509v3/pcy_data.o", + "crypto/x509v3/pcy_lib.o", + "crypto/x509v3/pcy_map.o", + "crypto/x509v3/pcy_node.o", + "crypto/x509v3/pcy_tree.o", + "crypto/x509v3/v3_addr.o", + "crypto/x509v3/v3_admis.o", + "crypto/x509v3/v3_akey.o", + "crypto/x509v3/v3_akeya.o", + "crypto/x509v3/v3_alt.o", + "crypto/x509v3/v3_asid.o", + "crypto/x509v3/v3_bcons.o", + "crypto/x509v3/v3_bitst.o", + "crypto/x509v3/v3_conf.o", + "crypto/x509v3/v3_cpols.o", + "crypto/x509v3/v3_crld.o", + "crypto/x509v3/v3_enum.o", + "crypto/x509v3/v3_extku.o", + "crypto/x509v3/v3_genn.o", + "crypto/x509v3/v3_ia5.o", + "crypto/x509v3/v3_info.o", + "crypto/x509v3/v3_int.o", + "crypto/x509v3/v3_lib.o", + "crypto/x509v3/v3_ncons.o", + "crypto/x509v3/v3_pci.o", + "crypto/x509v3/v3_pcia.o", + "crypto/x509v3/v3_pcons.o", + "crypto/x509v3/v3_pku.o", + "crypto/x509v3/v3_pmaps.o", + "crypto/x509v3/v3_prn.o", + "crypto/x509v3/v3_purp.o", + "crypto/x509v3/v3_skey.o", + "crypto/x509v3/v3_sxnet.o", + "crypto/x509v3/v3_tlsf.o", + "crypto/x509v3/v3_utl.o", + "crypto/x509v3/v3err.o", + "engines/e_capi.o", + "engines/e_padlock.o", + ], + "libssl" => + [ + "ssl/bio_ssl.o", + "ssl/d1_lib.o", + "ssl/d1_msg.o", + "ssl/d1_srtp.o", + "ssl/methods.o", + "ssl/packet.o", + "ssl/pqueue.o", + "ssl/record/dtls1_bitmap.o", + "ssl/record/rec_layer_d1.o", + "ssl/record/rec_layer_s3.o", + "ssl/record/ssl3_buffer.o", + "ssl/record/ssl3_record.o", + "ssl/record/ssl3_record_tls13.o", + "ssl/s3_cbc.o", + "ssl/s3_enc.o", + "ssl/s3_lib.o", + "ssl/s3_msg.o", + "ssl/ssl_asn1.o", + "ssl/ssl_cert.o", + "ssl/ssl_ciph.o", + "ssl/ssl_conf.o", + "ssl/ssl_err.o", + "ssl/ssl_init.o", + "ssl/ssl_lib.o", + "ssl/ssl_mcnf.o", + "ssl/ssl_rsa.o", + "ssl/ssl_sess.o", + "ssl/ssl_stat.o", + "ssl/ssl_txt.o", + "ssl/ssl_utst.o", + "ssl/statem/extensions.o", + "ssl/statem/extensions_clnt.o", + "ssl/statem/extensions_cust.o", + "ssl/statem/extensions_srvr.o", + "ssl/statem/statem.o", + "ssl/statem/statem_clnt.o", + "ssl/statem/statem_dtls.o", + "ssl/statem/statem_lib.o", + "ssl/statem/statem_srvr.o", + "ssl/t1_enc.o", + "ssl/t1_lib.o", + "ssl/t1_trce.o", + "ssl/tls13_enc.o", + "ssl/tls_srp.o", + ], + "ssl/bio_ssl.o" => + [ + "ssl/bio_ssl.c", + ], + "ssl/d1_lib.o" => + [ + "ssl/d1_lib.c", + ], + "ssl/d1_msg.o" => + [ + "ssl/d1_msg.c", + ], + "ssl/d1_srtp.o" => + [ + "ssl/d1_srtp.c", + ], + "ssl/methods.o" => + [ + "ssl/methods.c", + ], + "ssl/packet.o" => + [ + "ssl/packet.c", + ], + "ssl/pqueue.o" => + [ + "ssl/pqueue.c", + ], + "ssl/record/dtls1_bitmap.o" => + [ + "ssl/record/dtls1_bitmap.c", + ], + "ssl/record/rec_layer_d1.o" => + [ + "ssl/record/rec_layer_d1.c", + ], + "ssl/record/rec_layer_s3.o" => + [ + "ssl/record/rec_layer_s3.c", + ], + "ssl/record/ssl3_buffer.o" => + [ + "ssl/record/ssl3_buffer.c", + ], + "ssl/record/ssl3_record.o" => + [ + "ssl/record/ssl3_record.c", + ], + "ssl/record/ssl3_record_tls13.o" => + [ + "ssl/record/ssl3_record_tls13.c", + ], + "ssl/s3_cbc.o" => + [ + "ssl/s3_cbc.c", + ], + "ssl/s3_enc.o" => + [ + "ssl/s3_enc.c", + ], + "ssl/s3_lib.o" => + [ + "ssl/s3_lib.c", + ], + "ssl/s3_msg.o" => + [ + "ssl/s3_msg.c", + ], + "ssl/ssl_asn1.o" => + [ + "ssl/ssl_asn1.c", + ], + "ssl/ssl_cert.o" => + [ + "ssl/ssl_cert.c", + ], + "ssl/ssl_ciph.o" => + [ + "ssl/ssl_ciph.c", + ], + "ssl/ssl_conf.o" => + [ + "ssl/ssl_conf.c", + ], + "ssl/ssl_err.o" => + [ + "ssl/ssl_err.c", + ], + "ssl/ssl_init.o" => + [ + "ssl/ssl_init.c", + ], + "ssl/ssl_lib.o" => + [ + "ssl/ssl_lib.c", + ], + "ssl/ssl_mcnf.o" => + [ + "ssl/ssl_mcnf.c", + ], + "ssl/ssl_rsa.o" => + [ + "ssl/ssl_rsa.c", + ], + "ssl/ssl_sess.o" => + [ + "ssl/ssl_sess.c", + ], + "ssl/ssl_stat.o" => + [ + "ssl/ssl_stat.c", + ], + "ssl/ssl_txt.o" => + [ + "ssl/ssl_txt.c", + ], + "ssl/ssl_utst.o" => + [ + "ssl/ssl_utst.c", + ], + "ssl/statem/extensions.o" => + [ + "ssl/statem/extensions.c", + ], + "ssl/statem/extensions_clnt.o" => + [ + "ssl/statem/extensions_clnt.c", + ], + "ssl/statem/extensions_cust.o" => + [ + "ssl/statem/extensions_cust.c", + ], + "ssl/statem/extensions_srvr.o" => + [ + "ssl/statem/extensions_srvr.c", + ], + "ssl/statem/statem.o" => + [ + "ssl/statem/statem.c", + ], + "ssl/statem/statem_clnt.o" => + [ + "ssl/statem/statem_clnt.c", + ], + "ssl/statem/statem_dtls.o" => + [ + "ssl/statem/statem_dtls.c", + ], + "ssl/statem/statem_lib.o" => + [ + "ssl/statem/statem_lib.c", + ], + "ssl/statem/statem_srvr.o" => + [ + "ssl/statem/statem_srvr.c", + ], + "ssl/t1_enc.o" => + [ + "ssl/t1_enc.c", + ], + "ssl/t1_lib.o" => + [ + "ssl/t1_lib.c", + ], + "ssl/t1_trce.o" => + [ + "ssl/t1_trce.c", + ], + "ssl/tls13_enc.o" => + [ + "ssl/tls13_enc.c", + ], + "ssl/tls_srp.o" => + [ + "ssl/tls_srp.c", + ], + "test/aborttest" => + [ + "test/aborttest.o", + ], + "test/aborttest.o" => + [ + "test/aborttest.c", + ], + "test/afalgtest" => + [ + "test/afalgtest.o", + ], + "test/afalgtest.o" => + [ + "test/afalgtest.c", + ], + "test/asn1_decode_test" => + [ + "test/asn1_decode_test.o", + ], + "test/asn1_decode_test.o" => + [ + "test/asn1_decode_test.c", + ], + "test/asn1_encode_test" => + [ + "test/asn1_encode_test.o", + ], + "test/asn1_encode_test.o" => + [ + "test/asn1_encode_test.c", + ], + "test/asn1_internal_test" => + [ + "test/asn1_internal_test.o", + ], + "test/asn1_internal_test.o" => + [ + "test/asn1_internal_test.c", + ], + "test/asn1_string_table_test" => + [ + "test/asn1_string_table_test.o", + ], + "test/asn1_string_table_test.o" => + [ + "test/asn1_string_table_test.c", + ], + "test/asn1_time_test" => + [ + "test/asn1_time_test.o", + ], + "test/asn1_time_test.o" => + [ + "test/asn1_time_test.c", + ], + "test/asynciotest" => + [ + "test/asynciotest.o", + "test/ssltestlib.o", + ], + "test/asynciotest.o" => + [ + "test/asynciotest.c", + ], + "test/asynctest" => + [ + "test/asynctest.o", + ], + "test/asynctest.o" => + [ + "test/asynctest.c", + ], + "test/bad_dtls_test" => + [ + "test/bad_dtls_test.o", + ], + "test/bad_dtls_test.o" => + [ + "test/bad_dtls_test.c", + ], + "test/bftest" => + [ + "test/bftest.o", + ], + "test/bftest.o" => + [ + "test/bftest.c", + ], + "test/bio_callback_test" => + [ + "test/bio_callback_test.o", + ], + "test/bio_callback_test.o" => + [ + "test/bio_callback_test.c", + ], + "test/bio_enc_test" => + [ + "test/bio_enc_test.o", + ], + "test/bio_enc_test.o" => + [ + "test/bio_enc_test.c", + ], + "test/bio_memleak_test" => + [ + "test/bio_memleak_test.o", + ], + "test/bio_memleak_test.o" => + [ + "test/bio_memleak_test.c", + ], + "test/bioprinttest" => + [ + "test/bioprinttest.o", + ], + "test/bioprinttest.o" => + [ + "test/bioprinttest.c", + ], + "test/bntest" => + [ + "test/bntest.o", + ], + "test/bntest.o" => + [ + "test/bntest.c", + ], + "test/buildtest_aes" => + [ + "test/buildtest_aes.o", + ], + "test/buildtest_aes.o" => + [ + "test/buildtest_aes.c", + ], + "test/buildtest_asn1" => + [ + "test/buildtest_asn1.o", + ], + "test/buildtest_asn1.o" => + [ + "test/buildtest_asn1.c", + ], + "test/buildtest_asn1t" => + [ + "test/buildtest_asn1t.o", + ], + "test/buildtest_asn1t.o" => + [ + "test/buildtest_asn1t.c", + ], + "test/buildtest_async" => + [ + "test/buildtest_async.o", + ], + "test/buildtest_async.o" => + [ + "test/buildtest_async.c", + ], + "test/buildtest_bio" => + [ + "test/buildtest_bio.o", + ], + "test/buildtest_bio.o" => + [ + "test/buildtest_bio.c", + ], + "test/buildtest_blowfish" => + [ + "test/buildtest_blowfish.o", + ], + "test/buildtest_blowfish.o" => + [ + "test/buildtest_blowfish.c", + ], + "test/buildtest_bn" => + [ + "test/buildtest_bn.o", + ], + "test/buildtest_bn.o" => + [ + "test/buildtest_bn.c", + ], + "test/buildtest_buffer" => + [ + "test/buildtest_buffer.o", + ], + "test/buildtest_buffer.o" => + [ + "test/buildtest_buffer.c", + ], + "test/buildtest_camellia" => + [ + "test/buildtest_camellia.o", + ], + "test/buildtest_camellia.o" => + [ + "test/buildtest_camellia.c", + ], + "test/buildtest_cast" => + [ + "test/buildtest_cast.o", + ], + "test/buildtest_cast.o" => + [ + "test/buildtest_cast.c", + ], + "test/buildtest_cmac" => + [ + "test/buildtest_cmac.o", + ], + "test/buildtest_cmac.o" => + [ + "test/buildtest_cmac.c", + ], + "test/buildtest_cms" => + [ + "test/buildtest_cms.o", + ], + "test/buildtest_cms.o" => + [ + "test/buildtest_cms.c", + ], + "test/buildtest_conf" => + [ + "test/buildtest_conf.o", + ], + "test/buildtest_conf.o" => + [ + "test/buildtest_conf.c", + ], + "test/buildtest_conf_api" => + [ + "test/buildtest_conf_api.o", + ], + "test/buildtest_conf_api.o" => + [ + "test/buildtest_conf_api.c", + ], + "test/buildtest_crypto" => + [ + "test/buildtest_crypto.o", + ], + "test/buildtest_crypto.o" => + [ + "test/buildtest_crypto.c", + ], + "test/buildtest_ct" => + [ + "test/buildtest_ct.o", + ], + "test/buildtest_ct.o" => + [ + "test/buildtest_ct.c", + ], + "test/buildtest_des" => + [ + "test/buildtest_des.o", + ], + "test/buildtest_des.o" => + [ + "test/buildtest_des.c", + ], + "test/buildtest_dh" => + [ + "test/buildtest_dh.o", + ], + "test/buildtest_dh.o" => + [ + "test/buildtest_dh.c", + ], + "test/buildtest_dsa" => + [ + "test/buildtest_dsa.o", + ], + "test/buildtest_dsa.o" => + [ + "test/buildtest_dsa.c", + ], + "test/buildtest_dtls1" => + [ + "test/buildtest_dtls1.o", + ], + "test/buildtest_dtls1.o" => + [ + "test/buildtest_dtls1.c", + ], + "test/buildtest_e_os2" => + [ + "test/buildtest_e_os2.o", + ], + "test/buildtest_e_os2.o" => + [ + "test/buildtest_e_os2.c", + ], + "test/buildtest_ebcdic" => + [ + "test/buildtest_ebcdic.o", + ], + "test/buildtest_ebcdic.o" => + [ + "test/buildtest_ebcdic.c", + ], + "test/buildtest_ec" => + [ + "test/buildtest_ec.o", + ], + "test/buildtest_ec.o" => + [ + "test/buildtest_ec.c", + ], + "test/buildtest_ecdh" => + [ + "test/buildtest_ecdh.o", + ], + "test/buildtest_ecdh.o" => + [ + "test/buildtest_ecdh.c", + ], + "test/buildtest_ecdsa" => + [ + "test/buildtest_ecdsa.o", + ], + "test/buildtest_ecdsa.o" => + [ + "test/buildtest_ecdsa.c", + ], + "test/buildtest_engine" => + [ + "test/buildtest_engine.o", + ], + "test/buildtest_engine.o" => + [ + "test/buildtest_engine.c", + ], + "test/buildtest_evp" => + [ + "test/buildtest_evp.o", + ], + "test/buildtest_evp.o" => + [ + "test/buildtest_evp.c", + ], + "test/buildtest_hmac" => + [ + "test/buildtest_hmac.o", + ], + "test/buildtest_hmac.o" => + [ + "test/buildtest_hmac.c", + ], + "test/buildtest_idea" => + [ + "test/buildtest_idea.o", + ], + "test/buildtest_idea.o" => + [ + "test/buildtest_idea.c", + ], + "test/buildtest_kdf" => + [ + "test/buildtest_kdf.o", + ], + "test/buildtest_kdf.o" => + [ + "test/buildtest_kdf.c", + ], + "test/buildtest_lhash" => + [ + "test/buildtest_lhash.o", + ], + "test/buildtest_lhash.o" => + [ + "test/buildtest_lhash.c", + ], + "test/buildtest_md4" => + [ + "test/buildtest_md4.o", + ], + "test/buildtest_md4.o" => + [ + "test/buildtest_md4.c", + ], + "test/buildtest_md5" => + [ + "test/buildtest_md5.o", + ], + "test/buildtest_md5.o" => + [ + "test/buildtest_md5.c", + ], + "test/buildtest_mdc2" => + [ + "test/buildtest_mdc2.o", + ], + "test/buildtest_mdc2.o" => + [ + "test/buildtest_mdc2.c", + ], + "test/buildtest_modes" => + [ + "test/buildtest_modes.o", + ], + "test/buildtest_modes.o" => + [ + "test/buildtest_modes.c", + ], + "test/buildtest_obj_mac" => + [ + "test/buildtest_obj_mac.o", + ], + "test/buildtest_obj_mac.o" => + [ + "test/buildtest_obj_mac.c", + ], + "test/buildtest_objects" => + [ + "test/buildtest_objects.o", + ], + "test/buildtest_objects.o" => + [ + "test/buildtest_objects.c", + ], + "test/buildtest_ocsp" => + [ + "test/buildtest_ocsp.o", + ], + "test/buildtest_ocsp.o" => + [ + "test/buildtest_ocsp.c", + ], + "test/buildtest_opensslv" => + [ + "test/buildtest_opensslv.o", + ], + "test/buildtest_opensslv.o" => + [ + "test/buildtest_opensslv.c", + ], + "test/buildtest_ossl_typ" => + [ + "test/buildtest_ossl_typ.o", + ], + "test/buildtest_ossl_typ.o" => + [ + "test/buildtest_ossl_typ.c", + ], + "test/buildtest_pem" => + [ + "test/buildtest_pem.o", + ], + "test/buildtest_pem.o" => + [ + "test/buildtest_pem.c", + ], + "test/buildtest_pem2" => + [ + "test/buildtest_pem2.o", + ], + "test/buildtest_pem2.o" => + [ + "test/buildtest_pem2.c", + ], + "test/buildtest_pkcs12" => + [ + "test/buildtest_pkcs12.o", + ], + "test/buildtest_pkcs12.o" => + [ + "test/buildtest_pkcs12.c", + ], + "test/buildtest_pkcs7" => + [ + "test/buildtest_pkcs7.o", + ], + "test/buildtest_pkcs7.o" => + [ + "test/buildtest_pkcs7.c", + ], + "test/buildtest_rand" => + [ + "test/buildtest_rand.o", + ], + "test/buildtest_rand.o" => + [ + "test/buildtest_rand.c", + ], + "test/buildtest_rand_drbg" => + [ + "test/buildtest_rand_drbg.o", + ], + "test/buildtest_rand_drbg.o" => + [ + "test/buildtest_rand_drbg.c", + ], + "test/buildtest_rc2" => + [ + "test/buildtest_rc2.o", + ], + "test/buildtest_rc2.o" => + [ + "test/buildtest_rc2.c", + ], + "test/buildtest_rc4" => + [ + "test/buildtest_rc4.o", + ], + "test/buildtest_rc4.o" => + [ + "test/buildtest_rc4.c", + ], + "test/buildtest_ripemd" => + [ + "test/buildtest_ripemd.o", + ], + "test/buildtest_ripemd.o" => + [ + "test/buildtest_ripemd.c", + ], + "test/buildtest_rsa" => + [ + "test/buildtest_rsa.o", + ], + "test/buildtest_rsa.o" => + [ + "test/buildtest_rsa.c", + ], + "test/buildtest_safestack" => + [ + "test/buildtest_safestack.o", + ], + "test/buildtest_safestack.o" => + [ + "test/buildtest_safestack.c", + ], + "test/buildtest_seed" => + [ + "test/buildtest_seed.o", + ], + "test/buildtest_seed.o" => + [ + "test/buildtest_seed.c", + ], + "test/buildtest_sha" => + [ + "test/buildtest_sha.o", + ], + "test/buildtest_sha.o" => + [ + "test/buildtest_sha.c", + ], + "test/buildtest_srp" => + [ + "test/buildtest_srp.o", + ], + "test/buildtest_srp.o" => + [ + "test/buildtest_srp.c", + ], + "test/buildtest_srtp" => + [ + "test/buildtest_srtp.o", + ], + "test/buildtest_srtp.o" => + [ + "test/buildtest_srtp.c", + ], + "test/buildtest_ssl" => + [ + "test/buildtest_ssl.o", + ], + "test/buildtest_ssl.o" => + [ + "test/buildtest_ssl.c", + ], + "test/buildtest_ssl2" => + [ + "test/buildtest_ssl2.o", + ], + "test/buildtest_ssl2.o" => + [ + "test/buildtest_ssl2.c", + ], + "test/buildtest_stack" => + [ + "test/buildtest_stack.o", + ], + "test/buildtest_stack.o" => + [ + "test/buildtest_stack.c", + ], + "test/buildtest_store" => + [ + "test/buildtest_store.o", + ], + "test/buildtest_store.o" => + [ + "test/buildtest_store.c", + ], + "test/buildtest_symhacks" => + [ + "test/buildtest_symhacks.o", + ], + "test/buildtest_symhacks.o" => + [ + "test/buildtest_symhacks.c", + ], + "test/buildtest_tls1" => + [ + "test/buildtest_tls1.o", + ], + "test/buildtest_tls1.o" => + [ + "test/buildtest_tls1.c", + ], + "test/buildtest_ts" => + [ + "test/buildtest_ts.o", + ], + "test/buildtest_ts.o" => + [ + "test/buildtest_ts.c", + ], + "test/buildtest_txt_db" => + [ + "test/buildtest_txt_db.o", + ], + "test/buildtest_txt_db.o" => + [ + "test/buildtest_txt_db.c", + ], + "test/buildtest_ui" => + [ + "test/buildtest_ui.o", + ], + "test/buildtest_ui.o" => + [ + "test/buildtest_ui.c", + ], + "test/buildtest_whrlpool" => + [ + "test/buildtest_whrlpool.o", + ], + "test/buildtest_whrlpool.o" => + [ + "test/buildtest_whrlpool.c", + ], + "test/buildtest_x509" => + [ + "test/buildtest_x509.o", + ], + "test/buildtest_x509.o" => + [ + "test/buildtest_x509.c", + ], + "test/buildtest_x509_vfy" => + [ + "test/buildtest_x509_vfy.o", + ], + "test/buildtest_x509_vfy.o" => + [ + "test/buildtest_x509_vfy.c", + ], + "test/buildtest_x509v3" => + [ + "test/buildtest_x509v3.o", + ], + "test/buildtest_x509v3.o" => + [ + "test/buildtest_x509v3.c", + ], + "test/casttest" => + [ + "test/casttest.o", + ], + "test/casttest.o" => + [ + "test/casttest.c", + ], + "test/chacha_internal_test" => + [ + "test/chacha_internal_test.o", + ], + "test/chacha_internal_test.o" => + [ + "test/chacha_internal_test.c", + ], + "test/cipher_overhead_test" => + [ + "test/cipher_overhead_test.o", + ], + "test/cipher_overhead_test.o" => + [ + "test/cipher_overhead_test.c", + ], + "test/cipherbytes_test" => + [ + "test/cipherbytes_test.o", + ], + "test/cipherbytes_test.o" => + [ + "test/cipherbytes_test.c", + ], + "test/cipherlist_test" => + [ + "test/cipherlist_test.o", + ], + "test/cipherlist_test.o" => + [ + "test/cipherlist_test.c", + ], + "test/ciphername_test" => + [ + "test/ciphername_test.o", + ], + "test/ciphername_test.o" => + [ + "test/ciphername_test.c", + ], + "test/clienthellotest" => + [ + "test/clienthellotest.o", + ], + "test/clienthellotest.o" => + [ + "test/clienthellotest.c", + ], + "test/cmsapitest" => + [ + "test/cmsapitest.o", + ], + "test/cmsapitest.o" => + [ + "test/cmsapitest.c", + ], + "test/conf_include_test" => + [ + "test/conf_include_test.o", + ], + "test/conf_include_test.o" => + [ + "test/conf_include_test.c", + ], + "test/constant_time_test" => + [ + "test/constant_time_test.o", + ], + "test/constant_time_test.o" => + [ + "test/constant_time_test.c", + ], + "test/crltest" => + [ + "test/crltest.o", + ], + "test/crltest.o" => + [ + "test/crltest.c", + ], + "test/ct_test" => + [ + "test/ct_test.o", + ], + "test/ct_test.o" => + [ + "test/ct_test.c", + ], + "test/ctype_internal_test" => + [ + "test/ctype_internal_test.o", + ], + "test/ctype_internal_test.o" => + [ + "test/ctype_internal_test.c", + ], + "test/curve448_internal_test" => + [ + "test/curve448_internal_test.o", + ], + "test/curve448_internal_test.o" => + [ + "test/curve448_internal_test.c", + ], + "test/d2i_test" => + [ + "test/d2i_test.o", + ], + "test/d2i_test.o" => + [ + "test/d2i_test.c", + ], + "test/danetest" => + [ + "test/danetest.o", + ], + "test/danetest.o" => + [ + "test/danetest.c", + ], + "test/destest" => + [ + "test/destest.o", + ], + "test/destest.o" => + [ + "test/destest.c", + ], + "test/dhtest" => + [ + "test/dhtest.o", + ], + "test/dhtest.o" => + [ + "test/dhtest.c", + ], + "test/drbg_cavs_data.o" => + [ + "test/drbg_cavs_data.c", + ], + "test/drbg_cavs_test" => + [ + "test/drbg_cavs_data.o", + "test/drbg_cavs_test.o", + ], + "test/drbg_cavs_test.o" => + [ + "test/drbg_cavs_test.c", + ], + "test/drbgtest" => + [ + "test/drbgtest.o", + ], + "test/drbgtest.o" => + [ + "test/drbgtest.c", + ], + "test/dsa_no_digest_size_test" => + [ + "test/dsa_no_digest_size_test.o", + ], + "test/dsa_no_digest_size_test.o" => + [ + "test/dsa_no_digest_size_test.c", + ], + "test/dsatest" => + [ + "test/dsatest.o", + ], + "test/dsatest.o" => + [ + "test/dsatest.c", + ], + "test/dtls_mtu_test" => + [ + "test/dtls_mtu_test.o", + "test/ssltestlib.o", + ], + "test/dtls_mtu_test.o" => + [ + "test/dtls_mtu_test.c", + ], + "test/dtlstest" => + [ + "test/dtlstest.o", + "test/ssltestlib.o", + ], + "test/dtlstest.o" => + [ + "test/dtlstest.c", + ], + "test/dtlsv1listentest" => + [ + "test/dtlsv1listentest.o", + ], + "test/dtlsv1listentest.o" => + [ + "test/dtlsv1listentest.c", + ], + "test/ec_internal_test" => + [ + "test/ec_internal_test.o", + ], + "test/ec_internal_test.o" => + [ + "test/ec_internal_test.c", + ], + "test/ecdsatest" => + [ + "test/ecdsatest.o", + ], + "test/ecdsatest.o" => + [ + "test/ecdsatest.c", + ], + "test/ecstresstest" => + [ + "test/ecstresstest.o", + ], + "test/ecstresstest.o" => + [ + "test/ecstresstest.c", + ], + "test/ectest" => + [ + "test/ectest.o", + ], + "test/ectest.o" => + [ + "test/ectest.c", + ], + "test/enginetest" => + [ + "test/enginetest.o", + ], + "test/enginetest.o" => + [ + "test/enginetest.c", + ], + "test/errtest" => + [ + "test/errtest.o", + ], + "test/errtest.o" => + [ + "test/errtest.c", + ], + "test/evp_extra_test" => + [ + "test/evp_extra_test.o", + ], + "test/evp_extra_test.o" => + [ + "test/evp_extra_test.c", + ], + "test/evp_test" => + [ + "test/evp_test.o", + ], + "test/evp_test.o" => + [ + "test/evp_test.c", + ], + "test/exdatatest" => + [ + "test/exdatatest.o", + ], + "test/exdatatest.o" => + [ + "test/exdatatest.c", + ], + "test/exptest" => + [ + "test/exptest.o", + ], + "test/exptest.o" => + [ + "test/exptest.c", + ], + "test/fatalerrtest" => + [ + "test/fatalerrtest.o", + "test/ssltestlib.o", + ], + "test/fatalerrtest.o" => + [ + "test/fatalerrtest.c", + ], + "test/gmdifftest" => + [ + "test/gmdifftest.o", + ], + "test/gmdifftest.o" => + [ + "test/gmdifftest.c", + ], + "test/gosttest" => + [ + "test/gosttest.o", + "test/ssltestlib.o", + ], + "test/gosttest.o" => + [ + "test/gosttest.c", + ], + "test/handshake_helper.o" => + [ + "test/handshake_helper.c", + ], + "test/hmactest" => + [ + "test/hmactest.o", + ], + "test/hmactest.o" => + [ + "test/hmactest.c", + ], + "test/ideatest" => + [ + "test/ideatest.o", + ], + "test/ideatest.o" => + [ + "test/ideatest.c", + ], + "test/igetest" => + [ + "test/igetest.o", + ], + "test/igetest.o" => + [ + "test/igetest.c", + ], + "test/lhash_test" => + [ + "test/lhash_test.o", + ], + "test/lhash_test.o" => + [ + "test/lhash_test.c", + ], + "test/libtestutil.a" => + [ + "test/testutil/basic_output.o", + "test/testutil/cb.o", + "test/testutil/driver.o", + "test/testutil/format_output.o", + "test/testutil/init.o", + "test/testutil/main.o", + "test/testutil/output_helpers.o", + "test/testutil/stanza.o", + "test/testutil/tap_bio.o", + "test/testutil/test_cleanup.o", + "test/testutil/tests.o", + ], + "test/md2test" => + [ + "test/md2test.o", + ], + "test/md2test.o" => + [ + "test/md2test.c", + ], + "test/mdc2_internal_test" => + [ + "test/mdc2_internal_test.o", + ], + "test/mdc2_internal_test.o" => + [ + "test/mdc2_internal_test.c", + ], + "test/mdc2test" => + [ + "test/mdc2test.o", + ], + "test/mdc2test.o" => + [ + "test/mdc2test.c", + ], + "test/memleaktest" => + [ + "test/memleaktest.o", + ], + "test/memleaktest.o" => + [ + "test/memleaktest.c", + ], + "test/modes_internal_test" => + [ + "test/modes_internal_test.o", + ], + "test/modes_internal_test.o" => + [ + "test/modes_internal_test.c", + ], + "test/ocspapitest" => + [ + "test/ocspapitest.o", + ], + "test/ocspapitest.o" => + [ + "test/ocspapitest.c", + ], + "test/packettest" => + [ + "test/packettest.o", + ], + "test/packettest.o" => + [ + "test/packettest.c", + ], + "test/pbelutest" => + [ + "test/pbelutest.o", + ], + "test/pbelutest.o" => + [ + "test/pbelutest.c", + ], + "test/pemtest" => + [ + "test/pemtest.o", + ], + "test/pemtest.o" => + [ + "test/pemtest.c", + ], + "test/pkey_meth_kdf_test" => + [ + "test/pkey_meth_kdf_test.o", + ], + "test/pkey_meth_kdf_test.o" => + [ + "test/pkey_meth_kdf_test.c", + ], + "test/pkey_meth_test" => + [ + "test/pkey_meth_test.o", + ], + "test/pkey_meth_test.o" => + [ + "test/pkey_meth_test.c", + ], + "test/poly1305_internal_test" => + [ + "test/poly1305_internal_test.o", + ], + "test/poly1305_internal_test.o" => + [ + "test/poly1305_internal_test.c", + ], + "test/rc2test" => + [ + "test/rc2test.o", + ], + "test/rc2test.o" => + [ + "test/rc2test.c", + ], + "test/rc4test" => + [ + "test/rc4test.o", + ], + "test/rc4test.o" => + [ + "test/rc4test.c", + ], + "test/rc5test" => + [ + "test/rc5test.o", + ], + "test/rc5test.o" => + [ + "test/rc5test.c", + ], + "test/rdrand_sanitytest" => + [ + "test/rdrand_sanitytest.o", + ], + "test/rdrand_sanitytest.o" => + [ + "test/rdrand_sanitytest.c", + ], + "test/recordlentest" => + [ + "test/recordlentest.o", + "test/ssltestlib.o", + ], + "test/recordlentest.o" => + [ + "test/recordlentest.c", + ], + "test/rsa_complex" => + [ + "test/rsa_complex.o", + ], + "test/rsa_complex.o" => + [ + "test/rsa_complex.c", + ], + "test/rsa_mp_test" => + [ + "test/rsa_mp_test.o", + ], + "test/rsa_mp_test.o" => + [ + "test/rsa_mp_test.c", + ], + "test/rsa_test" => + [ + "test/rsa_test.o", + ], + "test/rsa_test.o" => + [ + "test/rsa_test.c", + ], + "test/sanitytest" => + [ + "test/sanitytest.o", + ], + "test/sanitytest.o" => + [ + "test/sanitytest.c", + ], + "test/secmemtest" => + [ + "test/secmemtest.o", + ], + "test/secmemtest.o" => + [ + "test/secmemtest.c", + ], + "test/servername_test" => + [ + "test/servername_test.o", + "test/ssltestlib.o", + ], + "test/servername_test.o" => + [ + "test/servername_test.c", + ], + "test/siphash_internal_test" => + [ + "test/siphash_internal_test.o", + ], + "test/siphash_internal_test.o" => + [ + "test/siphash_internal_test.c", + ], + "test/sm2_internal_test" => + [ + "test/sm2_internal_test.o", + ], + "test/sm2_internal_test.o" => + [ + "test/sm2_internal_test.c", + ], + "test/sm4_internal_test" => + [ + "test/sm4_internal_test.o", + ], + "test/sm4_internal_test.o" => + [ + "test/sm4_internal_test.c", + ], + "test/srptest" => + [ + "test/srptest.o", + ], + "test/srptest.o" => + [ + "test/srptest.c", + ], + "test/ssl_cert_table_internal_test" => + [ + "test/ssl_cert_table_internal_test.o", + ], + "test/ssl_cert_table_internal_test.o" => + [ + "test/ssl_cert_table_internal_test.c", + ], + "test/ssl_test" => + [ + "test/handshake_helper.o", + "test/ssl_test.o", + "test/ssl_test_ctx.o", + ], + "test/ssl_test.o" => + [ + "test/ssl_test.c", + ], + "test/ssl_test_ctx.o" => + [ + "test/ssl_test_ctx.c", + ], + "test/ssl_test_ctx_test" => + [ + "test/ssl_test_ctx.o", + "test/ssl_test_ctx_test.o", + ], + "test/ssl_test_ctx_test.o" => + [ + "test/ssl_test_ctx_test.c", + ], + "test/sslapitest" => + [ + "test/sslapitest.o", + "test/ssltestlib.o", + ], + "test/sslapitest.o" => + [ + "test/sslapitest.c", + ], + "test/sslbuffertest" => + [ + "test/sslbuffertest.o", + "test/ssltestlib.o", + ], + "test/sslbuffertest.o" => + [ + "test/sslbuffertest.c", + ], + "test/sslcorrupttest" => + [ + "test/sslcorrupttest.o", + "test/ssltestlib.o", + ], + "test/sslcorrupttest.o" => + [ + "test/sslcorrupttest.c", + ], + "test/ssltest_old" => + [ + "test/ssltest_old.o", + ], + "test/ssltest_old.o" => + [ + "test/ssltest_old.c", + ], + "test/ssltestlib.o" => + [ + "test/ssltestlib.c", + ], + "test/stack_test" => + [ + "test/stack_test.o", + ], + "test/stack_test.o" => + [ + "test/stack_test.c", + ], + "test/sysdefaulttest" => + [ + "test/sysdefaulttest.o", + ], + "test/sysdefaulttest.o" => + [ + "test/sysdefaulttest.c", + ], + "test/test_test" => + [ + "test/test_test.o", + ], + "test/test_test.o" => + [ + "test/test_test.c", + ], + "test/testutil/basic_output.o" => + [ + "test/testutil/basic_output.c", + ], + "test/testutil/cb.o" => + [ + "test/testutil/cb.c", + ], + "test/testutil/driver.o" => + [ + "test/testutil/driver.c", + ], + "test/testutil/format_output.o" => + [ + "test/testutil/format_output.c", + ], + "test/testutil/init.o" => + [ + "test/testutil/init.c", + ], + "test/testutil/main.o" => + [ + "test/testutil/main.c", + ], + "test/testutil/output_helpers.o" => + [ + "test/testutil/output_helpers.c", + ], + "test/testutil/stanza.o" => + [ + "test/testutil/stanza.c", + ], + "test/testutil/tap_bio.o" => + [ + "test/testutil/tap_bio.c", + ], + "test/testutil/test_cleanup.o" => + [ + "test/testutil/test_cleanup.c", + ], + "test/testutil/tests.o" => + [ + "test/testutil/tests.c", + ], + "test/threadstest" => + [ + "test/threadstest.o", + ], + "test/threadstest.o" => + [ + "test/threadstest.c", + ], + "test/time_offset_test" => + [ + "test/time_offset_test.o", + ], + "test/time_offset_test.o" => + [ + "test/time_offset_test.c", + ], + "test/tls13ccstest" => + [ + "test/ssltestlib.o", + "test/tls13ccstest.o", + ], + "test/tls13ccstest.o" => + [ + "test/tls13ccstest.c", + ], + "test/tls13encryptiontest" => + [ + "test/tls13encryptiontest.o", + ], + "test/tls13encryptiontest.o" => + [ + "test/tls13encryptiontest.c", + ], + "test/uitest" => + [ + "test/uitest.o", + ], + "test/uitest.o" => + [ + "test/uitest.c", + ], + "test/v3ext" => + [ + "test/v3ext.o", + ], + "test/v3ext.o" => + [ + "test/v3ext.c", + ], + "test/v3nametest" => + [ + "test/v3nametest.o", + ], + "test/v3nametest.o" => + [ + "test/v3nametest.c", + ], + "test/verify_extra_test" => + [ + "test/verify_extra_test.o", + ], + "test/verify_extra_test.o" => + [ + "test/verify_extra_test.c", + ], + "test/versions" => + [ + "test/versions.o", + ], + "test/versions.o" => + [ + "test/versions.c", + ], + "test/wpackettest" => + [ + "test/wpackettest.o", + ], + "test/wpackettest.o" => + [ + "test/wpackettest.c", + ], + "test/x509_check_cert_pkey_test" => + [ + "test/x509_check_cert_pkey_test.o", + ], + "test/x509_check_cert_pkey_test.o" => + [ + "test/x509_check_cert_pkey_test.c", + ], + "test/x509_dup_cert_test" => + [ + "test/x509_dup_cert_test.o", + ], + "test/x509_dup_cert_test.o" => + [ + "test/x509_dup_cert_test.c", + ], + "test/x509_internal_test" => + [ + "test/x509_internal_test.o", + ], + "test/x509_internal_test.o" => + [ + "test/x509_internal_test.c", + ], + "test/x509_time_test" => + [ + "test/x509_time_test.o", + ], + "test/x509_time_test.o" => + [ + "test/x509_time_test.c", + ], + "test/x509aux" => + [ + "test/x509aux.o", + ], + "test/x509aux.o" => + [ + "test/x509aux.c", + ], + "tools/c_rehash.pl" => + [ + "tools/c_rehash.in", + ], + }, +); + +# The following data is only used when this files is use as a script +my @makevars = ( + 'AR', + 'ARFLAGS', + 'AS', + 'ASFLAGS', + 'CC', + 'CFLAGS', + 'CPP', + 'CPPDEFINES', + 'CPPFLAGS', + 'CPPINCLUDES', + 'CROSS_COMPILE', + 'CXX', + 'CXXFLAGS', + 'HASHBANGPERL', + 'LD', + 'LDFLAGS', + 'LDLIBS', + 'MT', + 'MTFLAGS', + 'PERL', + 'RANLIB', + 'RC', + 'RCFLAGS', + 'RM', +); +my %disabled_info = ( + 'afalgeng' => { + macro => 'OPENSSL_NO_AFALGENG', + }, + 'asan' => { + macro => 'OPENSSL_NO_ASAN', + }, + 'asm' => { + macro => 'OPENSSL_NO_ASM', + }, + 'comp' => { + macro => 'OPENSSL_NO_COMP', + skipped => [ 'crypto/comp' ], + }, + 'crypto-mdebug' => { + macro => 'OPENSSL_NO_CRYPTO_MDEBUG', + }, + 'crypto-mdebug-backtrace' => { + macro => 'OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE', + }, + 'devcryptoeng' => { + macro => 'OPENSSL_NO_DEVCRYPTOENG', + }, + 'ec_nistp_64_gcc_128' => { + macro => 'OPENSSL_NO_EC_NISTP_64_GCC_128', + }, + 'egd' => { + macro => 'OPENSSL_NO_EGD', + }, + 'external-tests' => { + macro => 'OPENSSL_NO_EXTERNAL_TESTS', + }, + 'fuzz-afl' => { + macro => 'OPENSSL_NO_FUZZ_AFL', + }, + 'fuzz-libfuzzer' => { + macro => 'OPENSSL_NO_FUZZ_LIBFUZZER', + }, + 'heartbeats' => { + macro => 'OPENSSL_NO_HEARTBEATS', + }, + 'md2' => { + macro => 'OPENSSL_NO_MD2', + skipped => [ 'crypto/md2' ], + }, + 'msan' => { + macro => 'OPENSSL_NO_MSAN', + }, + 'rc5' => { + macro => 'OPENSSL_NO_RC5', + skipped => [ 'crypto/rc5' ], + }, + 'sctp' => { + macro => 'OPENSSL_NO_SCTP', + }, + 'ssl-trace' => { + macro => 'OPENSSL_NO_SSL_TRACE', + }, + 'ssl3' => { + macro => 'OPENSSL_NO_SSL3', + }, + 'ssl3-method' => { + macro => 'OPENSSL_NO_SSL3_METHOD', + }, + 'ubsan' => { + macro => 'OPENSSL_NO_UBSAN', + }, + 'unit-test' => { + macro => 'OPENSSL_NO_UNIT_TEST', + }, + 'weak-ssl-ciphers' => { + macro => 'OPENSSL_NO_WEAK_SSL_CIPHERS', + }, +); +my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); +# If run directly, we can give some answers, and even reconfigure +unless (caller) { + use Getopt::Long; + use File::Spec::Functions; + use File::Basename; + use Pod::Usage; + + my $here = dirname($0); + + my $dump = undef; + my $cmdline = undef; + my $options = undef; + my $target = undef; + my $envvars = undef; + my $makevars = undef; + my $buildparams = undef; + my $reconf = undef; + my $verbose = undef; + my $help = undef; + my $man = undef; + GetOptions('dump|d' => \$dump, + 'command-line|c' => \$cmdline, + 'options|o' => \$options, + 'target|t' => \$target, + 'environment|e' => \$envvars, + 'make-variables|m' => \$makevars, + 'build-parameters|b' => \$buildparams, + 'reconfigure|reconf|r' => \$reconf, + 'verbose|v' => \$verbose, + 'help' => \$help, + 'man' => \$man) + or die "Errors in command line arguments\n"; + + unless ($dump || $cmdline || $options || $target || $envvars || $makevars + || $buildparams || $reconf || $verbose || $help || $man) { + print STDERR <<"_____"; +You must give at least one option. +For more information, do '$0 --help' +_____ + exit(2); + } + + if ($help) { + pod2usage(-exitval => 0, + -verbose => 1); + } + if ($man) { + pod2usage(-exitval => 0, + -verbose => 2); + } + if ($dump || $cmdline) { + print "\nCommand line (with current working directory = $here):\n\n"; + print ' ',join(' ', + $config{PERL}, + catfile($config{sourcedir}, 'Configure'), + @{$config{perlargv}}), "\n"; + print "\nPerl information:\n\n"; + print ' ',$config{perl_cmd},"\n"; + print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; + } + if ($dump || $options) { + my $longest = 0; + my $longest2 = 0; + foreach my $what (@disablables) { + $longest = length($what) if $longest < length($what); + $longest2 = length($disabled{$what}) + if $disabled{$what} && $longest2 < length($disabled{$what}); + } + print "\nEnabled features:\n\n"; + foreach my $what (@disablables) { + print " $what\n" unless $disabled{$what}; + } + print "\nDisabled features:\n\n"; + foreach my $what (@disablables) { + if ($disabled{$what}) { + print " $what", ' ' x ($longest - length($what) + 1), + "[$disabled{$what}]", ' ' x ($longest2 - length($disabled{$what}) + 1); + print $disabled_info{$what}->{macro} + if $disabled_info{$what}->{macro}; + print ' (skip ', + join(', ', @{$disabled_info{$what}->{skipped}}), + ')' + if $disabled_info{$what}->{skipped}; + print "\n"; + } + } + } + if ($dump || $target) { + print "\nConfig target attributes:\n\n"; + foreach (sort keys %target) { + next if $_ =~ m|^_| || $_ eq 'template'; + my $quotify = sub { + map { (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\""} @_; + }; + print ' ', $_, ' => '; + if (ref($target{$_}) eq "ARRAY") { + print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; + } else { + print $quotify->($target{$_}), ",\n" + } + } + } + if ($dump || $envvars) { + print "\nRecorded environment:\n\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; + } + } + if ($dump || $makevars) { + print "\nMakevars:\n\n"; + foreach my $var (@makevars) { + my $prefix = ''; + $prefix = $config{CROSS_COMPILE} + if grep { $var eq $_ } @user_crossable; + $prefix //= ''; + print ' ',$var,' ' x (16 - length $var),'= ', + (ref $config{$var} eq 'ARRAY' + ? join(' ', @{$config{$var}}) + : $prefix.$config{$var}), + "\n" + if defined $config{$var}; + } + + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + my $buildfile = canonpath(catdir(@buildfile)); + print <<"_____"; + +NOTE: These variables only represent the configuration view. The build file +template may have processed these variables further, please have a look at the +build file for more exact data: + $buildfile +_____ + } + if ($dump || $buildparams) { + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + print "\nbuild file:\n\n"; + print " ", canonpath(catfile(@buildfile)),"\n"; + + print "\nbuild file templates:\n\n"; + foreach (@{$config{build_file_templates}}) { + my @tmpl = ($_); + unshift @tmpl, $here + unless file_name_is_absolute($config{sourcedir}); + print ' ',canonpath(catfile(@tmpl)),"\n"; + } + } + if ($reconf) { + if ($verbose) { + print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; + } + } + + chdir $here; + exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; + } +} + +1; + +__END__ + +=head1 NAME + +configdata.pm - configuration data for OpenSSL builds + +=head1 SYNOPSIS + +Interactive: + + perl configdata.pm [options] + +As data bank module: + + use configdata; + +=head1 DESCRIPTION + +This module can be used in two modes, interactively and as a module containing +all the data recorded by OpenSSL's Configure script. + +When used interactively, simply run it as any perl script, with at least one +option, and you will get the information you ask for. See L below. + +When loaded as a module, you get a few databanks with useful information to +perform build related tasks. The databanks are: + + %config Configured things. + %target The OpenSSL config target with all inheritances + resolved. + %disabled The features that are disabled. + @disablables The list of features that can be disabled. + %withargs All data given through --with-THING options. + %unified_info All information that was computed from the build.info + files. + +=head1 OPTIONS + +=over 4 + +=item B<--help> + +Print a brief help message and exit. + +=item B<--man> + +Print the manual page and exit. + +=item B<--dump> | B<-d> + +Print all relevant configuration data. This is equivalent to B<--command-line> +B<--options> B<--target> B<--environment> B<--make-variables> +B<--build-parameters>. + +=item B<--command-line> | B<-c> + +Print the current configuration command line. + +=item B<--options> | B<-o> + +Print the features, both enabled and disabled, and display defined macro and +skipped directories where applicable. + +=item B<--target> | B<-t> + +Print the config attributes for this config target. + +=item B<--environment> | B<-e> + +Print the environment variables and their values at the time of configuration. + +=item B<--make-variables> | B<-m> + +Print the main make variables generated in the current configuration + +=item B<--build-parameters> | B<-b> + +Print the build parameters, i.e. build file and build file templates. + +=item B<--reconfigure> | B<--reconf> | B<-r> + +Redo the configuration. + +=item B<--verbose> | B<-v> + +Verbose output. + +=back + +=cut diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h new file mode 100644 index 00000000000000..126470154c6b3d --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h @@ -0,0 +1,29 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: VC-WIN64-ARM" +#define DATE "built on: Fri Mar 8 03:24:47 2019 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','c','l',' ','/','Z','i', + ' ','/','F','d','o','s','s','l','_','s','t','a','t','i','c','.', + 'p','d','b',' ','/','G','s','0',' ','/','G','F',' ','/','G','y', + ' ','/','M','D',' ','/','W','3',' ','/','w','d','4','0','9','0', + ' ','/','n','o','l','o','g','o',' ','/','O','2',' ','-','D','L', + '_','E','N','D','I','A','N',' ','-','D','O','P','E','N','S','S', + 'L','_','P','I','C','\0' +}; diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/bn_conf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/bn_conf.h new file mode 100644 index 00000000000000..d803b518584f2e --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by makefile from crypto/include/internal/bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_CONF_H +# define HEADER_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#undef SIXTY_FOUR_BIT_LONG +#define SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/dso_conf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/dso_conf.h new file mode 100644 index 00000000000000..dc8306eda3a8cb --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/include/internal/dso_conf.h @@ -0,0 +1,18 @@ +/* WARNING: do not edit! */ +/* Generated by makefile from crypto/include/internal/dso_conf.h.in */ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSO_CONF_H +# define HEADER_DSO_CONF_H + +# define DSO_WIN32 +# define DSO_EXTENSION ".dll" + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslconf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslconf.h new file mode 100644 index 00000000000000..1b30a53f778e92 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslconf.h @@ -0,0 +1,207 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_WIN64A +# define OPENSSL_SYS_WIN64A 1 +#endif +#ifndef OPENSSL_NO_COMP +# define OPENSSL_NO_COMP +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#define OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# undef SIXTY_FOUR_BIT_LONG +# define SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h new file mode 100644 index 00000000000000..9b3d270e20800e --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h @@ -0,0 +1,507 @@ +/* + * WARNING: do not edit! + * Generated by apps/progs.pl + * + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +typedef enum FUNC_TYPE { + FT_none, FT_general, FT_md, FT_cipher, FT_pkey, + FT_md_alg, FT_cipher_alg +} FUNC_TYPE; + +typedef struct function_st { + FUNC_TYPE type; + const char *name; + int (*func)(int argc, char *argv[]); + const OPTIONS *help; +} FUNCTION; + +DEFINE_LHASH_OF(FUNCTION); + +extern int asn1parse_main(int argc, char *argv[]); +extern int ca_main(int argc, char *argv[]); +extern int ciphers_main(int argc, char *argv[]); +extern int cms_main(int argc, char *argv[]); +extern int crl_main(int argc, char *argv[]); +extern int crl2pkcs7_main(int argc, char *argv[]); +extern int dgst_main(int argc, char *argv[]); +extern int dhparam_main(int argc, char *argv[]); +extern int dsa_main(int argc, char *argv[]); +extern int dsaparam_main(int argc, char *argv[]); +extern int ec_main(int argc, char *argv[]); +extern int ecparam_main(int argc, char *argv[]); +extern int enc_main(int argc, char *argv[]); +extern int engine_main(int argc, char *argv[]); +extern int errstr_main(int argc, char *argv[]); +extern int gendsa_main(int argc, char *argv[]); +extern int genpkey_main(int argc, char *argv[]); +extern int genrsa_main(int argc, char *argv[]); +extern int help_main(int argc, char *argv[]); +extern int list_main(int argc, char *argv[]); +extern int nseq_main(int argc, char *argv[]); +extern int ocsp_main(int argc, char *argv[]); +extern int passwd_main(int argc, char *argv[]); +extern int pkcs12_main(int argc, char *argv[]); +extern int pkcs7_main(int argc, char *argv[]); +extern int pkcs8_main(int argc, char *argv[]); +extern int pkey_main(int argc, char *argv[]); +extern int pkeyparam_main(int argc, char *argv[]); +extern int pkeyutl_main(int argc, char *argv[]); +extern int prime_main(int argc, char *argv[]); +extern int rand_main(int argc, char *argv[]); +extern int rehash_main(int argc, char *argv[]); +extern int req_main(int argc, char *argv[]); +extern int rsa_main(int argc, char *argv[]); +extern int rsautl_main(int argc, char *argv[]); +extern int s_client_main(int argc, char *argv[]); +extern int s_server_main(int argc, char *argv[]); +extern int s_time_main(int argc, char *argv[]); +extern int sess_id_main(int argc, char *argv[]); +extern int smime_main(int argc, char *argv[]); +extern int speed_main(int argc, char *argv[]); +extern int spkac_main(int argc, char *argv[]); +extern int srp_main(int argc, char *argv[]); +extern int storeutl_main(int argc, char *argv[]); +extern int ts_main(int argc, char *argv[]); +extern int verify_main(int argc, char *argv[]); +extern int version_main(int argc, char *argv[]); +extern int x509_main(int argc, char *argv[]); + +extern const OPTIONS asn1parse_options[]; +extern const OPTIONS ca_options[]; +extern const OPTIONS ciphers_options[]; +extern const OPTIONS cms_options[]; +extern const OPTIONS crl_options[]; +extern const OPTIONS crl2pkcs7_options[]; +extern const OPTIONS dgst_options[]; +extern const OPTIONS dhparam_options[]; +extern const OPTIONS dsa_options[]; +extern const OPTIONS dsaparam_options[]; +extern const OPTIONS ec_options[]; +extern const OPTIONS ecparam_options[]; +extern const OPTIONS enc_options[]; +extern const OPTIONS engine_options[]; +extern const OPTIONS errstr_options[]; +extern const OPTIONS gendsa_options[]; +extern const OPTIONS genpkey_options[]; +extern const OPTIONS genrsa_options[]; +extern const OPTIONS help_options[]; +extern const OPTIONS list_options[]; +extern const OPTIONS nseq_options[]; +extern const OPTIONS ocsp_options[]; +extern const OPTIONS passwd_options[]; +extern const OPTIONS pkcs12_options[]; +extern const OPTIONS pkcs7_options[]; +extern const OPTIONS pkcs8_options[]; +extern const OPTIONS pkey_options[]; +extern const OPTIONS pkeyparam_options[]; +extern const OPTIONS pkeyutl_options[]; +extern const OPTIONS prime_options[]; +extern const OPTIONS rand_options[]; +extern const OPTIONS rehash_options[]; +extern const OPTIONS req_options[]; +extern const OPTIONS rsa_options[]; +extern const OPTIONS rsautl_options[]; +extern const OPTIONS s_client_options[]; +extern const OPTIONS s_server_options[]; +extern const OPTIONS s_time_options[]; +extern const OPTIONS sess_id_options[]; +extern const OPTIONS smime_options[]; +extern const OPTIONS speed_options[]; +extern const OPTIONS spkac_options[]; +extern const OPTIONS srp_options[]; +extern const OPTIONS storeutl_options[]; +extern const OPTIONS ts_options[]; +extern const OPTIONS verify_options[]; +extern const OPTIONS version_options[]; +extern const OPTIONS x509_options[]; + +#ifdef INCLUDE_FUNCTION_TABLE +static FUNCTION functions[] = { + {FT_general, "asn1parse", asn1parse_main, asn1parse_options}, + {FT_general, "ca", ca_main, ca_options}, +#ifndef OPENSSL_NO_SOCK + {FT_general, "ciphers", ciphers_main, ciphers_options}, +#endif +#ifndef OPENSSL_NO_CMS + {FT_general, "cms", cms_main, cms_options}, +#endif + {FT_general, "crl", crl_main, crl_options}, + {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options}, + {FT_general, "dgst", dgst_main, dgst_options}, +#ifndef OPENSSL_NO_DH + {FT_general, "dhparam", dhparam_main, dhparam_options}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsa", dsa_main, dsa_options}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsaparam", dsaparam_main, dsaparam_options}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ec", ec_main, ec_options}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ecparam", ecparam_main, ecparam_options}, +#endif + {FT_general, "enc", enc_main, enc_options}, +#ifndef OPENSSL_NO_ENGINE + {FT_general, "engine", engine_main, engine_options}, +#endif + {FT_general, "errstr", errstr_main, errstr_options}, +#ifndef OPENSSL_NO_DSA + {FT_general, "gendsa", gendsa_main, gendsa_options}, +#endif + {FT_general, "genpkey", genpkey_main, genpkey_options}, +#ifndef OPENSSL_NO_RSA + {FT_general, "genrsa", genrsa_main, genrsa_options}, +#endif + {FT_general, "help", help_main, help_options}, + {FT_general, "list", list_main, list_options}, + {FT_general, "nseq", nseq_main, nseq_options}, +#ifndef OPENSSL_NO_OCSP + {FT_general, "ocsp", ocsp_main, ocsp_options}, +#endif + {FT_general, "passwd", passwd_main, passwd_options}, +#ifndef OPENSSL_NO_DES + {FT_general, "pkcs12", pkcs12_main, pkcs12_options}, +#endif + {FT_general, "pkcs7", pkcs7_main, pkcs7_options}, + {FT_general, "pkcs8", pkcs8_main, pkcs8_options}, + {FT_general, "pkey", pkey_main, pkey_options}, + {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options}, + {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options}, + {FT_general, "prime", prime_main, prime_options}, + {FT_general, "rand", rand_main, rand_options}, + {FT_general, "rehash", rehash_main, rehash_options}, + {FT_general, "req", req_main, req_options}, + {FT_general, "rsa", rsa_main, rsa_options}, +#ifndef OPENSSL_NO_RSA + {FT_general, "rsautl", rsautl_main, rsautl_options}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_client", s_client_main, s_client_options}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_server", s_server_main, s_server_options}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_time", s_time_main, s_time_options}, +#endif + {FT_general, "sess_id", sess_id_main, sess_id_options}, + {FT_general, "smime", smime_main, smime_options}, + {FT_general, "speed", speed_main, speed_options}, + {FT_general, "spkac", spkac_main, spkac_options}, +#ifndef OPENSSL_NO_SRP + {FT_general, "srp", srp_main, srp_options}, +#endif + {FT_general, "storeutl", storeutl_main, storeutl_options}, +#ifndef OPENSSL_NO_TS + {FT_general, "ts", ts_main, ts_options}, +#endif + {FT_general, "verify", verify_main, verify_options}, + {FT_general, "version", version_main, version_options}, + {FT_general, "x509", x509_main, x509_options}, +#ifndef OPENSSL_NO_MD2 + {FT_md, "md2", dgst_main}, +#endif +#ifndef OPENSSL_NO_MD4 + {FT_md, "md4", dgst_main}, +#endif + {FT_md, "md5", dgst_main}, +#ifndef OPENSSL_NO_GOST + {FT_md, "gost", dgst_main}, +#endif + {FT_md, "sha1", dgst_main}, + {FT_md, "sha224", dgst_main}, + {FT_md, "sha256", dgst_main}, + {FT_md, "sha384", dgst_main}, + {FT_md, "sha512", dgst_main}, + {FT_md, "sha512-224", dgst_main}, + {FT_md, "sha512-256", dgst_main}, + {FT_md, "sha3-224", dgst_main}, + {FT_md, "sha3-256", dgst_main}, + {FT_md, "sha3-384", dgst_main}, + {FT_md, "sha3-512", dgst_main}, + {FT_md, "shake128", dgst_main}, + {FT_md, "shake256", dgst_main}, +#ifndef OPENSSL_NO_MDC2 + {FT_md, "mdc2", dgst_main}, +#endif +#ifndef OPENSSL_NO_RMD160 + {FT_md, "rmd160", dgst_main}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2b512", dgst_main}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2s256", dgst_main}, +#endif +#ifndef OPENSSL_NO_SM3 + {FT_md, "sm3", dgst_main}, +#endif + {FT_cipher, "aes-128-cbc", enc_main, enc_options}, + {FT_cipher, "aes-128-ecb", enc_main, enc_options}, + {FT_cipher, "aes-192-cbc", enc_main, enc_options}, + {FT_cipher, "aes-192-ecb", enc_main, enc_options}, + {FT_cipher, "aes-256-cbc", enc_main, enc_options}, + {FT_cipher, "aes-256-ecb", enc_main, enc_options}, +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ctr", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb1", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb8", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ctr", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb1", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb8", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ctr", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb1", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb8", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-ecb", enc_main, enc_options}, +#endif + {FT_cipher, "base64", enc_main, enc_options}, +#ifdef ZLIB + {FT_cipher, "zlib", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des3", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "desx", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4-40", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-64-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-40-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ctr", enc_main, enc_options}, +#endif + {0, NULL, NULL} +}; +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi new file mode 100644 index 00000000000000..8c25c4c230da1a --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi @@ -0,0 +1,86 @@ +{ + 'variables': { + 'openssl_defines_VC-WIN64-ARM': [ + 'NDEBUG', + 'OPENSSL_SYS_WIN32', + 'WIN32_LEAN_AND_MEAN', + 'UNICODE', + '_UNICODE', + '_CRT_SECURE_NO_DEPRECATE', + '_WINSOCK_DEPRECATED_NO_WARNINGS', + '_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE', + 'OPENSSL_SYS_WIN_CORE', + 'OPENSSL_PIC', + ], + 'openssl_cflags_VC-WIN64-ARM': [ + '/W3 /wd4090 /nologo /O2', + '/Gs0 /GF /Gy', + '/W3 /wd4090 /nologo /O2', + ], + 'openssl_ex_libs_VC-WIN64-ARM': [ + 'onecore.lib', + ], + 'openssl_cli_srcs_VC-WIN64-ARM': [ + 'openssl/apps/asn1pars.c', + 'openssl/apps/ca.c', + 'openssl/apps/ciphers.c', + 'openssl/apps/cms.c', + 'openssl/apps/crl.c', + 'openssl/apps/crl2p7.c', + 'openssl/apps/dgst.c', + 'openssl/apps/dhparam.c', + 'openssl/apps/dsa.c', + 'openssl/apps/dsaparam.c', + 'openssl/apps/ec.c', + 'openssl/apps/ecparam.c', + 'openssl/apps/enc.c', + 'openssl/apps/engine.c', + 'openssl/apps/errstr.c', + 'openssl/apps/gendsa.c', + 'openssl/apps/genpkey.c', + 'openssl/apps/genrsa.c', + 'openssl/apps/nseq.c', + 'openssl/apps/ocsp.c', + 'openssl/apps/openssl.c', + 'openssl/apps/passwd.c', + 'openssl/apps/pkcs12.c', + 'openssl/apps/pkcs7.c', + 'openssl/apps/pkcs8.c', + 'openssl/apps/pkey.c', + 'openssl/apps/pkeyparam.c', + 'openssl/apps/pkeyutl.c', + 'openssl/apps/prime.c', + 'openssl/apps/rand.c', + 'openssl/apps/rehash.c', + 'openssl/apps/req.c', + 'openssl/apps/rsa.c', + 'openssl/apps/rsautl.c', + 'openssl/apps/s_client.c', + 'openssl/apps/s_server.c', + 'openssl/apps/s_time.c', + 'openssl/apps/sess_id.c', + 'openssl/apps/smime.c', + 'openssl/apps/speed.c', + 'openssl/apps/spkac.c', + 'openssl/apps/srp.c', + 'openssl/apps/storeutl.c', + 'openssl/apps/ts.c', + 'openssl/apps/verify.c', + 'openssl/apps/version.c', + 'openssl/apps/x509.c', + 'openssl/apps/app_rand.c', + 'openssl/apps/apps.c', + 'openssl/apps/bf_prefix.c', + 'openssl/apps/opt.c', + 'openssl/apps/s_cb.c', + 'openssl/apps/s_socket.c', + 'openssl/apps/win32_init.c', + ], + }, + 'defines': ['<@(openssl_defines_VC-WIN64-ARM)'], + 'include_dirs': [ + './include', + ], + + 'sources': ['<@(openssl_cli_srcs_VC-WIN64-ARM)'], +} diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi new file mode 100644 index 00000000000000..1b9795cdd47c79 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi @@ -0,0 +1,717 @@ +{ + 'variables': { + 'openssl_sources': [ + 'openssl/ssl/bio_ssl.c', + 'openssl/ssl/d1_lib.c', + 'openssl/ssl/d1_msg.c', + 'openssl/ssl/d1_srtp.c', + 'openssl/ssl/methods.c', + 'openssl/ssl/packet.c', + 'openssl/ssl/pqueue.c', + 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/record/rec_layer_d1.c', + 'openssl/ssl/record/rec_layer_s3.c', + 'openssl/ssl/record/ssl3_buffer.c', + 'openssl/ssl/record/ssl3_record.c', + 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/s3_enc.c', + 'openssl/ssl/s3_lib.c', + 'openssl/ssl/s3_msg.c', + 'openssl/ssl/ssl_asn1.c', + 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_ciph.c', + 'openssl/ssl/ssl_conf.c', + 'openssl/ssl/ssl_err.c', + 'openssl/ssl/ssl_init.c', + 'openssl/ssl/ssl_lib.c', + 'openssl/ssl/ssl_mcnf.c', + 'openssl/ssl/ssl_rsa.c', + 'openssl/ssl/ssl_sess.c', + 'openssl/ssl/ssl_stat.c', + 'openssl/ssl/ssl_txt.c', + 'openssl/ssl/ssl_utst.c', + 'openssl/ssl/statem/extensions.c', + 'openssl/ssl/statem/extensions_clnt.c', + 'openssl/ssl/statem/extensions_cust.c', + 'openssl/ssl/statem/extensions_srvr.c', + 'openssl/ssl/statem/statem.c', + 'openssl/ssl/statem/statem_clnt.c', + 'openssl/ssl/statem/statem_dtls.c', + 'openssl/ssl/statem/statem_lib.c', + 'openssl/ssl/statem/statem_srvr.c', + 'openssl/ssl/t1_enc.c', + 'openssl/ssl/t1_lib.c', + 'openssl/ssl/t1_trce.c', + 'openssl/ssl/tls13_enc.c', + 'openssl/ssl/tls_srp.c', + 'openssl/crypto/aes/aes_cbc.c', + 'openssl/crypto/aes/aes_cfb.c', + 'openssl/crypto/aes/aes_core.c', + 'openssl/crypto/aes/aes_ecb.c', + 'openssl/crypto/aes/aes_ige.c', + 'openssl/crypto/aes/aes_misc.c', + 'openssl/crypto/aes/aes_ofb.c', + 'openssl/crypto/aes/aes_wrap.c', + 'openssl/crypto/aria/aria.c', + 'openssl/crypto/asn1/a_bitstr.c', + 'openssl/crypto/asn1/a_d2i_fp.c', + 'openssl/crypto/asn1/a_digest.c', + 'openssl/crypto/asn1/a_dup.c', + 'openssl/crypto/asn1/a_gentm.c', + 'openssl/crypto/asn1/a_i2d_fp.c', + 'openssl/crypto/asn1/a_int.c', + 'openssl/crypto/asn1/a_mbstr.c', + 'openssl/crypto/asn1/a_object.c', + 'openssl/crypto/asn1/a_octet.c', + 'openssl/crypto/asn1/a_print.c', + 'openssl/crypto/asn1/a_sign.c', + 'openssl/crypto/asn1/a_strex.c', + 'openssl/crypto/asn1/a_strnid.c', + 'openssl/crypto/asn1/a_time.c', + 'openssl/crypto/asn1/a_type.c', + 'openssl/crypto/asn1/a_utctm.c', + 'openssl/crypto/asn1/a_utf8.c', + 'openssl/crypto/asn1/a_verify.c', + 'openssl/crypto/asn1/ameth_lib.c', + 'openssl/crypto/asn1/asn1_err.c', + 'openssl/crypto/asn1/asn1_gen.c', + 'openssl/crypto/asn1/asn1_item_list.c', + 'openssl/crypto/asn1/asn1_lib.c', + 'openssl/crypto/asn1/asn1_par.c', + 'openssl/crypto/asn1/asn_mime.c', + 'openssl/crypto/asn1/asn_moid.c', + 'openssl/crypto/asn1/asn_mstbl.c', + 'openssl/crypto/asn1/asn_pack.c', + 'openssl/crypto/asn1/bio_asn1.c', + 'openssl/crypto/asn1/bio_ndef.c', + 'openssl/crypto/asn1/d2i_pr.c', + 'openssl/crypto/asn1/d2i_pu.c', + 'openssl/crypto/asn1/evp_asn1.c', + 'openssl/crypto/asn1/f_int.c', + 'openssl/crypto/asn1/f_string.c', + 'openssl/crypto/asn1/i2d_pr.c', + 'openssl/crypto/asn1/i2d_pu.c', + 'openssl/crypto/asn1/n_pkey.c', + 'openssl/crypto/asn1/nsseq.c', + 'openssl/crypto/asn1/p5_pbe.c', + 'openssl/crypto/asn1/p5_pbev2.c', + 'openssl/crypto/asn1/p5_scrypt.c', + 'openssl/crypto/asn1/p8_pkey.c', + 'openssl/crypto/asn1/t_bitst.c', + 'openssl/crypto/asn1/t_pkey.c', + 'openssl/crypto/asn1/t_spki.c', + 'openssl/crypto/asn1/tasn_dec.c', + 'openssl/crypto/asn1/tasn_enc.c', + 'openssl/crypto/asn1/tasn_fre.c', + 'openssl/crypto/asn1/tasn_new.c', + 'openssl/crypto/asn1/tasn_prn.c', + 'openssl/crypto/asn1/tasn_scn.c', + 'openssl/crypto/asn1/tasn_typ.c', + 'openssl/crypto/asn1/tasn_utl.c', + 'openssl/crypto/asn1/x_algor.c', + 'openssl/crypto/asn1/x_bignum.c', + 'openssl/crypto/asn1/x_info.c', + 'openssl/crypto/asn1/x_int64.c', + 'openssl/crypto/asn1/x_long.c', + 'openssl/crypto/asn1/x_pkey.c', + 'openssl/crypto/asn1/x_sig.c', + 'openssl/crypto/asn1/x_spki.c', + 'openssl/crypto/asn1/x_val.c', + 'openssl/crypto/async/arch/async_null.c', + 'openssl/crypto/async/arch/async_posix.c', + 'openssl/crypto/async/arch/async_win.c', + 'openssl/crypto/async/async.c', + 'openssl/crypto/async/async_err.c', + 'openssl/crypto/async/async_wait.c', + 'openssl/crypto/bf/bf_cfb64.c', + 'openssl/crypto/bf/bf_ecb.c', + 'openssl/crypto/bf/bf_enc.c', + 'openssl/crypto/bf/bf_ofb64.c', + 'openssl/crypto/bf/bf_skey.c', + 'openssl/crypto/bio/b_addr.c', + 'openssl/crypto/bio/b_dump.c', + 'openssl/crypto/bio/b_print.c', + 'openssl/crypto/bio/b_sock.c', + 'openssl/crypto/bio/b_sock2.c', + 'openssl/crypto/bio/bf_buff.c', + 'openssl/crypto/bio/bf_lbuf.c', + 'openssl/crypto/bio/bf_nbio.c', + 'openssl/crypto/bio/bf_null.c', + 'openssl/crypto/bio/bio_cb.c', + 'openssl/crypto/bio/bio_err.c', + 'openssl/crypto/bio/bio_lib.c', + 'openssl/crypto/bio/bio_meth.c', + 'openssl/crypto/bio/bss_acpt.c', + 'openssl/crypto/bio/bss_bio.c', + 'openssl/crypto/bio/bss_conn.c', + 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_fd.c', + 'openssl/crypto/bio/bss_file.c', + 'openssl/crypto/bio/bss_log.c', + 'openssl/crypto/bio/bss_mem.c', + 'openssl/crypto/bio/bss_null.c', + 'openssl/crypto/bio/bss_sock.c', + 'openssl/crypto/blake2/blake2b.c', + 'openssl/crypto/blake2/blake2s.c', + 'openssl/crypto/blake2/m_blake2b.c', + 'openssl/crypto/blake2/m_blake2s.c', + 'openssl/crypto/bn/bn_add.c', + 'openssl/crypto/bn/bn_asm.c', + 'openssl/crypto/bn/bn_blind.c', + 'openssl/crypto/bn/bn_const.c', + 'openssl/crypto/bn/bn_ctx.c', + 'openssl/crypto/bn/bn_depr.c', + 'openssl/crypto/bn/bn_dh.c', + 'openssl/crypto/bn/bn_div.c', + 'openssl/crypto/bn/bn_err.c', + 'openssl/crypto/bn/bn_exp.c', + 'openssl/crypto/bn/bn_exp2.c', + 'openssl/crypto/bn/bn_gcd.c', + 'openssl/crypto/bn/bn_gf2m.c', + 'openssl/crypto/bn/bn_intern.c', + 'openssl/crypto/bn/bn_kron.c', + 'openssl/crypto/bn/bn_lib.c', + 'openssl/crypto/bn/bn_mod.c', + 'openssl/crypto/bn/bn_mont.c', + 'openssl/crypto/bn/bn_mpi.c', + 'openssl/crypto/bn/bn_mul.c', + 'openssl/crypto/bn/bn_nist.c', + 'openssl/crypto/bn/bn_prime.c', + 'openssl/crypto/bn/bn_print.c', + 'openssl/crypto/bn/bn_rand.c', + 'openssl/crypto/bn/bn_recp.c', + 'openssl/crypto/bn/bn_shift.c', + 'openssl/crypto/bn/bn_sqr.c', + 'openssl/crypto/bn/bn_sqrt.c', + 'openssl/crypto/bn/bn_srp.c', + 'openssl/crypto/bn/bn_word.c', + 'openssl/crypto/bn/bn_x931p.c', + 'openssl/crypto/buffer/buf_err.c', + 'openssl/crypto/buffer/buffer.c', + 'openssl/crypto/camellia/camellia.c', + 'openssl/crypto/camellia/cmll_cbc.c', + 'openssl/crypto/camellia/cmll_cfb.c', + 'openssl/crypto/camellia/cmll_ctr.c', + 'openssl/crypto/camellia/cmll_ecb.c', + 'openssl/crypto/camellia/cmll_misc.c', + 'openssl/crypto/camellia/cmll_ofb.c', + 'openssl/crypto/cast/c_cfb64.c', + 'openssl/crypto/cast/c_ecb.c', + 'openssl/crypto/cast/c_enc.c', + 'openssl/crypto/cast/c_ofb64.c', + 'openssl/crypto/cast/c_skey.c', + 'openssl/crypto/chacha/chacha_enc.c', + 'openssl/crypto/cmac/cm_ameth.c', + 'openssl/crypto/cmac/cm_pmeth.c', + 'openssl/crypto/cmac/cmac.c', + 'openssl/crypto/cms/cms_asn1.c', + 'openssl/crypto/cms/cms_att.c', + 'openssl/crypto/cms/cms_cd.c', + 'openssl/crypto/cms/cms_dd.c', + 'openssl/crypto/cms/cms_enc.c', + 'openssl/crypto/cms/cms_env.c', + 'openssl/crypto/cms/cms_err.c', + 'openssl/crypto/cms/cms_ess.c', + 'openssl/crypto/cms/cms_io.c', + 'openssl/crypto/cms/cms_kari.c', + 'openssl/crypto/cms/cms_lib.c', + 'openssl/crypto/cms/cms_pwri.c', + 'openssl/crypto/cms/cms_sd.c', + 'openssl/crypto/cms/cms_smime.c', + 'openssl/crypto/conf/conf_api.c', + 'openssl/crypto/conf/conf_def.c', + 'openssl/crypto/conf/conf_err.c', + 'openssl/crypto/conf/conf_lib.c', + 'openssl/crypto/conf/conf_mall.c', + 'openssl/crypto/conf/conf_mod.c', + 'openssl/crypto/conf/conf_sap.c', + 'openssl/crypto/conf/conf_ssl.c', + 'openssl/crypto/cpt_err.c', + 'openssl/crypto/cryptlib.c', + 'openssl/crypto/ct/ct_b64.c', + 'openssl/crypto/ct/ct_err.c', + 'openssl/crypto/ct/ct_log.c', + 'openssl/crypto/ct/ct_oct.c', + 'openssl/crypto/ct/ct_policy.c', + 'openssl/crypto/ct/ct_prn.c', + 'openssl/crypto/ct/ct_sct.c', + 'openssl/crypto/ct/ct_sct_ctx.c', + 'openssl/crypto/ct/ct_vfy.c', + 'openssl/crypto/ct/ct_x509v3.c', + 'openssl/crypto/ctype.c', + 'openssl/crypto/cversion.c', + 'openssl/crypto/des/cbc_cksm.c', + 'openssl/crypto/des/cbc_enc.c', + 'openssl/crypto/des/cfb64ede.c', + 'openssl/crypto/des/cfb64enc.c', + 'openssl/crypto/des/cfb_enc.c', + 'openssl/crypto/des/des_enc.c', + 'openssl/crypto/des/ecb3_enc.c', + 'openssl/crypto/des/ecb_enc.c', + 'openssl/crypto/des/fcrypt.c', + 'openssl/crypto/des/fcrypt_b.c', + 'openssl/crypto/des/ofb64ede.c', + 'openssl/crypto/des/ofb64enc.c', + 'openssl/crypto/des/ofb_enc.c', + 'openssl/crypto/des/pcbc_enc.c', + 'openssl/crypto/des/qud_cksm.c', + 'openssl/crypto/des/rand_key.c', + 'openssl/crypto/des/set_key.c', + 'openssl/crypto/des/str2key.c', + 'openssl/crypto/des/xcbc_enc.c', + 'openssl/crypto/dh/dh_ameth.c', + 'openssl/crypto/dh/dh_asn1.c', + 'openssl/crypto/dh/dh_check.c', + 'openssl/crypto/dh/dh_depr.c', + 'openssl/crypto/dh/dh_err.c', + 'openssl/crypto/dh/dh_gen.c', + 'openssl/crypto/dh/dh_kdf.c', + 'openssl/crypto/dh/dh_key.c', + 'openssl/crypto/dh/dh_lib.c', + 'openssl/crypto/dh/dh_meth.c', + 'openssl/crypto/dh/dh_pmeth.c', + 'openssl/crypto/dh/dh_prn.c', + 'openssl/crypto/dh/dh_rfc5114.c', + 'openssl/crypto/dh/dh_rfc7919.c', + 'openssl/crypto/dsa/dsa_ameth.c', + 'openssl/crypto/dsa/dsa_asn1.c', + 'openssl/crypto/dsa/dsa_depr.c', + 'openssl/crypto/dsa/dsa_err.c', + 'openssl/crypto/dsa/dsa_gen.c', + 'openssl/crypto/dsa/dsa_key.c', + 'openssl/crypto/dsa/dsa_lib.c', + 'openssl/crypto/dsa/dsa_meth.c', + 'openssl/crypto/dsa/dsa_ossl.c', + 'openssl/crypto/dsa/dsa_pmeth.c', + 'openssl/crypto/dsa/dsa_prn.c', + 'openssl/crypto/dsa/dsa_sign.c', + 'openssl/crypto/dsa/dsa_vrf.c', + 'openssl/crypto/dso/dso_dl.c', + 'openssl/crypto/dso/dso_dlfcn.c', + 'openssl/crypto/dso/dso_err.c', + 'openssl/crypto/dso/dso_lib.c', + 'openssl/crypto/dso/dso_openssl.c', + 'openssl/crypto/dso/dso_vms.c', + 'openssl/crypto/dso/dso_win32.c', + 'openssl/crypto/ebcdic.c', + 'openssl/crypto/ec/curve25519.c', + 'openssl/crypto/ec/curve448/arch_32/f_impl.c', + 'openssl/crypto/ec/curve448/curve448.c', + 'openssl/crypto/ec/curve448/curve448_tables.c', + 'openssl/crypto/ec/curve448/eddsa.c', + 'openssl/crypto/ec/curve448/f_generic.c', + 'openssl/crypto/ec/curve448/scalar.c', + 'openssl/crypto/ec/ec2_oct.c', + 'openssl/crypto/ec/ec2_smpl.c', + 'openssl/crypto/ec/ec_ameth.c', + 'openssl/crypto/ec/ec_asn1.c', + 'openssl/crypto/ec/ec_check.c', + 'openssl/crypto/ec/ec_curve.c', + 'openssl/crypto/ec/ec_cvt.c', + 'openssl/crypto/ec/ec_err.c', + 'openssl/crypto/ec/ec_key.c', + 'openssl/crypto/ec/ec_kmeth.c', + 'openssl/crypto/ec/ec_lib.c', + 'openssl/crypto/ec/ec_mult.c', + 'openssl/crypto/ec/ec_oct.c', + 'openssl/crypto/ec/ec_pmeth.c', + 'openssl/crypto/ec/ec_print.c', + 'openssl/crypto/ec/ecdh_kdf.c', + 'openssl/crypto/ec/ecdh_ossl.c', + 'openssl/crypto/ec/ecdsa_ossl.c', + 'openssl/crypto/ec/ecdsa_sign.c', + 'openssl/crypto/ec/ecdsa_vrf.c', + 'openssl/crypto/ec/eck_prn.c', + 'openssl/crypto/ec/ecp_mont.c', + 'openssl/crypto/ec/ecp_nist.c', + 'openssl/crypto/ec/ecp_nistp224.c', + 'openssl/crypto/ec/ecp_nistp256.c', + 'openssl/crypto/ec/ecp_nistp521.c', + 'openssl/crypto/ec/ecp_nistputil.c', + 'openssl/crypto/ec/ecp_oct.c', + 'openssl/crypto/ec/ecp_smpl.c', + 'openssl/crypto/ec/ecx_meth.c', + 'openssl/crypto/engine/eng_all.c', + 'openssl/crypto/engine/eng_cnf.c', + 'openssl/crypto/engine/eng_ctrl.c', + 'openssl/crypto/engine/eng_dyn.c', + 'openssl/crypto/engine/eng_err.c', + 'openssl/crypto/engine/eng_fat.c', + 'openssl/crypto/engine/eng_init.c', + 'openssl/crypto/engine/eng_lib.c', + 'openssl/crypto/engine/eng_list.c', + 'openssl/crypto/engine/eng_openssl.c', + 'openssl/crypto/engine/eng_pkey.c', + 'openssl/crypto/engine/eng_rdrand.c', + 'openssl/crypto/engine/eng_table.c', + 'openssl/crypto/engine/tb_asnmth.c', + 'openssl/crypto/engine/tb_cipher.c', + 'openssl/crypto/engine/tb_dh.c', + 'openssl/crypto/engine/tb_digest.c', + 'openssl/crypto/engine/tb_dsa.c', + 'openssl/crypto/engine/tb_eckey.c', + 'openssl/crypto/engine/tb_pkmeth.c', + 'openssl/crypto/engine/tb_rand.c', + 'openssl/crypto/engine/tb_rsa.c', + 'openssl/crypto/err/err.c', + 'openssl/crypto/err/err_all.c', + 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/evp/bio_b64.c', + 'openssl/crypto/evp/bio_enc.c', + 'openssl/crypto/evp/bio_md.c', + 'openssl/crypto/evp/bio_ok.c', + 'openssl/crypto/evp/c_allc.c', + 'openssl/crypto/evp/c_alld.c', + 'openssl/crypto/evp/cmeth_lib.c', + 'openssl/crypto/evp/digest.c', + 'openssl/crypto/evp/e_aes.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', + 'openssl/crypto/evp/e_aria.c', + 'openssl/crypto/evp/e_bf.c', + 'openssl/crypto/evp/e_camellia.c', + 'openssl/crypto/evp/e_cast.c', + 'openssl/crypto/evp/e_chacha20_poly1305.c', + 'openssl/crypto/evp/e_des.c', + 'openssl/crypto/evp/e_des3.c', + 'openssl/crypto/evp/e_idea.c', + 'openssl/crypto/evp/e_null.c', + 'openssl/crypto/evp/e_old.c', + 'openssl/crypto/evp/e_rc2.c', + 'openssl/crypto/evp/e_rc4.c', + 'openssl/crypto/evp/e_rc4_hmac_md5.c', + 'openssl/crypto/evp/e_rc5.c', + 'openssl/crypto/evp/e_seed.c', + 'openssl/crypto/evp/e_sm4.c', + 'openssl/crypto/evp/e_xcbc_d.c', + 'openssl/crypto/evp/encode.c', + 'openssl/crypto/evp/evp_cnf.c', + 'openssl/crypto/evp/evp_enc.c', + 'openssl/crypto/evp/evp_err.c', + 'openssl/crypto/evp/evp_key.c', + 'openssl/crypto/evp/evp_lib.c', + 'openssl/crypto/evp/evp_pbe.c', + 'openssl/crypto/evp/evp_pkey.c', + 'openssl/crypto/evp/m_md2.c', + 'openssl/crypto/evp/m_md4.c', + 'openssl/crypto/evp/m_md5.c', + 'openssl/crypto/evp/m_md5_sha1.c', + 'openssl/crypto/evp/m_mdc2.c', + 'openssl/crypto/evp/m_null.c', + 'openssl/crypto/evp/m_ripemd.c', + 'openssl/crypto/evp/m_sha1.c', + 'openssl/crypto/evp/m_sha3.c', + 'openssl/crypto/evp/m_sigver.c', + 'openssl/crypto/evp/m_wp.c', + 'openssl/crypto/evp/names.c', + 'openssl/crypto/evp/p5_crpt.c', + 'openssl/crypto/evp/p5_crpt2.c', + 'openssl/crypto/evp/p_dec.c', + 'openssl/crypto/evp/p_enc.c', + 'openssl/crypto/evp/p_lib.c', + 'openssl/crypto/evp/p_open.c', + 'openssl/crypto/evp/p_seal.c', + 'openssl/crypto/evp/p_sign.c', + 'openssl/crypto/evp/p_verify.c', + 'openssl/crypto/evp/pbe_scrypt.c', + 'openssl/crypto/evp/pmeth_fn.c', + 'openssl/crypto/evp/pmeth_gn.c', + 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/ex_data.c', + 'openssl/crypto/getenv.c', + 'openssl/crypto/hmac/hm_ameth.c', + 'openssl/crypto/hmac/hm_pmeth.c', + 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/idea/i_cbc.c', + 'openssl/crypto/idea/i_cfb64.c', + 'openssl/crypto/idea/i_ecb.c', + 'openssl/crypto/idea/i_ofb64.c', + 'openssl/crypto/idea/i_skey.c', + 'openssl/crypto/init.c', + 'openssl/crypto/kdf/hkdf.c', + 'openssl/crypto/kdf/kdf_err.c', + 'openssl/crypto/kdf/scrypt.c', + 'openssl/crypto/kdf/tls1_prf.c', + 'openssl/crypto/lhash/lh_stats.c', + 'openssl/crypto/lhash/lhash.c', + 'openssl/crypto/md4/md4_dgst.c', + 'openssl/crypto/md4/md4_one.c', + 'openssl/crypto/md5/md5_dgst.c', + 'openssl/crypto/md5/md5_one.c', + 'openssl/crypto/mdc2/mdc2_one.c', + 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/mem.c', + 'openssl/crypto/mem_clr.c', + 'openssl/crypto/mem_dbg.c', + 'openssl/crypto/mem_sec.c', + 'openssl/crypto/modes/cbc128.c', + 'openssl/crypto/modes/ccm128.c', + 'openssl/crypto/modes/cfb128.c', + 'openssl/crypto/modes/ctr128.c', + 'openssl/crypto/modes/cts128.c', + 'openssl/crypto/modes/gcm128.c', + 'openssl/crypto/modes/ocb128.c', + 'openssl/crypto/modes/ofb128.c', + 'openssl/crypto/modes/wrap128.c', + 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/o_dir.c', + 'openssl/crypto/o_fips.c', + 'openssl/crypto/o_fopen.c', + 'openssl/crypto/o_init.c', + 'openssl/crypto/o_str.c', + 'openssl/crypto/o_time.c', + 'openssl/crypto/objects/o_names.c', + 'openssl/crypto/objects/obj_dat.c', + 'openssl/crypto/objects/obj_err.c', + 'openssl/crypto/objects/obj_lib.c', + 'openssl/crypto/objects/obj_xref.c', + 'openssl/crypto/ocsp/ocsp_asn.c', + 'openssl/crypto/ocsp/ocsp_cl.c', + 'openssl/crypto/ocsp/ocsp_err.c', + 'openssl/crypto/ocsp/ocsp_ext.c', + 'openssl/crypto/ocsp/ocsp_ht.c', + 'openssl/crypto/ocsp/ocsp_lib.c', + 'openssl/crypto/ocsp/ocsp_prn.c', + 'openssl/crypto/ocsp/ocsp_srv.c', + 'openssl/crypto/ocsp/ocsp_vfy.c', + 'openssl/crypto/ocsp/v3_ocsp.c', + 'openssl/crypto/pem/pem_all.c', + 'openssl/crypto/pem/pem_err.c', + 'openssl/crypto/pem/pem_info.c', + 'openssl/crypto/pem/pem_lib.c', + 'openssl/crypto/pem/pem_oth.c', + 'openssl/crypto/pem/pem_pk8.c', + 'openssl/crypto/pem/pem_pkey.c', + 'openssl/crypto/pem/pem_sign.c', + 'openssl/crypto/pem/pem_x509.c', + 'openssl/crypto/pem/pem_xaux.c', + 'openssl/crypto/pem/pvkfmt.c', + 'openssl/crypto/pkcs12/p12_add.c', + 'openssl/crypto/pkcs12/p12_asn.c', + 'openssl/crypto/pkcs12/p12_attr.c', + 'openssl/crypto/pkcs12/p12_crpt.c', + 'openssl/crypto/pkcs12/p12_crt.c', + 'openssl/crypto/pkcs12/p12_decr.c', + 'openssl/crypto/pkcs12/p12_init.c', + 'openssl/crypto/pkcs12/p12_key.c', + 'openssl/crypto/pkcs12/p12_kiss.c', + 'openssl/crypto/pkcs12/p12_mutl.c', + 'openssl/crypto/pkcs12/p12_npas.c', + 'openssl/crypto/pkcs12/p12_p8d.c', + 'openssl/crypto/pkcs12/p12_p8e.c', + 'openssl/crypto/pkcs12/p12_sbag.c', + 'openssl/crypto/pkcs12/p12_utl.c', + 'openssl/crypto/pkcs12/pk12err.c', + 'openssl/crypto/pkcs7/bio_pk7.c', + 'openssl/crypto/pkcs7/pk7_asn1.c', + 'openssl/crypto/pkcs7/pk7_attr.c', + 'openssl/crypto/pkcs7/pk7_doit.c', + 'openssl/crypto/pkcs7/pk7_lib.c', + 'openssl/crypto/pkcs7/pk7_mime.c', + 'openssl/crypto/pkcs7/pk7_smime.c', + 'openssl/crypto/pkcs7/pkcs7err.c', + 'openssl/crypto/poly1305/poly1305.c', + 'openssl/crypto/poly1305/poly1305_ameth.c', + 'openssl/crypto/poly1305/poly1305_pmeth.c', + 'openssl/crypto/rand/drbg_ctr.c', + 'openssl/crypto/rand/drbg_lib.c', + 'openssl/crypto/rand/rand_egd.c', + 'openssl/crypto/rand/rand_err.c', + 'openssl/crypto/rand/rand_lib.c', + 'openssl/crypto/rand/rand_unix.c', + 'openssl/crypto/rand/rand_vms.c', + 'openssl/crypto/rand/rand_win.c', + 'openssl/crypto/rand/randfile.c', + 'openssl/crypto/rc2/rc2_cbc.c', + 'openssl/crypto/rc2/rc2_ecb.c', + 'openssl/crypto/rc2/rc2_skey.c', + 'openssl/crypto/rc2/rc2cfb64.c', + 'openssl/crypto/rc2/rc2ofb64.c', + 'openssl/crypto/rc4/rc4_enc.c', + 'openssl/crypto/rc4/rc4_skey.c', + 'openssl/crypto/ripemd/rmd_dgst.c', + 'openssl/crypto/ripemd/rmd_one.c', + 'openssl/crypto/rsa/rsa_ameth.c', + 'openssl/crypto/rsa/rsa_asn1.c', + 'openssl/crypto/rsa/rsa_chk.c', + 'openssl/crypto/rsa/rsa_crpt.c', + 'openssl/crypto/rsa/rsa_depr.c', + 'openssl/crypto/rsa/rsa_err.c', + 'openssl/crypto/rsa/rsa_gen.c', + 'openssl/crypto/rsa/rsa_lib.c', + 'openssl/crypto/rsa/rsa_meth.c', + 'openssl/crypto/rsa/rsa_mp.c', + 'openssl/crypto/rsa/rsa_none.c', + 'openssl/crypto/rsa/rsa_oaep.c', + 'openssl/crypto/rsa/rsa_ossl.c', + 'openssl/crypto/rsa/rsa_pk1.c', + 'openssl/crypto/rsa/rsa_pmeth.c', + 'openssl/crypto/rsa/rsa_prn.c', + 'openssl/crypto/rsa/rsa_pss.c', + 'openssl/crypto/rsa/rsa_saos.c', + 'openssl/crypto/rsa/rsa_sign.c', + 'openssl/crypto/rsa/rsa_ssl.c', + 'openssl/crypto/rsa/rsa_x931.c', + 'openssl/crypto/rsa/rsa_x931g.c', + 'openssl/crypto/seed/seed.c', + 'openssl/crypto/seed/seed_cbc.c', + 'openssl/crypto/seed/seed_cfb.c', + 'openssl/crypto/seed/seed_ecb.c', + 'openssl/crypto/seed/seed_ofb.c', + 'openssl/crypto/sha/keccak1600.c', + 'openssl/crypto/sha/sha1_one.c', + 'openssl/crypto/sha/sha1dgst.c', + 'openssl/crypto/sha/sha256.c', + 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/siphash/siphash_ameth.c', + 'openssl/crypto/siphash/siphash_pmeth.c', + 'openssl/crypto/sm2/sm2_crypt.c', + 'openssl/crypto/sm2/sm2_err.c', + 'openssl/crypto/sm2/sm2_pmeth.c', + 'openssl/crypto/sm2/sm2_sign.c', + 'openssl/crypto/sm3/m_sm3.c', + 'openssl/crypto/sm3/sm3.c', + 'openssl/crypto/sm4/sm4.c', + 'openssl/crypto/srp/srp_lib.c', + 'openssl/crypto/srp/srp_vfy.c', + 'openssl/crypto/stack/stack.c', + 'openssl/crypto/store/loader_file.c', + 'openssl/crypto/store/store_err.c', + 'openssl/crypto/store/store_init.c', + 'openssl/crypto/store/store_lib.c', + 'openssl/crypto/store/store_register.c', + 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/threads_none.c', + 'openssl/crypto/threads_pthread.c', + 'openssl/crypto/threads_win.c', + 'openssl/crypto/ts/ts_asn1.c', + 'openssl/crypto/ts/ts_conf.c', + 'openssl/crypto/ts/ts_err.c', + 'openssl/crypto/ts/ts_lib.c', + 'openssl/crypto/ts/ts_req_print.c', + 'openssl/crypto/ts/ts_req_utils.c', + 'openssl/crypto/ts/ts_rsp_print.c', + 'openssl/crypto/ts/ts_rsp_sign.c', + 'openssl/crypto/ts/ts_rsp_utils.c', + 'openssl/crypto/ts/ts_rsp_verify.c', + 'openssl/crypto/ts/ts_verify_ctx.c', + 'openssl/crypto/txt_db/txt_db.c', + 'openssl/crypto/ui/ui_err.c', + 'openssl/crypto/ui/ui_lib.c', + 'openssl/crypto/ui/ui_null.c', + 'openssl/crypto/ui/ui_openssl.c', + 'openssl/crypto/ui/ui_util.c', + 'openssl/crypto/uid.c', + 'openssl/crypto/whrlpool/wp_block.c', + 'openssl/crypto/whrlpool/wp_dgst.c', + 'openssl/crypto/x509/by_dir.c', + 'openssl/crypto/x509/by_file.c', + 'openssl/crypto/x509/t_crl.c', + 'openssl/crypto/x509/t_req.c', + 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/x509_att.c', + 'openssl/crypto/x509/x509_cmp.c', + 'openssl/crypto/x509/x509_d2.c', + 'openssl/crypto/x509/x509_def.c', + 'openssl/crypto/x509/x509_err.c', + 'openssl/crypto/x509/x509_ext.c', + 'openssl/crypto/x509/x509_lu.c', + 'openssl/crypto/x509/x509_meth.c', + 'openssl/crypto/x509/x509_obj.c', + 'openssl/crypto/x509/x509_r2x.c', + 'openssl/crypto/x509/x509_req.c', + 'openssl/crypto/x509/x509_set.c', + 'openssl/crypto/x509/x509_trs.c', + 'openssl/crypto/x509/x509_txt.c', + 'openssl/crypto/x509/x509_v3.c', + 'openssl/crypto/x509/x509_vfy.c', + 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509cset.c', + 'openssl/crypto/x509/x509name.c', + 'openssl/crypto/x509/x509rset.c', + 'openssl/crypto/x509/x509spki.c', + 'openssl/crypto/x509/x509type.c', + 'openssl/crypto/x509/x_all.c', + 'openssl/crypto/x509/x_attrib.c', + 'openssl/crypto/x509/x_crl.c', + 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_name.c', + 'openssl/crypto/x509/x_pubkey.c', + 'openssl/crypto/x509/x_req.c', + 'openssl/crypto/x509/x_x509.c', + 'openssl/crypto/x509/x_x509a.c', + 'openssl/crypto/x509v3/pcy_cache.c', + 'openssl/crypto/x509v3/pcy_data.c', + 'openssl/crypto/x509v3/pcy_lib.c', + 'openssl/crypto/x509v3/pcy_map.c', + 'openssl/crypto/x509v3/pcy_node.c', + 'openssl/crypto/x509v3/pcy_tree.c', + 'openssl/crypto/x509v3/v3_addr.c', + 'openssl/crypto/x509v3/v3_admis.c', + 'openssl/crypto/x509v3/v3_akey.c', + 'openssl/crypto/x509v3/v3_akeya.c', + 'openssl/crypto/x509v3/v3_alt.c', + 'openssl/crypto/x509v3/v3_asid.c', + 'openssl/crypto/x509v3/v3_bcons.c', + 'openssl/crypto/x509v3/v3_bitst.c', + 'openssl/crypto/x509v3/v3_conf.c', + 'openssl/crypto/x509v3/v3_cpols.c', + 'openssl/crypto/x509v3/v3_crld.c', + 'openssl/crypto/x509v3/v3_enum.c', + 'openssl/crypto/x509v3/v3_extku.c', + 'openssl/crypto/x509v3/v3_genn.c', + 'openssl/crypto/x509v3/v3_ia5.c', + 'openssl/crypto/x509v3/v3_info.c', + 'openssl/crypto/x509v3/v3_int.c', + 'openssl/crypto/x509v3/v3_lib.c', + 'openssl/crypto/x509v3/v3_ncons.c', + 'openssl/crypto/x509v3/v3_pci.c', + 'openssl/crypto/x509v3/v3_pcia.c', + 'openssl/crypto/x509v3/v3_pcons.c', + 'openssl/crypto/x509v3/v3_pku.c', + 'openssl/crypto/x509v3/v3_pmaps.c', + 'openssl/crypto/x509v3/v3_prn.c', + 'openssl/crypto/x509v3/v3_purp.c', + 'openssl/crypto/x509v3/v3_skey.c', + 'openssl/crypto/x509v3/v3_sxnet.c', + 'openssl/crypto/x509v3/v3_tlsf.c', + 'openssl/crypto/x509v3/v3_utl.c', + 'openssl/crypto/x509v3/v3err.c', + 'openssl/engines/e_capi.c', + 'openssl/engines/e_padlock.c', + ], + 'openssl_sources_VC-WIN64-ARM': [ + ], + 'openssl_defines_VC-WIN64-ARM': [ + 'NDEBUG', + 'OPENSSL_SYS_WIN32', + 'WIN32_LEAN_AND_MEAN', + 'UNICODE', + '_UNICODE', + '_CRT_SECURE_NO_DEPRECATE', + '_WINSOCK_DEPRECATED_NO_WARNINGS', + '_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE', + 'OPENSSL_SYS_WIN_CORE', + 'OPENSSL_PIC', + ], + 'openssl_cflags_VC-WIN64-ARM': [ + '/W3 /wd4090 /nologo /O2', + '/Gs0 /GF /Gy', + '/W3 /wd4090 /nologo /O2', + ], + 'openssl_ex_libs_VC-WIN64-ARM': [ + 'onecore.lib', + ], + }, + 'include_dirs': [ + '.', + './include', + './crypto', + './crypto/include/internal', + ], + 'defines': ['<@(openssl_defines_VC-WIN64-ARM)'], + + 'sources': ['<@(openssl_sources)', '<@(openssl_sources_VC-WIN64-ARM)'], +} From 038b7783a70551c00f82a14a836add83532ada6c Mon Sep 17 00:00:00 2001 From: ZYSzys Date: Wed, 27 Mar 2019 11:21:49 +0800 Subject: [PATCH 126/133] querystring: simplify stringify method PR-URL: https://github.com/nodejs/node/pull/26591 Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- benchmark/querystring/querystring-stringify.js | 9 +++++++-- lib/querystring.js | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/benchmark/querystring/querystring-stringify.js b/benchmark/querystring/querystring-stringify.js index 9f025c922ad4e8..6c5da0f464034f 100644 --- a/benchmark/querystring/querystring-stringify.js +++ b/benchmark/querystring/querystring-stringify.js @@ -3,8 +3,8 @@ const common = require('../common.js'); const querystring = require('querystring'); const bench = common.createBenchmark(main, { - type: ['noencode', 'encodemany', 'encodelast'], - n: [1e7], + type: ['noencode', 'encodemany', 'encodelast', 'array'], + n: [1e6], }); function main({ type, n }) { @@ -23,6 +23,11 @@ function main({ type, n }) { foo: 'bar', baz: 'quux', xyzzy: 'thu\u00AC' + }, + array: { + foo: [], + baz: ['bar'], + xyzzy: ['bar', 'quux', 'thud'] } }; const input = inputs[type]; diff --git a/lib/querystring.js b/lib/querystring.js index 240e2e70d6a3f8..8d97e288c12271 100644 --- a/lib/querystring.js +++ b/lib/querystring.js @@ -176,19 +176,19 @@ function stringify(obj, sep, eq, options) { if (Array.isArray(v)) { var vlen = v.length; + if (vlen === 0) continue; var vlast = vlen - 1; for (var j = 0; j < vlen; ++j) { fields += ks + encode(stringifyPrimitive(v[j])); if (j < vlast) fields += sep; } - if (vlen && i < flast) - fields += sep; } else { fields += ks + encode(stringifyPrimitive(v)); - if (i < flast) - fields += sep; } + + if (i < flast) + fields += sep; } return fields; } From 70d9f32011c55fc4e16448d71f7dfc3d471128dc Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 21 Mar 2019 02:01:19 +0100 Subject: [PATCH 127/133] src: prevent crash in TTYWrap::Initialize When console.log is called for the first time it initializes TTYWrap object. However, if there is not enough space on the V8 stack, creating function template fails and triggers empty maybe local exception. PR-URL: https://github.com/nodejs/node/pull/26832 Reviewed-By: Ruben Bridgewater Reviewed-By: Joyee Cheung Reviewed-By: Anna Henningsen Reviewed-By: Ben Noordhuis Signed-off-by: Beth Griggs --- src/tty_wrap.cc | 11 ++++++----- test/parallel/test-ttywrap-stack.js | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 test/parallel/test-ttywrap-stack.js diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc index 405b70343f761e..33dd4dbdacf6a3 100644 --- a/src/tty_wrap.cc +++ b/src/tty_wrap.cc @@ -32,6 +32,7 @@ namespace node { using v8::Array; using v8::Context; +using v8::Function; using v8::FunctionCallbackInfo; using v8::FunctionTemplate; using v8::Integer; @@ -40,7 +41,6 @@ using v8::Object; using v8::String; using v8::Value; - void TTYWrap::Initialize(Local target, Local unused, Local context, @@ -61,10 +61,11 @@ void TTYWrap::Initialize(Local target, env->SetMethodNoSideEffect(target, "isTTY", IsTTY); env->SetMethodNoSideEffect(target, "guessHandleType", GuessHandleType); - target->Set(env->context(), - ttyString, - t->GetFunction(env->context()).ToLocalChecked()).FromJust(); - env->set_tty_constructor_template(t); + Local func; + if (t->GetFunction(env->context()).ToLocal(&func) && + target->Set(env->context(), ttyString, func).IsJust()) { + env->set_tty_constructor_template(t); + } } diff --git a/test/parallel/test-ttywrap-stack.js b/test/parallel/test-ttywrap-stack.js new file mode 100644 index 00000000000000..b2ad69b1b2ecdc --- /dev/null +++ b/test/parallel/test-ttywrap-stack.js @@ -0,0 +1,20 @@ +'use strict'; +const common = require('../common'); + +// This test ensures that console.log +// will not crash the process if there +// is not enough space on the V8 stack + +const done = common.mustCall(() => {}); + +async function test() { + await test(); +} + +(async () => { + try { + await test(); + } catch (err) { + console.log(err); + } +})().then(done, done); From 066cd6090f89d258b515b6ee5abea9d4cae6e9fb Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 1 Apr 2019 17:00:11 +0200 Subject: [PATCH 128/133] crypto: fix crash of encrypted private key export without cipher PR-URL: https://github.com/nodejs/node/pull/27041 Reviewed-By: Ben Noordhuis Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- lib/internal/crypto/keys.js | 18 +++++++++++------- test/parallel/test-crypto-key-objects.js | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js index 1eb4a6f7be7006..93d350e4e74320 100644 --- a/lib/internal/crypto/keys.js +++ b/lib/internal/crypto/keys.js @@ -186,14 +186,18 @@ function parseKeyEncoding(enc, keyType, isPublic, objName) { if (isPublic !== true) { ({ cipher, passphrase } = enc); - if (!isInput && cipher != null) { - if (typeof cipher !== 'string') + if (!isInput) { + if (cipher != null) { + if (typeof cipher !== 'string') + throw new ERR_INVALID_OPT_VALUE(option('cipher', objName), cipher); + if (format === kKeyFormatDER && + (type === kKeyEncodingPKCS1 || + type === kKeyEncodingSEC1)) { + throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS( + encodingNames[type], 'does not support encryption'); + } + } else if (passphrase !== undefined) { throw new ERR_INVALID_OPT_VALUE(option('cipher', objName), cipher); - if (format === kKeyFormatDER && - (type === kKeyEncodingPKCS1 || - type === kKeyEncodingSEC1)) { - throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS( - encodingNames[type], 'does not support encryption'); } } diff --git a/test/parallel/test-crypto-key-objects.js b/test/parallel/test-crypto-key-objects.js index a7d7f32cb39f65..f02a4a7e518d84 100644 --- a/test/parallel/test-crypto-key-objects.js +++ b/test/parallel/test-crypto-key-objects.js @@ -167,3 +167,17 @@ const privatePem = fixtures.readSync('test_rsa_privkey.pem', 'ascii'); createPrivateKey({ key: '' }); }, /null/); } + +{ + // Exporting an encrypted private key requires a cipher + const privateKey = createPrivateKey(privatePem); + common.expectsError(() => { + privateKey.export({ + format: 'pem', type: 'pkcs8', passphrase: 'super-secret' + }); + }, { + type: TypeError, + code: 'ERR_INVALID_OPT_VALUE', + message: 'The value "undefined" is invalid for option "cipher"' + }); +} From d688a936862c55b5386c6b360062928c47dc0a84 Mon Sep 17 00:00:00 2001 From: Anatoli Papirovski Date: Sun, 31 Mar 2019 13:40:14 -0700 Subject: [PATCH 129/133] async_hooks: minor cleanup and improvements Cleanup some code and make the emit hooks very slightly faster. PR-URL: https://github.com/nodejs/node/pull/27034 Reviewed-By: Yongsheng Zhang Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Signed-off-by: Beth Griggs --- lib/internal/async_hooks.js | 63 +++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 53c8d08a7d9af9..fac34c06696237 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -75,6 +75,8 @@ const { kInit, kBefore, kAfter, kDestroy, kTotals, kPromiseResolve, kCheck, kExecutionAsyncId, kAsyncIdCounter, kTriggerAsyncId, kDefaultTriggerAsyncId, kStackLength } = async_wrap.constants; +const FunctionBind = Function.call.bind(Function.prototype.bind); + // Used in AsyncHook and AsyncResource. const async_id_symbol = Symbol('asyncId'); const trigger_async_id_symbol = Symbol('triggerAsyncId'); @@ -148,38 +150,37 @@ function emitInitNative(asyncId, type, triggerAsyncId, resource) { } } - -function emitHookFactory(symbol, name) { - // Called from native. The asyncId stack handling is taken care of there - // before this is called. - // eslint-disable-next-line func-style - const fn = function(asyncId) { - active_hooks.call_depth += 1; - // Use a single try/catch for all hook to avoid setting up one per - // iteration. - try { - for (var i = 0; i < active_hooks.array.length; i++) { - if (typeof active_hooks.array[i][symbol] === 'function') { - active_hooks.array[i][symbol](asyncId); - } +// Called from native. The asyncId stack handling is taken care of there +// before this is called. +function emitHook(symbol, asyncId) { + active_hooks.call_depth += 1; + // Use a single try/catch for all hook to avoid setting up one per + // iteration. + try { + for (var i = 0; i < active_hooks.array.length; i++) { + if (typeof active_hooks.array[i][symbol] === 'function') { + active_hooks.array[i][symbol](asyncId); } - } catch (e) { - fatalError(e); - } finally { - active_hooks.call_depth -= 1; } + } catch (e) { + fatalError(e); + } finally { + active_hooks.call_depth -= 1; + } - // Hooks can only be restored if there have been no recursive hook calls. - // Also the active hooks do not need to be restored if enable()/disable() - // weren't called during hook execution, in which case - // active_hooks.tmp_array will be null. - if (active_hooks.call_depth === 0 && active_hooks.tmp_array !== null) { - restoreActiveHooks(); - } - }; + // Hooks can only be restored if there have been no recursive hook calls. + // Also the active hooks do not need to be restored if enable()/disable() + // weren't called during hook execution, in which case + // active_hooks.tmp_array will be null. + if (active_hooks.call_depth === 0 && active_hooks.tmp_array !== null) { + restoreActiveHooks(); + } +} + +function emitHookFactory(symbol, name) { + const fn = FunctionBind(emitHook, undefined, symbol); - // Set the name property of the anonymous function as it looks good in the - // stack trace. + // Set the name property of the function as it looks good in the stack trace. Object.defineProperty(fn, 'name', { value: name }); @@ -261,10 +262,10 @@ function getOrSetAsyncId(object) { // the user to safeguard this call and make sure it's zero'd out when the // constructor is complete. function getDefaultTriggerAsyncId() { - let defaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId]; + const defaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId]; // If defaultTriggerAsyncId isn't set, use the executionAsyncId if (defaultTriggerAsyncId < 0) - defaultTriggerAsyncId = async_id_fields[kExecutionAsyncId]; + return async_id_fields[kExecutionAsyncId]; return defaultTriggerAsyncId; } @@ -393,8 +394,8 @@ function pushAsyncIds(asyncId, 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 (stackLength === 0) return false; if (async_hook_fields[kCheck] > 0 && async_id_fields[kExecutionAsyncId] !== asyncId) { From b5028732a71648d2ad2e49cb8b2be5251f6921ea Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sun, 31 Mar 2019 10:50:44 +0200 Subject: [PATCH 130/133] build: fix inspector dependency resolution It was reported that parallel builds on Windows sometimes error because of missing intermediate files. On closer inspection I noticed that some files are copied from src/ to the intermediate build directory in a way where they don't participate in dependency resolution. Put another way, the build system doesn't know to wait for the copy to complete because we don't tell it to. Fix that by not copying around files but instead making the script that processes them a little smarter about where to find them and where to store the results. PR-URL: https://github.com/nodejs/node/pull/27026 Fixes: https://github.com/nodejs/node/issues/27025 Reviewed-By: Eugene Ostroukhov Reviewed-By: Richard Lau Signed-off-by: Beth Griggs --- src/inspector/node_inspector.gypi | 22 ++++++---------------- tools/inspector_protocol/code_generator.py | 7 +++---- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/inspector/node_inspector.gypi b/src/inspector/node_inspector.gypi index 5191543ab73450..82007292230267 100644 --- a/src/inspector/node_inspector.gypi +++ b/src/inspector/node_inspector.gypi @@ -1,7 +1,6 @@ { 'variables': { 'protocol_tool_path': '../../tools/inspector_protocol', - 'node_inspector_path': '../../src/inspector', 'node_inspector_generated_sources': [ '<(SHARED_INTERMEDIATE_DIR)/src/node/inspector/protocol/Forward.h', '<(SHARED_INTERMEDIATE_DIR)/src/node/inspector/protocol/Protocol.cpp', @@ -67,23 +66,14 @@ '<(SHARED_INTERMEDIATE_DIR)', '<(SHARED_INTERMEDIATE_DIR)/src', # for inspector ], - 'copies': [ - { - 'files': [ - '<(node_inspector_path)/node_protocol_config.json', - '<(node_inspector_path)/node_protocol.pdl' - ], - 'destination': '<(SHARED_INTERMEDIATE_DIR)', - } - ], 'actions': [ { 'action_name': 'convert_node_protocol_to_json', 'inputs': [ - '<(SHARED_INTERMEDIATE_DIR)/node_protocol.pdl', + 'node_protocol.pdl', ], 'outputs': [ - '<(SHARED_INTERMEDIATE_DIR)/node_protocol.json', + '<(SHARED_INTERMEDIATE_DIR)/src/node_protocol.json', ], 'action': [ 'python', @@ -95,8 +85,8 @@ { 'action_name': 'node_protocol_generated_sources', 'inputs': [ - '<(SHARED_INTERMEDIATE_DIR)/node_protocol_config.json', - '<(SHARED_INTERMEDIATE_DIR)/node_protocol.json', + 'node_protocol_config.json', + '<(SHARED_INTERMEDIATE_DIR)/src/node_protocol.json', '<@(node_protocol_files)', ], 'outputs': [ @@ -108,7 +98,7 @@ 'tools/inspector_protocol/code_generator.py', '--jinja_dir', '<@(protocol_tool_path)/..', '--output_base', '<(SHARED_INTERMEDIATE_DIR)/src/', - '--config', '<(SHARED_INTERMEDIATE_DIR)/node_protocol_config.json', + '--config', 'src/inspector/node_protocol_config.json', ], 'message': 'Generating node protocol sources from protocol json', }, @@ -116,7 +106,7 @@ 'action_name': 'concatenate_protocols', 'inputs': [ '../../deps/v8/src/inspector/js_protocol.json', - '<(SHARED_INTERMEDIATE_DIR)/node_protocol.json', + '<(SHARED_INTERMEDIATE_DIR)/src/node_protocol.json', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/concatenated_protocol.json', diff --git a/tools/inspector_protocol/code_generator.py b/tools/inspector_protocol/code_generator.py index fb9959d6082a7b..9200022413303a 100755 --- a/tools/inspector_protocol/code_generator.py +++ b/tools/inspector_protocol/code_generator.py @@ -29,9 +29,9 @@ def read_config(): # pylint: disable=W0703 - def json_to_object(data, output_base, config_base): + def json_to_object(data, output_base): def json_object_hook(object_dict): - items = [(k, os.path.join(config_base, v) if k == "path" else v) for (k, v) in object_dict.items()] + items = [(k, os.path.join(output_base, v) if k == "path" else v) for (k, v) in object_dict.items()] items = [(k, os.path.join(output_base, v) if k == "output" else v) for (k, v) in items] keys, values = list(zip(*items)) return collections.namedtuple('X', keys)(*values) @@ -71,7 +71,6 @@ def init_defaults(config_tuple, path, defaults): if not config_file: raise Exception("Config file name must be specified") config_file = config_file.decode('utf8') - config_base = os.path.dirname(config_file) config_values = arg_options.config_value if not config_values: config_values = [] @@ -84,7 +83,7 @@ def init_defaults(config_tuple, path, defaults): try: config_json_file = open(config_file, "r") config_json_string = config_json_file.read() - config_partial = json_to_object(config_json_string, output_base, config_base) + config_partial = json_to_object(config_json_string, output_base) config_json_file.close() defaults = { ".use_snake_file_names": False, From a00d840600800da689101d4283af8cb58015d4ed Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 1 Apr 2019 17:00:11 +0200 Subject: [PATCH 131/133] crypto: fix crash of encrypted private key export without cipher PR-URL: https://github.com/nodejs/node/pull/27041 Reviewed-By: Ben Noordhuis Reviewed-By: Ruben Bridgewater Signed-off-by: Beth Griggs --- test/parallel/test-crypto-key-objects.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/parallel/test-crypto-key-objects.js b/test/parallel/test-crypto-key-objects.js index f02a4a7e518d84..9c1ad7021b95c9 100644 --- a/test/parallel/test-crypto-key-objects.js +++ b/test/parallel/test-crypto-key-objects.js @@ -181,3 +181,17 @@ const privatePem = fixtures.readSync('test_rsa_privkey.pem', 'ascii'); message: 'The value "undefined" is invalid for option "cipher"' }); } + +{ + // Exporting an encrypted private key requires a cipher + const privateKey = createPrivateKey(privatePem); + common.expectsError(() => { + privateKey.export({ + format: 'pem', type: 'pkcs8', passphrase: 'super-secret' + }); + }, { + type: TypeError, + code: 'ERR_INVALID_OPT_VALUE', + message: 'The value "undefined" is invalid for option "cipher"' + }); +} From 75e8377df68846aecdc6876dc31bac2c866ea300 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Tue, 9 Apr 2019 19:42:13 -0400 Subject: [PATCH 132/133] doc: assign missed deprecation code Refs: https://github.com/nodejs/node/pull/26982 PR-URL: https://github.com/nodejs/node/pull/27164 Reviewed-By: Vse Mozhet Byt Reviewed-By: Yongsheng Zhang --- doc/api/deprecations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index d15d8065e7bff2..049a30a4e96f7f 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -2299,8 +2299,8 @@ Please use the publicly documented [`timeout.refresh()`][] instead. If unreferencing the timeout is necessary, [`timeout.unref()`][] can be used with no performance impact since Node.js 10. - -### DEP0XXX: ChildProcess._channel + +### DEP0129: ChildProcess._channel @@ -2287,7 +2287,7 @@ with no performance impact since Node.js 10. ### DEP0127: timers._unrefActive() @@ -2303,7 +2303,7 @@ with no performance impact since Node.js 10. ### DEP0129: ChildProcess._channel diff --git a/doc/api/process.md b/doc/api/process.md index 7b1660f310d0c2..cd194c9d072688 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -954,7 +954,7 @@ emitMyWarning(); diff --git a/doc/api/stream.md b/doc/api/stream.md index 6ac3c18dff4df6..30840f6b4cc9db 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -1287,7 +1287,7 @@ myReader.on('readable', () => { diff --git a/doc/api/worker_threads.md b/doc/api/worker_threads.md index 5d81f3f7f5ecd3..77afaaec9c5cc3 100644 --- a/doc/api/worker_threads.md +++ b/doc/api/worker_threads.md @@ -127,7 +127,7 @@ if (isMainThread) { ## worker.SHARE_ENV * {symbol} diff --git a/doc/changelogs/CHANGELOG_V11.md b/doc/changelogs/CHANGELOG_V11.md index 93915b4a5c3c27..fffa3d9b1ba425 100644 --- a/doc/changelogs/CHANGELOG_V11.md +++ b/doc/changelogs/CHANGELOG_V11.md @@ -9,6 +9,7 @@ +11.14.0
11.13.0
11.12.0
11.11.0
@@ -41,6 +42,156 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + +## 2019-04-11, Version 11.14.0 (Current), @BethGriggs + +### Notable changes + +* **child_process**: doc deprecate ChildProcess.\_channel (cjihrig) [#26982](https://github.com/nodejs/node/pull/26982) +* **deps**: update nghttp2 to 1.37.0 (gengjiawen) [#26990](https://github.com/nodejs/node/pull/26990) +* **dns**: + * make dns.promises enumerable (cjihrig) [#26592](https://github.com/nodejs/node/pull/26592) + * remove dns.promises experimental warning (cjihrig) [#26592](https://github.com/nodejs/node/pull/26592) +* **fs**: remove experimental warning for fs.promises (Anna Henningsen) [#26581](https://github.com/nodejs/node/pull/26581) +* **stream**: make Symbol.asyncIterator support stable (Matteo Collina) [#26989](https://github.com/nodejs/node/pull/26989) +* **worker**: use copy of process.env (Anna Henningsen) [#26544](https://github.com/nodejs/node/pull/26544) + +### Commits + +* [[`ca7c4f485b`](https://github.com/nodejs/node/commit/ca7c4f485b)] - **async_hooks**: minor cleanup and improvements (Anatoli Papirovski) [#27034](https://github.com/nodejs/node/pull/27034) +* [[`e9bffa8166`](https://github.com/nodejs/node/commit/e9bffa8166)] - **benchmark**: improve module-loader benchmark (Ruben Bridgewater) [#26970](https://github.com/nodejs/node/pull/26970) +* [[`09d6dfb21d`](https://github.com/nodejs/node/commit/09d6dfb21d)] - **benchmark**: add new module loading benchmarks (Ruben Bridgewater) [#26970](https://github.com/nodejs/node/pull/26970) +* [[`5512ecb5b0`](https://github.com/nodejs/node/commit/5512ecb5b0)] - **benchmark**: tidy up eslint ignore in foreach-bench.js (gengjiawen) [#26925](https://github.com/nodejs/node/pull/26925) +* [[`de937375e4`](https://github.com/nodejs/node/commit/de937375e4)] - **benchmark**: remove unused field in class BenchmarkProgress (gengjiawen) [#26925](https://github.com/nodejs/node/pull/26925) +* [[`0aea4d1c77`](https://github.com/nodejs/node/commit/0aea4d1c77)] - **benchmark,lib**: change var to const (Ruben Bridgewater) [#26915](https://github.com/nodejs/node/pull/26915) +* [[`2ba58a6d54`](https://github.com/nodejs/node/commit/2ba58a6d54)] - **buffer**: fix concat error message (Ruben Bridgewater) [#27050](https://github.com/nodejs/node/pull/27050) +* [[`a64786f47f`](https://github.com/nodejs/node/commit/a64786f47f)] - **build**: fix inspector dependency resolution (Ben Noordhuis) [#27026](https://github.com/nodejs/node/pull/27026) +* [[`19a30f3b7e`](https://github.com/nodejs/node/commit/19a30f3b7e)] - **build**: fix inspector dependency resolution (Ben Noordhuis) [#27026](https://github.com/nodejs/node/pull/27026) +* [[`ab5dbf9eb0`](https://github.com/nodejs/node/commit/ab5dbf9eb0)] - **build**: only emit download ICU warnings once (Richard Lau) [#27031](https://github.com/nodejs/node/pull/27031) +* [[`7fe43bd81a`](https://github.com/nodejs/node/commit/7fe43bd81a)] - **build**: remove unused label from vcbuild.bat (Ben Noordhuis) [#26901](https://github.com/nodejs/node/pull/26901) +* [[`6cbd6b5d57`](https://github.com/nodejs/node/commit/6cbd6b5d57)] - **build**: fix skipping of flaky tests on Travis (Richard Lau) [#27002](https://github.com/nodejs/node/pull/27002) +* [[`769d12ca9f`](https://github.com/nodejs/node/commit/769d12ca9f)] - **build**: add a `Prepare ccache` job in Travis (Richard Lau) [#27002](https://github.com/nodejs/node/pull/27002) +* [[`d8aaf2e0db`](https://github.com/nodejs/node/commit/d8aaf2e0db)] - **build,meta**: tweak Travis config (Refael Ackermann) [#26969](https://github.com/nodejs/node/pull/26969) +* [[`b64b22377c`](https://github.com/nodejs/node/commit/b64b22377c)] - **build,win**: silence MSVC warning C4129 for V8 (Refael Ackermann) [#27017](https://github.com/nodejs/node/pull/27017) +* [[`23967431f5`](https://github.com/nodejs/node/commit/23967431f5)] - **child_process**: doc deprecate ChildProcess.\_channel (cjihrig) [#26982](https://github.com/nodejs/node/pull/26982) +* [[`4defe47228`](https://github.com/nodejs/node/commit/4defe47228)] - **child_process**: reduce internal usage of public require of util (toshi1127) [#26769](https://github.com/nodejs/node/pull/26769) +* [[`e43dbaaba4`](https://github.com/nodejs/node/commit/e43dbaaba4)] - **console**: remove unreachable code (Rich Trott) [#26906](https://github.com/nodejs/node/pull/26906) +* [[`2b791d8697`](https://github.com/nodejs/node/commit/2b791d8697)] - **crypto**: fix crash of encrypted private key export without cipher (Filip Skokan) [#27041](https://github.com/nodejs/node/pull/27041) +* [[`1d2f4c4c6f`](https://github.com/nodejs/node/commit/1d2f4c4c6f)] - **crypto**: fix crash of encrypted private key export without cipher (Filip Skokan) [#27041](https://github.com/nodejs/node/pull/27041) +* [[`98552f3630`](https://github.com/nodejs/node/commit/98552f3630)] - **crypto**: allow undefined for saltLength and padding (Tobias Nießen) [#26921](https://github.com/nodejs/node/pull/26921) +* [[`db7df0fb12`](https://github.com/nodejs/node/commit/db7df0fb12)] - **deps**: add ARM64 Windows configurations in openssl (Jon Kunkee) [#26001](https://github.com/nodejs/node/pull/26001) +* [[`341eacc949`](https://github.com/nodejs/node/commit/341eacc949)] - **deps**: add ARM64 Windows support in openssl (Shigeki Ohtsu) [#26001](https://github.com/nodejs/node/pull/26001) +* [[`247700f293`](https://github.com/nodejs/node/commit/247700f293)] - **(SEMVER-MINOR)** **deps**: update nghttp2 to 1.37.0 (gengjiawen) [#26990](https://github.com/nodejs/node/pull/26990) +* [[`af3ce38902`](https://github.com/nodejs/node/commit/af3ce38902)] - **dns**: refactor lib/internal/dns/utils.js (Rich Trott) [#27006](https://github.com/nodejs/node/pull/27006) +* [[`ac12109d14`](https://github.com/nodejs/node/commit/ac12109d14)] - **(SEMVER-MINOR)** **dns**: make dns.promises enumerable (cjihrig) [#26592](https://github.com/nodejs/node/pull/26592) +* [[`d3c1de313e`](https://github.com/nodejs/node/commit/d3c1de313e)] - **(SEMVER-MINOR)** **dns**: remove dns.promises experimental warning (cjihrig) [#26592](https://github.com/nodejs/node/pull/26592) +* [[`ff126ea13c`](https://github.com/nodejs/node/commit/ff126ea13c)] - **doc**: assign missed deprecation code (Richard Lau) [#27164](https://github.com/nodejs/node/pull/27164) +* [[`51dad0aaca`](https://github.com/nodejs/node/commit/51dad0aaca)] - **doc**: fix default maxBuffer size (kohta ito) [#22894](https://github.com/nodejs/node/pull/22894) +* [[`7eb73d301d`](https://github.com/nodejs/node/commit/7eb73d301d)] - **doc**: document the 'pause' and 'resume' events (Luigi Pinca) [#26999](https://github.com/nodejs/node/pull/26999) +* [[`57ced2db8c`](https://github.com/nodejs/node/commit/57ced2db8c)] - **doc**: remove unnecessary intro in governance doc (Rich Trott) [#27036](https://github.com/nodejs/node/pull/27036) +* [[`a5314a1af1`](https://github.com/nodejs/node/commit/a5314a1af1)] - **doc**: remove old system\_errors (Minwoo Jung) [#27037](https://github.com/nodejs/node/pull/27037) +* [[`2d780f864b`](https://github.com/nodejs/node/commit/2d780f864b)] - **doc**: unify link formatting in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`6e3b6c5e2c`](https://github.com/nodejs/node/commit/6e3b6c5e2c)] - **doc**: unify periods in comments in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`5983cefbf9`](https://github.com/nodejs/node/commit/5983cefbf9)] - **doc**: add notes about negative offsets in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`3567ff1378`](https://github.com/nodejs/node/commit/3567ff1378)] - **doc**: mark optional parameters in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`eeee6360b9`](https://github.com/nodejs/node/commit/eeee6360b9)] - **doc**: add note about Buffer octets integer coercion (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`c3d573d743`](https://github.com/nodejs/node/commit/c3d573d743)] - **doc**: fix error notes in `Buffer.from()` variants (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`e18a0e8087`](https://github.com/nodejs/node/commit/e18a0e8087)] - **doc**: unify number/integer types in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`0d75adcd71`](https://github.com/nodejs/node/commit/0d75adcd71)] - **doc**: add missing types in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`231eff92ca`](https://github.com/nodejs/node/commit/231eff92ca)] - **doc**: fix possible typo in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`f475e79db3`](https://github.com/nodejs/node/commit/f475e79db3)] - **doc**: remove description duplication in buffer.md (Vse Mozhet Byt) [#27030](https://github.com/nodejs/node/pull/27030) +* [[`7b37c65914`](https://github.com/nodejs/node/commit/7b37c65914)] - **doc**: improve the doc of the 'information' event (Luigi Pinca) [#27009](https://github.com/nodejs/node/pull/27009) +* [[`c4b790b62b`](https://github.com/nodejs/node/commit/c4b790b62b)] - **doc**: move "Prints: ..." under the code (simon3000) [#27035](https://github.com/nodejs/node/pull/27035) +* [[`0f08a8e081`](https://github.com/nodejs/node/commit/0f08a8e081)] - **doc**: add information about modules cache behavior (Ruben Bridgewater) [#26971](https://github.com/nodejs/node/pull/26971) +* [[`b88871e80b`](https://github.com/nodejs/node/commit/b88871e80b)] - **doc**: list when promiseResolve hook was added to async\_hooks (Thomas Watson) [#26978](https://github.com/nodejs/node/pull/26978) +* [[`7a391961ea`](https://github.com/nodejs/node/commit/7a391961ea)] - **doc**: change code lang and update it with latest Node.js (gengjiawen) [#26987](https://github.com/nodejs/node/pull/26987) +* [[`17cc117f4a`](https://github.com/nodejs/node/commit/17cc117f4a)] - **doc**: update changelog for v10.x LTS (Beth Griggs) [#26931](https://github.com/nodejs/node/pull/26931) +* [[`28efecccd5`](https://github.com/nodejs/node/commit/28efecccd5)] - **doc**: remove "How is an LTS release cut?" section (Rich Trott) [#26955](https://github.com/nodejs/node/pull/26955) +* [[`d76c30c082`](https://github.com/nodejs/node/commit/d76c30c082)] - **doc**: add note about mkdtemp() platform differences (cjihrig) [#26944](https://github.com/nodejs/node/pull/26944) +* [[`4a7a84a6be`](https://github.com/nodejs/node/commit/4a7a84a6be)] - **(SEMVER-MINOR)** **doc**: move dns.promises to stable status (cjihrig) [#26592](https://github.com/nodejs/node/pull/26592) +* [[`25d5198001`](https://github.com/nodejs/node/commit/25d5198001)] - **doc**: change links to https in benchmark guide (gengjiawen) [#26925](https://github.com/nodejs/node/pull/26925) +* [[`a821a96b50`](https://github.com/nodejs/node/commit/a821a96b50)] - **doc**: correct typo: cert.issuerCertificate (Steven R. Loomis) +* [[`17bff5ca0d`](https://github.com/nodejs/node/commit/17bff5ca0d)] - **doc**: remove reference to "credentials object" (Sam Roberts) [#26908](https://github.com/nodejs/node/pull/26908) +* [[`5e64acd66b`](https://github.com/nodejs/node/commit/5e64acd66b)] - **(SEMVER-MINOR)** **embedding**: make `NewIsolate()` API more flexible (Anna Henningsen) [#26525](https://github.com/nodejs/node/pull/26525) +* [[`7671a65dbb`](https://github.com/nodejs/node/commit/7671a65dbb)] - **(SEMVER-MINOR)** **embedding**: refactor public `ArrayBufferAllocator` API (Anna Henningsen) [#26525](https://github.com/nodejs/node/pull/26525) +* [[`c756b84447`](https://github.com/nodejs/node/commit/c756b84447)] - **errors**: make range mandatory in ERR\_OUT\_OF\_RANGE (Ruben Bridgewater) [#26924](https://github.com/nodejs/node/pull/26924) +* [[`3e386a77d5`](https://github.com/nodejs/node/commit/3e386a77d5)] - **(SEMVER-MINOR)** **fs**: remove experimental warning for fs.promises (Anna Henningsen) [#26581](https://github.com/nodejs/node/pull/26581) +* [[`bb9f1cce42`](https://github.com/nodejs/node/commit/bb9f1cce42)] - **fs**: reduce usage of require('util') (toshi1127) [#26783](https://github.com/nodejs/node/pull/26783) +* [[`5a29a94f0e`](https://github.com/nodejs/node/commit/5a29a94f0e)] - **http**: reduce usage of public util (ZYSzys) [#26548](https://github.com/nodejs/node/pull/26548) +* [[`760d089e92`](https://github.com/nodejs/node/commit/760d089e92)] - **inspector**: display error when ToggleAsyncHook fails (Joyee Cheung) [#26859](https://github.com/nodejs/node/pull/26859) +* [[`1b45704c19`](https://github.com/nodejs/node/commit/1b45704c19)] - **inspector**: patch C++ debug options instead of process.\_breakFirstLine (Joyee Cheung) [#26602](https://github.com/nodejs/node/pull/26602) +* [[`100bfc5131`](https://github.com/nodejs/node/commit/100bfc5131)] - **meta**: move ofrobots to TSC emeritus (Ali Ijaz Sheikh) [#27076](https://github.com/nodejs/node/pull/27076) +* [[`5c39687d01`](https://github.com/nodejs/node/commit/5c39687d01)] - **module**: add extra caching layer (Ruben Bridgewater) [#26970](https://github.com/nodejs/node/pull/26970) +* [[`9b27d5eebb`](https://github.com/nodejs/node/commit/9b27d5eebb)] - **module**: add path to the module object (Ruben Bridgewater) [#26970](https://github.com/nodejs/node/pull/26970) +* [[`3263264f43`](https://github.com/nodejs/node/commit/3263264f43)] - **module**: inline try catch (Ruben Bridgewater) [#26970](https://github.com/nodejs/node/pull/26970) +* [[`079368a6ab`](https://github.com/nodejs/node/commit/079368a6ab)] - **module**: fix repl require calling the same file again (Ruben Bridgewater) [#26928](https://github.com/nodejs/node/pull/26928) +* [[`3c9292642d`](https://github.com/nodejs/node/commit/3c9292642d)] - **module**: simpler esm loading (Ruben Bridgewater) [#26974](https://github.com/nodejs/node/pull/26974) +* [[`fd8de13bbe`](https://github.com/nodejs/node/commit/fd8de13bbe)] - **path**: refactor for less indentation (Ruben Bridgewater) [#26917](https://github.com/nodejs/node/pull/26917) +* [[`b62739c85c`](https://github.com/nodejs/node/commit/b62739c85c)] - **path**: remove dead code (Ruben Bridgewater) [#26916](https://github.com/nodejs/node/pull/26916) +* [[`bd006e1002`](https://github.com/nodejs/node/commit/bd006e1002)] - **path**: fix win32 parse regression (Ruben Bridgewater) [#26912](https://github.com/nodejs/node/pull/26912) +* [[`a232cd60dd`](https://github.com/nodejs/node/commit/a232cd60dd)] - **process**: store argv in Environment (Joyee Cheung) [#26945](https://github.com/nodejs/node/pull/26945) +* [[`4d06ef468e`](https://github.com/nodejs/node/commit/4d06ef468e)] - **process**: run RunBootstrapping in CreateEnvironment (Joyee Cheung) [#26788](https://github.com/nodejs/node/pull/26788) +* [[`a03552d246`](https://github.com/nodejs/node/commit/a03552d246)] - **process**: handle --expose-internals during pre-execution (Joyee Cheung) [#26759](https://github.com/nodejs/node/pull/26759) +* [[`75c5d9c5b7`](https://github.com/nodejs/node/commit/75c5d9c5b7)] - **process**: create legacy process properties during pre-execution (Joyee Cheung) [#26517](https://github.com/nodejs/node/pull/26517) +* [[`d4f95091d0`](https://github.com/nodejs/node/commit/d4f95091d0)] - **process**: delay process.argv\[0\] and process.argv0 handling (Joyee Cheung) [#26517](https://github.com/nodejs/node/pull/26517) +* [[`6c40f7f940`](https://github.com/nodejs/node/commit/6c40f7f940)] - **querystring**: simplify stringify method (ZYSzys) [#26591](https://github.com/nodejs/node/pull/26591) +* [[`dbd06088cf`](https://github.com/nodejs/node/commit/dbd06088cf)] - **(SEMVER-MINOR)** **readline**: make Symbol.asyncIterator support stable (Matteo Collina) [#26989](https://github.com/nodejs/node/pull/26989) +* [[`78fad3210c`](https://github.com/nodejs/node/commit/78fad3210c)] - **readline**: replace quadratic regex with linear one (Thomas) [#26778](https://github.com/nodejs/node/pull/26778) +* [[`003e085ab5`](https://github.com/nodejs/node/commit/003e085ab5)] - **report**: add cwd to report (cjihrig) [#27022](https://github.com/nodejs/node/pull/27022) +* [[`755609c682`](https://github.com/nodejs/node/commit/755609c682)] - **src**: prevent crash in TTYWrap::Initialize (Thomas) [#26832](https://github.com/nodejs/node/pull/26832) +* [[`32ec034bdc`](https://github.com/nodejs/node/commit/32ec034bdc)] - **src**: use sizeof(var) instead of sizeof(type) (Ben Noordhuis) [#27038](https://github.com/nodejs/node/pull/27038) +* [[`c537daf391`](https://github.com/nodejs/node/commit/c537daf391)] - **src**: apply clang-tidy rule bugprone-incorrect-roundings (gengjiawen) [#26885](https://github.com/nodejs/node/pull/26885) +* [[`80694949f2`](https://github.com/nodejs/node/commit/80694949f2)] - **src**: elevate v8::Task namespace (Juan José Arboleda) [#26909](https://github.com/nodejs/node/pull/26909) +* [[`aa6a741102`](https://github.com/nodejs/node/commit/aa6a741102)] - **src**: replace c-style cast (gengjiawen) [#26888](https://github.com/nodejs/node/pull/26888) +* [[`f65cb75c74`](https://github.com/nodejs/node/commit/f65cb75c74)] - **src**: remove internal includes from node\_crypto.h (Sam Roberts) [#26966](https://github.com/nodejs/node/pull/26966) +* [[`d0ee1a3dbb`](https://github.com/nodejs/node/commit/d0ee1a3dbb)] - **src**: fix warning on mismatched fn signature (Sam Roberts) [#26950](https://github.com/nodejs/node/pull/26950) +* [[`fbdead7f35`](https://github.com/nodejs/node/commit/fbdead7f35)] - **src**: add missing uv\_fs\_req\_cleanup() (cjihrig) [#27004](https://github.com/nodejs/node/pull/27004) +* [[`729e2f242f`](https://github.com/nodejs/node/commit/729e2f242f)] - **src**: implement generic backend for process.env (Anna Henningsen) [#26544](https://github.com/nodejs/node/pull/26544) +* [[`d3840bcf0d`](https://github.com/nodejs/node/commit/d3840bcf0d)] - **src**: allow per-Environment set of env vars (Anna Henningsen) [#26544](https://github.com/nodejs/node/pull/26544) +* [[`e776b013ad`](https://github.com/nodejs/node/commit/e776b013ad)] - **src**: do not call into JS in the maxAsyncCallStackDepthChanged interrupt (Joyee Cheung) [#26935](https://github.com/nodejs/node/pull/26935) +* [[`0427354a98`](https://github.com/nodejs/node/commit/0427354a98)] - **src**: delete useless code in cares\_wrap.cc (gengjiawen) [#26815](https://github.com/nodejs/node/pull/26815) +* [[`6bfb17f528`](https://github.com/nodejs/node/commit/6bfb17f528)] - **src**: fix task release in cares\_wrap.cc (gengjiawen) [#26815](https://github.com/nodejs/node/pull/26815) +* [[`c969731755`](https://github.com/nodejs/node/commit/c969731755)] - **src**: use deleted function for class BaseObject (gengjiawen) [#26815](https://github.com/nodejs/node/pull/26815) +* [[`c824127756`](https://github.com/nodejs/node/commit/c824127756)] - **src**: delete unused field in class ModuleWrap (gengjiawen) [#26815](https://github.com/nodejs/node/pull/26815) +* [[`ea7e2c0666`](https://github.com/nodejs/node/commit/ea7e2c0666)] - **src**: tidy up include headers in env.cc (gengjiawen) [#26815](https://github.com/nodejs/node/pull/26815) +* [[`c1def0701e`](https://github.com/nodejs/node/commit/c1def0701e)] - **src**: delete unreachable code in heap\_utils.cc (gengjiawen) [#26815](https://github.com/nodejs/node/pull/26815) +* [[`c51cc9e85b`](https://github.com/nodejs/node/commit/c51cc9e85b)] - **src**: apply clang-tidy rule modernize-make-unique (gengjiawen) [#26493](https://github.com/nodejs/node/pull/26493) +* [[`ab70c96a79`](https://github.com/nodejs/node/commit/ab70c96a79)] - **src**: refactor coverage connection (Joyee Cheung) [#26513](https://github.com/nodejs/node/pull/26513) +* [[`63e7cc7694`](https://github.com/nodejs/node/commit/63e7cc7694)] - **src**: forbid access to CLI options before bootstrapping is done (Joyee Cheung) [#26476](https://github.com/nodejs/node/pull/26476) +* [[`e6c1ad5901`](https://github.com/nodejs/node/commit/e6c1ad5901)] - **src**: fix warnings around node\_options (Refael Ackermann) [#26280](https://github.com/nodejs/node/pull/26280) +* [[`62f904974d`](https://github.com/nodejs/node/commit/62f904974d)] - **src**: refactor node options parsers to mitigate MSVC bug (Refael Ackermann) [#26280](https://github.com/nodejs/node/pull/26280) +* [[`b29afa212a`](https://github.com/nodejs/node/commit/b29afa212a)] - **(SEMVER-MINOR)** **stream**: make Symbol.asyncIterator support stable (Matteo Collina) [#26989](https://github.com/nodejs/node/pull/26989) +* [[`ea47189b40`](https://github.com/nodejs/node/commit/ea47189b40)] - **stream**: do not unconditionally call `\_read()` on `resume()` (Anna Henningsen) [#26965](https://github.com/nodejs/node/pull/26965) +* [[`b359a7a7e5`](https://github.com/nodejs/node/commit/b359a7a7e5)] - **test**: make module test pass with NODE\_PENDING\_DEPRECATION (Anna Henningsen) [#27019](https://github.com/nodejs/node/pull/27019) +* [[`1b2a07855a`](https://github.com/nodejs/node/commit/1b2a07855a)] - **test**: remove test-trace-events-api-worker-disabled from flaky (Rich Trott) [#27020](https://github.com/nodejs/node/pull/27020) +* [[`ecac6547c0`](https://github.com/nodejs/node/commit/ecac6547c0)] - **test**: move test that creates 1Gb file to pummel (Rich Trott) [#27053](https://github.com/nodejs/node/pull/27053) +* [[`35119d60d9`](https://github.com/nodejs/node/commit/35119d60d9)] - **test**: add IPv6 brackets but no port to test-dns (Rich Trott) [#27006](https://github.com/nodejs/node/pull/27006) +* [[`8258f0704d`](https://github.com/nodejs/node/commit/8258f0704d)] - **test**: remove unused triggerAsyncId param in test (Juan José Arboleda) [#26800](https://github.com/nodejs/node/pull/26800) +* [[`06dce392ba`](https://github.com/nodejs/node/commit/06dce392ba)] - **test**: fix error code typo (cjihrig) [#27024](https://github.com/nodejs/node/pull/27024) +* [[`e5181f8dc4`](https://github.com/nodejs/node/commit/e5181f8dc4)] - **test**: simplify for loop in test-buffer-zero-fill-cli.js (Juan José Arboleda) [#26799](https://github.com/nodejs/node/pull/26799) +* [[`9330d7e4bf`](https://github.com/nodejs/node/commit/9330d7e4bf)] - **test**: add known\_issues test for fs.copyFile() (Rich Trott) [#26939](https://github.com/nodejs/node/pull/26939) +* [[`fd6381b056`](https://github.com/nodejs/node/commit/fd6381b056)] - **test**: remove test-path-parse-6229.js from known issues (Ruben Bridgewater) [#26913](https://github.com/nodejs/node/pull/26913) +* [[`edad9afaf8`](https://github.com/nodejs/node/commit/edad9afaf8)] - **test**: move hasCrypto check (Ruben Bridgewater) [#26858](https://github.com/nodejs/node/pull/26858) +* [[`2ef1bd97c6`](https://github.com/nodejs/node/commit/2ef1bd97c6)] - **test**: do not require flags when executing a file (Ruben Bridgewater) [#26858](https://github.com/nodejs/node/pull/26858) +* [[`a1cf7453d8`](https://github.com/nodejs/node/commit/a1cf7453d8)] - **test**: refactor path parse test (Ruben Bridgewater) [#26912](https://github.com/nodejs/node/pull/26912) +* [[`80e845e787`](https://github.com/nodejs/node/commit/80e845e787)] - **test**: add test about unencrypted PKCS#8 private key for RSA (Daiki Ihara) [#26898](https://github.com/nodejs/node/pull/26898) +* [[`03bd649655`](https://github.com/nodejs/node/commit/03bd649655)] - **test**: show stderr on v8 coverage test failures (Joyee Cheung) [#26513](https://github.com/nodejs/node/pull/26513) +* [[`b24e45ab8d`](https://github.com/nodejs/node/commit/b24e45ab8d)] - **(SEMVER-MINOR)** **timers**: deprecate active() and \_unrefActive() (Jeremiah Senkpiel) [#26760](https://github.com/nodejs/node/pull/26760) +* [[`3ff3070442`](https://github.com/nodejs/node/commit/3ff3070442)] - **tools**: fix `test.py --time` (Richard Lau) [#27007](https://github.com/nodejs/node/pull/27007) +* [[`7cbe1214d0`](https://github.com/nodejs/node/commit/7cbe1214d0)] - **tools**: update ESLint to 5.16.0 (cjihrig) [#27005](https://github.com/nodejs/node/pull/27005) +* [[`dc9ce86aaa`](https://github.com/nodejs/node/commit/dc9ce86aaa)] - **tools**: update dependencies in lint-md-cli-rollup (Daijiro Wachi) [#26889](https://github.com/nodejs/node/pull/26889) +* [[`8798db3bf3`](https://github.com/nodejs/node/commit/8798db3bf3)] - **url**: add ws: and wss: to slashedProtocol set (Luigi Pinca) [#26941](https://github.com/nodejs/node/pull/26941) +* [[`12737b3789`](https://github.com/nodejs/node/commit/12737b3789)] - **util**: `inspect()` should not exceed `breakLength` (Ruben Bridgewater) [#26914](https://github.com/nodejs/node/pull/26914) +* [[`0f615d4216`](https://github.com/nodejs/node/commit/0f615d4216)] - **util**: add subclass and null prototype support for errors in inspect (Ruben Bridgewater) [#26923](https://github.com/nodejs/node/pull/26923) +* [[`1aa6e993e3`](https://github.com/nodejs/node/commit/1aa6e993e3)] - **util**: fix map entries inspection (Ruben Bridgewater) [#26918](https://github.com/nodejs/node/pull/26918) +* [[`1b08e622aa`](https://github.com/nodejs/node/commit/1b08e622aa)] - **util**: improve proxy inspection (Ruben Bridgewater) [#26919](https://github.com/nodejs/node/pull/26919) +* [[`21486e5c97`](https://github.com/nodejs/node/commit/21486e5c97)] - **util**: extract uncurryThis function for reuse (ZYSzys) [#23081](https://github.com/nodejs/node/pull/23081) +* [[`169f3f7166`](https://github.com/nodejs/node/commit/169f3f7166)] - **util**: require `isNativeError` from internalBinding (ZYSzys) [#23081](https://github.com/nodejs/node/pull/23081) +* [[`8bd7909d00`](https://github.com/nodejs/node/commit/8bd7909d00)] - **worker**: use copy of process.env (Anna Henningsen) [#26544](https://github.com/nodejs/node/pull/26544) +* [[`682b410581`](https://github.com/nodejs/node/commit/682b410581)] - **worker**: allow execArgv and eval in combination (Anna Henningsen) [#26533](https://github.com/nodejs/node/pull/26533) +* [[`5d9f819a14`](https://github.com/nodejs/node/commit/5d9f819a14)] - **worker**: remove usage of require('util') in worker\_thread.js (toshi1127) [#26814](https://github.com/nodejs/node/pull/26814) +* [[`44450efa6b`](https://github.com/nodejs/node/commit/44450efa6b)] - **worker**: remove usage of require('util') (toshi1127) [#26810](https://github.com/nodejs/node/pull/26810) + ## 2019-03-28, Version 11.13.0 (Current), @targos diff --git a/src/node_version.h b/src/node_version.h index ae5a3deada7218..6b8142e3408a6f 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -23,13 +23,13 @@ #define SRC_NODE_VERSION_H_ #define NODE_MAJOR_VERSION 11 -#define NODE_MINOR_VERSION 13 -#define NODE_PATCH_VERSION 1 +#define NODE_MINOR_VERSION 14 +#define NODE_PATCH_VERSION 0 #define NODE_VERSION_IS_LTS 0 #define NODE_VERSION_LTS_CODENAME "" -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)