@mnaoumov/typescript-dev-toolkit 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -224,20 +224,14 @@ function cmdEscapeCommandLine(commandLine) {
224
224
  });
225
225
  }
226
226
  async function wrapCliTask(taskFunction) {
227
- const disabledScriptEnvVariableName = (0, import_env_toggle.getDisabledScriptEnvVariableName)();
228
- if (disabledScriptEnvVariableName !== null) {
229
- import_node_process.default.stdout.write(`Skipped (${disabledScriptEnvVariableName} is off).
230
- `);
231
- CliTaskResult.Success().exit();
232
- return;
233
- }
227
+ (0, import_env_toggle.exitIfScriptDisabled)();
234
228
  (0, import_debug.enableLibraryDebuggers)();
235
229
  const result = await wrapResult(taskFunction);
236
230
  result.exit();
237
231
  }
238
232
  async function wrapResult(taskFunction) {
239
233
  try {
240
- return await taskFunction() ?? CliTaskResult.Success();
234
+ return await taskFunction() ?? CliTaskResult.FromExitCode(Number(import_node_process.default.exitCode ?? 0));
241
235
  } catch (error) {
242
236
  (0, import_error.printError)(new Error("An error occurred during task execution", { cause: error }));
243
237
  return CliTaskResult.Failure();
@@ -251,4 +245,4 @@ async function wrapResult(taskFunction) {
251
245
  toPosixCommandLine,
252
246
  wrapCliTask
253
247
  });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGktdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB0YXNrIHJlc3VsdHMsIGluY2x1ZGluZ1xuICogc3VjY2VzcywgZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIG11bHRpcGxlIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBlbmFibGVMaWJyYXJ5RGVidWdnZXJzIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZXJyb3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBnZXREaXNhYmxlZFNjcmlwdEVudlZhcmlhYmxlTmFtZSB9IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSB0YXNrLiBJbmNsdWRlcyBtZXRob2RzIGZvciBoYW5kbGluZyBzdWNjZXNzLFxuICogZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIHRhc2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBDaGFpbnMgbXVsdGlwbGUgdGFza3MgdG9nZXRoZXIsIGV4ZWN1dGluZyB0aGVtIHNlcXVlbnRpYWxseSB1bnRpbCBvbmUgZmFpbHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyAtIEFuIGFycmF5IG9mIHRhc2sgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGB2b2lkYC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmaXJzdCBmYWlsZWQge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGEgc3VjY2VzcyByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGNoYWluKHRhc2tzOiAoKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pW10pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdyYXBSZXN1bHQodGFzayk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLlN1Y2Nlc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBEb05vdEV4aXQoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBEb05vdEV4aXRUYXNrUmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQSBmYWlsdXJlIHJlc3VsdCBvZiBhIENMSSB0YXNrLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmFpbHVyZSByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZhaWx1cmUoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIHRoaXMuU3VjY2VzcyhmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBiYXNlZCBvbiBhbiBleGl0IGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBleGl0Q29kZSAtIFRoZSBleGl0IGNvZGUgdG8gcmVwcmVzZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRnJvbUV4aXRDb2RlKGV4aXRDb2RlOiBudW1iZXIpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IEV4aXRDb2RlVGFza1Jlc3VsdChleGl0Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsaVRhc2tSZXN1bHQgcmVwcmVzZW50aW5nIGEgc3VjY2Vzc2Z1bCB0YXNrIHJlc3VsdC5cbiAgICpcbiAgICogQHBhcmFtIGlzU3VjY2VzcyAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJucyBBIENsaVRhc2tSZXN1bHQgb2JqZWN0IHJlcHJlc2VudGluZyBhIHN1Y2Nlc3NmdWwgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFN1Y2Nlc3MoaXNTdWNjZXNzID0gdHJ1ZSk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgU3VjY2Vzc1Rhc2tSZXN1bHQoaXNTdWNjZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyBiYXNlZCBvbiB0aGUgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZXhpdCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRhc2sgd2FzIG5vdCBzdWNjZXNzZnVsLlxuICAgKi9cbiAgcHVibGljIHRocm93T25GYWlsdXJlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYXNrIGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICovXG5jbGFzcyBEb05vdEV4aXRUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBEb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgYmFzZWQgb24gYW4gZXhpdCBjb2RlLlxuICovXG5jbGFzcyBFeGl0Q29kZVRhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZXhpdENvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIHByb2Nlc3MuZXhpdCh0aGlzLmV4aXRDb2RlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhpdENvZGUgPT09IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IGJhc2VkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAqL1xuY2xhc3MgU3VjY2Vzc1Rhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2lzU3VjY2Vzc2Z1bDogYm9vbGVhbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3MgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb2YgdGhlIHRhc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBwcm9jZXNzLmV4aXQodGhpcy5faXNTdWNjZXNzZnVsID8gMCA6IDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdWNjZXNzZnVsO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBzdHJpbmdcbiAqIHVzaW5nIHRoZSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uICh0aGUgc3RhbmRhcmQgdXNlZCBieSB0aGVcbiAqIE1pY3Jvc29mdCBDIHJ1bnRpbWUgYW5kIG1vc3QgV2luZG93cyBwcm9ncmFtcykuXG4gKlxuICogSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX06XG4gKiBiYWNrc2xhc2hlcyBiZWZvcmUgcXVvdGVzIGFuZCBhdCB0aGUgZW5kIG9mIGEgcXVvdGVkIGFyZ3VtZW50IGFyZSBkb3VibGVkLlxuICpcbiAqIFRoaXMgcHJvZHVjZXMgYSBzaGVsbC1hZ25vc3RpYyBjb21tYW5kIGxpbmUuIENhbGxlcnMgdGhhdCByb3V0ZSB0aHJvdWdoXG4gKiBhIHNwZWNpZmljIHNoZWxsIChjbWQuZXhlLCBQb3dlclNoZWxsLCBzaCkgbXVzdCBhcHBseSBzaGVsbC1zcGVjaWZpY1xuICogZXNjYXBpbmcgb24gdG9wIOKAlCBzZWUge0BsaW5rIGNtZEVzY2FwZUNvbW1hbmRMaW5lfS5cbiAqXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbW1hbmQtbGluZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21tYW5kTGluZSgkYXJndW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiAkYXJndW1lbnRzLm1hcCgoYXJndW1lbnQpID0+IGFyZ3ZRdW90ZShhcmd1bWVudCkpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZ1xuICogcXVvdGVkIGZvciBhIFBPU0lYIHNoZWxsIChgc2hgLCBgYmFzaGAsIGB6c2hgLCAuLi4pLlxuICpcbiAqIEVhY2ggYXJndW1lbnQgaXMgd3JhcHBlZCBpbiBzaW5nbGUgcXVvdGVzIHVubGVzcyBpdCBjb25zaXN0cyBzb2xlbHkgb2ZcbiAqIGNoYXJhY3RlcnMgdGhhdCBhcmUgc2FmZSB1bnF1b3RlZCwgbWlycm9yaW5nIFB5dGhvbidzIGBzaGxleC5xdW90ZWAuIEEgbGl0ZXJhbFxuICogc2luZ2xlIHF1b3RlIGluc2lkZSBhbiBhcmd1bWVudCBpcyBlbWl0dGVkIGFzIHRoZSBgJ1xcJydgIGlkaW9tIChjbG9zZSB0aGVcbiAqIHF1b3RlZCBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4pLCBzbyB0aGUgc2hlbGwgcmVwcm9kdWNlcyB0aGVcbiAqIGFyZ3VtZW50IHZlcmJhdGltIOKAlCBubyB2YXJpYWJsZSBleHBhbnNpb24gKGAkYCksIGNvbW1hbmQgc3Vic3RpdHV0aW9uXG4gKiAoYGAgYCBgYCksIGdsb2JiaW5nIChgKmAsIGA/YCwgYFtgKSwgb3Igd29yZCBzcGxpdHRpbmcuXG4gKlxuICogVXNlIHRoaXMgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIHRocm91Z2ggYHNoIC1jYC4gT25cbiAqIFdpbmRvd3MsIHVzZSB7QGxpbmsgdG9Db21tYW5kTGluZX0gcGx1cyB7QGxpbmsgY21kRXNjYXBlQ29tbWFuZExpbmV9IGluc3RlYWQg4oCUXG4gKiB0aGUgdHdvIGNvbnZlbnRpb25zIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24gZm9yIGEgUE9TSVggc2hlbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4Q29tbWFuZExpbmUoJGFyZ3VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gJGFyZ3VtZW50cy5tYXAoKGFyZ3VtZW50KSA9PiBwb3NpeFF1b3RlKGFyZ3VtZW50KSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYW4gYXJndW1lbnQgdGhhdCBpcyBlbnRpcmVseSBjb21wb3NlZCBvZiBjaGFyYWN0ZXJzIHNhZmUgdG8gcGFzcyB0byBhXG4gKiBQT1NJWCBzaGVsbCB1bnF1b3RlZC4gTWlycm9ycyB0aGUgc2FmZSBzZXQgdXNlZCBieSBQeXRob24ncyBgc2hsZXgucXVvdGVgLlxuICovXG5jb25zdCBQT1NJWF9TQUZFX0FSR19SRSA9IC9eW1xcd0AlKz06LC4vLV0rJC87XG5cbi8qKlxuICogTWF0Y2hlcyBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlLCBmb3IgcmVwbGFjaW5nIGl0IHdpdGggdGhlIGAnXFwnJ2AgaWRpb20uXG4gKi9cbmNvbnN0IFNJTkdMRV9RVU9URV9SRSA9IC8nL2c7XG5cbi8qKlxuICogVGhlIHJlcGxhY2VtZW50IGZvciBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlIGluc2lkZSBhIHNpbmdsZS1xdW90ZWQgUE9TSVggc3BhbjpcbiAqIGNsb3NlIHRoZSBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4gdGhlIHNwYW4uXG4gKi9cbmNvbnN0IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFID0gU3RyaW5nLnJhd2AnXFwnJ2A7XG5cbi8qKlxuICogUXVvdGVzIGEgc2luZ2xlIGFyZ3VtZW50IHNvIHRoYXQgYENvbW1hbmRMaW5lVG9Bcmd2V2Agd2lsbCBkZWNvZGUgaXRcbiAqIHVuY2hhbmdlZC4gSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX0uXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZ3VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYXJndW1lbnQubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJndW1lbnQpKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50O1xuICB9XG5cbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgPSAyO1xuICBsZXQgcmVzdWx0ID0gJ1wiJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGxldCBudW1iZXJCYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnQubGVuZ3RoICYmIGFyZ3VtZW50W2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgbnVtYmVyQmFja3NsYXNoZXMrKztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPT09IGFyZ3VtZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtYmVyQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IGFyZ3VtZW50LmNoYXJBdChpbmRleCk7XG4gICAgcmVzdWx0ICs9IGNoID09PSAnXCInID8gYCR7J1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SICsgMSl9XCJgIDogJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcykgKyBjaDtcbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgYSBQT1NJWCBzaGVsbCBzbyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB2ZXJiYXRpbS5cbiAqIEFuIGVtcHR5IGFyZ3VtZW50IGJlY29tZXMgYCcnYDsgYW4gYXJndW1lbnQgb2Ygb25seSBzYWZlIGNoYXJhY3RlcnMgaXNcbiAqIHJldHVybmVkIHVuY2hhbmdlZDsgYW55dGhpbmcgZWxzZSBpcyBzaW5nbGUtcXVvdGVkLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSByYXcgYXJndW1lbnQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBhcmd1bWVudCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHBvc2l4UXVvdGUoYXJndW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBQT1NJWF9TQUZFX0FSR19SRS50ZXN0KGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogYCcke3JlcGxhY2VBbGwoeyAkc3RyaW5nOiBhcmd1bWVudCwgcmVwbGFjZXI6IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFLCBzZWFyY2hWYWx1ZTogU0lOR0xFX1FVT1RFX1JFIH0pfSdgO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBgXmAtZXNjYXBlZC5cbiAqL1xuY29uc3QgQ01EX01FVEFfUkUgPSAvWygpJSFeXCI8PiZ8XS9nO1xuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgY21kLmV4ZWAncyBgXCJgIGhhbmRsaW5nXG4gKiBkaWZmZXJzIGZyb20gYENvbW1hbmRMaW5lVG9Bcmd2V2AgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi5cbiAqXG4gKiBBcHBseSB0aGlzIHRvIGEgY29tbWFuZCBsaW5lIHN0cmluZyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgdmlhIGBjbWQuZXhlYFxuICogKGUuZy4sIGBzcGF3bihjbWQsIFtdLCB7IHNoZWxsOiB0cnVlIH0pYCBvbiBXaW5kb3dzKS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgY21kYCBuYW1lcyBXaW5kb3dzIGBjbWQuZXhlYCwgbm90IGFuIGFiYnJldmlhdGlvbiBvZiBgY29tbWFuZGAuXG5leHBvcnQgZnVuY3Rpb24gY21kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBjb21tYW5kTGluZSxcbiAgICByZXBsYWNlcjogJ14kJicsXG4gICAgc2VhcmNoVmFsdWU6IENNRF9NRVRBX1JFXG4gIH0pO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgQ0xJIHRhc2sgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgc2FmZWx5IGFuZCBoYW5kbGVzIGl0cyB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uXG4gKlxuICogSG9ub3JzIHRoZSBwZXItc2NyaXB0IG9mZiBzd2l0Y2ggZmlyc3Q6IHdoZW4gdGhlIG5wbSBzY3JpcHQgY3VycmVudGx5IHJ1bm5pbmcgaGFzIGJlZW4gc3dpdGNoZWQgb2ZmIOKAlFxuICogYExJTlRfTUQ9MCBucG0gcnVuIGxpbnQ6bWRgLCBzZWUge0BsaW5rIGdldERpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lfSDigJQgdGhlIHRhc2sgaXMgbm90IGV4ZWN1dGVkIGFuZFxuICogdGhlIHByb2Nlc3MgZXhpdHMgc3VjY2Vzc2Z1bGx5LiBCZWNhdXNlIGV2ZXJ5IGBzY3JpcHRzLyoudHNgIGVudHJ5IHBvaW50IGFscmVhZHkgZnVubmVscyB0aHJvdWdoIGhlcmUsIG5vXG4gKiBzY3JpcHQgaGFzIHRvIG9wdCBpbiwgYW5kIGVhY2ggYG5wbSBydW5gIHN1Yi1zdGVwIG9mIGEgY29tcG9zaXRlIHNjcmlwdCAoZS5nLiBgYnVpbGRgKSBjYXJyaWVzIGl0cyBvd25cbiAqIHN3aXRjaC5cbiAqXG4gKiBAcGFyYW0gdGFza0Z1bmN0aW9uIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSwgd2hpY2ggbWF5IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhc2sgaXMgY29tcGxldGVkIGFuZCBleGl0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cmFwQ2xpVGFzayh0YXNrRnVuY3Rpb246ICgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lID0gZ2V0RGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWUoKTtcbiAgaWYgKGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lICE9PSBudWxsKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFNraXBwZWQgKCR7ZGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWV9IGlzIG9mZikuXFxuYCk7XG4gICAgQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKCkuZXhpdCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVuYWJsZUxpYnJhcnlEZWJ1Z2dlcnMoKTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd3JhcFJlc3VsdCh0YXNrRnVuY3Rpb24pO1xuICByZXN1bHQuZXhpdCgpO1xufVxuXG4vKipcbiAqIFNhZmVseSBleGVjdXRlcyBhIHRhc2sgZnVuY3Rpb24gYW5kIHJldHVybnMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uIElmIHRoZSB0YXNrIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvcixcbiAqIEFuIGVycm9yIGlzIGNhdWdodCwgYW5kIGEgZmFpbHVyZSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHRhc2tGdW5jdGlvbiAtIFRoZSB0YXNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gcmVwcmVzZW50aW5nIHRoZSBvdXRjb21lIG9mIHRoZSB0YXNrLlxuICovXG5hc3luYyBmdW5jdGlvbiB3cmFwUmVzdWx0KHRhc2tGdW5jdGlvbjogKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IHRhc2tGdW5jdGlvbigpKSBhcyBDbGlUYXNrUmVzdWx0IHwgdW5kZWZpbmVkID8/IENsaVRhc2tSZXN1bHQuU3VjY2VzcygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGFzayBleGVjdXRpb24nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRmFpbHVyZSgpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBLG1CQUF1QztBQUN2QyxtQkFBMkI7QUFDM0Isc0JBQXFCO0FBQ3JCLG9CQUEyQjtBQUMzQiwwQkFBb0I7QUFFcEIsd0JBQWlEO0FBTTFDLE1BQWUsY0FBYztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT2xDLGFBQW9CLE1BQU0sT0FBaUY7QUFDekcsZUFBVyxRQUFRLE9BQU87QUFDeEIsWUFBTSxTQUFTLE1BQU0sV0FBVyxJQUFJO0FBQ3BDLFVBQUksQ0FBQyxPQUFPLGFBQWEsR0FBRztBQUMxQixlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFFQSxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxZQUEyQjtBQUN2QyxXQUFPLElBQUksb0JBQW9CO0FBQUEsRUFDakM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLFVBQXlCO0FBQ3JDLFdBQU8sS0FBSyxRQUFRLEtBQUs7QUFBQSxFQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsT0FBYyxhQUFhLFVBQWlDO0FBQzFELFdBQU8sSUFBSSxtQkFBbUIsUUFBUTtBQUFBLEVBQ3hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLFFBQVEsWUFBWSxNQUFxQjtBQUNyRCxXQUFPLElBQUksa0JBQWtCLFNBQVM7QUFBQSxFQUN4QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVU8saUJBQXVCO0FBQzVCLFFBQUksQ0FBQyxLQUFLLGFBQWEsR0FBRztBQUN4QixZQUFNLElBQUksTUFBTSxhQUFhO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBUUY7QUFLQSxNQUFNLDRCQUE0QixjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJOUIsT0FBYTtBQUMzQiw4QkFBSztBQUFBLEVBQ1A7QUFBQSxFQUVtQixlQUF3QjtBQUN6QyxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBS0EsTUFBTSwyQkFBMkIsY0FBYztBQUFBLEVBQ3RDLFlBQTZCLFVBQWtCO0FBQ3BELFVBQU07QUFENEI7QUFBQSxFQUVwQztBQUFBLEVBRm9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPcEIsT0FBYTtBQUMzQix3QkFBQUEsUUFBUSxLQUFLLEtBQUssUUFBUTtBQUFBLEVBQzVCO0FBQUEsRUFFbUIsZUFBd0I7QUFDekMsV0FBTyxLQUFLLGFBQWE7QUFBQSxFQUMzQjtBQUNGO0FBS0EsTUFBTSwwQkFBMEIsY0FBYztBQUFBLEVBQ3JDLFlBQTZCLGVBQXdCO0FBQzFELFVBQU07QUFENEI7QUFBQSxFQUVwQztBQUFBLEVBRm9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPcEIsT0FBYTtBQUMzQix3QkFBQUEsUUFBUSxLQUFLLEtBQUssZ0JBQWdCLElBQUksQ0FBQztBQUFBLEVBQ3pDO0FBQUEsRUFFbUIsZUFBd0I7QUFDekMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBa0JPLFNBQVMsY0FBYyxZQUE4QjtBQUMxRCxTQUFPLFdBQVcsSUFBSSxDQUFDLGFBQWEsVUFBVSxRQUFRLENBQUMsRUFBRSxLQUFLLEdBQUc7QUFDbkU7QUFvQk8sU0FBUyxtQkFBbUIsWUFBOEI7QUFDL0QsU0FBTyxXQUFXLElBQUksQ0FBQyxhQUFhLFdBQVcsUUFBUSxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQ3BFO0FBTUEsTUFBTSxvQkFBb0I7QUFLMUIsTUFBTSxrQkFBa0I7QUFNeEIsTUFBTSw2QkFBNkIsT0FBTztBQVUxQyxTQUFTLFVBQVUsVUFBMEI7QUFDM0MsTUFBSSxTQUFTLFNBQVMsS0FBSyxDQUFDLGNBQWMsS0FBSyxRQUFRLEdBQUc7QUFDeEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDBCQUEwQjtBQUNoQyxNQUFJLFNBQVM7QUFDYixXQUFTLFFBQVEsR0FBRyxRQUFRLFNBQVMsUUFBUSxTQUFTO0FBQ3BELFFBQUksb0JBQW9CO0FBQ3hCLFdBQU8sUUFBUSxTQUFTLFVBQVUsU0FBUyxLQUFLLE1BQU0sTUFBTTtBQUMxRDtBQUNBO0FBQUEsSUFDRjtBQUVBLFFBQUksVUFBVSxTQUFTLFFBQVE7QUFDN0IsZ0JBQVUsS0FBSyxPQUFPLG9CQUFvQix1QkFBdUI7QUFDakU7QUFBQSxJQUNGO0FBRUEsVUFBTSxLQUFLLFNBQVMsT0FBTyxLQUFLO0FBQ2hDLGNBQVUsT0FBTyxNQUFNLEdBQUcsS0FBSyxPQUFPLG9CQUFvQiwwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLGlCQUFpQixJQUFJO0FBQUEsRUFDL0g7QUFFQSxZQUFVO0FBQ1YsU0FBTztBQUNUO0FBVUEsU0FBUyxXQUFXLFVBQTBCO0FBQzVDLFNBQU8sa0JBQWtCLEtBQUssUUFBUSxJQUFJLFdBQVcsUUFBSSwwQkFBVyxFQUFFLFNBQVMsVUFBVSxVQUFVLDRCQUE0QixhQUFhLGdCQUFnQixDQUFDLENBQUM7QUFDaEs7QUFLQSxNQUFNLGNBQWM7QUFjYixTQUFTLHFCQUFxQixhQUE2QjtBQUNoRSxhQUFPLDBCQUFXO0FBQUEsSUFDaEIsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUNIO0FBY0EsZUFBc0IsWUFBWSxjQUEyRTtBQUMzRyxRQUFNLG9DQUFnQyxvREFBaUM7QUFDdkUsTUFBSSxrQ0FBa0MsTUFBTTtBQUMxQyx3QkFBQUEsUUFBUSxPQUFPLE1BQU0sWUFBWSw2QkFBNkI7QUFBQSxDQUFhO0FBQzNFLGtCQUFjLFFBQVEsRUFBRSxLQUFLO0FBQzdCO0FBQUEsRUFDRjtBQUVBLDJDQUF1QjtBQUN2QixRQUFNLFNBQVMsTUFBTSxXQUFXLFlBQVk7QUFDNUMsU0FBTyxLQUFLO0FBQ2Q7QUFTQSxlQUFlLFdBQVcsY0FBb0Y7QUFDNUcsTUFBSTtBQUNGLFdBQVEsTUFBTSxhQUFhLEtBQW1DLGNBQWMsUUFBUTtBQUFBLEVBQ3RGLFNBQVMsT0FBTztBQUNkLGlDQUFXLElBQUksTUFBTSwyQ0FBMkMsRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQ2pGLFdBQU8sY0FBYyxRQUFRO0FBQUEsRUFDL0I7QUFDRjsiLCJuYW1lcyI6WyJwcm9jZXNzIl19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGktdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB0YXNrIHJlc3VsdHMsIGluY2x1ZGluZ1xuICogc3VjY2VzcywgZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIG11bHRpcGxlIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBlbmFibGVMaWJyYXJ5RGVidWdnZXJzIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZXJyb3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBleGl0SWZTY3JpcHREaXNhYmxlZCB9IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSB0YXNrLiBJbmNsdWRlcyBtZXRob2RzIGZvciBoYW5kbGluZyBzdWNjZXNzLFxuICogZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIHRhc2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBDaGFpbnMgbXVsdGlwbGUgdGFza3MgdG9nZXRoZXIsIGV4ZWN1dGluZyB0aGVtIHNlcXVlbnRpYWxseSB1bnRpbCBvbmUgZmFpbHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyAtIEFuIGFycmF5IG9mIHRhc2sgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGB2b2lkYC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmaXJzdCBmYWlsZWQge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGEgc3VjY2VzcyByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGNoYWluKHRhc2tzOiAoKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pW10pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdyYXBSZXN1bHQodGFzayk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLlN1Y2Nlc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBEb05vdEV4aXQoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBEb05vdEV4aXRUYXNrUmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQSBmYWlsdXJlIHJlc3VsdCBvZiBhIENMSSB0YXNrLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmFpbHVyZSByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZhaWx1cmUoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIHRoaXMuU3VjY2VzcyhmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBiYXNlZCBvbiBhbiBleGl0IGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBleGl0Q29kZSAtIFRoZSBleGl0IGNvZGUgdG8gcmVwcmVzZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRnJvbUV4aXRDb2RlKGV4aXRDb2RlOiBudW1iZXIpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IEV4aXRDb2RlVGFza1Jlc3VsdChleGl0Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsaVRhc2tSZXN1bHQgcmVwcmVzZW50aW5nIGEgc3VjY2Vzc2Z1bCB0YXNrIHJlc3VsdC5cbiAgICpcbiAgICogQHBhcmFtIGlzU3VjY2VzcyAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJucyBBIENsaVRhc2tSZXN1bHQgb2JqZWN0IHJlcHJlc2VudGluZyBhIHN1Y2Nlc3NmdWwgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFN1Y2Nlc3MoaXNTdWNjZXNzID0gdHJ1ZSk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgU3VjY2Vzc1Rhc2tSZXN1bHQoaXNTdWNjZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyBiYXNlZCBvbiB0aGUgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZXhpdCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRhc2sgd2FzIG5vdCBzdWNjZXNzZnVsLlxuICAgKi9cbiAgcHVibGljIHRocm93T25GYWlsdXJlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYXNrIGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICovXG5jbGFzcyBEb05vdEV4aXRUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBEb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgYmFzZWQgb24gYW4gZXhpdCBjb2RlLlxuICovXG5jbGFzcyBFeGl0Q29kZVRhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZXhpdENvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIHByb2Nlc3MuZXhpdCh0aGlzLmV4aXRDb2RlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhpdENvZGUgPT09IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IGJhc2VkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAqL1xuY2xhc3MgU3VjY2Vzc1Rhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2lzU3VjY2Vzc2Z1bDogYm9vbGVhbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3MgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb2YgdGhlIHRhc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBwcm9jZXNzLmV4aXQodGhpcy5faXNTdWNjZXNzZnVsID8gMCA6IDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdWNjZXNzZnVsO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBzdHJpbmdcbiAqIHVzaW5nIHRoZSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uICh0aGUgc3RhbmRhcmQgdXNlZCBieSB0aGVcbiAqIE1pY3Jvc29mdCBDIHJ1bnRpbWUgYW5kIG1vc3QgV2luZG93cyBwcm9ncmFtcykuXG4gKlxuICogSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX06XG4gKiBiYWNrc2xhc2hlcyBiZWZvcmUgcXVvdGVzIGFuZCBhdCB0aGUgZW5kIG9mIGEgcXVvdGVkIGFyZ3VtZW50IGFyZSBkb3VibGVkLlxuICpcbiAqIFRoaXMgcHJvZHVjZXMgYSBzaGVsbC1hZ25vc3RpYyBjb21tYW5kIGxpbmUuIENhbGxlcnMgdGhhdCByb3V0ZSB0aHJvdWdoXG4gKiBhIHNwZWNpZmljIHNoZWxsIChjbWQuZXhlLCBQb3dlclNoZWxsLCBzaCkgbXVzdCBhcHBseSBzaGVsbC1zcGVjaWZpY1xuICogZXNjYXBpbmcgb24gdG9wIOKAlCBzZWUge0BsaW5rIGNtZEVzY2FwZUNvbW1hbmRMaW5lfS5cbiAqXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbW1hbmQtbGluZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21tYW5kTGluZSgkYXJndW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiAkYXJndW1lbnRzLm1hcCgoYXJndW1lbnQpID0+IGFyZ3ZRdW90ZShhcmd1bWVudCkpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZ1xuICogcXVvdGVkIGZvciBhIFBPU0lYIHNoZWxsIChgc2hgLCBgYmFzaGAsIGB6c2hgLCAuLi4pLlxuICpcbiAqIEVhY2ggYXJndW1lbnQgaXMgd3JhcHBlZCBpbiBzaW5nbGUgcXVvdGVzIHVubGVzcyBpdCBjb25zaXN0cyBzb2xlbHkgb2ZcbiAqIGNoYXJhY3RlcnMgdGhhdCBhcmUgc2FmZSB1bnF1b3RlZCwgbWlycm9yaW5nIFB5dGhvbidzIGBzaGxleC5xdW90ZWAuIEEgbGl0ZXJhbFxuICogc2luZ2xlIHF1b3RlIGluc2lkZSBhbiBhcmd1bWVudCBpcyBlbWl0dGVkIGFzIHRoZSBgJ1xcJydgIGlkaW9tIChjbG9zZSB0aGVcbiAqIHF1b3RlZCBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4pLCBzbyB0aGUgc2hlbGwgcmVwcm9kdWNlcyB0aGVcbiAqIGFyZ3VtZW50IHZlcmJhdGltIOKAlCBubyB2YXJpYWJsZSBleHBhbnNpb24gKGAkYCksIGNvbW1hbmQgc3Vic3RpdHV0aW9uXG4gKiAoYGAgYCBgYCksIGdsb2JiaW5nIChgKmAsIGA/YCwgYFtgKSwgb3Igd29yZCBzcGxpdHRpbmcuXG4gKlxuICogVXNlIHRoaXMgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIHRocm91Z2ggYHNoIC1jYC4gT25cbiAqIFdpbmRvd3MsIHVzZSB7QGxpbmsgdG9Db21tYW5kTGluZX0gcGx1cyB7QGxpbmsgY21kRXNjYXBlQ29tbWFuZExpbmV9IGluc3RlYWQg4oCUXG4gKiB0aGUgdHdvIGNvbnZlbnRpb25zIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24gZm9yIGEgUE9TSVggc2hlbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4Q29tbWFuZExpbmUoJGFyZ3VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gJGFyZ3VtZW50cy5tYXAoKGFyZ3VtZW50KSA9PiBwb3NpeFF1b3RlKGFyZ3VtZW50KSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYW4gYXJndW1lbnQgdGhhdCBpcyBlbnRpcmVseSBjb21wb3NlZCBvZiBjaGFyYWN0ZXJzIHNhZmUgdG8gcGFzcyB0byBhXG4gKiBQT1NJWCBzaGVsbCB1bnF1b3RlZC4gTWlycm9ycyB0aGUgc2FmZSBzZXQgdXNlZCBieSBQeXRob24ncyBgc2hsZXgucXVvdGVgLlxuICovXG5jb25zdCBQT1NJWF9TQUZFX0FSR19SRSA9IC9eW1xcd0AlKz06LC4vLV0rJC87XG5cbi8qKlxuICogTWF0Y2hlcyBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlLCBmb3IgcmVwbGFjaW5nIGl0IHdpdGggdGhlIGAnXFwnJ2AgaWRpb20uXG4gKi9cbmNvbnN0IFNJTkdMRV9RVU9URV9SRSA9IC8nL2c7XG5cbi8qKlxuICogVGhlIHJlcGxhY2VtZW50IGZvciBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlIGluc2lkZSBhIHNpbmdsZS1xdW90ZWQgUE9TSVggc3BhbjpcbiAqIGNsb3NlIHRoZSBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4gdGhlIHNwYW4uXG4gKi9cbmNvbnN0IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFID0gU3RyaW5nLnJhd2AnXFwnJ2A7XG5cbi8qKlxuICogUXVvdGVzIGEgc2luZ2xlIGFyZ3VtZW50IHNvIHRoYXQgYENvbW1hbmRMaW5lVG9Bcmd2V2Agd2lsbCBkZWNvZGUgaXRcbiAqIHVuY2hhbmdlZC4gSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX0uXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZ3VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYXJndW1lbnQubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJndW1lbnQpKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50O1xuICB9XG5cbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgPSAyO1xuICBsZXQgcmVzdWx0ID0gJ1wiJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGxldCBudW1iZXJCYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnQubGVuZ3RoICYmIGFyZ3VtZW50W2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgbnVtYmVyQmFja3NsYXNoZXMrKztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPT09IGFyZ3VtZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtYmVyQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IGFyZ3VtZW50LmNoYXJBdChpbmRleCk7XG4gICAgcmVzdWx0ICs9IGNoID09PSAnXCInID8gYCR7J1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SICsgMSl9XCJgIDogJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcykgKyBjaDtcbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgYSBQT1NJWCBzaGVsbCBzbyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB2ZXJiYXRpbS5cbiAqIEFuIGVtcHR5IGFyZ3VtZW50IGJlY29tZXMgYCcnYDsgYW4gYXJndW1lbnQgb2Ygb25seSBzYWZlIGNoYXJhY3RlcnMgaXNcbiAqIHJldHVybmVkIHVuY2hhbmdlZDsgYW55dGhpbmcgZWxzZSBpcyBzaW5nbGUtcXVvdGVkLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSByYXcgYXJndW1lbnQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBhcmd1bWVudCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHBvc2l4UXVvdGUoYXJndW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBQT1NJWF9TQUZFX0FSR19SRS50ZXN0KGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogYCcke3JlcGxhY2VBbGwoeyAkc3RyaW5nOiBhcmd1bWVudCwgcmVwbGFjZXI6IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFLCBzZWFyY2hWYWx1ZTogU0lOR0xFX1FVT1RFX1JFIH0pfSdgO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBgXmAtZXNjYXBlZC5cbiAqL1xuY29uc3QgQ01EX01FVEFfUkUgPSAvWygpJSFeXCI8PiZ8XS9nO1xuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgY21kLmV4ZWAncyBgXCJgIGhhbmRsaW5nXG4gKiBkaWZmZXJzIGZyb20gYENvbW1hbmRMaW5lVG9Bcmd2V2AgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi5cbiAqXG4gKiBBcHBseSB0aGlzIHRvIGEgY29tbWFuZCBsaW5lIHN0cmluZyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgdmlhIGBjbWQuZXhlYFxuICogKGUuZy4sIGBzcGF3bihjbWQsIFtdLCB7IHNoZWxsOiB0cnVlIH0pYCBvbiBXaW5kb3dzKS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgY21kYCBuYW1lcyBXaW5kb3dzIGBjbWQuZXhlYCwgbm90IGFuIGFiYnJldmlhdGlvbiBvZiBgY29tbWFuZGAuXG5leHBvcnQgZnVuY3Rpb24gY21kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBjb21tYW5kTGluZSxcbiAgICByZXBsYWNlcjogJ14kJicsXG4gICAgc2VhcmNoVmFsdWU6IENNRF9NRVRBX1JFXG4gIH0pO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgQ0xJIHRhc2sgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgc2FmZWx5IGFuZCBoYW5kbGVzIGl0cyB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uXG4gKlxuICogSG9ub3JzIHRoZSBwZXItc2NyaXB0IG9mZiBzd2l0Y2ggZmlyc3Q6IHdoZW4gdGhlIG5wbSBzY3JpcHQgY3VycmVudGx5IHJ1bm5pbmcgaGFzIGJlZW4gc3dpdGNoZWQgb2ZmIOKAlFxuICogYExJTlRfTUQ9MCBucG0gcnVuIGxpbnQ6bWRgLCBzZWUge0BsaW5rIGV4aXRJZlNjcmlwdERpc2FibGVkfSDigJQgdGhlIHRhc2sgaXMgbm90IGV4ZWN1dGVkIGFuZFxuICogdGhlIHByb2Nlc3MgZXhpdHMgc3VjY2Vzc2Z1bGx5LiBCZWNhdXNlIGV2ZXJ5IGBzY3JpcHRzLyoudHNgIGVudHJ5IHBvaW50IGFscmVhZHkgZnVubmVscyB0aHJvdWdoIGhlcmUsIG5vXG4gKiBzY3JpcHQgaGFzIHRvIG9wdCBpbiwgYW5kIGVhY2ggYG5wbSBydW5gIHN1Yi1zdGVwIG9mIGEgY29tcG9zaXRlIHNjcmlwdCAoZS5nLiBgYnVpbGRgKSBjYXJyaWVzIGl0cyBvd25cbiAqIHN3aXRjaC5cbiAqXG4gKiBAcGFyYW0gdGFza0Z1bmN0aW9uIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSwgd2hpY2ggbWF5IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhc2sgaXMgY29tcGxldGVkIGFuZCBleGl0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cmFwQ2xpVGFzayh0YXNrRnVuY3Rpb246ICgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGV4aXRJZlNjcmlwdERpc2FibGVkKCk7XG5cbiAgZW5hYmxlTGlicmFyeURlYnVnZ2VycygpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCB3cmFwUmVzdWx0KHRhc2tGdW5jdGlvbik7XG4gIHJlc3VsdC5leGl0KCk7XG59XG5cbi8qKlxuICogU2FmZWx5IGV4ZWN1dGVzIGEgdGFzayBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fS4gSWYgdGhlIHRhc2sgZnVuY3Rpb24gdGhyb3dzIGFuIGVycm9yLFxuICogQW4gZXJyb3IgaXMgY2F1Z2h0LCBhbmQgYSBmYWlsdXJlIHtAbGluayBDbGlUYXNrUmVzdWx0fSBpcyByZXR1cm5lZC5cbiAqXG4gKiBBIHRhc2sgdGhhdCByZXR1cm5zIG5vdGhpbmcgZW5kcyB3aXRoIHRoZSBgcHJvY2Vzcy5leGl0Q29kZWAgaXQgbGVmdCBiZWhpbmQsIHNvIHRoZSBjb21tb24gTm9kZSBzaGFwZSDigJQgcmVwb3J0XG4gKiB0aGUgZmluZGluZ3MsIHNldCBgcHJvY2Vzcy5leGl0Q29kZSA9IDFgLCByZXR1cm4g4oCUIHN0aWxsIGZhaWxzOiB7QGxpbmsgQ2xpVGFza1Jlc3VsdC5leGl0fSBjYWxscyBgcHJvY2Vzcy5leGl0YCxcbiAqIHdob3NlIGFyZ3VtZW50IHdvdWxkIG90aGVyd2lzZSBvdmVycmlkZSBpdCB3aXRoIGAwYC5cbiAqXG4gKiBAcGFyYW0gdGFza0Z1bmN0aW9uIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRhc2suXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyYXBSZXN1bHQodGFza0Z1bmN0aW9uOiAoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+Pik6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgdGFza0Z1bmN0aW9uKCkpIGFzIENsaVRhc2tSZXN1bHQgfCB1bmRlZmluZWQgPz8gQ2xpVGFza1Jlc3VsdC5Gcm9tRXhpdENvZGUoTnVtYmVyKHByb2Nlc3MuZXhpdENvZGUgPz8gMCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGFzayBleGVjdXRpb24nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRmFpbHVyZSgpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBLG1CQUF1QztBQUN2QyxtQkFBMkI7QUFDM0Isc0JBQXFCO0FBQ3JCLG9CQUEyQjtBQUMzQiwwQkFBb0I7QUFFcEIsd0JBQXFDO0FBTTlCLE1BQWUsY0FBYztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT2xDLGFBQW9CLE1BQU0sT0FBaUY7QUFDekcsZUFBVyxRQUFRLE9BQU87QUFDeEIsWUFBTSxTQUFTLE1BQU0sV0FBVyxJQUFJO0FBQ3BDLFVBQUksQ0FBQyxPQUFPLGFBQWEsR0FBRztBQUMxQixlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFFQSxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxZQUEyQjtBQUN2QyxXQUFPLElBQUksb0JBQW9CO0FBQUEsRUFDakM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLFVBQXlCO0FBQ3JDLFdBQU8sS0FBSyxRQUFRLEtBQUs7QUFBQSxFQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsT0FBYyxhQUFhLFVBQWlDO0FBQzFELFdBQU8sSUFBSSxtQkFBbUIsUUFBUTtBQUFBLEVBQ3hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLFFBQVEsWUFBWSxNQUFxQjtBQUNyRCxXQUFPLElBQUksa0JBQWtCLFNBQVM7QUFBQSxFQUN4QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVU8saUJBQXVCO0FBQzVCLFFBQUksQ0FBQyxLQUFLLGFBQWEsR0FBRztBQUN4QixZQUFNLElBQUksTUFBTSxhQUFhO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBUUY7QUFLQSxNQUFNLDRCQUE0QixjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJOUIsT0FBYTtBQUMzQiw4QkFBSztBQUFBLEVBQ1A7QUFBQSxFQUVtQixlQUF3QjtBQUN6QyxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBS0EsTUFBTSwyQkFBMkIsY0FBYztBQUFBLEVBQ3RDLFlBQTZCLFVBQWtCO0FBQ3BELFVBQU07QUFENEI7QUFBQSxFQUVwQztBQUFBLEVBRm9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPcEIsT0FBYTtBQUMzQix3QkFBQUEsUUFBUSxLQUFLLEtBQUssUUFBUTtBQUFBLEVBQzVCO0FBQUEsRUFFbUIsZUFBd0I7QUFDekMsV0FBTyxLQUFLLGFBQWE7QUFBQSxFQUMzQjtBQUNGO0FBS0EsTUFBTSwwQkFBMEIsY0FBYztBQUFBLEVBQ3JDLFlBQTZCLGVBQXdCO0FBQzFELFVBQU07QUFENEI7QUFBQSxFQUVwQztBQUFBLEVBRm9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPcEIsT0FBYTtBQUMzQix3QkFBQUEsUUFBUSxLQUFLLEtBQUssZ0JBQWdCLElBQUksQ0FBQztBQUFBLEVBQ3pDO0FBQUEsRUFFbUIsZUFBd0I7QUFDekMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBa0JPLFNBQVMsY0FBYyxZQUE4QjtBQUMxRCxTQUFPLFdBQVcsSUFBSSxDQUFDLGFBQWEsVUFBVSxRQUFRLENBQUMsRUFBRSxLQUFLLEdBQUc7QUFDbkU7QUFvQk8sU0FBUyxtQkFBbUIsWUFBOEI7QUFDL0QsU0FBTyxXQUFXLElBQUksQ0FBQyxhQUFhLFdBQVcsUUFBUSxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQ3BFO0FBTUEsTUFBTSxvQkFBb0I7QUFLMUIsTUFBTSxrQkFBa0I7QUFNeEIsTUFBTSw2QkFBNkIsT0FBTztBQVUxQyxTQUFTLFVBQVUsVUFBMEI7QUFDM0MsTUFBSSxTQUFTLFNBQVMsS0FBSyxDQUFDLGNBQWMsS0FBSyxRQUFRLEdBQUc7QUFDeEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDBCQUEwQjtBQUNoQyxNQUFJLFNBQVM7QUFDYixXQUFTLFFBQVEsR0FBRyxRQUFRLFNBQVMsUUFBUSxTQUFTO0FBQ3BELFFBQUksb0JBQW9CO0FBQ3hCLFdBQU8sUUFBUSxTQUFTLFVBQVUsU0FBUyxLQUFLLE1BQU0sTUFBTTtBQUMxRDtBQUNBO0FBQUEsSUFDRjtBQUVBLFFBQUksVUFBVSxTQUFTLFFBQVE7QUFDN0IsZ0JBQVUsS0FBSyxPQUFPLG9CQUFvQix1QkFBdUI7QUFDakU7QUFBQSxJQUNGO0FBRUEsVUFBTSxLQUFLLFNBQVMsT0FBTyxLQUFLO0FBQ2hDLGNBQVUsT0FBTyxNQUFNLEdBQUcsS0FBSyxPQUFPLG9CQUFvQiwwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLGlCQUFpQixJQUFJO0FBQUEsRUFDL0g7QUFFQSxZQUFVO0FBQ1YsU0FBTztBQUNUO0FBVUEsU0FBUyxXQUFXLFVBQTBCO0FBQzVDLFNBQU8sa0JBQWtCLEtBQUssUUFBUSxJQUFJLFdBQVcsUUFBSSwwQkFBVyxFQUFFLFNBQVMsVUFBVSxVQUFVLDRCQUE0QixhQUFhLGdCQUFnQixDQUFDLENBQUM7QUFDaEs7QUFLQSxNQUFNLGNBQWM7QUFjYixTQUFTLHFCQUFxQixhQUE2QjtBQUNoRSxhQUFPLDBCQUFXO0FBQUEsSUFDaEIsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUNIO0FBY0EsZUFBc0IsWUFBWSxjQUEyRTtBQUMzRyw4Q0FBcUI7QUFFckIsMkNBQXVCO0FBQ3ZCLFFBQU0sU0FBUyxNQUFNLFdBQVcsWUFBWTtBQUM1QyxTQUFPLEtBQUs7QUFDZDtBQWFBLGVBQWUsV0FBVyxjQUFvRjtBQUM1RyxNQUFJO0FBQ0YsV0FBUSxNQUFNLGFBQWEsS0FBbUMsY0FBYyxhQUFhLE9BQU8sb0JBQUFBLFFBQVEsWUFBWSxDQUFDLENBQUM7QUFBQSxFQUN4SCxTQUFTLE9BQU87QUFDZCxpQ0FBVyxJQUFJLE1BQU0sMkNBQTJDLEVBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQztBQUNqRixXQUFPLGNBQWMsUUFBUTtBQUFBLEVBQy9CO0FBQ0Y7IiwibmFtZXMiOlsicHJvY2VzcyJdfQ==
@@ -112,7 +112,7 @@ export declare function cmdEscapeCommandLine(commandLine: string): string;
112
112
  * Wraps a CLI task function to ensure it runs safely and handles its {@link CliTaskResult}.
113
113
  *
114
114
  * Honors the per-script off switch first: when the npm script currently running has been switched off —
115
- * `LINT_MD=0 npm run lint:md`, see {@link getDisabledScriptEnvVariableName} — the task is not executed and
115
+ * `LINT_MD=0 npm run lint:md`, see {@link exitIfScriptDisabled} — the task is not executed and
116
116
  * the process exits successfully. Because every `scripts/*.ts` entry point already funnels through here, no
117
117
  * script has to opt in, and each `npm run` sub-step of a composite script (e.g. `build`) carries its own
118
118
  * switch.
@@ -66,6 +66,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
66
66
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
67
67
  var env_toggle_exports = {};
68
68
  __export(env_toggle_exports, {
69
+ exitIfScriptDisabled: () => exitIfScriptDisabled,
69
70
  getDisabledScriptEnvVariableName: () => getDisabledScriptEnvVariableName,
70
71
  isEnvVariableOff: () => isEnvVariableOff,
71
72
  loadEnvFileIfExists: () => loadEnvFileIfExists
@@ -78,6 +79,15 @@ const OFF_VALUES = /* @__PURE__ */ new Set(["0", "false", "no", "off"]);
78
79
  const ENV_FILE_PATH = ".env";
79
80
  const NON_ALPHANUMERIC_REG_EXP = /[^a-z0-9]+/gi;
80
81
  const NPM_SCRIPT_NAME_ENV_VARIABLE = "npm_lifecycle_event";
82
+ function exitIfScriptDisabled() {
83
+ const disabledScriptEnvVariableName = getDisabledScriptEnvVariableName();
84
+ if (disabledScriptEnvVariableName === null) {
85
+ return;
86
+ }
87
+ import_node_process.default.stdout.write(`Skipped (${disabledScriptEnvVariableName} is off).
88
+ `);
89
+ import_node_process.default.exit(0);
90
+ }
81
91
  function getDisabledScriptEnvVariableName() {
82
92
  loadEnvFileIfExists();
83
93
  const scriptName = import_node_process.default.env[NPM_SCRIPT_NAME_ENV_VARIABLE];
@@ -104,8 +114,9 @@ function toEnvVariableName(scriptName) {
104
114
  }
105
115
  // Annotate the CommonJS export names for ESM import in node:
106
116
  0 && (module.exports = {
117
+ exitIfScriptDisabled,
107
118
  getDisabledScriptEnvVariableName,
108
119
  isEnvVariableOff,
109
120
  loadEnvFileIfExists
110
121
  });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnYtdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTaGFyZWQgZW52aXJvbm1lbnQtdmFyaWFibGUgb2ZmIHN3aXRjaGVzIGZvciB0aGUgQ0xJIHNjcmlwdHMuXG4gKlxuICogRXZlcnkgbnBtIHNjcmlwdCBjYW4gYmUgc2tpcHBlZCBieSBzZXR0aW5nIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGFmdGVyIGl0IOKAlCB0aGUgc2NyaXB0IG5hbWVcbiAqIHVwcGVyY2FzZWQsIHdpdGggZXZlcnkgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgcmVwbGFjZWQgYnkgYF9gOlxuICpcbiAqIHwgU2NyaXB0ICAgICAgICAgICAgICB8IFN3aXRjaCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IGBsaW50YCAgICAgICAgICAgICAgfCBgTElOVD0wYCAgICAgICAgICAgIHxcbiAqIHwgYGxpbnQ6bWQ6Zml4YCAgICAgICB8IGBMSU5UX01EX0ZJWD0wYCAgICAgfFxuICogfCBgZm9ybWF0OmNoZWNrYCAgICAgIHwgYEZPUk1BVF9DSEVDSz0wYCAgICB8XG4gKiB8IGBmaW5kLW92ZXJleHBvc2VkYCAgfCBgRklORF9PVkVSRVhQT1NFRD0wYHxcbiAqXG4gKiBUaGlzIG1pcnJvcnMgdGhlIHByZS1leGlzdGluZyBgTkFOT19TVEFHRUQ9MGAgLyBgSFVTS1k9MGAgZXNjYXBlIGhhdGNoZXMsIGFuZCByZXVzZXMgdGhlaXIgbm90aW9uIG9mIGFuXG4gKiBcIm9mZlwiIHZhbHVlLCBzbyB0aGVyZSBpcyBhIHNpbmdsZSBhbnN3ZXIgdG8gd2hhdCBjb3VudHMgYXMgb2ZmIGFjcm9zcyB0aGUgd2hvbGUgdG9vbCBzZXQuXG4gKi9cblxuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBUaGUgdmFsdWVzIHRoYXQgc3dpdGNoIGEgdmFyaWFibGUgb2ZmLiBBbnl0aGluZyBlbHNlIOKAlCBpbmNsdWRpbmcgYW4gdW5zZXQgdmFyaWFibGUg4oCUIGxlYXZlcyBpdCBvbiwgc28gdGhlXG4gKiBkZWZhdWx0IGlzIGFsd2F5cyBcInJ1biB0aGUgc2NyaXB0XCIuXG4gKi9cbmNvbnN0IE9GRl9WQUxVRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnMCcsICdmYWxzZScsICdubycsICdvZmYnXSk7XG5cbi8qKlxuICogVGhlIG9wdGlvbmFsIHBlci1kZXZlbG9wZXIgZW52aXJvbm1lbnQgZmlsZS4gTG9hZGVkIHZpYSBOb2RlJ3Mgb3duIGBwcm9jZXNzLmxvYWRFbnZGaWxlYCwgc28gaXQgYmVoYXZlc1xuICogdGhlIHNhbWUgb24gZXZlcnkgcGxhdGZvcm0gYW5kIHNoZWxsLlxuICovXG5jb25zdCBFTlZfRklMRV9QQVRIID0gJy5lbnYnO1xuXG4vKipcbiAqIE1hdGNoZXMgZXZlcnkgcnVuIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYXBwZWFyIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUuXG4gKi9cbmNvbnN0IE5PTl9BTFBIQU5VTUVSSUNfUkVHX0VYUCA9IC9bXmEtejAtOV0rL2dpO1xuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBucG0gc2V0cyB0byB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IGl0IGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG5jb25zdCBOUE1fU0NSSVBUX05BTUVfRU5WX1ZBUklBQkxFID0gJ25wbV9saWZlY3ljbGVfZXZlbnQnO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBvZmYgc3dpdGNoIGZvciB0aGUgbnBtIHNjcmlwdCB0aGF0IGlzIGN1cnJlbnRseSBydW5uaW5nLCBsb2FkaW5nIHtAbGluayBFTlZfRklMRV9QQVRIfSBmaXJzdC5cbiAqXG4gKiBUaGUgc2NyaXB0IG5hbWUgY29tZXMgZnJvbSBucG0gaXRzZWxmLCBzbyBubyBzY3JpcHQgaGFzIHRvIGRlY2xhcmUgaXRzIG93biBzd2l0Y2guIFdoZW4gdGhlIHNjcmlwdCB3YXNcbiAqIHN0YXJ0ZWQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gdGhyb3VnaCBucG0sIHRoZXJlIGlzIG5vIG5hbWUgdG8gZGVyaXZlIGZyb20gYW5kIG5vdGhpbmcgaXMgZXZlciBza2lwcGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IHN3aXRjaGVkIHRoZSBjdXJyZW50IHNjcmlwdCBvZmYsIG9yIGBudWxsYCB3aGVuIHRoZVxuICogc2NyaXB0IHNob3VsZCBydW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXNhYmxlZFNjcmlwdEVudlZhcmlhYmxlTmFtZSgpOiBudWxsIHwgc3RyaW5nIHtcbiAgbG9hZEVudkZpbGVJZkV4aXN0cygpO1xuICBjb25zdCBzY3JpcHROYW1lID0gcHJvY2Vzcy5lbnZbTlBNX1NDUklQVF9OQU1FX0VOVl9WQVJJQUJMRV07XG4gIGlmICghc2NyaXB0TmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZW52VmFyaWFibGVOYW1lID0gdG9FbnZWYXJpYWJsZU5hbWUoc2NyaXB0TmFtZSk7XG4gIHJldHVybiBpc0VudlZhcmlhYmxlT2ZmKGVudlZhcmlhYmxlTmFtZSkgPyBlbnZWYXJpYWJsZU5hbWUgOiBudWxsO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGFuIG9mZiB2YWx1ZSAoYDBgLCBgZmFsc2VgLCBgbm9gLCBvciBgb2ZmYCxcbiAqIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgaWdub3Jpbmcgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSkuXG4gKlxuICogQHBhcmFtIGVudlZhcmlhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHNldCB0byBhbiBvZmYgdmFsdWUsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbnZWYXJpYWJsZU9mZihlbnZWYXJpYWJsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gT0ZGX1ZBTFVFUy5oYXMoKHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZV0gPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgb3B0aW9uYWwge0BsaW5rIEVOVl9GSUxFX1BBVEh9IGZpbGUgaW50byBgcHJvY2Vzcy5lbnZgIHdoZW4gaXQgZXhpc3RzLCBzbyBhIGRldmVsb3BlciBjYW4gcGFyayBhXG4gKiBzd2l0Y2ggc3VjaCBhcyBgTElOVF9NRD0wYCB0aGVyZSBpbnN0ZWFkIG9mIHByZWZpeGluZyBldmVyeSBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudkZpbGVJZkV4aXN0cygpOiB2b2lkIHtcbiAgaWYgKGV4aXN0c1N5bmMoRU5WX0ZJTEVfUEFUSCkpIHtcbiAgICBwcm9jZXNzLmxvYWRFbnZGaWxlKEVOVl9GSUxFX1BBVEgpO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gbnBtIHNjcmlwdCBuYW1lIGludG8gdGhlIG5hbWUgb2YgaXRzIG9mZiBzd2l0Y2guXG4gKlxuICogQHBhcmFtIHNjcmlwdE5hbWUgLSBUaGUgbnBtIHNjcmlwdCBuYW1lLCBlLmcuIGBsaW50Om1kOmZpeGAuXG4gKiBAcmV0dXJucyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSwgZS5nLiBgTElOVF9NRF9GSVhgLlxuICovXG5mdW5jdGlvbiB0b0VudlZhcmlhYmxlTmFtZShzY3JpcHROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZzogc2NyaXB0TmFtZSxcbiAgICByZXBsYWNlcjogJ18nLFxuICAgIHNlYXJjaFZhbHVlOiBOT05fQUxQSEFOVU1FUklDX1JFR19FWFBcbiAgfSkudG9VcHBlckNhc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEsb0JBQTJCO0FBQzNCLHFCQUEyQjtBQUMzQiwwQkFBb0I7QUFNcEIsTUFBTSxhQUFrQyxvQkFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLE1BQU0sS0FBSyxDQUFDO0FBTTNFLE1BQU0sZ0JBQWdCO0FBS3RCLE1BQU0sMkJBQTJCO0FBS2pDLE1BQU0sK0JBQStCO0FBVzlCLFNBQVMsbUNBQWtEO0FBQ2hFLHNCQUFvQjtBQUNwQixRQUFNLGFBQWEsb0JBQUFBLFFBQVEsSUFBSSw0QkFBNEI7QUFDM0QsTUFBSSxDQUFDLFlBQVk7QUFDZixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sa0JBQWtCLGtCQUFrQixVQUFVO0FBQ3BELFNBQU8saUJBQWlCLGVBQWUsSUFBSSxrQkFBa0I7QUFDL0Q7QUFTTyxTQUFTLGlCQUFpQixpQkFBa0M7QUFDakUsU0FBTyxXQUFXLEtBQUssb0JBQUFBLFFBQVEsSUFBSSxlQUFlLEtBQUssSUFBSSxLQUFLLEVBQUUsWUFBWSxDQUFDO0FBQ2pGO0FBTU8sU0FBUyxzQkFBNEI7QUFDMUMsVUFBSSwyQkFBVyxhQUFhLEdBQUc7QUFDN0Isd0JBQUFBLFFBQVEsWUFBWSxhQUFhO0FBQUEsRUFDbkM7QUFDRjtBQVFBLFNBQVMsa0JBQWtCLFlBQTRCO0FBQ3JELGFBQU8sMEJBQVc7QUFBQSxJQUNoQixTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsSUFDVixhQUFhO0FBQUEsRUFDZixDQUFDLEVBQUUsWUFBWTtBQUNqQjsiLCJuYW1lcyI6WyJwcm9jZXNzIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnYtdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTaGFyZWQgZW52aXJvbm1lbnQtdmFyaWFibGUgb2ZmIHN3aXRjaGVzIGZvciB0aGUgQ0xJIHNjcmlwdHMuXG4gKlxuICogRXZlcnkgbnBtIHNjcmlwdCBjYW4gYmUgc2tpcHBlZCBieSBzZXR0aW5nIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGFmdGVyIGl0IOKAlCB0aGUgc2NyaXB0IG5hbWVcbiAqIHVwcGVyY2FzZWQsIHdpdGggZXZlcnkgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgcmVwbGFjZWQgYnkgYF9gOlxuICpcbiAqIHwgU2NyaXB0ICAgICAgICAgICAgICB8IFN3aXRjaCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IGBsaW50YCAgICAgICAgICAgICAgfCBgTElOVD0wYCAgICAgICAgICAgIHxcbiAqIHwgYGxpbnQ6bWQ6Zml4YCAgICAgICB8IGBMSU5UX01EX0ZJWD0wYCAgICAgfFxuICogfCBgZm9ybWF0OmNoZWNrYCAgICAgIHwgYEZPUk1BVF9DSEVDSz0wYCAgICB8XG4gKiB8IGBmaW5kLW92ZXJleHBvc2VkYCAgfCBgRklORF9PVkVSRVhQT1NFRD0wYHxcbiAqXG4gKiBUaGlzIG1pcnJvcnMgdGhlIHByZS1leGlzdGluZyBgTkFOT19TVEFHRUQ9MGAgLyBgSFVTS1k9MGAgZXNjYXBlIGhhdGNoZXMsIGFuZCByZXVzZXMgdGhlaXIgbm90aW9uIG9mIGFuXG4gKiBcIm9mZlwiIHZhbHVlLCBzbyB0aGVyZSBpcyBhIHNpbmdsZSBhbnN3ZXIgdG8gd2hhdCBjb3VudHMgYXMgb2ZmIGFjcm9zcyB0aGUgd2hvbGUgdG9vbCBzZXQuXG4gKi9cblxuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBUaGUgdmFsdWVzIHRoYXQgc3dpdGNoIGEgdmFyaWFibGUgb2ZmLiBBbnl0aGluZyBlbHNlIOKAlCBpbmNsdWRpbmcgYW4gdW5zZXQgdmFyaWFibGUg4oCUIGxlYXZlcyBpdCBvbiwgc28gdGhlXG4gKiBkZWZhdWx0IGlzIGFsd2F5cyBcInJ1biB0aGUgc2NyaXB0XCIuXG4gKi9cbmNvbnN0IE9GRl9WQUxVRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnMCcsICdmYWxzZScsICdubycsICdvZmYnXSk7XG5cbi8qKlxuICogVGhlIG9wdGlvbmFsIHBlci1kZXZlbG9wZXIgZW52aXJvbm1lbnQgZmlsZS4gTG9hZGVkIHZpYSBOb2RlJ3Mgb3duIGBwcm9jZXNzLmxvYWRFbnZGaWxlYCwgc28gaXQgYmVoYXZlc1xuICogdGhlIHNhbWUgb24gZXZlcnkgcGxhdGZvcm0gYW5kIHNoZWxsLlxuICovXG5jb25zdCBFTlZfRklMRV9QQVRIID0gJy5lbnYnO1xuXG4vKipcbiAqIE1hdGNoZXMgZXZlcnkgcnVuIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYXBwZWFyIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUuXG4gKi9cbmNvbnN0IE5PTl9BTFBIQU5VTUVSSUNfUkVHX0VYUCA9IC9bXmEtejAtOV0rL2dpO1xuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBucG0gc2V0cyB0byB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IGl0IGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG5jb25zdCBOUE1fU0NSSVBUX05BTUVfRU5WX1ZBUklBQkxFID0gJ25wbV9saWZlY3ljbGVfZXZlbnQnO1xuXG4vKipcbiAqIEV4aXRzIHRoZSBwcm9jZXNzIHN1Y2Nlc3NmdWxseSwgYmVmb3JlIGFueSB3b3JrLCB3aGVuIHRoZSBucG0gc2NyaXB0IGN1cnJlbnRseSBydW5uaW5nIGhhcyBiZWVuIHN3aXRjaGVkXG4gKiBvZmY6IGl0IHdyaXRlcyBgU2tpcHBlZCAoPFZBUj4gaXMgb2ZmKS5gIGFuZCBjYWxscyBgcHJvY2Vzcy5leGl0KDApYC5cbiAqXG4gKiBDYWxsIGl0IGZpcnN0IGluIGEgc2NyaXB0IGVudHJ5IHBvaW50IHRoYXQgZG9lcyBub3QgZ28gdGhyb3VnaCBgd3JhcENsaVRhc2tgLCB3aGljaCBhbHJlYWR5IGNhbGxzIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhpdElmU2NyaXB0RGlzYWJsZWQoKTogdm9pZCB7XG4gIGNvbnN0IGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lID0gZ2V0RGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWUoKTtcbiAgaWYgKGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFNraXBwZWQgKCR7ZGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWV9IGlzIG9mZikuXFxuYCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgb2ZmIHN3aXRjaCBmb3IgdGhlIG5wbSBzY3JpcHQgdGhhdCBpcyBjdXJyZW50bHkgcnVubmluZywgbG9hZGluZyB7QGxpbmsgRU5WX0ZJTEVfUEFUSH0gZmlyc3QuXG4gKlxuICogVGhlIHNjcmlwdCBuYW1lIGNvbWVzIGZyb20gbnBtIGl0c2VsZiwgc28gbm8gc2NyaXB0IGhhcyB0byBkZWNsYXJlIGl0cyBvd24gc3dpdGNoLiBXaGVuIHRoZSBzY3JpcHQgd2FzXG4gKiBzdGFydGVkIGRpcmVjdGx5IHJhdGhlciB0aGFuIHRocm91Z2ggbnBtLCB0aGVyZSBpcyBubyBuYW1lIHRvIGRlcml2ZSBmcm9tIGFuZCBub3RoaW5nIGlzIGV2ZXIgc2tpcHBlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBzd2l0Y2hlZCB0aGUgY3VycmVudCBzY3JpcHQgb2ZmLCBvciBgbnVsbGAgd2hlbiB0aGVcbiAqIHNjcmlwdCBzaG91bGQgcnVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWUoKTogbnVsbCB8IHN0cmluZyB7XG4gIGxvYWRFbnZGaWxlSWZFeGlzdHMoKTtcbiAgY29uc3Qgc2NyaXB0TmFtZSA9IHByb2Nlc3MuZW52W05QTV9TQ1JJUFRfTkFNRV9FTlZfVkFSSUFCTEVdO1xuICBpZiAoIXNjcmlwdE5hbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGVudlZhcmlhYmxlTmFtZSA9IHRvRW52VmFyaWFibGVOYW1lKHNjcmlwdE5hbWUpO1xuICByZXR1cm4gaXNFbnZWYXJpYWJsZU9mZihlbnZWYXJpYWJsZU5hbWUpID8gZW52VmFyaWFibGVOYW1lIDogbnVsbDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBhbiBvZmYgdmFsdWUgKGAwYCwgYGZhbHNlYCwgYG5vYCwgb3IgYG9mZmAsXG4gKiBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kIGlnbm9yaW5nIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UpLlxuICpcbiAqIEBwYXJhbSBlbnZWYXJpYWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gYW4gb2ZmIHZhbHVlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW52VmFyaWFibGVPZmYoZW52VmFyaWFibGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIE9GRl9WQUxVRVMuaGFzKChwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVdID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKSk7XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIG9wdGlvbmFsIHtAbGluayBFTlZfRklMRV9QQVRIfSBmaWxlIGludG8gYHByb2Nlc3MuZW52YCB3aGVuIGl0IGV4aXN0cywgc28gYSBkZXZlbG9wZXIgY2FuIHBhcmsgYVxuICogc3dpdGNoIHN1Y2ggYXMgYExJTlRfTUQ9MGAgdGhlcmUgaW5zdGVhZCBvZiBwcmVmaXhpbmcgZXZlcnkgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnZGaWxlSWZFeGlzdHMoKTogdm9pZCB7XG4gIGlmIChleGlzdHNTeW5jKEVOVl9GSUxFX1BBVEgpKSB7XG4gICAgcHJvY2Vzcy5sb2FkRW52RmlsZShFTlZfRklMRV9QQVRIKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG5wbSBzY3JpcHQgbmFtZSBpbnRvIHRoZSBuYW1lIG9mIGl0cyBvZmYgc3dpdGNoLlxuICpcbiAqIEBwYXJhbSBzY3JpcHROYW1lIC0gVGhlIG5wbSBzY3JpcHQgbmFtZSwgZS5nLiBgbGludDptZDpmaXhgLlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUsIGUuZy4gYExJTlRfTURfRklYYC5cbiAqL1xuZnVuY3Rpb24gdG9FbnZWYXJpYWJsZU5hbWUoc2NyaXB0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHNjcmlwdE5hbWUsXG4gICAgcmVwbGFjZXI6ICdfJyxcbiAgICBzZWFyY2hWYWx1ZTogTk9OX0FMUEhBTlVNRVJJQ19SRUdfRVhQXG4gIH0pLnRvVXBwZXJDYXNlKCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEsb0JBQTJCO0FBQzNCLHFCQUEyQjtBQUMzQiwwQkFBb0I7QUFNcEIsTUFBTSxhQUFrQyxvQkFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLE1BQU0sS0FBSyxDQUFDO0FBTTNFLE1BQU0sZ0JBQWdCO0FBS3RCLE1BQU0sMkJBQTJCO0FBS2pDLE1BQU0sK0JBQStCO0FBUTlCLFNBQVMsdUJBQTZCO0FBQzNDLFFBQU0sZ0NBQWdDLGlDQUFpQztBQUN2RSxNQUFJLGtDQUFrQyxNQUFNO0FBQzFDO0FBQUEsRUFDRjtBQUVBLHNCQUFBQSxRQUFRLE9BQU8sTUFBTSxZQUFZLDZCQUE2QjtBQUFBLENBQWE7QUFDM0Usc0JBQUFBLFFBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBV08sU0FBUyxtQ0FBa0Q7QUFDaEUsc0JBQW9CO0FBQ3BCLFFBQU0sYUFBYSxvQkFBQUEsUUFBUSxJQUFJLDRCQUE0QjtBQUMzRCxNQUFJLENBQUMsWUFBWTtBQUNmLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxrQkFBa0Isa0JBQWtCLFVBQVU7QUFDcEQsU0FBTyxpQkFBaUIsZUFBZSxJQUFJLGtCQUFrQjtBQUMvRDtBQVNPLFNBQVMsaUJBQWlCLGlCQUFrQztBQUNqRSxTQUFPLFdBQVcsS0FBSyxvQkFBQUEsUUFBUSxJQUFJLGVBQWUsS0FBSyxJQUFJLEtBQUssRUFBRSxZQUFZLENBQUM7QUFDakY7QUFNTyxTQUFTLHNCQUE0QjtBQUMxQyxVQUFJLDJCQUFXLGFBQWEsR0FBRztBQUM3Qix3QkFBQUEsUUFBUSxZQUFZLGFBQWE7QUFBQSxFQUNuQztBQUNGO0FBUUEsU0FBUyxrQkFBa0IsWUFBNEI7QUFDckQsYUFBTywwQkFBVztBQUFBLElBQ2hCLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUMsRUFBRSxZQUFZO0FBQ2pCOyIsIm5hbWVzIjpbInByb2Nlc3MiXX0=
@@ -17,6 +17,13 @@
17
17
  * This mirrors the pre-existing `NANO_STAGED=0` / `HUSKY=0` escape hatches, and reuses their notion of an
18
18
  * "off" value, so there is a single answer to what counts as off across the whole tool set.
19
19
  */
20
+ /**
21
+ * Exits the process successfully, before any work, when the npm script currently running has been switched
22
+ * off: it writes `Skipped (<VAR> is off).` and calls `process.exit(0)`.
23
+ *
24
+ * Call it first in a script entry point that does not go through `wrapCliTask`, which already calls it.
25
+ */
26
+ export declare function exitIfScriptDisabled(): void;
20
27
  /**
21
28
  * Resolves the off switch for the npm script that is currently running, loading {@link ENV_FILE_PATH} first.
22
29
  *
@@ -23,9 +23,12 @@ var __copyProps = (to, from, except, desc) => {
23
23
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
24
  var git_exports = {};
25
25
  __export(git_exports, {
26
- getNonIgnoredFiles: () => getNonIgnoredFiles
26
+ getNonIgnoredFiles: () => getNonIgnoredFiles,
27
+ readIndexContent: () => readIndexContent
27
28
  });
28
29
  module.exports = __toCommonJS(git_exports);
30
+ var import_node_buffer = require('node:buffer');
31
+ var import_node_child_process = require('node:child_process');
29
32
  var import_root = require('./root.cjs');
30
33
  const NUL_SEPARATOR = "\0";
31
34
  async function getNonIgnoredFiles(options) {
@@ -47,8 +50,44 @@ async function getNonIgnoredFiles(options) {
47
50
  }
48
51
  return [...new Set(stdout.split(NUL_SEPARATOR).filter((path) => path !== ""))];
49
52
  }
53
+ function readIndexContent(root, repoRelativePath) {
54
+ return new Promise((resolve, reject) => {
55
+ const child = (0, import_node_child_process.spawn)("git", ["-C", root, "cat-file", "blob", `:./${repoRelativePath}`], {
56
+ stdio: ["ignore", "pipe", "pipe"],
57
+ windowsHide: true
58
+ });
59
+ const chunks = [];
60
+ let stderr = "";
61
+ child.stdout.on("data", (chunk) => {
62
+ chunks.push(chunk);
63
+ });
64
+ child.stderr.on("data", (chunk) => {
65
+ stderr += chunk.toString("utf-8");
66
+ });
67
+ child.on("error", (error) => {
68
+ reject(new Error(`Could not run \`git cat-file\` for ${repoRelativePath}.`, { cause: error }));
69
+ });
70
+ child.on("close", (exitCode) => {
71
+ if (exitCode === 0) {
72
+ resolve(import_node_buffer.Buffer.concat(chunks));
73
+ return;
74
+ }
75
+ if (isMissingIndexPath(stderr)) {
76
+ resolve(null);
77
+ return;
78
+ }
79
+ const exitCodeText = exitCode === null ? "(null)" : String(exitCode);
80
+ reject(new Error(`\`git cat-file blob :./${repoRelativePath}\` failed with exit code ${exitCodeText}:
81
+ ${stderr.trim()}`));
82
+ });
83
+ });
84
+ }
85
+ function isMissingIndexPath(stderr) {
86
+ return stderr.includes("does not exist") || stderr.includes("not in the index") || stderr.includes("Not a valid object name");
87
+ }
50
88
  // Annotate the CommonJS export names for ESM import in node:
51
89
  0 && (module.exports = {
52
- getNonIgnoredFiles
90
+ getNonIgnoredFiles,
91
+ readIndexContent
53
92
  });
54
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dpdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEdpdC1kZXJpdmVkIGZpbGUgbGlzdGluZ3MgZm9yIHRoZSByZXBvLXdhbGtpbmcgc2NyaXB0cy5cbiAqXG4gKiBUb29saW5nIHRoYXQgd2Fsa3MgdGhlIHJlcG9zaXRvcnkgbXVzdCBza2lwIHdoYXRldmVyIGAuZ2l0aWdub3JlYCBza2lwcyBcdTIwMTQgb3RoZXJ3aXNlIGV2ZXJ5IHNjcmlwdCBncm93cyBpdHNcbiAqIG93biBoYW5kLW1haW50YWluZWQgaWdub3JlIGxpc3QsIHRoZSBsaXN0cyBkcmlmdCBhcGFydCwgYW5kIGEgcGF0aCB0aGF0IGlzIGdpdGlnbm9yZWQgYnV0IG5vdCBlbnVtZXJhdGVkXG4gKiAoYSBuZXN0ZWQgYG5vZGVfbW9kdWxlc2AgdW5kZXIgYSB0ZXN0IGZpeHR1cmUsIHNheSkgaXMgd2Fsa2VkIGFueXdheS4gTW9zdCB0b29scyBoYXZlIGEgbmF0aXZlIHN3aXRjaCBmb3JcbiAqIHRoaXM7IHRoZSBvbmVzIHRoYXQgZG8gbm90IHRha2UgYSBmaWxlIGxpc3QgaW5zdGVhZCwgYW5kIHRoYXQgaXMgd2hhdCB0aGlzIG1vZHVsZSBwcm9kdWNlcy5cbiAqXG4gKiBBc2tpbmcgZ2l0IHJhdGhlciB0aGFuIHBhcnNpbmcgYC5naXRpZ25vcmVgIGlzIGRlbGliZXJhdGU6IGl0IGhvbm9ycyBuZXN0ZWQgaWdub3JlIGZpbGVzLCBgIWAgbmVnYXRpb25zLFxuICogYC5naXQvaW5mby9leGNsdWRlYCwgYW5kIHRoZSB1c2VyJ3MgZ2xvYmFsIGV4Y2x1ZGVzLCBhdCBubyBjb3N0IHRvIHVzLlxuICovXG5cbmltcG9ydCB7IGV4ZWNGcm9tUm9vdCB9IGZyb20gJy4vcm9vdC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGdldE5vbklnbm9yZWRGaWxlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Tm9uSWdub3JlZEZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBHaXQgcGF0aHNwZWNzIGxpbWl0aW5nIHRoZSBsaXN0aW5nLCBlLmcuIGBbJyoubWQnXWAuIFdoZW4gb21pdHRlZCwgZXZlcnkgbm9uLWlnbm9yZWQgZmlsZSBpcyBsaXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbXWBcbiAgICovXG4gIHJlYWRvbmx5IHBhdHRlcm5zPzogcmVhZG9ubHkgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogU2VwYXJhdGVzIHRoZSBwYXRocyBpbiBgZ2l0IGxzLWZpbGVzIC16YCBvdXRwdXQuIFVzaW5nIHRoZSBOVUwgZm9ybSBhdm9pZHMgZ2l0J3MgcXVvdGluZyBvZiBwYXRocyB0aGF0XG4gKiBjb250YWluIHVudXN1YWwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gYmUgdW5lc2NhcGVkLlxuICovXG5jb25zdCBOVUxfU0VQQVJBVE9SID0gJ1xcMCc7XG5cbi8qKlxuICogTGlzdHMgdGhlIHJlcG9zaXRvcnkgZmlsZXMgdGhhdCBgLmdpdGlnbm9yZWAgZG9lcyBub3QgZXhjbHVkZS5cbiAqXG4gKiBDb3ZlcnMgYm90aCB0cmFja2VkIGZpbGVzIGFuZCB1bnRyYWNrZWQtYnV0LW5vdC1pZ25vcmVkIG9uZXMsIHNvIGEgYnJhbmQtbmV3IGZpbGUgaXMgY2hlY2tlZCBiZWZvcmUgaXQgaXNcbiAqIGV2ZXIgY29tbWl0dGVkLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBHZXROb25JZ25vcmVkRmlsZXNPcHRpb25zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWF0Y2hpbmcgcGF0aHMsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlciBhbmRcbiAqIHNlcGFyYXRlZCBieSBgL2A7IG9yIHdpdGggYG51bGxgIHdoZW4gZ2l0IGNhbm5vdCBhbnN3ZXIgXHUyMDE0IGl0IGlzIG5vdCBpbnN0YWxsZWQsIG9yIHRoZSBwcm9qZWN0IGlzIG5vdCBhXG4gKiBnaXQgcmVwb3NpdG9yeSAoYSB0YXJiYWxsIGNoZWNrb3V0LCBmb3IgaW5zdGFuY2UpLiBDYWxsZXJzIGZhbGwgYmFjayB0byB0aGVpciBvd24gbGlzdGluZyBpbiB0aGF0IGNhc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXROb25JZ25vcmVkRmlsZXMob3B0aW9ucz86IEdldE5vbklnbm9yZWRGaWxlc09wdGlvbnMpOiBQcm9taXNlPG51bGwgfCBzdHJpbmdbXT4ge1xuICBjb25zdCB7IHBhdHRlcm5zID0gW10gfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgJ2dpdCcsXG4gICAgJ2xzLWZpbGVzJyxcbiAgICAnLS1jYWNoZWQnLFxuICAgICctLW90aGVycycsXG4gICAgJy0tZXhjbHVkZS1zdGFuZGFyZCcsXG4gICAgJy16JyxcbiAgICAuLi5wYXR0ZXJucy5sZW5ndGggPiAwID8gWyctLScsIC4uLnBhdHRlcm5zXSA6IFtdXG4gIF07XG5cbiAgbGV0IHN0ZG91dDogc3RyaW5nO1xuICB0cnkge1xuICAgIHN0ZG91dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChjb21tYW5kLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gYC0tY2FjaGVkIC0tb3RoZXJzYCBjYW4gbmFtZSB0aGUgc2FtZSBwYXRoIHR3aWNlIChlLmcuIGEgZmlsZSBzdGFnZWQgZm9yIGRlbGV0aW9uIHRoYXQgaXMgc3RpbGwgb24gZGlzaykuXG4gIHJldHVybiBbLi4ubmV3IFNldChzdGRvdXQuc3BsaXQoTlVMX1NFUEFSQVRPUikuZmlsdGVyKChwYXRoKSA9PiBwYXRoICE9PSAnJykpXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLGtCQUE2QjtBQWtCN0IsTUFBTSxnQkFBZ0I7QUFhdEIsZUFBc0IsbUJBQW1CLFNBQStEO0FBQ3RHLFFBQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLFdBQVcsQ0FBQztBQUN0QyxRQUFNLFVBQVU7QUFBQSxJQUNkO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUcsU0FBUyxTQUFTLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxJQUFJLENBQUM7QUFBQSxFQUNsRDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxVQUFNLDBCQUFhLFNBQVMsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQ3hELFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxPQUFPLE1BQU0sYUFBYSxFQUFFLE9BQU8sQ0FBQyxTQUFTLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDL0U7IiwKICAibmFtZXMiOiBbXQp9Cg==
93
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dpdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEdpdC1kZXJpdmVkIGZpbGUgbGlzdGluZ3MgZm9yIHRoZSByZXBvLXdhbGtpbmcgc2NyaXB0cy5cbiAqXG4gKiBUb29saW5nIHRoYXQgd2Fsa3MgdGhlIHJlcG9zaXRvcnkgbXVzdCBza2lwIHdoYXRldmVyIGAuZ2l0aWdub3JlYCBza2lwcyBcdTIwMTQgb3RoZXJ3aXNlIGV2ZXJ5IHNjcmlwdCBncm93cyBpdHNcbiAqIG93biBoYW5kLW1haW50YWluZWQgaWdub3JlIGxpc3QsIHRoZSBsaXN0cyBkcmlmdCBhcGFydCwgYW5kIGEgcGF0aCB0aGF0IGlzIGdpdGlnbm9yZWQgYnV0IG5vdCBlbnVtZXJhdGVkXG4gKiAoYSBuZXN0ZWQgYG5vZGVfbW9kdWxlc2AgdW5kZXIgYSB0ZXN0IGZpeHR1cmUsIHNheSkgaXMgd2Fsa2VkIGFueXdheS4gTW9zdCB0b29scyBoYXZlIGEgbmF0aXZlIHN3aXRjaCBmb3JcbiAqIHRoaXM7IHRoZSBvbmVzIHRoYXQgZG8gbm90IHRha2UgYSBmaWxlIGxpc3QgaW5zdGVhZCwgYW5kIHRoYXQgaXMgd2hhdCB0aGlzIG1vZHVsZSBwcm9kdWNlcy5cbiAqXG4gKiBBc2tpbmcgZ2l0IHJhdGhlciB0aGFuIHBhcnNpbmcgYC5naXRpZ25vcmVgIGlzIGRlbGliZXJhdGU6IGl0IGhvbm9ycyBuZXN0ZWQgaWdub3JlIGZpbGVzLCBgIWAgbmVnYXRpb25zLFxuICogYC5naXQvaW5mby9leGNsdWRlYCwgYW5kIHRoZSB1c2VyJ3MgZ2xvYmFsIGV4Y2x1ZGVzLCBhdCBubyBjb3N0IHRvIHVzLlxuICpcbiAqIEl0IGFsc28gcmVhZHMgYSB0cmFja2VkIGZpbGUgYXMgaXQgaXMgYWJvdXQgdG8gYmUgQ09NTUlUVEVEICh7QGxpbmsgcmVhZEluZGV4Q29udGVudH0pLCBmb3IgYSBnYXRlIHRoYXRcbiAqIGFzc2VydHMgc29tZXRoaW5nIGFib3V0IHRob3NlIGJ5dGVzLiBTdWNoIGEgZ2F0ZSB0eXBpY2FsbHkgcnVucyBmcm9tIGBuYW5vLXN0YWdlZGAgYmVzaWRlIGBsaW50OmZpeGAgYW5kXG4gKiBgZm9ybWF0YCwgd2hpY2ggcmV3cml0ZSBzdGFnZWQgZmlsZXMgaW4gcGxhY2UsIGFuZCBuYW5vLXN0YWdlZCBydW5zIGl0cyBwZXItcGF0dGVybiB0YXNrIGdyb3VwcyB3aXRoXG4gKiBgUHJvbWlzZS5hbGxgLCBzbyBhIGdhdGUgcmVhZGluZyB0aGUgd29ya2luZyB0cmVlIHJhY2VzIHRoZSBmaXhlci4gUmVhZGluZyB0aGUgaW5kZXggbWFrZXMgdGhlIG9yZGVyaW5nXG4gKiBpcnJlbGV2YW50IHJhdGhlciB0aGFuIGVuZm9yY2VkLlxuICovXG5cbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgZXhlY0Zyb21Sb290IH0gZnJvbSAnLi9yb290LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Tm9uSWdub3JlZEZpbGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXROb25JZ25vcmVkRmlsZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEdpdCBwYXRoc3BlY3MgbGltaXRpbmcgdGhlIGxpc3RpbmcsIGUuZy4gYFsnKi5tZCddYC4gV2hlbiBvbWl0dGVkLCBldmVyeSBub24taWdub3JlZCBmaWxlIGlzIGxpc3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYFtdYFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybnM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTZXBhcmF0ZXMgdGhlIHBhdGhzIGluIGBnaXQgbHMtZmlsZXMgLXpgIG91dHB1dC4gVXNpbmcgdGhlIE5VTCBmb3JtIGF2b2lkcyBnaXQncyBxdW90aW5nIG9mIHBhdGhzIHRoYXRcbiAqIGNvbnRhaW4gdW51c3VhbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0byBiZSB1bmVzY2FwZWQuXG4gKi9cbmNvbnN0IE5VTF9TRVBBUkFUT1IgPSAnXFwwJztcblxuLyoqXG4gKiBMaXN0cyB0aGUgcmVwb3NpdG9yeSBmaWxlcyB0aGF0IGAuZ2l0aWdub3JlYCBkb2VzIG5vdCBleGNsdWRlLlxuICpcbiAqIENvdmVycyBib3RoIHRyYWNrZWQgZmlsZXMgYW5kIHVudHJhY2tlZC1idXQtbm90LWlnbm9yZWQgb25lcywgc28gYSBicmFuZC1uZXcgZmlsZSBpcyBjaGVja2VkIGJlZm9yZSBpdCBpc1xuICogZXZlciBjb21taXR0ZWQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEdldE5vbklnbm9yZWRGaWxlc09wdGlvbnN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBtYXRjaGluZyBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyIGFuZFxuICogc2VwYXJhdGVkIGJ5IGAvYDsgb3Igd2l0aCBgbnVsbGAgd2hlbiBnaXQgY2Fubm90IGFuc3dlciBcdTIwMTQgaXQgaXMgbm90IGluc3RhbGxlZCwgb3IgdGhlIHByb2plY3QgaXMgbm90IGFcbiAqIGdpdCByZXBvc2l0b3J5IChhIHRhcmJhbGwgY2hlY2tvdXQsIGZvciBpbnN0YW5jZSkuIENhbGxlcnMgZmFsbCBiYWNrIHRvIHRoZWlyIG93biBsaXN0aW5nIGluIHRoYXQgY2FzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5vbklnbm9yZWRGaWxlcyhvcHRpb25zPzogR2V0Tm9uSWdub3JlZEZpbGVzT3B0aW9ucyk6IFByb21pc2U8bnVsbCB8IHN0cmluZ1tdPiB7XG4gIGNvbnN0IHsgcGF0dGVybnMgPSBbXSB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAnZ2l0JyxcbiAgICAnbHMtZmlsZXMnLFxuICAgICctLWNhY2hlZCcsXG4gICAgJy0tb3RoZXJzJyxcbiAgICAnLS1leGNsdWRlLXN0YW5kYXJkJyxcbiAgICAnLXonLFxuICAgIC4uLnBhdHRlcm5zLmxlbmd0aCA+IDAgPyBbJy0tJywgLi4ucGF0dGVybnNdIDogW11cbiAgXTtcblxuICBsZXQgc3Rkb3V0OiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgc3Rkb3V0ID0gYXdhaXQgZXhlY0Zyb21Sb290KGNvbW1hbmQsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBgLS1jYWNoZWQgLS1vdGhlcnNgIGNhbiBuYW1lIHRoZSBzYW1lIHBhdGggdHdpY2UgKGUuZy4gYSBmaWxlIHN0YWdlZCBmb3IgZGVsZXRpb24gdGhhdCBpcyBzdGlsbCBvbiBkaXNrKS5cbiAgcmV0dXJuIFsuLi5uZXcgU2V0KHN0ZG91dC5zcGxpdChOVUxfU0VQQVJBVE9SKS5maWx0ZXIoKHBhdGgpID0+IHBhdGggIT09ICcnKSldO1xufVxuXG4vKipcbiAqIFJlYWRzIG9uZSB0cmFja2VkIGZpbGUncyBjb250ZW50IG91dCBvZiB0aGUgZ2l0IGluZGV4IC0gc3RhZ2UgMCwgdGhlIGJ5dGVzIGBnaXQgY29tbWl0YCB3b3VsZCB3cml0ZS5cbiAqXG4gKiBUaGlzIHNwYXducyBgZ2l0YCBkaXJlY3RseSByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoIGBleGVjRnJvbVJvb3RgLCBmb3IgdHdvIHJlYXNvbnMsIGVpdGhlciBvZiB3aGljaCBhbG9uZVxuICogd291bGQgYmUgZW5vdWdoOiBgZXhlY0Zyb21Sb290YCBkZWNvZGVzIHN0ZG91dCBhcyBVVEYtOCwgd2hpY2ggYSBiaW5hcnkgYmxvYiBkb2VzIG5vdCBzdXJ2aXZlLCBhbmQgaXQgc3RyaXBzXG4gKiBvbmUgdHJhaWxpbmcgbmV3bGluZSwgc28gZXZlcnkgdGV4dCBmaWxlIHdvdWxkIHJlYWQgYXMgZGlmZmVyaW5nIGZyb20gaXRzIHNvdXJjZSBieSBpdHMgbGFzdCBsaW5lLlxuICpcbiAqIFRoZSBwYXRoIGlzIHBhc3NlZCBpbiB0aGUgYDouLzxwYXRoPmAgZm9ybSwgd2hpY2ggZ2l0IHJlc29sdmVzIGFnYWluc3QgdGhlIGRpcmVjdG9yeSBpdCBydW5zIGZyb20gcmF0aGVyXG4gKiB0aGFuIGFnYWluc3QgdGhlIHRvcCBvZiB0aGUgd29ya2luZyB0cmVlLCBzbyB0aGlzIHN0YXlzIGNvcnJlY3Qgd2hlbiBgcm9vdGAgaXMgYSBzdWJwYWNrYWdlIG9mIHRoZVxuICogcmVwb3NpdG9yeSByYXRoZXIgdGhhbiBpdHMgdG9wLlxuICpcbiAqIE5vIHNtdWRnZSBmaWx0ZXIgb3IgbGluZS1lbmRpbmcgY29udmVyc2lvbiBpcyBhcHBsaWVkOiBgZ2l0IGNhdC1maWxlIGJsb2JgIGhhbmRzIHRoZSBibG9iIGJhY2sgdmVyYmF0aW0uXG4gKlxuICogQHBhcmFtIHJvb3QgLSBUaGUgZGlyZWN0b3J5IHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvLCB3aGljaCBpcyBhbHNvIHRoZSBkaXJlY3RvcnkgZ2l0IGlzIHJ1biBmcm9tLlxuICogQHBhcmFtIHJlcG9SZWxhdGl2ZVBhdGggLSBUaGUgZmlsZSdzIHBhdGggcmVsYXRpdmUgdG8gYHJvb3RgLCBwb3NpeC1zcGVsbGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzdGFnZWQgYnl0ZXMsIG9yIHdpdGggYG51bGxgIHdoZW4gdGhlIHBhdGggaGFzIG5vIHN0YWdlLTBcbiAqIGluZGV4IGVudHJ5IC0gaXQgaXMgdW50cmFja2VkLCBzdGFnZWQgZm9yIGRlbGV0aW9uLCBvciB1bm1lcmdlZC4gSXQgcmVqZWN0cyBvbiBhbnkgb3RoZXIgZ2l0IGZhaWx1cmUsIGBub3QgYVxuICogZ2l0IHJlcG9zaXRvcnlgIGFtb25nIHRoZW0sIGJlY2F1c2UgdGhlIGJ5dGVzIGEgY29tbWl0IHdvdWxkIHdyaXRlIGhhdmUgbm8gaG9uZXN0IGFuc3dlciB3aGVyZSB0aGVyZSBhcmUgbm9cbiAqIGNvbW1pdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSW5kZXhDb250ZW50KHJvb3Q6IHN0cmluZywgcmVwb1JlbGF0aXZlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLypcbiAgICAgKiBObyBzaGVsbDogYSBwYXRoIGlzIHBhc3NlZCBhcyBhbiBhcmd2IGVudHJ5IHJhdGhlciB0aGFuIGFzIHRleHQgc29tZXRoaW5nIGhhcyB0byBxdW90ZSwgYW5kIHRoZVxuICAgICAqIGxlYWRpbmcgYDpgIGlzIGEgZ2l0IHJldmlzaW9uIHNpZ2lsIHRoYXQgYSBzaGVsbCB3b3VsZCBiZSBmcmVlIHRvIHJlYWQgYXMgaXRzIG93bi5cbiAgICAgKi9cbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKCdnaXQnLCBbJy1DJywgcm9vdCwgJ2NhdC1maWxlJywgJ2Jsb2InLCBgOi4vJHtyZXBvUmVsYXRpdmVQYXRofWBdLCB7XG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgICB3aW5kb3dzSGlkZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuICAgIGxldCBzdGRlcnIgPSAnJztcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIChjaHVuazogQnVmZmVyKSA9PiB7XG4gICAgICBjaHVua3MucHVzaChjaHVuayk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoY2h1bms6IEJ1ZmZlcikgPT4ge1xuICAgICAgc3RkZXJyICs9IGNodW5rLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ291bGQgbm90IHJ1biBcXGBnaXQgY2F0LWZpbGVcXGAgZm9yICR7cmVwb1JlbGF0aXZlUGF0aH0uYCwgeyBjYXVzZTogZXJyb3IgfSkpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoZXhpdENvZGUgPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZShCdWZmZXIuY29uY2F0KGNodW5rcykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICAgKiBHaXQgYW5zd2VycyBhIHBhdGggaXQgY2Fubm90IGZpbmQgaW4gdGhlIGluZGV4IHdpdGggZXhpdCAxMjggYW5kIGEgYGZhdGFsOmAgbGluZSwgYW5kIHNvIGRvZXMgYSBmb2xkZXJcbiAgICAgICAqIHRoYXQgaXMgbm90IGEgcmVwb3NpdG9yeSwgc28gdGhlIHN0ZGVyciB0ZXh0IGlzIHdoYXQgc2VwYXJhdGVzIHRoZSBhYnNlbmNlIG9mIGEgc3RhZ2VkIGJsb2IgZnJvbVxuICAgICAgICogZXZlcnl0aGluZyBlbHNlLlxuICAgICAgICovXG4gICAgICBpZiAoaXNNaXNzaW5nSW5kZXhQYXRoKHN0ZGVycikpIHtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleGl0Q29kZVRleHQgPSBleGl0Q29kZSA9PT0gbnVsbCA/ICcobnVsbCknIDogU3RyaW5nKGV4aXRDb2RlKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYFxcYGdpdCBjYXQtZmlsZSBibG9iIDouLyR7cmVwb1JlbGF0aXZlUGF0aH1cXGAgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGVUZXh0fTpcXG4ke3N0ZGVyci50cmltKCl9YCkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNNaXNzaW5nSW5kZXhQYXRoKHN0ZGVycjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGRlcnIuaW5jbHVkZXMoJ2RvZXMgbm90IGV4aXN0JykgfHwgc3RkZXJyLmluY2x1ZGVzKCdub3QgaW4gdGhlIGluZGV4JykgfHwgc3RkZXJyLmluY2x1ZGVzKCdOb3QgYSB2YWxpZCBvYmplY3QgbmFtZScpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQkEseUJBQXVCO0FBQ3ZCLGdDQUFzQjtBQUV0QixrQkFBNkI7QUFrQjdCLE1BQU0sZ0JBQWdCO0FBYXRCLGVBQXNCLG1CQUFtQixTQUErRDtBQUN0RyxRQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxXQUFXLENBQUM7QUFDdEMsUUFBTSxVQUFVO0FBQUEsSUFDZDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHLFNBQVMsU0FBUyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsSUFBSSxDQUFDO0FBQUEsRUFDbEQ7QUFFQSxNQUFJO0FBQ0osTUFBSTtBQUNGLGFBQVMsVUFBTSwwQkFBYSxTQUFTLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFBQSxFQUN4RCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFHQSxTQUFPLENBQUMsR0FBRyxJQUFJLElBQUksT0FBTyxNQUFNLGFBQWEsRUFBRSxPQUFPLENBQUMsU0FBUyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQy9FO0FBc0JPLFNBQVMsaUJBQWlCLE1BQWMsa0JBQWtEO0FBQy9GLFNBQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBS3RDLFVBQU0sWUFBUSxpQ0FBTSxPQUFPLENBQUMsTUFBTSxNQUFNLFlBQVksUUFBUSxNQUFNLGdCQUFnQixFQUFFLEdBQUc7QUFBQSxNQUNyRixPQUFPLENBQUMsVUFBVSxRQUFRLE1BQU07QUFBQSxNQUNoQyxhQUFhO0FBQUEsSUFDZixDQUFDO0FBRUQsVUFBTSxTQUFtQixDQUFDO0FBQzFCLFFBQUksU0FBUztBQUViLFVBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFrQjtBQUN6QyxhQUFPLEtBQUssS0FBSztBQUFBLElBQ25CLENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBa0I7QUFDekMsZ0JBQVUsTUFBTSxTQUFTLE9BQU87QUFBQSxJQUNsQyxDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFpQjtBQUNsQyxhQUFPLElBQUksTUFBTSxzQ0FBc0MsZ0JBQWdCLEtBQUssRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFDL0YsQ0FBQztBQUVELFVBQU0sR0FBRyxTQUFTLENBQUMsYUFBNEI7QUFDN0MsVUFBSSxhQUFhLEdBQUc7QUFDbEIsZ0JBQVEsMEJBQU8sT0FBTyxNQUFNLENBQUM7QUFDN0I7QUFBQSxNQUNGO0FBT0EsVUFBSSxtQkFBbUIsTUFBTSxHQUFHO0FBQzlCLGdCQUFRLElBQUk7QUFDWjtBQUFBLE1BQ0Y7QUFFQSxZQUFNLGVBQWUsYUFBYSxPQUFPLFdBQVcsT0FBTyxRQUFRO0FBQ25FLGFBQU8sSUFBSSxNQUFNLDBCQUEwQixnQkFBZ0IsNEJBQTRCLFlBQVk7QUFBQSxFQUFNLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUFBLElBQzNILENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQUVBLFNBQVMsbUJBQW1CLFFBQXlCO0FBQ25ELFNBQU8sT0FBTyxTQUFTLGdCQUFnQixLQUFLLE9BQU8sU0FBUyxrQkFBa0IsS0FBSyxPQUFPLFNBQVMseUJBQXlCO0FBQzlIOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,4 +1,5 @@
1
1
  /// <reference path="./library-references.d.cts" />
2
+ /// <reference types="node" />
2
3
  /**
3
4
  * @file
4
5
  *
@@ -11,7 +12,14 @@
11
12
  *
12
13
  * Asking git rather than parsing `.gitignore` is deliberate: it honors nested ignore files, `!` negations,
13
14
  * `.git/info/exclude`, and the user's global excludes, at no cost to us.
15
+ *
16
+ * It also reads a tracked file as it is about to be COMMITTED ({@link readIndexContent}), for a gate that
17
+ * asserts something about those bytes. Such a gate typically runs from `nano-staged` beside `lint:fix` and
18
+ * `format`, which rewrite staged files in place, and nano-staged runs its per-pattern task groups with
19
+ * `Promise.all`, so a gate reading the working tree races the fixer. Reading the index makes the ordering
20
+ * irrelevant rather than enforced.
14
21
  */
22
+ import { Buffer } from 'node:buffer';
15
23
  /**
16
24
  * Options for {@link getNonIgnoredFiles}.
17
25
  */
@@ -35,3 +43,24 @@ export interface GetNonIgnoredFilesOptions {
35
43
  * git repository (a tarball checkout, for instance). Callers fall back to their own listing in that case.
36
44
  */
37
45
  export declare function getNonIgnoredFiles(options?: GetNonIgnoredFilesOptions): Promise<null | string[]>;
46
+ /**
47
+ * Reads one tracked file's content out of the git index - stage 0, the bytes `git commit` would write.
48
+ *
49
+ * This spawns `git` directly rather than going through `execFromRoot`, for two reasons, either of which alone
50
+ * would be enough: `execFromRoot` decodes stdout as UTF-8, which a binary blob does not survive, and it strips
51
+ * one trailing newline, so every text file would read as differing from its source by its last line.
52
+ *
53
+ * The path is passed in the `:./<path>` form, which git resolves against the directory it runs from rather
54
+ * than against the top of the working tree, so this stays correct when `root` is a subpackage of the
55
+ * repository rather than its top.
56
+ *
57
+ * No smudge filter or line-ending conversion is applied: `git cat-file blob` hands the blob back verbatim.
58
+ *
59
+ * @param root - The directory the path is relative to, which is also the directory git is run from.
60
+ * @param repoRelativePath - The file's path relative to `root`, posix-spelled.
61
+ * @returns A {@link Promise} that resolves with the staged bytes, or with `null` when the path has no stage-0
62
+ * index entry - it is untracked, staged for deletion, or unmerged. It rejects on any other git failure, `not a
63
+ * git repository` among them, because the bytes a commit would write have no honest answer where there are no
64
+ * commits.
65
+ */
66
+ export declare function readIndexContent(root: string, repoRelativePath: string): Promise<Buffer | null>;
@@ -71,7 +71,7 @@ var import_repo_paths = require('../repo-paths.cjs');
71
71
  var import_root = require('../root.cjs');
72
72
  var import_markdownlint_ignores = require('./markdownlint-ignores.cjs');
73
73
  async function lint(options) {
74
- const { defaultConfigFilePath, paths, shouldFix = false } = options ?? {};
74
+ const { defaultConfigFilePath, linkCheckExcludeGlobs = [], paths, shouldFix = false } = options ?? {};
75
75
  const configFiles = [
76
76
  import_repo_paths.RepoPaths.MarkdownlintCli2ConfigJsonc,
77
77
  import_repo_paths.RepoPaths.MarkdownlintCli2ConfigYaml,
@@ -96,6 +96,7 @@ async function lint(options) {
96
96
  await (0, import_root.execFromRoot)([...(0, import_package_manager.resolveToolCommand)({ tool: "markdownlint-cli2" }), ...shouldFix ? ["--fix"] : [], { batchedArguments: targets }]);
97
97
  const rootFolder = (0, import_root.getRootFolder)() ?? process.cwd();
98
98
  const mdFiles = paths?.length ? paths.map((p) => (0, import_node_path.relative)(rootFolder, p).replaceAll("\\", "/") || p) : await getMarkdownFiles();
99
+ const linkCheckFiles = mdFiles.filter((mdFile) => linkCheckExcludeGlobs.every((excludeGlob) => !(0, import_node_path.matchesGlob)(mdFile, excludeGlob)));
99
100
  await (0, import_root.execFromRoot)([
100
101
  ...(0, import_package_manager.resolveToolCommand)({ tool: "linkinator" }),
101
102
  "--retry",
@@ -108,7 +109,7 @@ async function lint(options) {
108
109
  String.raw`https://www\.npmjs\.com/package/`,
109
110
  "--url-rewrite-replace",
110
111
  "https://registry.npmjs.org/",
111
- { batchedArguments: mdFiles }
112
+ { batchedArguments: linkCheckFiles }
112
113
  ]);
113
114
  }
114
115
  const MARKDOWN_PATHSPEC = "*.md";
@@ -126,4 +127,4 @@ async function getMarkdownFiles() {
126
127
  0 && (module.exports = {
127
128
  lint
128
129
  });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGdldE5vbklnbm9yZWRGaWxlcyB9IGZyb20gJy4uL2dpdC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVG9vbENvbW1hbmQgfSBmcm9tICcuLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIGdldFJvb3RGb2xkZXIsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJy4uL3Jvb3QudHMnO1xuaW1wb3J0IHtcbiAgY2hlY2tJc0luTm9kZU1vZHVsZXMsXG4gIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxufSBmcm9tICcuL21hcmtkb3dubGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIGxpbnR9IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgY29waWVkIHRvIHRoZSBwcm9qZWN0IHJvb3Qgd2hlbiB0aGUgcHJvamVjdCBoYXMgbm9uZS4gV2l0aG91dCBpdCxcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBydW5zIHdpdGggaXRzIG93biBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb25maWdGaWxlUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmlsZSBwYXRocyB0byBsaW50LiBJZiBvbWl0dGVkLCBsaW50cyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZpeCBsaW50aW5nIGlzc3VlcyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIExpbnRPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQob3B0aW9ucz86IExpbnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnbGlua2luYXRvcicgfSksXG4gICAgJy0tcmV0cnknLFxuICAgICctLXJldHJ5LWVycm9ycycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWNvdW50JyxcbiAgICAnMycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWppdHRlcicsXG4gICAgJzUnLFxuICAgICctLXVybC1yZXdyaXRlLXNlYXJjaCcsXG4gICAgU3RyaW5nLnJhd2BodHRwczovL3d3d1xcLm5wbWpzXFwuY29tL3BhY2thZ2UvYCxcbiAgICAnLS11cmwtcmV3cml0ZS1yZXBsYWNlJyxcbiAgICAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyxcbiAgICB7IGJhdGNoZWRBcmd1bWVudHM6IG1kRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2l0IHBhdGhzcGVjIG1hdGNoaW5nIGV2ZXJ5IG1hcmtkb3duIGZpbGUgaW4gdGhlIHJlcG9zaXRvcnksIGF0IGFueSBkZXB0aC5cbiAqL1xuY29uc3QgTUFSS0RPV05fUEFUSFNQRUMgPSAnKi5tZCc7XG5cbi8qKlxuICogTGlzdHMgdGhlIG1hcmtkb3duIGZpbGVzIHRvIGhhbmQgdG8gYGxpbmtpbmF0b3JgLlxuICpcbiAqIGBsaW5raW5hdG9yYCB0YWtlcyBhIGZpbGUgbGlzdCByYXRoZXIgdGhhbiBhbiBpZ25vcmUgY29uZmlndXJhdGlvbiwgc28gdGhlIGdpdGlnbm9yZWQgZmlsZXMgaGF2ZSB0byBiZVxuICogZHJvcHBlZCBiZWZvcmUgaXQgaXMgaW52b2tlZC4gR2l0IGl0c2VsZiBhbnN3ZXJzIHRoYXQgKG5lc3RlZCBpZ25vcmUgZmlsZXMsIGAhYCBuZWdhdGlvbnMgYW5kIGFsbCk7IHRoZVxuICogaGFuZC1tYWludGFpbmVkIGdsb2IgZXhjbHVzaW9ucyBiZWxvdyBhcmUgb25seSB0aGUgZmFsbGJhY2sgZm9yIGEgY2hlY2tvdXQgd2l0aG91dCBnaXQsIGFuZCB0aGV5IGFyZSB0aGVcbiAqIHZlcnkgbGlzdHMgdGhpcyBpbmRpcmVjdGlvbiBleGlzdHMgdG8gc3RvcCBmcm9tIGRyaWZ0aW5nLlxuICpcbiAqIFRoZSBgbm9kZV9tb2R1bGVzYCBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgZ2l0LWRlcml2ZWQgbGlzdCB0b28sIGFuZCBkZWxpYmVyYXRlbHkgc286IGdpdCBvbmx5IHNraXBzXG4gKiB3aGF0IHRoZSByZXBvc2l0b3J5IGFza2VkIGl0IHRvIHNraXAsIGFuZCBhIHJlcG9zaXRvcnkgY2FuIGRlbGliZXJhdGVseSBUUkFDSyBhIHZlbmRvcmVkIGBub2RlX21vZHVsZXNgXG4gKiB0cmVlLiBUaGF0IGlzIHRoZSBvbmUgZXhjbHVzaW9uIGAuZ2l0aWdub3JlYCBjYW5ub3QgYW5zd2VyIOKAlCBzZWUgYG1hcmtkb3dubGludC1pZ25vcmVzLnRzYC4gQXBwbHlpbmcgaXRcbiAqIGhlcmUga2VlcHMgYGxpbmtpbmF0b3JgIGluIHN0ZXAgd2l0aCB0aGUgbWFya2Rvd25saW50IGhhbGYsIHdoaWNoIGlnbm9yZXMgdGhlIHNhbWUgcGF0aHMgYnkgZ2xvYi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG1hcmtkb3duIGZpbGUgcGF0aHMsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG5vbklnbm9yZWRGaWxlcyA9IGF3YWl0IGdldE5vbklnbm9yZWRGaWxlcyh7IHBhdHRlcm5zOiBbTUFSS0RPV05fUEFUSFNQRUNdIH0pO1xuICByZXR1cm4gbm9uSWdub3JlZEZpbGVzXG4gICAgPyBub25JZ25vcmVkRmlsZXMuZmlsdGVyKChwYXRoKSA9PiAhY2hlY2tJc0luTm9kZU1vZHVsZXMocGF0aCkpXG4gICAgOiAoYXdhaXQgdG9BcnJheShnbG9iKFsnKiovKi5tZCddLCB7XG4gICAgICBleGNsdWRlOiBbXG4gICAgICAgICcuZ2l0LyoqJyxcbiAgICAgICAgJ2Rpc3QvKionLFxuICAgICAgICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0JcbiAgICAgIF1cbiAgICB9KSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxtQkFBd0I7QUFDeEIsbUJBQStCO0FBQy9CLGtCQUF5QjtBQUN6QixxQkFBMkI7QUFDM0Isc0JBR087QUFDUCx1QkFBeUI7QUFFekIsaUJBQW1DO0FBQ25DLDZCQUFtQztBQUNuQyx3QkFBMEI7QUFDMUIsa0JBSU87QUFDUCxrQ0FHTztBQThCUCxlQUFzQixLQUFLLFNBQXNDO0FBQy9ELFFBQU0sRUFBRSx1QkFBdUIsT0FBTyxZQUFZLE1BQU0sSUFBSSxXQUFXLENBQUM7QUFDeEUsUUFBTSxjQUFjO0FBQUEsSUFDbEIsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxFQUNaO0FBRUEsUUFBTSxzQkFBc0IsWUFBWSxLQUFLLENBQUMsZUFBZTtBQUMzRCxVQUFNLHFCQUFpQixxQ0FBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRSxlQUFPLDJCQUFXLGNBQWM7QUFBQSxFQUNsQyxDQUFDO0FBRUQsTUFBSSxDQUFDLHVCQUF1Qix1QkFBdUI7QUFDakQscUNBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLGNBQU0sb0JBQUcsMkJBQXVCLHFDQUF3QixFQUFFLFVBQU0sc0JBQVMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDcEc7QUFHQSxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyw0QkFBVSxhQUFhO0FBRWhFLFlBQU0sMEJBQWEsQ0FBQyxPQUFHLDJDQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUMsR0FBRyxHQUFJLFlBQVksQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFJLEVBQUUsa0JBQWtCLFFBQVEsQ0FBQyxDQUFDO0FBR3pJLFFBQU0saUJBQWEsMkJBQWMsS0FBSyxRQUFRLElBQUk7QUFDbEQsUUFBTSxVQUFVLE9BQU8sU0FDbkIsTUFBTSxJQUFJLENBQUMsVUFBTSwyQkFBUyxZQUFZLENBQUMsRUFBRSxXQUFXLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFDbkUsTUFBTSxpQkFBaUI7QUFFM0IsWUFBTSwwQkFBYTtBQUFBLElBQ2pCLE9BQUcsMkNBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFBQSxJQUM1QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQSxFQUFFLGtCQUFrQixRQUFRO0FBQUEsRUFDOUIsQ0FBQztBQUNIO0FBS0EsTUFBTSxvQkFBb0I7QUFpQjFCLGVBQWUsbUJBQXNDO0FBQ25ELFFBQU0sa0JBQWtCLFVBQU0sK0JBQW1CLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDbEYsU0FBTyxrQkFDSCxnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsS0FBQyxrREFBcUIsSUFBSSxDQUFDLElBQzNELFVBQU0sMEJBQVEsc0JBQUssQ0FBQyxTQUFTLEdBQUc7QUFBQSxJQUNqQyxTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ047IiwibmFtZXMiOltdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2V0Tm9uSWdub3JlZEZpbGVzIH0gZnJvbSAnLi4vZ2l0LnRzJztcbmltcG9ydCB7IHJlc29sdmVUb29sQ29tbWFuZCB9IGZyb20gJy4uL3BhY2thZ2UtbWFuYWdlci50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuLi9yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQge1xuICBjaGVja0lzSW5Ob2RlTW9kdWxlcyxcbiAgTk9ERV9NT0RVTEVTX0lHTk9SRV9HTE9CXG59IGZyb20gJy4vbWFya2Rvd25saW50LWlnbm9yZXMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb3BpZWQgdG8gdGhlIHByb2plY3Qgcm9vdCB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLiBXaXRob3V0IGl0LFxuICAgKiBgbWFya2Rvd25saW50LWNsaTJgIHJ1bnMgd2l0aCBpdHMgb3duIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHbG9icywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLCBvZiBtYXJrZG93biBmaWxlcyB0byBsZWF2ZSBvdXQgb2YgdGhlIGBsaW5raW5hdG9yYCBwYXNzIG9ubHk7XG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgc3RpbGwgbGludHMgdGhlbS5cbiAgICpcbiAgICogRm9yIGEgZG9jdW1lbnRhdGlvbiBzaXRlIHdob3NlIHBhZ2VzIGxpbmsgdG8gZWFjaCBvdGhlciBiYXNlLWFic29sdXRlbHkgKGAvPHNpdGUtYmFzZT4vZ3VpZGVzLy4uLmApOiB0aG9zZVxuICAgKiBsaW5rcyByZXNvbHZlIG9ubHkgYWdhaW5zdCB0aGUgQlVJTFQgc2l0ZSwgc28gYGxpbmtpbmF0b3JgIHJlcG9ydHMgZWFjaCBvbmUgYXMgYSA0MDQsIGFuZCB0aGUgc2l0ZSdzIG93blxuICAgKiBidWlsZCBpcyB3aGF0IGNoZWNrcyB0aGVtLlxuICAgKlxuICAgKiBAZXhhbXBsZSBgWydkb2NzLyoqJ11gXG4gICAqL1xuICByZWFkb25seSBsaW5rQ2hlY2tFeGNsdWRlR2xvYnM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmlsZSBwYXRocyB0byBsaW50LiBJZiBvbWl0dGVkLCBsaW50cyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZpeCBsaW50aW5nIGlzc3VlcyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIExpbnRPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQob3B0aW9ucz86IExpbnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMgPSBbXSwgcGF0aHMsIHNob3VsZEZpeCA9IGZhbHNlIH0gPSBvcHRpb25zID8/IHt9O1xuICBjb25zdCBjb25maWdGaWxlcyA9IFtcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0NqcyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ0pzb24sXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1lhbWwsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1ltbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdNanNcbiAgXTtcblxuICBjb25zdCBkb2VzQ29uZmlnRmlsZUV4aXN0ID0gY29uZmlnRmlsZXMuc29tZSgoY29uZmlnRmlsZSkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBjb25maWdGaWxlIH0pO1xuICAgIHJldHVybiBleGlzdHNTeW5jKGNvbmZpZ0ZpbGVQYXRoKTtcbiAgfSk7XG5cbiAgaWYgKCFkb2VzQ29uZmlnRmlsZUV4aXN0ICYmIGRlZmF1bHRDb25maWdGaWxlUGF0aCkge1xuICAgIGdldExpYkRlYnVnZ2VyKCdtYXJrZG93bmxpbnQ6bGludCcpKCdtYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZC4gQ3JlYXRpbmcgZGVmYXVsdCBjb25maWcuLi4nKTtcbiAgICBhd2FpdCBjcChkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogYmFzZW5hbWUoZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB9KSk7XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaGVzIGFyZSBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHRhcmdldHMgPSBwYXRocz8ubGVuZ3RoID8gcGF0aHMgOiBbUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXJdO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWy4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdtYXJrZG93bmxpbnQtY2xpMicgfSksIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksIHsgYmF0Y2hlZEFyZ3VtZW50czogdGFyZ2V0cyB9XSk7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2ggaXMgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCByb290Rm9sZGVyID0gZ2V0Um9vdEZvbGRlcigpID8/IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IG1kRmlsZXMgPSBwYXRocz8ubGVuZ3RoXG4gICAgPyBwYXRocy5tYXAoKHApID0+IHJlbGF0aXZlKHJvb3RGb2xkZXIsIHApLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpIHx8IHApXG4gICAgOiBhd2FpdCBnZXRNYXJrZG93bkZpbGVzKCk7XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGNvbnN0IGxpbmtDaGVja0ZpbGVzID0gbWRGaWxlcy5maWx0ZXIoKG1kRmlsZSkgPT4gbGlua0NoZWNrRXhjbHVkZUdsb2JzLmV2ZXJ5KChleGNsdWRlR2xvYikgPT4gIW1hdGNoZXNHbG9iKG1kRmlsZSwgZXhjbHVkZUdsb2IpKSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2xpbmtpbmF0b3InIH0pLFxuICAgICctLXJldHJ5JyxcbiAgICAnLS1yZXRyeS1lcnJvcnMnLFxuICAgICctLXJldHJ5LWVycm9ycy1jb3VudCcsXG4gICAgJzMnLFxuICAgICctLXJldHJ5LWVycm9ycy1qaXR0ZXInLFxuICAgICc1JyxcbiAgICAnLS11cmwtcmV3cml0ZS1zZWFyY2gnLFxuICAgIFN0cmluZy5yYXdgaHR0cHM6Ly93d3dcXC5ucG1qc1xcLmNvbS9wYWNrYWdlL2AsXG4gICAgJy0tdXJsLXJld3JpdGUtcmVwbGFjZScsXG4gICAgJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLycsXG4gICAgeyBiYXRjaGVkQXJndW1lbnRzOiBsaW5rQ2hlY2tGaWxlcyB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnaXQgcGF0aHNwZWMgbWF0Y2hpbmcgZXZlcnkgbWFya2Rvd24gZmlsZSBpbiB0aGUgcmVwb3NpdG9yeSwgYXQgYW55IGRlcHRoLlxuICovXG5jb25zdCBNQVJLRE9XTl9QQVRIU1BFQyA9ICcqLm1kJztcblxuLyoqXG4gKiBMaXN0cyB0aGUgbWFya2Rvd24gZmlsZXMgdG8gaGFuZCB0byBgbGlua2luYXRvcmAuXG4gKlxuICogYGxpbmtpbmF0b3JgIHRha2VzIGEgZmlsZSBsaXN0IHJhdGhlciB0aGFuIGFuIGlnbm9yZSBjb25maWd1cmF0aW9uLCBzbyB0aGUgZ2l0aWdub3JlZCBmaWxlcyBoYXZlIHRvIGJlXG4gKiBkcm9wcGVkIGJlZm9yZSBpdCBpcyBpbnZva2VkLiBHaXQgaXRzZWxmIGFuc3dlcnMgdGhhdCAobmVzdGVkIGlnbm9yZSBmaWxlcywgYCFgIG5lZ2F0aW9ucyBhbmQgYWxsKTsgdGhlXG4gKiBoYW5kLW1haW50YWluZWQgZ2xvYiBleGNsdXNpb25zIGJlbG93IGFyZSBvbmx5IHRoZSBmYWxsYmFjayBmb3IgYSBjaGVja291dCB3aXRob3V0IGdpdCwgYW5kIHRoZXkgYXJlIHRoZVxuICogdmVyeSBsaXN0cyB0aGlzIGluZGlyZWN0aW9uIGV4aXN0cyB0byBzdG9wIGZyb20gZHJpZnRpbmcuXG4gKlxuICogVGhlIGBub2RlX21vZHVsZXNgIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBnaXQtZGVyaXZlZCBsaXN0IHRvbywgYW5kIGRlbGliZXJhdGVseSBzbzogZ2l0IG9ubHkgc2tpcHNcbiAqIHdoYXQgdGhlIHJlcG9zaXRvcnkgYXNrZWQgaXQgdG8gc2tpcCwgYW5kIGEgcmVwb3NpdG9yeSBjYW4gZGVsaWJlcmF0ZWx5IFRSQUNLIGEgdmVuZG9yZWQgYG5vZGVfbW9kdWxlc2BcbiAqIHRyZWUuIFRoYXQgaXMgdGhlIG9uZSBleGNsdXNpb24gYC5naXRpZ25vcmVgIGNhbm5vdCBhbnN3ZXIg4oCUIHNlZSBgbWFya2Rvd25saW50LWlnbm9yZXMudHNgLiBBcHBseWluZyBpdFxuICogaGVyZSBrZWVwcyBgbGlua2luYXRvcmAgaW4gc3RlcCB3aXRoIHRoZSBtYXJrZG93bmxpbnQgaGFsZiwgd2hpY2ggaWdub3JlcyB0aGUgc2FtZSBwYXRocyBieSBnbG9iLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWFya2Rvd24gZmlsZSBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgbm9uSWdub3JlZEZpbGVzID0gYXdhaXQgZ2V0Tm9uSWdub3JlZEZpbGVzKHsgcGF0dGVybnM6IFtNQVJLRE9XTl9QQVRIU1BFQ10gfSk7XG4gIHJldHVybiBub25JZ25vcmVkRmlsZXNcbiAgICA/IG5vbklnbm9yZWRGaWxlcy5maWx0ZXIoKHBhdGgpID0+ICFjaGVja0lzSW5Ob2RlTW9kdWxlcyhwYXRoKSlcbiAgICA6IChhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxuICAgICAgXVxuICAgIH0pKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLG1CQUF3QjtBQUN4QixtQkFBK0I7QUFDL0Isa0JBQXlCO0FBQ3pCLHFCQUEyQjtBQUMzQixzQkFHTztBQUNQLHVCQUdPO0FBRVAsaUJBQW1DO0FBQ25DLDZCQUFtQztBQUNuQyx3QkFBMEI7QUFDMUIsa0JBSU87QUFDUCxrQ0FHTztBQTBDUCxlQUFzQixLQUFLLFNBQXNDO0FBQy9ELFFBQU0sRUFBRSx1QkFBdUIsd0JBQXdCLENBQUMsR0FBRyxPQUFPLFlBQVksTUFBTSxJQUFJLFdBQVcsQ0FBQztBQUNwRyxRQUFNLGNBQWM7QUFBQSxJQUNsQiw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLEVBQ1o7QUFFQSxRQUFNLHNCQUFzQixZQUFZLEtBQUssQ0FBQyxlQUFlO0FBQzNELFVBQU0scUJBQWlCLHFDQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLGVBQU8sMkJBQVcsY0FBYztBQUFBLEVBQ2xDLENBQUM7QUFFRCxNQUFJLENBQUMsdUJBQXVCLHVCQUF1QjtBQUNqRCxxQ0FBZSxtQkFBbUIsRUFBRSx1RUFBdUU7QUFDM0csY0FBTSxvQkFBRywyQkFBdUIscUNBQXdCLEVBQUUsVUFBTSxzQkFBUyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFBQSxFQUNwRztBQUdBLFFBQU0sVUFBVSxPQUFPLFNBQVMsUUFBUSxDQUFDLDRCQUFVLGFBQWE7QUFFaEUsWUFBTSwwQkFBYSxDQUFDLE9BQUcsMkNBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyxHQUFHLEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUksRUFBRSxrQkFBa0IsUUFBUSxDQUFDLENBQUM7QUFHekksUUFBTSxpQkFBYSwyQkFBYyxLQUFLLFFBQVEsSUFBSTtBQUNsRCxRQUFNLFVBQVUsT0FBTyxTQUNuQixNQUFNLElBQUksQ0FBQyxVQUFNLDJCQUFTLFlBQVksQ0FBQyxFQUFFLFdBQVcsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUNuRSxNQUFNLGlCQUFpQjtBQUUzQixRQUFNLGlCQUFpQixRQUFRLE9BQU8sQ0FBQyxXQUFXLHNCQUFzQixNQUFNLENBQUMsZ0JBQWdCLEtBQUMsOEJBQVksUUFBUSxXQUFXLENBQUMsQ0FBQztBQUNqSSxZQUFNLDBCQUFhO0FBQUEsSUFDakIsT0FBRywyQ0FBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUFBLElBQzVDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxPQUFPO0FBQUEsSUFDUDtBQUFBLElBQ0E7QUFBQSxJQUNBLEVBQUUsa0JBQWtCLGVBQWU7QUFBQSxFQUNyQyxDQUFDO0FBQ0g7QUFLQSxNQUFNLG9CQUFvQjtBQWlCMUIsZUFBZSxtQkFBc0M7QUFDbkQsUUFBTSxrQkFBa0IsVUFBTSwrQkFBbUIsRUFBRSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUNsRixTQUFPLGtCQUNILGdCQUFnQixPQUFPLENBQUMsU0FBUyxLQUFDLGtEQUFxQixJQUFJLENBQUMsSUFDM0QsVUFBTSwwQkFBUSxzQkFBSyxDQUFDLFNBQVMsR0FBRztBQUFBLElBQ2pDLFNBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDLENBQUM7QUFDTjsiLCJuYW1lcyI6W119
@@ -13,6 +13,17 @@ export interface LintOptions {
13
13
  * `markdownlint-cli2` runs with its own defaults.
14
14
  */
15
15
  readonly defaultConfigFilePath?: string | undefined;
16
+ /**
17
+ * Globs, relative to the root folder, of markdown files to leave out of the `linkinator` pass only;
18
+ * `markdownlint-cli2` still lints them.
19
+ *
20
+ * For a documentation site whose pages link to each other base-absolutely (`/<site-base>/guides/...`): those
21
+ * links resolve only against the BUILT site, so `linkinator` reports each one as a 404, and the site's own
22
+ * build is what checks them.
23
+ *
24
+ * @example `['docs/**']`
25
+ */
26
+ readonly linkCheckExcludeGlobs?: readonly string[] | undefined;
16
27
  /**
17
28
  * Optional file paths to lint. If omitted, lints the entire project.
18
29
  */
@@ -112,7 +112,7 @@ export declare function cmdEscapeCommandLine(commandLine: string): string;
112
112
  * Wraps a CLI task function to ensure it runs safely and handles its {@link CliTaskResult}.
113
113
  *
114
114
  * Honors the per-script off switch first: when the npm script currently running has been switched off —
115
- * `LINT_MD=0 npm run lint:md`, see {@link getDisabledScriptEnvVariableName} — the task is not executed and
115
+ * `LINT_MD=0 npm run lint:md`, see {@link exitIfScriptDisabled} — the task is not executed and
116
116
  * the process exits successfully. Because every `scripts/*.ts` entry point already funnels through here, no
117
117
  * script has to opt in, and each `npm run` sub-step of a composite script (e.g. `build`) carries its own
118
118
  * switch.
@@ -41,7 +41,7 @@ import { printError } from "@mnaoumov/typescript-lib/error";
41
41
  import { noop } from "@mnaoumov/typescript-lib/function";
42
42
  import { replaceAll } from "@mnaoumov/typescript-lib/string";
43
43
  import process from "node:process";
44
- import { getDisabledScriptEnvVariableName } from "./env-toggle.mjs";
44
+ import { exitIfScriptDisabled } from "./env-toggle.mjs";
45
45
  class CliTaskResult {
46
46
  /**
47
47
  * Chains multiple tasks together, executing them sequentially until one fails.
@@ -187,20 +187,14 @@ function cmdEscapeCommandLine(commandLine) {
187
187
  });
188
188
  }
189
189
  async function wrapCliTask(taskFunction) {
190
- const disabledScriptEnvVariableName = getDisabledScriptEnvVariableName();
191
- if (disabledScriptEnvVariableName !== null) {
192
- process.stdout.write(`Skipped (${disabledScriptEnvVariableName} is off).
193
- `);
194
- CliTaskResult.Success().exit();
195
- return;
196
- }
190
+ exitIfScriptDisabled();
197
191
  enableLibraryDebuggers();
198
192
  const result = await wrapResult(taskFunction);
199
193
  result.exit();
200
194
  }
201
195
  async function wrapResult(taskFunction) {
202
196
  try {
203
- return await taskFunction() ?? CliTaskResult.Success();
197
+ return await taskFunction() ?? CliTaskResult.FromExitCode(Number(process.exitCode ?? 0));
204
198
  } catch (error) {
205
199
  printError(new Error("An error occurred during task execution", { cause: error }));
206
200
  return CliTaskResult.Failure();
@@ -213,4 +207,4 @@ export {
213
207
  toPosixCommandLine,
214
208
  wrapCliTask
215
209
  };
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGktdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB0YXNrIHJlc3VsdHMsIGluY2x1ZGluZ1xuICogc3VjY2VzcywgZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIG11bHRpcGxlIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBlbmFibGVMaWJyYXJ5RGVidWdnZXJzIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZXJyb3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBnZXREaXNhYmxlZFNjcmlwdEVudlZhcmlhYmxlTmFtZSB9IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSB0YXNrLiBJbmNsdWRlcyBtZXRob2RzIGZvciBoYW5kbGluZyBzdWNjZXNzLFxuICogZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIHRhc2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBDaGFpbnMgbXVsdGlwbGUgdGFza3MgdG9nZXRoZXIsIGV4ZWN1dGluZyB0aGVtIHNlcXVlbnRpYWxseSB1bnRpbCBvbmUgZmFpbHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyAtIEFuIGFycmF5IG9mIHRhc2sgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGB2b2lkYC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmaXJzdCBmYWlsZWQge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGEgc3VjY2VzcyByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGNoYWluKHRhc2tzOiAoKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pW10pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdyYXBSZXN1bHQodGFzayk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLlN1Y2Nlc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBEb05vdEV4aXQoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBEb05vdEV4aXRUYXNrUmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQSBmYWlsdXJlIHJlc3VsdCBvZiBhIENMSSB0YXNrLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmFpbHVyZSByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZhaWx1cmUoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIHRoaXMuU3VjY2VzcyhmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBiYXNlZCBvbiBhbiBleGl0IGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBleGl0Q29kZSAtIFRoZSBleGl0IGNvZGUgdG8gcmVwcmVzZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRnJvbUV4aXRDb2RlKGV4aXRDb2RlOiBudW1iZXIpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IEV4aXRDb2RlVGFza1Jlc3VsdChleGl0Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsaVRhc2tSZXN1bHQgcmVwcmVzZW50aW5nIGEgc3VjY2Vzc2Z1bCB0YXNrIHJlc3VsdC5cbiAgICpcbiAgICogQHBhcmFtIGlzU3VjY2VzcyAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJucyBBIENsaVRhc2tSZXN1bHQgb2JqZWN0IHJlcHJlc2VudGluZyBhIHN1Y2Nlc3NmdWwgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFN1Y2Nlc3MoaXNTdWNjZXNzID0gdHJ1ZSk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgU3VjY2Vzc1Rhc2tSZXN1bHQoaXNTdWNjZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyBiYXNlZCBvbiB0aGUgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZXhpdCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRhc2sgd2FzIG5vdCBzdWNjZXNzZnVsLlxuICAgKi9cbiAgcHVibGljIHRocm93T25GYWlsdXJlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYXNrIGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICovXG5jbGFzcyBEb05vdEV4aXRUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBEb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgYmFzZWQgb24gYW4gZXhpdCBjb2RlLlxuICovXG5jbGFzcyBFeGl0Q29kZVRhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZXhpdENvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIHByb2Nlc3MuZXhpdCh0aGlzLmV4aXRDb2RlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhpdENvZGUgPT09IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IGJhc2VkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAqL1xuY2xhc3MgU3VjY2Vzc1Rhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2lzU3VjY2Vzc2Z1bDogYm9vbGVhbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3MgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb2YgdGhlIHRhc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBwcm9jZXNzLmV4aXQodGhpcy5faXNTdWNjZXNzZnVsID8gMCA6IDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdWNjZXNzZnVsO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBzdHJpbmdcbiAqIHVzaW5nIHRoZSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uICh0aGUgc3RhbmRhcmQgdXNlZCBieSB0aGVcbiAqIE1pY3Jvc29mdCBDIHJ1bnRpbWUgYW5kIG1vc3QgV2luZG93cyBwcm9ncmFtcykuXG4gKlxuICogSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX06XG4gKiBiYWNrc2xhc2hlcyBiZWZvcmUgcXVvdGVzIGFuZCBhdCB0aGUgZW5kIG9mIGEgcXVvdGVkIGFyZ3VtZW50IGFyZSBkb3VibGVkLlxuICpcbiAqIFRoaXMgcHJvZHVjZXMgYSBzaGVsbC1hZ25vc3RpYyBjb21tYW5kIGxpbmUuIENhbGxlcnMgdGhhdCByb3V0ZSB0aHJvdWdoXG4gKiBhIHNwZWNpZmljIHNoZWxsIChjbWQuZXhlLCBQb3dlclNoZWxsLCBzaCkgbXVzdCBhcHBseSBzaGVsbC1zcGVjaWZpY1xuICogZXNjYXBpbmcgb24gdG9wIOKAlCBzZWUge0BsaW5rIGNtZEVzY2FwZUNvbW1hbmRMaW5lfS5cbiAqXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbW1hbmQtbGluZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21tYW5kTGluZSgkYXJndW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiAkYXJndW1lbnRzLm1hcCgoYXJndW1lbnQpID0+IGFyZ3ZRdW90ZShhcmd1bWVudCkpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZ1xuICogcXVvdGVkIGZvciBhIFBPU0lYIHNoZWxsIChgc2hgLCBgYmFzaGAsIGB6c2hgLCAuLi4pLlxuICpcbiAqIEVhY2ggYXJndW1lbnQgaXMgd3JhcHBlZCBpbiBzaW5nbGUgcXVvdGVzIHVubGVzcyBpdCBjb25zaXN0cyBzb2xlbHkgb2ZcbiAqIGNoYXJhY3RlcnMgdGhhdCBhcmUgc2FmZSB1bnF1b3RlZCwgbWlycm9yaW5nIFB5dGhvbidzIGBzaGxleC5xdW90ZWAuIEEgbGl0ZXJhbFxuICogc2luZ2xlIHF1b3RlIGluc2lkZSBhbiBhcmd1bWVudCBpcyBlbWl0dGVkIGFzIHRoZSBgJ1xcJydgIGlkaW9tIChjbG9zZSB0aGVcbiAqIHF1b3RlZCBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4pLCBzbyB0aGUgc2hlbGwgcmVwcm9kdWNlcyB0aGVcbiAqIGFyZ3VtZW50IHZlcmJhdGltIOKAlCBubyB2YXJpYWJsZSBleHBhbnNpb24gKGAkYCksIGNvbW1hbmQgc3Vic3RpdHV0aW9uXG4gKiAoYGAgYCBgYCksIGdsb2JiaW5nIChgKmAsIGA/YCwgYFtgKSwgb3Igd29yZCBzcGxpdHRpbmcuXG4gKlxuICogVXNlIHRoaXMgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIHRocm91Z2ggYHNoIC1jYC4gT25cbiAqIFdpbmRvd3MsIHVzZSB7QGxpbmsgdG9Db21tYW5kTGluZX0gcGx1cyB7QGxpbmsgY21kRXNjYXBlQ29tbWFuZExpbmV9IGluc3RlYWQg4oCUXG4gKiB0aGUgdHdvIGNvbnZlbnRpb25zIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24gZm9yIGEgUE9TSVggc2hlbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4Q29tbWFuZExpbmUoJGFyZ3VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gJGFyZ3VtZW50cy5tYXAoKGFyZ3VtZW50KSA9PiBwb3NpeFF1b3RlKGFyZ3VtZW50KSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYW4gYXJndW1lbnQgdGhhdCBpcyBlbnRpcmVseSBjb21wb3NlZCBvZiBjaGFyYWN0ZXJzIHNhZmUgdG8gcGFzcyB0byBhXG4gKiBQT1NJWCBzaGVsbCB1bnF1b3RlZC4gTWlycm9ycyB0aGUgc2FmZSBzZXQgdXNlZCBieSBQeXRob24ncyBgc2hsZXgucXVvdGVgLlxuICovXG5jb25zdCBQT1NJWF9TQUZFX0FSR19SRSA9IC9eW1xcd0AlKz06LC4vLV0rJC87XG5cbi8qKlxuICogTWF0Y2hlcyBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlLCBmb3IgcmVwbGFjaW5nIGl0IHdpdGggdGhlIGAnXFwnJ2AgaWRpb20uXG4gKi9cbmNvbnN0IFNJTkdMRV9RVU9URV9SRSA9IC8nL2c7XG5cbi8qKlxuICogVGhlIHJlcGxhY2VtZW50IGZvciBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlIGluc2lkZSBhIHNpbmdsZS1xdW90ZWQgUE9TSVggc3BhbjpcbiAqIGNsb3NlIHRoZSBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4gdGhlIHNwYW4uXG4gKi9cbmNvbnN0IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFID0gU3RyaW5nLnJhd2AnXFwnJ2A7XG5cbi8qKlxuICogUXVvdGVzIGEgc2luZ2xlIGFyZ3VtZW50IHNvIHRoYXQgYENvbW1hbmRMaW5lVG9Bcmd2V2Agd2lsbCBkZWNvZGUgaXRcbiAqIHVuY2hhbmdlZC4gSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX0uXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZ3VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYXJndW1lbnQubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJndW1lbnQpKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50O1xuICB9XG5cbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgPSAyO1xuICBsZXQgcmVzdWx0ID0gJ1wiJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGxldCBudW1iZXJCYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnQubGVuZ3RoICYmIGFyZ3VtZW50W2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgbnVtYmVyQmFja3NsYXNoZXMrKztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPT09IGFyZ3VtZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtYmVyQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IGFyZ3VtZW50LmNoYXJBdChpbmRleCk7XG4gICAgcmVzdWx0ICs9IGNoID09PSAnXCInID8gYCR7J1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SICsgMSl9XCJgIDogJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcykgKyBjaDtcbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgYSBQT1NJWCBzaGVsbCBzbyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB2ZXJiYXRpbS5cbiAqIEFuIGVtcHR5IGFyZ3VtZW50IGJlY29tZXMgYCcnYDsgYW4gYXJndW1lbnQgb2Ygb25seSBzYWZlIGNoYXJhY3RlcnMgaXNcbiAqIHJldHVybmVkIHVuY2hhbmdlZDsgYW55dGhpbmcgZWxzZSBpcyBzaW5nbGUtcXVvdGVkLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSByYXcgYXJndW1lbnQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBhcmd1bWVudCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHBvc2l4UXVvdGUoYXJndW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBQT1NJWF9TQUZFX0FSR19SRS50ZXN0KGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogYCcke3JlcGxhY2VBbGwoeyAkc3RyaW5nOiBhcmd1bWVudCwgcmVwbGFjZXI6IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFLCBzZWFyY2hWYWx1ZTogU0lOR0xFX1FVT1RFX1JFIH0pfSdgO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBgXmAtZXNjYXBlZC5cbiAqL1xuY29uc3QgQ01EX01FVEFfUkUgPSAvWygpJSFeXCI8PiZ8XS9nO1xuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgY21kLmV4ZWAncyBgXCJgIGhhbmRsaW5nXG4gKiBkaWZmZXJzIGZyb20gYENvbW1hbmRMaW5lVG9Bcmd2V2AgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi5cbiAqXG4gKiBBcHBseSB0aGlzIHRvIGEgY29tbWFuZCBsaW5lIHN0cmluZyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgdmlhIGBjbWQuZXhlYFxuICogKGUuZy4sIGBzcGF3bihjbWQsIFtdLCB7IHNoZWxsOiB0cnVlIH0pYCBvbiBXaW5kb3dzKS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgY21kYCBuYW1lcyBXaW5kb3dzIGBjbWQuZXhlYCwgbm90IGFuIGFiYnJldmlhdGlvbiBvZiBgY29tbWFuZGAuXG5leHBvcnQgZnVuY3Rpb24gY21kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBjb21tYW5kTGluZSxcbiAgICByZXBsYWNlcjogJ14kJicsXG4gICAgc2VhcmNoVmFsdWU6IENNRF9NRVRBX1JFXG4gIH0pO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgQ0xJIHRhc2sgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgc2FmZWx5IGFuZCBoYW5kbGVzIGl0cyB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uXG4gKlxuICogSG9ub3JzIHRoZSBwZXItc2NyaXB0IG9mZiBzd2l0Y2ggZmlyc3Q6IHdoZW4gdGhlIG5wbSBzY3JpcHQgY3VycmVudGx5IHJ1bm5pbmcgaGFzIGJlZW4gc3dpdGNoZWQgb2ZmIOKAlFxuICogYExJTlRfTUQ9MCBucG0gcnVuIGxpbnQ6bWRgLCBzZWUge0BsaW5rIGdldERpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lfSDigJQgdGhlIHRhc2sgaXMgbm90IGV4ZWN1dGVkIGFuZFxuICogdGhlIHByb2Nlc3MgZXhpdHMgc3VjY2Vzc2Z1bGx5LiBCZWNhdXNlIGV2ZXJ5IGBzY3JpcHRzLyoudHNgIGVudHJ5IHBvaW50IGFscmVhZHkgZnVubmVscyB0aHJvdWdoIGhlcmUsIG5vXG4gKiBzY3JpcHQgaGFzIHRvIG9wdCBpbiwgYW5kIGVhY2ggYG5wbSBydW5gIHN1Yi1zdGVwIG9mIGEgY29tcG9zaXRlIHNjcmlwdCAoZS5nLiBgYnVpbGRgKSBjYXJyaWVzIGl0cyBvd25cbiAqIHN3aXRjaC5cbiAqXG4gKiBAcGFyYW0gdGFza0Z1bmN0aW9uIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSwgd2hpY2ggbWF5IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhc2sgaXMgY29tcGxldGVkIGFuZCBleGl0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cmFwQ2xpVGFzayh0YXNrRnVuY3Rpb246ICgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lID0gZ2V0RGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWUoKTtcbiAgaWYgKGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lICE9PSBudWxsKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFNraXBwZWQgKCR7ZGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWV9IGlzIG9mZikuXFxuYCk7XG4gICAgQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKCkuZXhpdCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVuYWJsZUxpYnJhcnlEZWJ1Z2dlcnMoKTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd3JhcFJlc3VsdCh0YXNrRnVuY3Rpb24pO1xuICByZXN1bHQuZXhpdCgpO1xufVxuXG4vKipcbiAqIFNhZmVseSBleGVjdXRlcyBhIHRhc2sgZnVuY3Rpb24gYW5kIHJldHVybnMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uIElmIHRoZSB0YXNrIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvcixcbiAqIEFuIGVycm9yIGlzIGNhdWdodCwgYW5kIGEgZmFpbHVyZSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHRhc2tGdW5jdGlvbiAtIFRoZSB0YXNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gcmVwcmVzZW50aW5nIHRoZSBvdXRjb21lIG9mIHRoZSB0YXNrLlxuICovXG5hc3luYyBmdW5jdGlvbiB3cmFwUmVzdWx0KHRhc2tGdW5jdGlvbjogKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IHRhc2tGdW5jdGlvbigpKSBhcyBDbGlUYXNrUmVzdWx0IHwgdW5kZWZpbmVkID8/IENsaVRhc2tSZXN1bHQuU3VjY2VzcygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGFzayBleGVjdXRpb24nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRmFpbHVyZSgpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxrQkFB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
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGktdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB0YXNrIHJlc3VsdHMsIGluY2x1ZGluZ1xuICogc3VjY2VzcywgZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIG11bHRpcGxlIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBlbmFibGVMaWJyYXJ5RGVidWdnZXJzIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZXJyb3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBleGl0SWZTY3JpcHREaXNhYmxlZCB9IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSB0YXNrLiBJbmNsdWRlcyBtZXRob2RzIGZvciBoYW5kbGluZyBzdWNjZXNzLFxuICogZXhpdCBjb2RlcywgYW5kIGNoYWluaW5nIHRhc2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBDaGFpbnMgbXVsdGlwbGUgdGFza3MgdG9nZXRoZXIsIGV4ZWN1dGluZyB0aGVtIHNlcXVlbnRpYWxseSB1bnRpbCBvbmUgZmFpbHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyAtIEFuIGFycmF5IG9mIHRhc2sgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGB2b2lkYC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmaXJzdCBmYWlsZWQge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGEgc3VjY2VzcyByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGNoYWluKHRhc2tzOiAoKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pW10pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdyYXBSZXN1bHQodGFzayk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLlN1Y2Nlc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBEb05vdEV4aXQoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBEb05vdEV4aXRUYXNrUmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQSBmYWlsdXJlIHJlc3VsdCBvZiBhIENMSSB0YXNrLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmFpbHVyZSByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZhaWx1cmUoKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIHRoaXMuU3VjY2VzcyhmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBiYXNlZCBvbiBhbiBleGl0IGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBleGl0Q29kZSAtIFRoZSBleGl0IGNvZGUgdG8gcmVwcmVzZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRnJvbUV4aXRDb2RlKGV4aXRDb2RlOiBudW1iZXIpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IEV4aXRDb2RlVGFza1Jlc3VsdChleGl0Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsaVRhc2tSZXN1bHQgcmVwcmVzZW50aW5nIGEgc3VjY2Vzc2Z1bCB0YXNrIHJlc3VsdC5cbiAgICpcbiAgICogQHBhcmFtIGlzU3VjY2VzcyAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJucyBBIENsaVRhc2tSZXN1bHQgb2JqZWN0IHJlcHJlc2VudGluZyBhIHN1Y2Nlc3NmdWwgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFN1Y2Nlc3MoaXNTdWNjZXNzID0gdHJ1ZSk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgU3VjY2Vzc1Rhc2tSZXN1bHQoaXNTdWNjZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyBiYXNlZCBvbiB0aGUgdGFzayByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZXhpdCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRhc2sgd2FzIG5vdCBzdWNjZXNzZnVsLlxuICAgKi9cbiAgcHVibGljIHRocm93T25GYWlsdXJlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYXNrIGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICovXG5jbGFzcyBEb05vdEV4aXRUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBEb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgYmFzZWQgb24gYW4gZXhpdCBjb2RlLlxuICovXG5jbGFzcyBFeGl0Q29kZVRhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZXhpdENvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIGV4aXQgY29kZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIHByb2Nlc3MuZXhpdCh0aGlzLmV4aXRDb2RlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhpdENvZGUgPT09IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IGJhc2VkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAqL1xuY2xhc3MgU3VjY2Vzc1Rhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2lzU3VjY2Vzc2Z1bDogYm9vbGVhbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3MgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb2YgdGhlIHRhc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBwcm9jZXNzLmV4aXQodGhpcy5faXNTdWNjZXNzZnVsID8gMCA6IDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdWNjZXNzZnVsO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBzdHJpbmdcbiAqIHVzaW5nIHRoZSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uICh0aGUgc3RhbmRhcmQgdXNlZCBieSB0aGVcbiAqIE1pY3Jvc29mdCBDIHJ1bnRpbWUgYW5kIG1vc3QgV2luZG93cyBwcm9ncmFtcykuXG4gKlxuICogSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX06XG4gKiBiYWNrc2xhc2hlcyBiZWZvcmUgcXVvdGVzIGFuZCBhdCB0aGUgZW5kIG9mIGEgcXVvdGVkIGFyZ3VtZW50IGFyZSBkb3VibGVkLlxuICpcbiAqIFRoaXMgcHJvZHVjZXMgYSBzaGVsbC1hZ25vc3RpYyBjb21tYW5kIGxpbmUuIENhbGxlcnMgdGhhdCByb3V0ZSB0aHJvdWdoXG4gKiBhIHNwZWNpZmljIHNoZWxsIChjbWQuZXhlLCBQb3dlclNoZWxsLCBzaCkgbXVzdCBhcHBseSBzaGVsbC1zcGVjaWZpY1xuICogZXNjYXBpbmcgb24gdG9wIOKAlCBzZWUge0BsaW5rIGNtZEVzY2FwZUNvbW1hbmRMaW5lfS5cbiAqXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbW1hbmQtbGluZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21tYW5kTGluZSgkYXJndW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiAkYXJndW1lbnRzLm1hcCgoYXJndW1lbnQpID0+IGFyZ3ZRdW90ZShhcmd1bWVudCkpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZ1xuICogcXVvdGVkIGZvciBhIFBPU0lYIHNoZWxsIChgc2hgLCBgYmFzaGAsIGB6c2hgLCAuLi4pLlxuICpcbiAqIEVhY2ggYXJndW1lbnQgaXMgd3JhcHBlZCBpbiBzaW5nbGUgcXVvdGVzIHVubGVzcyBpdCBjb25zaXN0cyBzb2xlbHkgb2ZcbiAqIGNoYXJhY3RlcnMgdGhhdCBhcmUgc2FmZSB1bnF1b3RlZCwgbWlycm9yaW5nIFB5dGhvbidzIGBzaGxleC5xdW90ZWAuIEEgbGl0ZXJhbFxuICogc2luZ2xlIHF1b3RlIGluc2lkZSBhbiBhcmd1bWVudCBpcyBlbWl0dGVkIGFzIHRoZSBgJ1xcJydgIGlkaW9tIChjbG9zZSB0aGVcbiAqIHF1b3RlZCBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4pLCBzbyB0aGUgc2hlbGwgcmVwcm9kdWNlcyB0aGVcbiAqIGFyZ3VtZW50IHZlcmJhdGltIOKAlCBubyB2YXJpYWJsZSBleHBhbnNpb24gKGAkYCksIGNvbW1hbmQgc3Vic3RpdHV0aW9uXG4gKiAoYGAgYCBgYCksIGdsb2JiaW5nIChgKmAsIGA/YCwgYFtgKSwgb3Igd29yZCBzcGxpdHRpbmcuXG4gKlxuICogVXNlIHRoaXMgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIHRocm91Z2ggYHNoIC1jYC4gT25cbiAqIFdpbmRvd3MsIHVzZSB7QGxpbmsgdG9Db21tYW5kTGluZX0gcGx1cyB7QGxpbmsgY21kRXNjYXBlQ29tbWFuZExpbmV9IGluc3RlYWQg4oCUXG4gKiB0aGUgdHdvIGNvbnZlbnRpb25zIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24gZm9yIGEgUE9TSVggc2hlbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bvc2l4Q29tbWFuZExpbmUoJGFyZ3VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gJGFyZ3VtZW50cy5tYXAoKGFyZ3VtZW50KSA9PiBwb3NpeFF1b3RlKGFyZ3VtZW50KSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYW4gYXJndW1lbnQgdGhhdCBpcyBlbnRpcmVseSBjb21wb3NlZCBvZiBjaGFyYWN0ZXJzIHNhZmUgdG8gcGFzcyB0byBhXG4gKiBQT1NJWCBzaGVsbCB1bnF1b3RlZC4gTWlycm9ycyB0aGUgc2FmZSBzZXQgdXNlZCBieSBQeXRob24ncyBgc2hsZXgucXVvdGVgLlxuICovXG5jb25zdCBQT1NJWF9TQUZFX0FSR19SRSA9IC9eW1xcd0AlKz06LC4vLV0rJC87XG5cbi8qKlxuICogTWF0Y2hlcyBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlLCBmb3IgcmVwbGFjaW5nIGl0IHdpdGggdGhlIGAnXFwnJ2AgaWRpb20uXG4gKi9cbmNvbnN0IFNJTkdMRV9RVU9URV9SRSA9IC8nL2c7XG5cbi8qKlxuICogVGhlIHJlcGxhY2VtZW50IGZvciBhIGxpdGVyYWwgc2luZ2xlIHF1b3RlIGluc2lkZSBhIHNpbmdsZS1xdW90ZWQgUE9TSVggc3BhbjpcbiAqIGNsb3NlIHRoZSBzcGFuLCBhZGQgYW4gZXNjYXBlZCBsaXRlcmFsIHF1b3RlLCByZW9wZW4gdGhlIHNwYW4uXG4gKi9cbmNvbnN0IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFID0gU3RyaW5nLnJhd2AnXFwnJ2A7XG5cbi8qKlxuICogUXVvdGVzIGEgc2luZ2xlIGFyZ3VtZW50IHNvIHRoYXQgYENvbW1hbmRMaW5lVG9Bcmd2V2Agd2lsbCBkZWNvZGUgaXRcbiAqIHVuY2hhbmdlZC4gSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX0uXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZ3VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYXJndW1lbnQubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJndW1lbnQpKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50O1xuICB9XG5cbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgPSAyO1xuICBsZXQgcmVzdWx0ID0gJ1wiJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGxldCBudW1iZXJCYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnQubGVuZ3RoICYmIGFyZ3VtZW50W2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgbnVtYmVyQmFja3NsYXNoZXMrKztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPT09IGFyZ3VtZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtYmVyQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IGFyZ3VtZW50LmNoYXJBdChpbmRleCk7XG4gICAgcmVzdWx0ICs9IGNoID09PSAnXCInID8gYCR7J1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SICsgMSl9XCJgIDogJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcykgKyBjaDtcbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgYSBQT1NJWCBzaGVsbCBzbyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB2ZXJiYXRpbS5cbiAqIEFuIGVtcHR5IGFyZ3VtZW50IGJlY29tZXMgYCcnYDsgYW4gYXJndW1lbnQgb2Ygb25seSBzYWZlIGNoYXJhY3RlcnMgaXNcbiAqIHJldHVybmVkIHVuY2hhbmdlZDsgYW55dGhpbmcgZWxzZSBpcyBzaW5nbGUtcXVvdGVkLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSByYXcgYXJndW1lbnQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBhcmd1bWVudCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHBvc2l4UXVvdGUoYXJndW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBQT1NJWF9TQUZFX0FSR19SRS50ZXN0KGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogYCcke3JlcGxhY2VBbGwoeyAkc3RyaW5nOiBhcmd1bWVudCwgcmVwbGFjZXI6IFBPU0lYX0VTQ0FQRURfU0lOR0xFX1FVT1RFLCBzZWFyY2hWYWx1ZTogU0lOR0xFX1FVT1RFX1JFIH0pfSdgO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBgXmAtZXNjYXBlZC5cbiAqL1xuY29uc3QgQ01EX01FVEFfUkUgPSAvWygpJSFeXCI8PiZ8XS9nO1xuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgY21kLmV4ZWAncyBgXCJgIGhhbmRsaW5nXG4gKiBkaWZmZXJzIGZyb20gYENvbW1hbmRMaW5lVG9Bcmd2V2AgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi5cbiAqXG4gKiBBcHBseSB0aGlzIHRvIGEgY29tbWFuZCBsaW5lIHN0cmluZyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgdmlhIGBjbWQuZXhlYFxuICogKGUuZy4sIGBzcGF3bihjbWQsIFtdLCB7IHNoZWxsOiB0cnVlIH0pYCBvbiBXaW5kb3dzKS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgY21kYCBuYW1lcyBXaW5kb3dzIGBjbWQuZXhlYCwgbm90IGFuIGFiYnJldmlhdGlvbiBvZiBgY29tbWFuZGAuXG5leHBvcnQgZnVuY3Rpb24gY21kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBjb21tYW5kTGluZSxcbiAgICByZXBsYWNlcjogJ14kJicsXG4gICAgc2VhcmNoVmFsdWU6IENNRF9NRVRBX1JFXG4gIH0pO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgQ0xJIHRhc2sgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgc2FmZWx5IGFuZCBoYW5kbGVzIGl0cyB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uXG4gKlxuICogSG9ub3JzIHRoZSBwZXItc2NyaXB0IG9mZiBzd2l0Y2ggZmlyc3Q6IHdoZW4gdGhlIG5wbSBzY3JpcHQgY3VycmVudGx5IHJ1bm5pbmcgaGFzIGJlZW4gc3dpdGNoZWQgb2ZmIOKAlFxuICogYExJTlRfTUQ9MCBucG0gcnVuIGxpbnQ6bWRgLCBzZWUge0BsaW5rIGV4aXRJZlNjcmlwdERpc2FibGVkfSDigJQgdGhlIHRhc2sgaXMgbm90IGV4ZWN1dGVkIGFuZFxuICogdGhlIHByb2Nlc3MgZXhpdHMgc3VjY2Vzc2Z1bGx5LiBCZWNhdXNlIGV2ZXJ5IGBzY3JpcHRzLyoudHNgIGVudHJ5IHBvaW50IGFscmVhZHkgZnVubmVscyB0aHJvdWdoIGhlcmUsIG5vXG4gKiBzY3JpcHQgaGFzIHRvIG9wdCBpbiwgYW5kIGVhY2ggYG5wbSBydW5gIHN1Yi1zdGVwIG9mIGEgY29tcG9zaXRlIHNjcmlwdCAoZS5nLiBgYnVpbGRgKSBjYXJyaWVzIGl0cyBvd25cbiAqIHN3aXRjaC5cbiAqXG4gKiBAcGFyYW0gdGFza0Z1bmN0aW9uIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSwgd2hpY2ggbWF5IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhc2sgaXMgY29tcGxldGVkIGFuZCBleGl0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cmFwQ2xpVGFzayh0YXNrRnVuY3Rpb246ICgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGV4aXRJZlNjcmlwdERpc2FibGVkKCk7XG5cbiAgZW5hYmxlTGlicmFyeURlYnVnZ2VycygpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCB3cmFwUmVzdWx0KHRhc2tGdW5jdGlvbik7XG4gIHJlc3VsdC5leGl0KCk7XG59XG5cbi8qKlxuICogU2FmZWx5IGV4ZWN1dGVzIGEgdGFzayBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fS4gSWYgdGhlIHRhc2sgZnVuY3Rpb24gdGhyb3dzIGFuIGVycm9yLFxuICogQW4gZXJyb3IgaXMgY2F1Z2h0LCBhbmQgYSBmYWlsdXJlIHtAbGluayBDbGlUYXNrUmVzdWx0fSBpcyByZXR1cm5lZC5cbiAqXG4gKiBBIHRhc2sgdGhhdCByZXR1cm5zIG5vdGhpbmcgZW5kcyB3aXRoIHRoZSBgcHJvY2Vzcy5leGl0Q29kZWAgaXQgbGVmdCBiZWhpbmQsIHNvIHRoZSBjb21tb24gTm9kZSBzaGFwZSDigJQgcmVwb3J0XG4gKiB0aGUgZmluZGluZ3MsIHNldCBgcHJvY2Vzcy5leGl0Q29kZSA9IDFgLCByZXR1cm4g4oCUIHN0aWxsIGZhaWxzOiB7QGxpbmsgQ2xpVGFza1Jlc3VsdC5leGl0fSBjYWxscyBgcHJvY2Vzcy5leGl0YCxcbiAqIHdob3NlIGFyZ3VtZW50IHdvdWxkIG90aGVyd2lzZSBvdmVycmlkZSBpdCB3aXRoIGAwYC5cbiAqXG4gKiBAcGFyYW0gdGFza0Z1bmN0aW9uIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRhc2suXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyYXBSZXN1bHQodGFza0Z1bmN0aW9uOiAoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+Pik6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgdGFza0Z1bmN0aW9uKCkpIGFzIENsaVRhc2tSZXN1bHQgfCB1bmRlZmluZWQgPz8gQ2xpVGFza1Jlc3VsdC5Gcm9tRXhpdENvZGUoTnVtYmVyKHByb2Nlc3MuZXhpdENvZGUgPz8gMCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGFzayBleGVjdXRpb24nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRmFpbHVyZSgpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7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
@@ -17,6 +17,13 @@
17
17
  * This mirrors the pre-existing `NANO_STAGED=0` / `HUSKY=0` escape hatches, and reuses their notion of an
18
18
  * "off" value, so there is a single answer to what counts as off across the whole tool set.
19
19
  */
20
+ /**
21
+ * Exits the process successfully, before any work, when the npm script currently running has been switched
22
+ * off: it writes `Skipped (<VAR> is off).` and calls `process.exit(0)`.
23
+ *
24
+ * Call it first in a script entry point that does not go through `wrapCliTask`, which already calls it.
25
+ */
26
+ export declare function exitIfScriptDisabled(): void;
20
27
  /**
21
28
  * Resolves the off switch for the npm script that is currently running, loading {@link ENV_FILE_PATH} first.
22
29
  *
@@ -43,6 +43,15 @@ const OFF_VALUES = /* @__PURE__ */ new Set(["0", "false", "no", "off"]);
43
43
  const ENV_FILE_PATH = ".env";
44
44
  const NON_ALPHANUMERIC_REG_EXP = /[^a-z0-9]+/gi;
45
45
  const NPM_SCRIPT_NAME_ENV_VARIABLE = "npm_lifecycle_event";
46
+ function exitIfScriptDisabled() {
47
+ const disabledScriptEnvVariableName = getDisabledScriptEnvVariableName();
48
+ if (disabledScriptEnvVariableName === null) {
49
+ return;
50
+ }
51
+ process.stdout.write(`Skipped (${disabledScriptEnvVariableName} is off).
52
+ `);
53
+ process.exit(0);
54
+ }
46
55
  function getDisabledScriptEnvVariableName() {
47
56
  loadEnvFileIfExists();
48
57
  const scriptName = process.env[NPM_SCRIPT_NAME_ENV_VARIABLE];
@@ -68,8 +77,9 @@ function toEnvVariableName(scriptName) {
68
77
  }).toUpperCase();
69
78
  }
70
79
  export {
80
+ exitIfScriptDisabled,
71
81
  getDisabledScriptEnvVariableName,
72
82
  isEnvVariableOff,
73
83
  loadEnvFileIfExists
74
84
  };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnYtdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTaGFyZWQgZW52aXJvbm1lbnQtdmFyaWFibGUgb2ZmIHN3aXRjaGVzIGZvciB0aGUgQ0xJIHNjcmlwdHMuXG4gKlxuICogRXZlcnkgbnBtIHNjcmlwdCBjYW4gYmUgc2tpcHBlZCBieSBzZXR0aW5nIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGFmdGVyIGl0IOKAlCB0aGUgc2NyaXB0IG5hbWVcbiAqIHVwcGVyY2FzZWQsIHdpdGggZXZlcnkgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgcmVwbGFjZWQgYnkgYF9gOlxuICpcbiAqIHwgU2NyaXB0ICAgICAgICAgICAgICB8IFN3aXRjaCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IGBsaW50YCAgICAgICAgICAgICAgfCBgTElOVD0wYCAgICAgICAgICAgIHxcbiAqIHwgYGxpbnQ6bWQ6Zml4YCAgICAgICB8IGBMSU5UX01EX0ZJWD0wYCAgICAgfFxuICogfCBgZm9ybWF0OmNoZWNrYCAgICAgIHwgYEZPUk1BVF9DSEVDSz0wYCAgICB8XG4gKiB8IGBmaW5kLW92ZXJleHBvc2VkYCAgfCBgRklORF9PVkVSRVhQT1NFRD0wYHxcbiAqXG4gKiBUaGlzIG1pcnJvcnMgdGhlIHByZS1leGlzdGluZyBgTkFOT19TVEFHRUQ9MGAgLyBgSFVTS1k9MGAgZXNjYXBlIGhhdGNoZXMsIGFuZCByZXVzZXMgdGhlaXIgbm90aW9uIG9mIGFuXG4gKiBcIm9mZlwiIHZhbHVlLCBzbyB0aGVyZSBpcyBhIHNpbmdsZSBhbnN3ZXIgdG8gd2hhdCBjb3VudHMgYXMgb2ZmIGFjcm9zcyB0aGUgd2hvbGUgdG9vbCBzZXQuXG4gKi9cblxuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBUaGUgdmFsdWVzIHRoYXQgc3dpdGNoIGEgdmFyaWFibGUgb2ZmLiBBbnl0aGluZyBlbHNlIOKAlCBpbmNsdWRpbmcgYW4gdW5zZXQgdmFyaWFibGUg4oCUIGxlYXZlcyBpdCBvbiwgc28gdGhlXG4gKiBkZWZhdWx0IGlzIGFsd2F5cyBcInJ1biB0aGUgc2NyaXB0XCIuXG4gKi9cbmNvbnN0IE9GRl9WQUxVRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnMCcsICdmYWxzZScsICdubycsICdvZmYnXSk7XG5cbi8qKlxuICogVGhlIG9wdGlvbmFsIHBlci1kZXZlbG9wZXIgZW52aXJvbm1lbnQgZmlsZS4gTG9hZGVkIHZpYSBOb2RlJ3Mgb3duIGBwcm9jZXNzLmxvYWRFbnZGaWxlYCwgc28gaXQgYmVoYXZlc1xuICogdGhlIHNhbWUgb24gZXZlcnkgcGxhdGZvcm0gYW5kIHNoZWxsLlxuICovXG5jb25zdCBFTlZfRklMRV9QQVRIID0gJy5lbnYnO1xuXG4vKipcbiAqIE1hdGNoZXMgZXZlcnkgcnVuIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYXBwZWFyIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUuXG4gKi9cbmNvbnN0IE5PTl9BTFBIQU5VTUVSSUNfUkVHX0VYUCA9IC9bXmEtejAtOV0rL2dpO1xuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBucG0gc2V0cyB0byB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IGl0IGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG5jb25zdCBOUE1fU0NSSVBUX05BTUVfRU5WX1ZBUklBQkxFID0gJ25wbV9saWZlY3ljbGVfZXZlbnQnO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBvZmYgc3dpdGNoIGZvciB0aGUgbnBtIHNjcmlwdCB0aGF0IGlzIGN1cnJlbnRseSBydW5uaW5nLCBsb2FkaW5nIHtAbGluayBFTlZfRklMRV9QQVRIfSBmaXJzdC5cbiAqXG4gKiBUaGUgc2NyaXB0IG5hbWUgY29tZXMgZnJvbSBucG0gaXRzZWxmLCBzbyBubyBzY3JpcHQgaGFzIHRvIGRlY2xhcmUgaXRzIG93biBzd2l0Y2guIFdoZW4gdGhlIHNjcmlwdCB3YXNcbiAqIHN0YXJ0ZWQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gdGhyb3VnaCBucG0sIHRoZXJlIGlzIG5vIG5hbWUgdG8gZGVyaXZlIGZyb20gYW5kIG5vdGhpbmcgaXMgZXZlciBza2lwcGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IHN3aXRjaGVkIHRoZSBjdXJyZW50IHNjcmlwdCBvZmYsIG9yIGBudWxsYCB3aGVuIHRoZVxuICogc2NyaXB0IHNob3VsZCBydW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXNhYmxlZFNjcmlwdEVudlZhcmlhYmxlTmFtZSgpOiBudWxsIHwgc3RyaW5nIHtcbiAgbG9hZEVudkZpbGVJZkV4aXN0cygpO1xuICBjb25zdCBzY3JpcHROYW1lID0gcHJvY2Vzcy5lbnZbTlBNX1NDUklQVF9OQU1FX0VOVl9WQVJJQUJMRV07XG4gIGlmICghc2NyaXB0TmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZW52VmFyaWFibGVOYW1lID0gdG9FbnZWYXJpYWJsZU5hbWUoc2NyaXB0TmFtZSk7XG4gIHJldHVybiBpc0VudlZhcmlhYmxlT2ZmKGVudlZhcmlhYmxlTmFtZSkgPyBlbnZWYXJpYWJsZU5hbWUgOiBudWxsO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGFuIG9mZiB2YWx1ZSAoYDBgLCBgZmFsc2VgLCBgbm9gLCBvciBgb2ZmYCxcbiAqIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgaWdub3Jpbmcgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSkuXG4gKlxuICogQHBhcmFtIGVudlZhcmlhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHNldCB0byBhbiBvZmYgdmFsdWUsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbnZWYXJpYWJsZU9mZihlbnZWYXJpYWJsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gT0ZGX1ZBTFVFUy5oYXMoKHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZV0gPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgb3B0aW9uYWwge0BsaW5rIEVOVl9GSUxFX1BBVEh9IGZpbGUgaW50byBgcHJvY2Vzcy5lbnZgIHdoZW4gaXQgZXhpc3RzLCBzbyBhIGRldmVsb3BlciBjYW4gcGFyayBhXG4gKiBzd2l0Y2ggc3VjaCBhcyBgTElOVF9NRD0wYCB0aGVyZSBpbnN0ZWFkIG9mIHByZWZpeGluZyBldmVyeSBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudkZpbGVJZkV4aXN0cygpOiB2b2lkIHtcbiAgaWYgKGV4aXN0c1N5bmMoRU5WX0ZJTEVfUEFUSCkpIHtcbiAgICBwcm9jZXNzLmxvYWRFbnZGaWxlKEVOVl9GSUxFX1BBVEgpO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gbnBtIHNjcmlwdCBuYW1lIGludG8gdGhlIG5hbWUgb2YgaXRzIG9mZiBzd2l0Y2guXG4gKlxuICogQHBhcmFtIHNjcmlwdE5hbWUgLSBUaGUgbnBtIHNjcmlwdCBuYW1lLCBlLmcuIGBsaW50Om1kOmZpeGAuXG4gKiBAcmV0dXJucyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSwgZS5nLiBgTElOVF9NRF9GSVhgLlxuICovXG5mdW5jdGlvbiB0b0VudlZhcmlhYmxlTmFtZShzY3JpcHROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZzogc2NyaXB0TmFtZSxcbiAgICByZXBsYWNlcjogJ18nLFxuICAgIHNlYXJjaFZhbHVlOiBOT05fQUxQSEFOVU1FUklDX1JFR19FWFBcbiAgfSkudG9VcHBlckNhc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsU0FBUyxrQkFBa0I7QUFDM0IsU0FBUyxrQkFBa0I7QUFDM0IsT0FBTyxhQUFhO0FBTXBCLE1BQU0sYUFBa0Msb0JBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxNQUFNLEtBQUssQ0FBQztBQU0zRSxNQUFNLGdCQUFnQjtBQUt0QixNQUFNLDJCQUEyQjtBQUtqQyxNQUFNLCtCQUErQjtBQVc5QixTQUFTLG1DQUFrRDtBQUNoRSxzQkFBb0I7QUFDcEIsUUFBTSxhQUFhLFFBQVEsSUFBSSw0QkFBNEI7QUFDM0QsTUFBSSxDQUFDLFlBQVk7QUFDZixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sa0JBQWtCLGtCQUFrQixVQUFVO0FBQ3BELFNBQU8saUJBQWlCLGVBQWUsSUFBSSxrQkFBa0I7QUFDL0Q7QUFTTyxTQUFTLGlCQUFpQixpQkFBa0M7QUFDakUsU0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLGVBQWUsS0FBSyxJQUFJLEtBQUssRUFBRSxZQUFZLENBQUM7QUFDakY7QUFNTyxTQUFTLHNCQUE0QjtBQUMxQyxNQUFJLFdBQVcsYUFBYSxHQUFHO0FBQzdCLFlBQVEsWUFBWSxhQUFhO0FBQUEsRUFDbkM7QUFDRjtBQVFBLFNBQVMsa0JBQWtCLFlBQTRCO0FBQ3JELFNBQU8sV0FBVztBQUFBLElBQ2hCLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUMsRUFBRSxZQUFZO0FBQ2pCOyIsIm5hbWVzIjpbXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnYtdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTaGFyZWQgZW52aXJvbm1lbnQtdmFyaWFibGUgb2ZmIHN3aXRjaGVzIGZvciB0aGUgQ0xJIHNjcmlwdHMuXG4gKlxuICogRXZlcnkgbnBtIHNjcmlwdCBjYW4gYmUgc2tpcHBlZCBieSBzZXR0aW5nIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGFmdGVyIGl0IOKAlCB0aGUgc2NyaXB0IG5hbWVcbiAqIHVwcGVyY2FzZWQsIHdpdGggZXZlcnkgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgcmVwbGFjZWQgYnkgYF9gOlxuICpcbiAqIHwgU2NyaXB0ICAgICAgICAgICAgICB8IFN3aXRjaCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IGBsaW50YCAgICAgICAgICAgICAgfCBgTElOVD0wYCAgICAgICAgICAgIHxcbiAqIHwgYGxpbnQ6bWQ6Zml4YCAgICAgICB8IGBMSU5UX01EX0ZJWD0wYCAgICAgfFxuICogfCBgZm9ybWF0OmNoZWNrYCAgICAgIHwgYEZPUk1BVF9DSEVDSz0wYCAgICB8XG4gKiB8IGBmaW5kLW92ZXJleHBvc2VkYCAgfCBgRklORF9PVkVSRVhQT1NFRD0wYHxcbiAqXG4gKiBUaGlzIG1pcnJvcnMgdGhlIHByZS1leGlzdGluZyBgTkFOT19TVEFHRUQ9MGAgLyBgSFVTS1k9MGAgZXNjYXBlIGhhdGNoZXMsIGFuZCByZXVzZXMgdGhlaXIgbm90aW9uIG9mIGFuXG4gKiBcIm9mZlwiIHZhbHVlLCBzbyB0aGVyZSBpcyBhIHNpbmdsZSBhbnN3ZXIgdG8gd2hhdCBjb3VudHMgYXMgb2ZmIGFjcm9zcyB0aGUgd2hvbGUgdG9vbCBzZXQuXG4gKi9cblxuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBUaGUgdmFsdWVzIHRoYXQgc3dpdGNoIGEgdmFyaWFibGUgb2ZmLiBBbnl0aGluZyBlbHNlIOKAlCBpbmNsdWRpbmcgYW4gdW5zZXQgdmFyaWFibGUg4oCUIGxlYXZlcyBpdCBvbiwgc28gdGhlXG4gKiBkZWZhdWx0IGlzIGFsd2F5cyBcInJ1biB0aGUgc2NyaXB0XCIuXG4gKi9cbmNvbnN0IE9GRl9WQUxVRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnMCcsICdmYWxzZScsICdubycsICdvZmYnXSk7XG5cbi8qKlxuICogVGhlIG9wdGlvbmFsIHBlci1kZXZlbG9wZXIgZW52aXJvbm1lbnQgZmlsZS4gTG9hZGVkIHZpYSBOb2RlJ3Mgb3duIGBwcm9jZXNzLmxvYWRFbnZGaWxlYCwgc28gaXQgYmVoYXZlc1xuICogdGhlIHNhbWUgb24gZXZlcnkgcGxhdGZvcm0gYW5kIHNoZWxsLlxuICovXG5jb25zdCBFTlZfRklMRV9QQVRIID0gJy5lbnYnO1xuXG4vKipcbiAqIE1hdGNoZXMgZXZlcnkgcnVuIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYXBwZWFyIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUuXG4gKi9cbmNvbnN0IE5PTl9BTFBIQU5VTUVSSUNfUkVHX0VYUCA9IC9bXmEtejAtOV0rL2dpO1xuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBucG0gc2V0cyB0byB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IGl0IGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG5jb25zdCBOUE1fU0NSSVBUX05BTUVfRU5WX1ZBUklBQkxFID0gJ25wbV9saWZlY3ljbGVfZXZlbnQnO1xuXG4vKipcbiAqIEV4aXRzIHRoZSBwcm9jZXNzIHN1Y2Nlc3NmdWxseSwgYmVmb3JlIGFueSB3b3JrLCB3aGVuIHRoZSBucG0gc2NyaXB0IGN1cnJlbnRseSBydW5uaW5nIGhhcyBiZWVuIHN3aXRjaGVkXG4gKiBvZmY6IGl0IHdyaXRlcyBgU2tpcHBlZCAoPFZBUj4gaXMgb2ZmKS5gIGFuZCBjYWxscyBgcHJvY2Vzcy5leGl0KDApYC5cbiAqXG4gKiBDYWxsIGl0IGZpcnN0IGluIGEgc2NyaXB0IGVudHJ5IHBvaW50IHRoYXQgZG9lcyBub3QgZ28gdGhyb3VnaCBgd3JhcENsaVRhc2tgLCB3aGljaCBhbHJlYWR5IGNhbGxzIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhpdElmU2NyaXB0RGlzYWJsZWQoKTogdm9pZCB7XG4gIGNvbnN0IGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lID0gZ2V0RGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWUoKTtcbiAgaWYgKGRpc2FibGVkU2NyaXB0RW52VmFyaWFibGVOYW1lID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFNraXBwZWQgKCR7ZGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWV9IGlzIG9mZikuXFxuYCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgb2ZmIHN3aXRjaCBmb3IgdGhlIG5wbSBzY3JpcHQgdGhhdCBpcyBjdXJyZW50bHkgcnVubmluZywgbG9hZGluZyB7QGxpbmsgRU5WX0ZJTEVfUEFUSH0gZmlyc3QuXG4gKlxuICogVGhlIHNjcmlwdCBuYW1lIGNvbWVzIGZyb20gbnBtIGl0c2VsZiwgc28gbm8gc2NyaXB0IGhhcyB0byBkZWNsYXJlIGl0cyBvd24gc3dpdGNoLiBXaGVuIHRoZSBzY3JpcHQgd2FzXG4gKiBzdGFydGVkIGRpcmVjdGx5IHJhdGhlciB0aGFuIHRocm91Z2ggbnBtLCB0aGVyZSBpcyBubyBuYW1lIHRvIGRlcml2ZSBmcm9tIGFuZCBub3RoaW5nIGlzIGV2ZXIgc2tpcHBlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBzd2l0Y2hlZCB0aGUgY3VycmVudCBzY3JpcHQgb2ZmLCBvciBgbnVsbGAgd2hlbiB0aGVcbiAqIHNjcmlwdCBzaG91bGQgcnVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzYWJsZWRTY3JpcHRFbnZWYXJpYWJsZU5hbWUoKTogbnVsbCB8IHN0cmluZyB7XG4gIGxvYWRFbnZGaWxlSWZFeGlzdHMoKTtcbiAgY29uc3Qgc2NyaXB0TmFtZSA9IHByb2Nlc3MuZW52W05QTV9TQ1JJUFRfTkFNRV9FTlZfVkFSSUFCTEVdO1xuICBpZiAoIXNjcmlwdE5hbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGVudlZhcmlhYmxlTmFtZSA9IHRvRW52VmFyaWFibGVOYW1lKHNjcmlwdE5hbWUpO1xuICByZXR1cm4gaXNFbnZWYXJpYWJsZU9mZihlbnZWYXJpYWJsZU5hbWUpID8gZW52VmFyaWFibGVOYW1lIDogbnVsbDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBhbiBvZmYgdmFsdWUgKGAwYCwgYGZhbHNlYCwgYG5vYCwgb3IgYG9mZmAsXG4gKiBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kIGlnbm9yaW5nIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UpLlxuICpcbiAqIEBwYXJhbSBlbnZWYXJpYWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gYW4gb2ZmIHZhbHVlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW52VmFyaWFibGVPZmYoZW52VmFyaWFibGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIE9GRl9WQUxVRVMuaGFzKChwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVdID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKSk7XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIG9wdGlvbmFsIHtAbGluayBFTlZfRklMRV9QQVRIfSBmaWxlIGludG8gYHByb2Nlc3MuZW52YCB3aGVuIGl0IGV4aXN0cywgc28gYSBkZXZlbG9wZXIgY2FuIHBhcmsgYVxuICogc3dpdGNoIHN1Y2ggYXMgYExJTlRfTUQ9MGAgdGhlcmUgaW5zdGVhZCBvZiBwcmVmaXhpbmcgZXZlcnkgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnZGaWxlSWZFeGlzdHMoKTogdm9pZCB7XG4gIGlmIChleGlzdHNTeW5jKEVOVl9GSUxFX1BBVEgpKSB7XG4gICAgcHJvY2Vzcy5sb2FkRW52RmlsZShFTlZfRklMRV9QQVRIKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG5wbSBzY3JpcHQgbmFtZSBpbnRvIHRoZSBuYW1lIG9mIGl0cyBvZmYgc3dpdGNoLlxuICpcbiAqIEBwYXJhbSBzY3JpcHROYW1lIC0gVGhlIG5wbSBzY3JpcHQgbmFtZSwgZS5nLiBgbGludDptZDpmaXhgLlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUsIGUuZy4gYExJTlRfTURfRklYYC5cbiAqL1xuZnVuY3Rpb24gdG9FbnZWYXJpYWJsZU5hbWUoc2NyaXB0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHNjcmlwdE5hbWUsXG4gICAgcmVwbGFjZXI6ICdfJyxcbiAgICBzZWFyY2hWYWx1ZTogTk9OX0FMUEhBTlVNRVJJQ19SRUdfRVhQXG4gIH0pLnRvVXBwZXJDYXNlKCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsa0JBQWtCO0FBQzNCLE9BQU8sYUFBYTtBQU1wQixNQUFNLGFBQWtDLG9CQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsTUFBTSxLQUFLLENBQUM7QUFNM0UsTUFBTSxnQkFBZ0I7QUFLdEIsTUFBTSwyQkFBMkI7QUFLakMsTUFBTSwrQkFBK0I7QUFROUIsU0FBUyx1QkFBNkI7QUFDM0MsUUFBTSxnQ0FBZ0MsaUNBQWlDO0FBQ3ZFLE1BQUksa0NBQWtDLE1BQU07QUFDMUM7QUFBQSxFQUNGO0FBRUEsVUFBUSxPQUFPLE1BQU0sWUFBWSw2QkFBNkI7QUFBQSxDQUFhO0FBQzNFLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBV08sU0FBUyxtQ0FBa0Q7QUFDaEUsc0JBQW9CO0FBQ3BCLFFBQU0sYUFBYSxRQUFRLElBQUksNEJBQTRCO0FBQzNELE1BQUksQ0FBQyxZQUFZO0FBQ2YsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGtCQUFrQixrQkFBa0IsVUFBVTtBQUNwRCxTQUFPLGlCQUFpQixlQUFlLElBQUksa0JBQWtCO0FBQy9EO0FBU08sU0FBUyxpQkFBaUIsaUJBQWtDO0FBQ2pFLFNBQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxlQUFlLEtBQUssSUFBSSxLQUFLLEVBQUUsWUFBWSxDQUFDO0FBQ2pGO0FBTU8sU0FBUyxzQkFBNEI7QUFDMUMsTUFBSSxXQUFXLGFBQWEsR0FBRztBQUM3QixZQUFRLFlBQVksYUFBYTtBQUFBLEVBQ25DO0FBQ0Y7QUFRQSxTQUFTLGtCQUFrQixZQUE0QjtBQUNyRCxTQUFPLFdBQVc7QUFBQSxJQUNoQixTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsSUFDVixhQUFhO0FBQUEsRUFDZixDQUFDLEVBQUUsWUFBWTtBQUNqQjsiLCJuYW1lcyI6W119
@@ -1,4 +1,5 @@
1
1
  /// <reference path="./library-references.d.mts" />
2
+ /// <reference types="node" />
2
3
  /**
3
4
  * @file
4
5
  *
@@ -11,7 +12,14 @@
11
12
  *
12
13
  * Asking git rather than parsing `.gitignore` is deliberate: it honors nested ignore files, `!` negations,
13
14
  * `.git/info/exclude`, and the user's global excludes, at no cost to us.
15
+ *
16
+ * It also reads a tracked file as it is about to be COMMITTED ({@link readIndexContent}), for a gate that
17
+ * asserts something about those bytes. Such a gate typically runs from `nano-staged` beside `lint:fix` and
18
+ * `format`, which rewrite staged files in place, and nano-staged runs its per-pattern task groups with
19
+ * `Promise.all`, so a gate reading the working tree races the fixer. Reading the index makes the ordering
20
+ * irrelevant rather than enforced.
14
21
  */
22
+ import { Buffer } from 'node:buffer';
15
23
  /**
16
24
  * Options for {@link getNonIgnoredFiles}.
17
25
  */
@@ -35,3 +43,24 @@ export interface GetNonIgnoredFilesOptions {
35
43
  * git repository (a tarball checkout, for instance). Callers fall back to their own listing in that case.
36
44
  */
37
45
  export declare function getNonIgnoredFiles(options?: GetNonIgnoredFilesOptions): Promise<null | string[]>;
46
+ /**
47
+ * Reads one tracked file's content out of the git index - stage 0, the bytes `git commit` would write.
48
+ *
49
+ * This spawns `git` directly rather than going through `execFromRoot`, for two reasons, either of which alone
50
+ * would be enough: `execFromRoot` decodes stdout as UTF-8, which a binary blob does not survive, and it strips
51
+ * one trailing newline, so every text file would read as differing from its source by its last line.
52
+ *
53
+ * The path is passed in the `:./<path>` form, which git resolves against the directory it runs from rather
54
+ * than against the top of the working tree, so this stays correct when `root` is a subpackage of the
55
+ * repository rather than its top.
56
+ *
57
+ * No smudge filter or line-ending conversion is applied: `git cat-file blob` hands the blob back verbatim.
58
+ *
59
+ * @param root - The directory the path is relative to, which is also the directory git is run from.
60
+ * @param repoRelativePath - The file's path relative to `root`, posix-spelled.
61
+ * @returns A {@link Promise} that resolves with the staged bytes, or with `null` when the path has no stage-0
62
+ * index entry - it is untracked, staged for deletion, or unmerged. It rejects on any other git failure, `not a
63
+ * git repository` among them, because the bytes a commit would write have no honest answer where there are no
64
+ * commits.
65
+ */
66
+ export declare function readIndexContent(root: string, repoRelativePath: string): Promise<Buffer | null>;
@@ -3,6 +3,8 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
+ import { Buffer } from "node:buffer";
7
+ import { spawn } from "node:child_process";
6
8
  import { execFromRoot } from "./root.mjs";
7
9
  const NUL_SEPARATOR = "\0";
8
10
  async function getNonIgnoredFiles(options) {
@@ -24,7 +26,43 @@ async function getNonIgnoredFiles(options) {
24
26
  }
25
27
  return [...new Set(stdout.split(NUL_SEPARATOR).filter((path) => path !== ""))];
26
28
  }
29
+ function readIndexContent(root, repoRelativePath) {
30
+ return new Promise((resolve, reject) => {
31
+ const child = spawn("git", ["-C", root, "cat-file", "blob", `:./${repoRelativePath}`], {
32
+ stdio: ["ignore", "pipe", "pipe"],
33
+ windowsHide: true
34
+ });
35
+ const chunks = [];
36
+ let stderr = "";
37
+ child.stdout.on("data", (chunk) => {
38
+ chunks.push(chunk);
39
+ });
40
+ child.stderr.on("data", (chunk) => {
41
+ stderr += chunk.toString("utf-8");
42
+ });
43
+ child.on("error", (error) => {
44
+ reject(new Error(`Could not run \`git cat-file\` for ${repoRelativePath}.`, { cause: error }));
45
+ });
46
+ child.on("close", (exitCode) => {
47
+ if (exitCode === 0) {
48
+ resolve(Buffer.concat(chunks));
49
+ return;
50
+ }
51
+ if (isMissingIndexPath(stderr)) {
52
+ resolve(null);
53
+ return;
54
+ }
55
+ const exitCodeText = exitCode === null ? "(null)" : String(exitCode);
56
+ reject(new Error(`\`git cat-file blob :./${repoRelativePath}\` failed with exit code ${exitCodeText}:
57
+ ${stderr.trim()}`));
58
+ });
59
+ });
60
+ }
61
+ function isMissingIndexPath(stderr) {
62
+ return stderr.includes("does not exist") || stderr.includes("not in the index") || stderr.includes("Not a valid object name");
63
+ }
27
64
  export {
28
- getNonIgnoredFiles
65
+ getNonIgnoredFiles,
66
+ readIndexContent
29
67
  };
30
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dpdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEdpdC1kZXJpdmVkIGZpbGUgbGlzdGluZ3MgZm9yIHRoZSByZXBvLXdhbGtpbmcgc2NyaXB0cy5cbiAqXG4gKiBUb29saW5nIHRoYXQgd2Fsa3MgdGhlIHJlcG9zaXRvcnkgbXVzdCBza2lwIHdoYXRldmVyIGAuZ2l0aWdub3JlYCBza2lwcyBcdTIwMTQgb3RoZXJ3aXNlIGV2ZXJ5IHNjcmlwdCBncm93cyBpdHNcbiAqIG93biBoYW5kLW1haW50YWluZWQgaWdub3JlIGxpc3QsIHRoZSBsaXN0cyBkcmlmdCBhcGFydCwgYW5kIGEgcGF0aCB0aGF0IGlzIGdpdGlnbm9yZWQgYnV0IG5vdCBlbnVtZXJhdGVkXG4gKiAoYSBuZXN0ZWQgYG5vZGVfbW9kdWxlc2AgdW5kZXIgYSB0ZXN0IGZpeHR1cmUsIHNheSkgaXMgd2Fsa2VkIGFueXdheS4gTW9zdCB0b29scyBoYXZlIGEgbmF0aXZlIHN3aXRjaCBmb3JcbiAqIHRoaXM7IHRoZSBvbmVzIHRoYXQgZG8gbm90IHRha2UgYSBmaWxlIGxpc3QgaW5zdGVhZCwgYW5kIHRoYXQgaXMgd2hhdCB0aGlzIG1vZHVsZSBwcm9kdWNlcy5cbiAqXG4gKiBBc2tpbmcgZ2l0IHJhdGhlciB0aGFuIHBhcnNpbmcgYC5naXRpZ25vcmVgIGlzIGRlbGliZXJhdGU6IGl0IGhvbm9ycyBuZXN0ZWQgaWdub3JlIGZpbGVzLCBgIWAgbmVnYXRpb25zLFxuICogYC5naXQvaW5mby9leGNsdWRlYCwgYW5kIHRoZSB1c2VyJ3MgZ2xvYmFsIGV4Y2x1ZGVzLCBhdCBubyBjb3N0IHRvIHVzLlxuICovXG5cbmltcG9ydCB7IGV4ZWNGcm9tUm9vdCB9IGZyb20gJy4vcm9vdC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGdldE5vbklnbm9yZWRGaWxlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Tm9uSWdub3JlZEZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBHaXQgcGF0aHNwZWNzIGxpbWl0aW5nIHRoZSBsaXN0aW5nLCBlLmcuIGBbJyoubWQnXWAuIFdoZW4gb21pdHRlZCwgZXZlcnkgbm9uLWlnbm9yZWQgZmlsZSBpcyBsaXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbXWBcbiAgICovXG4gIHJlYWRvbmx5IHBhdHRlcm5zPzogcmVhZG9ubHkgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogU2VwYXJhdGVzIHRoZSBwYXRocyBpbiBgZ2l0IGxzLWZpbGVzIC16YCBvdXRwdXQuIFVzaW5nIHRoZSBOVUwgZm9ybSBhdm9pZHMgZ2l0J3MgcXVvdGluZyBvZiBwYXRocyB0aGF0XG4gKiBjb250YWluIHVudXN1YWwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gYmUgdW5lc2NhcGVkLlxuICovXG5jb25zdCBOVUxfU0VQQVJBVE9SID0gJ1xcMCc7XG5cbi8qKlxuICogTGlzdHMgdGhlIHJlcG9zaXRvcnkgZmlsZXMgdGhhdCBgLmdpdGlnbm9yZWAgZG9lcyBub3QgZXhjbHVkZS5cbiAqXG4gKiBDb3ZlcnMgYm90aCB0cmFja2VkIGZpbGVzIGFuZCB1bnRyYWNrZWQtYnV0LW5vdC1pZ25vcmVkIG9uZXMsIHNvIGEgYnJhbmQtbmV3IGZpbGUgaXMgY2hlY2tlZCBiZWZvcmUgaXQgaXNcbiAqIGV2ZXIgY29tbWl0dGVkLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBHZXROb25JZ25vcmVkRmlsZXNPcHRpb25zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWF0Y2hpbmcgcGF0aHMsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlciBhbmRcbiAqIHNlcGFyYXRlZCBieSBgL2A7IG9yIHdpdGggYG51bGxgIHdoZW4gZ2l0IGNhbm5vdCBhbnN3ZXIgXHUyMDE0IGl0IGlzIG5vdCBpbnN0YWxsZWQsIG9yIHRoZSBwcm9qZWN0IGlzIG5vdCBhXG4gKiBnaXQgcmVwb3NpdG9yeSAoYSB0YXJiYWxsIGNoZWNrb3V0LCBmb3IgaW5zdGFuY2UpLiBDYWxsZXJzIGZhbGwgYmFjayB0byB0aGVpciBvd24gbGlzdGluZyBpbiB0aGF0IGNhc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXROb25JZ25vcmVkRmlsZXMob3B0aW9ucz86IEdldE5vbklnbm9yZWRGaWxlc09wdGlvbnMpOiBQcm9taXNlPG51bGwgfCBzdHJpbmdbXT4ge1xuICBjb25zdCB7IHBhdHRlcm5zID0gW10gfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgJ2dpdCcsXG4gICAgJ2xzLWZpbGVzJyxcbiAgICAnLS1jYWNoZWQnLFxuICAgICctLW90aGVycycsXG4gICAgJy0tZXhjbHVkZS1zdGFuZGFyZCcsXG4gICAgJy16JyxcbiAgICAuLi5wYXR0ZXJucy5sZW5ndGggPiAwID8gWyctLScsIC4uLnBhdHRlcm5zXSA6IFtdXG4gIF07XG5cbiAgbGV0IHN0ZG91dDogc3RyaW5nO1xuICB0cnkge1xuICAgIHN0ZG91dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChjb21tYW5kLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gYC0tY2FjaGVkIC0tb3RoZXJzYCBjYW4gbmFtZSB0aGUgc2FtZSBwYXRoIHR3aWNlIChlLmcuIGEgZmlsZSBzdGFnZWQgZm9yIGRlbGV0aW9uIHRoYXQgaXMgc3RpbGwgb24gZGlzaykuXG4gIHJldHVybiBbLi4ubmV3IFNldChzdGRvdXQuc3BsaXQoTlVMX1NFUEFSQVRPUikuZmlsdGVyKChwYXRoKSA9PiBwYXRoICE9PSAnJykpXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBY0EsU0FBUyxvQkFBb0I7QUFrQjdCLE1BQU0sZ0JBQWdCO0FBYXRCLGVBQXNCLG1CQUFtQixTQUErRDtBQUN0RyxRQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxXQUFXLENBQUM7QUFDdEMsUUFBTSxVQUFVO0FBQUEsSUFDZDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHLFNBQVMsU0FBUyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsSUFBSSxDQUFDO0FBQUEsRUFDbEQ7QUFFQSxNQUFJO0FBQ0osTUFBSTtBQUNGLGFBQVMsTUFBTSxhQUFhLFNBQVMsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQ3hELFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxPQUFPLE1BQU0sYUFBYSxFQUFFLE9BQU8sQ0FBQyxTQUFTLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDL0U7IiwKICAibmFtZXMiOiBbXQp9Cg==
68
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dpdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEdpdC1kZXJpdmVkIGZpbGUgbGlzdGluZ3MgZm9yIHRoZSByZXBvLXdhbGtpbmcgc2NyaXB0cy5cbiAqXG4gKiBUb29saW5nIHRoYXQgd2Fsa3MgdGhlIHJlcG9zaXRvcnkgbXVzdCBza2lwIHdoYXRldmVyIGAuZ2l0aWdub3JlYCBza2lwcyBcdTIwMTQgb3RoZXJ3aXNlIGV2ZXJ5IHNjcmlwdCBncm93cyBpdHNcbiAqIG93biBoYW5kLW1haW50YWluZWQgaWdub3JlIGxpc3QsIHRoZSBsaXN0cyBkcmlmdCBhcGFydCwgYW5kIGEgcGF0aCB0aGF0IGlzIGdpdGlnbm9yZWQgYnV0IG5vdCBlbnVtZXJhdGVkXG4gKiAoYSBuZXN0ZWQgYG5vZGVfbW9kdWxlc2AgdW5kZXIgYSB0ZXN0IGZpeHR1cmUsIHNheSkgaXMgd2Fsa2VkIGFueXdheS4gTW9zdCB0b29scyBoYXZlIGEgbmF0aXZlIHN3aXRjaCBmb3JcbiAqIHRoaXM7IHRoZSBvbmVzIHRoYXQgZG8gbm90IHRha2UgYSBmaWxlIGxpc3QgaW5zdGVhZCwgYW5kIHRoYXQgaXMgd2hhdCB0aGlzIG1vZHVsZSBwcm9kdWNlcy5cbiAqXG4gKiBBc2tpbmcgZ2l0IHJhdGhlciB0aGFuIHBhcnNpbmcgYC5naXRpZ25vcmVgIGlzIGRlbGliZXJhdGU6IGl0IGhvbm9ycyBuZXN0ZWQgaWdub3JlIGZpbGVzLCBgIWAgbmVnYXRpb25zLFxuICogYC5naXQvaW5mby9leGNsdWRlYCwgYW5kIHRoZSB1c2VyJ3MgZ2xvYmFsIGV4Y2x1ZGVzLCBhdCBubyBjb3N0IHRvIHVzLlxuICpcbiAqIEl0IGFsc28gcmVhZHMgYSB0cmFja2VkIGZpbGUgYXMgaXQgaXMgYWJvdXQgdG8gYmUgQ09NTUlUVEVEICh7QGxpbmsgcmVhZEluZGV4Q29udGVudH0pLCBmb3IgYSBnYXRlIHRoYXRcbiAqIGFzc2VydHMgc29tZXRoaW5nIGFib3V0IHRob3NlIGJ5dGVzLiBTdWNoIGEgZ2F0ZSB0eXBpY2FsbHkgcnVucyBmcm9tIGBuYW5vLXN0YWdlZGAgYmVzaWRlIGBsaW50OmZpeGAgYW5kXG4gKiBgZm9ybWF0YCwgd2hpY2ggcmV3cml0ZSBzdGFnZWQgZmlsZXMgaW4gcGxhY2UsIGFuZCBuYW5vLXN0YWdlZCBydW5zIGl0cyBwZXItcGF0dGVybiB0YXNrIGdyb3VwcyB3aXRoXG4gKiBgUHJvbWlzZS5hbGxgLCBzbyBhIGdhdGUgcmVhZGluZyB0aGUgd29ya2luZyB0cmVlIHJhY2VzIHRoZSBmaXhlci4gUmVhZGluZyB0aGUgaW5kZXggbWFrZXMgdGhlIG9yZGVyaW5nXG4gKiBpcnJlbGV2YW50IHJhdGhlciB0aGFuIGVuZm9yY2VkLlxuICovXG5cbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgZXhlY0Zyb21Sb290IH0gZnJvbSAnLi9yb290LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0Tm9uSWdub3JlZEZpbGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXROb25JZ25vcmVkRmlsZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEdpdCBwYXRoc3BlY3MgbGltaXRpbmcgdGhlIGxpc3RpbmcsIGUuZy4gYFsnKi5tZCddYC4gV2hlbiBvbWl0dGVkLCBldmVyeSBub24taWdub3JlZCBmaWxlIGlzIGxpc3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYFtdYFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybnM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTZXBhcmF0ZXMgdGhlIHBhdGhzIGluIGBnaXQgbHMtZmlsZXMgLXpgIG91dHB1dC4gVXNpbmcgdGhlIE5VTCBmb3JtIGF2b2lkcyBnaXQncyBxdW90aW5nIG9mIHBhdGhzIHRoYXRcbiAqIGNvbnRhaW4gdW51c3VhbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0byBiZSB1bmVzY2FwZWQuXG4gKi9cbmNvbnN0IE5VTF9TRVBBUkFUT1IgPSAnXFwwJztcblxuLyoqXG4gKiBMaXN0cyB0aGUgcmVwb3NpdG9yeSBmaWxlcyB0aGF0IGAuZ2l0aWdub3JlYCBkb2VzIG5vdCBleGNsdWRlLlxuICpcbiAqIENvdmVycyBib3RoIHRyYWNrZWQgZmlsZXMgYW5kIHVudHJhY2tlZC1idXQtbm90LWlnbm9yZWQgb25lcywgc28gYSBicmFuZC1uZXcgZmlsZSBpcyBjaGVja2VkIGJlZm9yZSBpdCBpc1xuICogZXZlciBjb21taXR0ZWQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEdldE5vbklnbm9yZWRGaWxlc09wdGlvbnN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBtYXRjaGluZyBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyIGFuZFxuICogc2VwYXJhdGVkIGJ5IGAvYDsgb3Igd2l0aCBgbnVsbGAgd2hlbiBnaXQgY2Fubm90IGFuc3dlciBcdTIwMTQgaXQgaXMgbm90IGluc3RhbGxlZCwgb3IgdGhlIHByb2plY3QgaXMgbm90IGFcbiAqIGdpdCByZXBvc2l0b3J5IChhIHRhcmJhbGwgY2hlY2tvdXQsIGZvciBpbnN0YW5jZSkuIENhbGxlcnMgZmFsbCBiYWNrIHRvIHRoZWlyIG93biBsaXN0aW5nIGluIHRoYXQgY2FzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5vbklnbm9yZWRGaWxlcyhvcHRpb25zPzogR2V0Tm9uSWdub3JlZEZpbGVzT3B0aW9ucyk6IFByb21pc2U8bnVsbCB8IHN0cmluZ1tdPiB7XG4gIGNvbnN0IHsgcGF0dGVybnMgPSBbXSB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAnZ2l0JyxcbiAgICAnbHMtZmlsZXMnLFxuICAgICctLWNhY2hlZCcsXG4gICAgJy0tb3RoZXJzJyxcbiAgICAnLS1leGNsdWRlLXN0YW5kYXJkJyxcbiAgICAnLXonLFxuICAgIC4uLnBhdHRlcm5zLmxlbmd0aCA+IDAgPyBbJy0tJywgLi4ucGF0dGVybnNdIDogW11cbiAgXTtcblxuICBsZXQgc3Rkb3V0OiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgc3Rkb3V0ID0gYXdhaXQgZXhlY0Zyb21Sb290KGNvbW1hbmQsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBgLS1jYWNoZWQgLS1vdGhlcnNgIGNhbiBuYW1lIHRoZSBzYW1lIHBhdGggdHdpY2UgKGUuZy4gYSBmaWxlIHN0YWdlZCBmb3IgZGVsZXRpb24gdGhhdCBpcyBzdGlsbCBvbiBkaXNrKS5cbiAgcmV0dXJuIFsuLi5uZXcgU2V0KHN0ZG91dC5zcGxpdChOVUxfU0VQQVJBVE9SKS5maWx0ZXIoKHBhdGgpID0+IHBhdGggIT09ICcnKSldO1xufVxuXG4vKipcbiAqIFJlYWRzIG9uZSB0cmFja2VkIGZpbGUncyBjb250ZW50IG91dCBvZiB0aGUgZ2l0IGluZGV4IC0gc3RhZ2UgMCwgdGhlIGJ5dGVzIGBnaXQgY29tbWl0YCB3b3VsZCB3cml0ZS5cbiAqXG4gKiBUaGlzIHNwYXducyBgZ2l0YCBkaXJlY3RseSByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoIGBleGVjRnJvbVJvb3RgLCBmb3IgdHdvIHJlYXNvbnMsIGVpdGhlciBvZiB3aGljaCBhbG9uZVxuICogd291bGQgYmUgZW5vdWdoOiBgZXhlY0Zyb21Sb290YCBkZWNvZGVzIHN0ZG91dCBhcyBVVEYtOCwgd2hpY2ggYSBiaW5hcnkgYmxvYiBkb2VzIG5vdCBzdXJ2aXZlLCBhbmQgaXQgc3RyaXBzXG4gKiBvbmUgdHJhaWxpbmcgbmV3bGluZSwgc28gZXZlcnkgdGV4dCBmaWxlIHdvdWxkIHJlYWQgYXMgZGlmZmVyaW5nIGZyb20gaXRzIHNvdXJjZSBieSBpdHMgbGFzdCBsaW5lLlxuICpcbiAqIFRoZSBwYXRoIGlzIHBhc3NlZCBpbiB0aGUgYDouLzxwYXRoPmAgZm9ybSwgd2hpY2ggZ2l0IHJlc29sdmVzIGFnYWluc3QgdGhlIGRpcmVjdG9yeSBpdCBydW5zIGZyb20gcmF0aGVyXG4gKiB0aGFuIGFnYWluc3QgdGhlIHRvcCBvZiB0aGUgd29ya2luZyB0cmVlLCBzbyB0aGlzIHN0YXlzIGNvcnJlY3Qgd2hlbiBgcm9vdGAgaXMgYSBzdWJwYWNrYWdlIG9mIHRoZVxuICogcmVwb3NpdG9yeSByYXRoZXIgdGhhbiBpdHMgdG9wLlxuICpcbiAqIE5vIHNtdWRnZSBmaWx0ZXIgb3IgbGluZS1lbmRpbmcgY29udmVyc2lvbiBpcyBhcHBsaWVkOiBgZ2l0IGNhdC1maWxlIGJsb2JgIGhhbmRzIHRoZSBibG9iIGJhY2sgdmVyYmF0aW0uXG4gKlxuICogQHBhcmFtIHJvb3QgLSBUaGUgZGlyZWN0b3J5IHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvLCB3aGljaCBpcyBhbHNvIHRoZSBkaXJlY3RvcnkgZ2l0IGlzIHJ1biBmcm9tLlxuICogQHBhcmFtIHJlcG9SZWxhdGl2ZVBhdGggLSBUaGUgZmlsZSdzIHBhdGggcmVsYXRpdmUgdG8gYHJvb3RgLCBwb3NpeC1zcGVsbGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzdGFnZWQgYnl0ZXMsIG9yIHdpdGggYG51bGxgIHdoZW4gdGhlIHBhdGggaGFzIG5vIHN0YWdlLTBcbiAqIGluZGV4IGVudHJ5IC0gaXQgaXMgdW50cmFja2VkLCBzdGFnZWQgZm9yIGRlbGV0aW9uLCBvciB1bm1lcmdlZC4gSXQgcmVqZWN0cyBvbiBhbnkgb3RoZXIgZ2l0IGZhaWx1cmUsIGBub3QgYVxuICogZ2l0IHJlcG9zaXRvcnlgIGFtb25nIHRoZW0sIGJlY2F1c2UgdGhlIGJ5dGVzIGEgY29tbWl0IHdvdWxkIHdyaXRlIGhhdmUgbm8gaG9uZXN0IGFuc3dlciB3aGVyZSB0aGVyZSBhcmUgbm9cbiAqIGNvbW1pdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSW5kZXhDb250ZW50KHJvb3Q6IHN0cmluZywgcmVwb1JlbGF0aXZlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLypcbiAgICAgKiBObyBzaGVsbDogYSBwYXRoIGlzIHBhc3NlZCBhcyBhbiBhcmd2IGVudHJ5IHJhdGhlciB0aGFuIGFzIHRleHQgc29tZXRoaW5nIGhhcyB0byBxdW90ZSwgYW5kIHRoZVxuICAgICAqIGxlYWRpbmcgYDpgIGlzIGEgZ2l0IHJldmlzaW9uIHNpZ2lsIHRoYXQgYSBzaGVsbCB3b3VsZCBiZSBmcmVlIHRvIHJlYWQgYXMgaXRzIG93bi5cbiAgICAgKi9cbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKCdnaXQnLCBbJy1DJywgcm9vdCwgJ2NhdC1maWxlJywgJ2Jsb2InLCBgOi4vJHtyZXBvUmVsYXRpdmVQYXRofWBdLCB7XG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgICB3aW5kb3dzSGlkZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuICAgIGxldCBzdGRlcnIgPSAnJztcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIChjaHVuazogQnVmZmVyKSA9PiB7XG4gICAgICBjaHVua3MucHVzaChjaHVuayk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoY2h1bms6IEJ1ZmZlcikgPT4ge1xuICAgICAgc3RkZXJyICs9IGNodW5rLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ291bGQgbm90IHJ1biBcXGBnaXQgY2F0LWZpbGVcXGAgZm9yICR7cmVwb1JlbGF0aXZlUGF0aH0uYCwgeyBjYXVzZTogZXJyb3IgfSkpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoZXhpdENvZGUgPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZShCdWZmZXIuY29uY2F0KGNodW5rcykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICAgKiBHaXQgYW5zd2VycyBhIHBhdGggaXQgY2Fubm90IGZpbmQgaW4gdGhlIGluZGV4IHdpdGggZXhpdCAxMjggYW5kIGEgYGZhdGFsOmAgbGluZSwgYW5kIHNvIGRvZXMgYSBmb2xkZXJcbiAgICAgICAqIHRoYXQgaXMgbm90IGEgcmVwb3NpdG9yeSwgc28gdGhlIHN0ZGVyciB0ZXh0IGlzIHdoYXQgc2VwYXJhdGVzIHRoZSBhYnNlbmNlIG9mIGEgc3RhZ2VkIGJsb2IgZnJvbVxuICAgICAgICogZXZlcnl0aGluZyBlbHNlLlxuICAgICAgICovXG4gICAgICBpZiAoaXNNaXNzaW5nSW5kZXhQYXRoKHN0ZGVycikpIHtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleGl0Q29kZVRleHQgPSBleGl0Q29kZSA9PT0gbnVsbCA/ICcobnVsbCknIDogU3RyaW5nKGV4aXRDb2RlKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYFxcYGdpdCBjYXQtZmlsZSBibG9iIDouLyR7cmVwb1JlbGF0aXZlUGF0aH1cXGAgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGVUZXh0fTpcXG4ke3N0ZGVyci50cmltKCl9YCkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNNaXNzaW5nSW5kZXhQYXRoKHN0ZGVycjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGRlcnIuaW5jbHVkZXMoJ2RvZXMgbm90IGV4aXN0JykgfHwgc3RkZXJyLmluY2x1ZGVzKCdub3QgaW4gdGhlIGluZGV4JykgfHwgc3RkZXJyLmluY2x1ZGVzKCdOb3QgYSB2YWxpZCBvYmplY3QgbmFtZScpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFvQkEsU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsYUFBYTtBQUV0QixTQUFTLG9CQUFvQjtBQWtCN0IsTUFBTSxnQkFBZ0I7QUFhdEIsZUFBc0IsbUJBQW1CLFNBQStEO0FBQ3RHLFFBQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLFdBQVcsQ0FBQztBQUN0QyxRQUFNLFVBQVU7QUFBQSxJQUNkO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUcsU0FBUyxTQUFTLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxJQUFJLENBQUM7QUFBQSxFQUNsRDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxNQUFNLGFBQWEsU0FBUyxFQUFFLFNBQVMsS0FBSyxDQUFDO0FBQUEsRUFDeEQsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBR0EsU0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLE9BQU8sTUFBTSxhQUFhLEVBQUUsT0FBTyxDQUFDLFNBQVMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUMvRTtBQXNCTyxTQUFTLGlCQUFpQixNQUFjLGtCQUFrRDtBQUMvRixTQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUt0QyxVQUFNLFFBQVEsTUFBTSxPQUFPLENBQUMsTUFBTSxNQUFNLFlBQVksUUFBUSxNQUFNLGdCQUFnQixFQUFFLEdBQUc7QUFBQSxNQUNyRixPQUFPLENBQUMsVUFBVSxRQUFRLE1BQU07QUFBQSxNQUNoQyxhQUFhO0FBQUEsSUFDZixDQUFDO0FBRUQsVUFBTSxTQUFtQixDQUFDO0FBQzFCLFFBQUksU0FBUztBQUViLFVBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFrQjtBQUN6QyxhQUFPLEtBQUssS0FBSztBQUFBLElBQ25CLENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBa0I7QUFDekMsZ0JBQVUsTUFBTSxTQUFTLE9BQU87QUFBQSxJQUNsQyxDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFpQjtBQUNsQyxhQUFPLElBQUksTUFBTSxzQ0FBc0MsZ0JBQWdCLEtBQUssRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFDL0YsQ0FBQztBQUVELFVBQU0sR0FBRyxTQUFTLENBQUMsYUFBNEI7QUFDN0MsVUFBSSxhQUFhLEdBQUc7QUFDbEIsZ0JBQVEsT0FBTyxPQUFPLE1BQU0sQ0FBQztBQUM3QjtBQUFBLE1BQ0Y7QUFPQSxVQUFJLG1CQUFtQixNQUFNLEdBQUc7QUFDOUIsZ0JBQVEsSUFBSTtBQUNaO0FBQUEsTUFDRjtBQUVBLFlBQU0sZUFBZSxhQUFhLE9BQU8sV0FBVyxPQUFPLFFBQVE7QUFDbkUsYUFBTyxJQUFJLE1BQU0sMEJBQTBCLGdCQUFnQiw0QkFBNEIsWUFBWTtBQUFBLEVBQU0sT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQUEsSUFDM0gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBRUEsU0FBUyxtQkFBbUIsUUFBeUI7QUFDbkQsU0FBTyxPQUFPLFNBQVMsZ0JBQWdCLEtBQUssT0FBTyxTQUFTLGtCQUFrQixLQUFLLE9BQU8sU0FBUyx5QkFBeUI7QUFDOUg7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -13,6 +13,17 @@ export interface LintOptions {
13
13
  * `markdownlint-cli2` runs with its own defaults.
14
14
  */
15
15
  readonly defaultConfigFilePath?: string | undefined;
16
+ /**
17
+ * Globs, relative to the root folder, of markdown files to leave out of the `linkinator` pass only;
18
+ * `markdownlint-cli2` still lints them.
19
+ *
20
+ * For a documentation site whose pages link to each other base-absolutely (`/<site-base>/guides/...`): those
21
+ * links resolve only against the BUILT site, so `linkinator` reports each one as a 404, and the site's own
22
+ * build is what checks them.
23
+ *
24
+ * @example `['docs/**']`
25
+ */
26
+ readonly linkCheckExcludeGlobs?: readonly string[] | undefined;
16
27
  /**
17
28
  * Optional file paths to lint. If omitted, lints the entire project.
18
29
  */
@@ -44,7 +44,10 @@ import {
44
44
  cp,
45
45
  glob
46
46
  } from "node:fs/promises";
47
- import { relative } from "node:path";
47
+ import {
48
+ matchesGlob,
49
+ relative
50
+ } from "node:path";
48
51
  import { getNonIgnoredFiles } from "../git.mjs";
49
52
  import { resolveToolCommand } from "../package-manager.mjs";
50
53
  import { RepoPaths } from "../repo-paths.mjs";
@@ -58,7 +61,7 @@ import {
58
61
  NODE_MODULES_IGNORE_GLOB
59
62
  } from "./markdownlint-ignores.mjs";
60
63
  async function lint(options) {
61
- const { defaultConfigFilePath, paths, shouldFix = false } = options ?? {};
64
+ const { defaultConfigFilePath, linkCheckExcludeGlobs = [], paths, shouldFix = false } = options ?? {};
62
65
  const configFiles = [
63
66
  RepoPaths.MarkdownlintCli2ConfigJsonc,
64
67
  RepoPaths.MarkdownlintCli2ConfigYaml,
@@ -83,6 +86,7 @@ async function lint(options) {
83
86
  await execFromRoot([...resolveToolCommand({ tool: "markdownlint-cli2" }), ...shouldFix ? ["--fix"] : [], { batchedArguments: targets }]);
84
87
  const rootFolder = getRootFolder() ?? process.cwd();
85
88
  const mdFiles = paths?.length ? paths.map((p) => relative(rootFolder, p).replaceAll("\\", "/") || p) : await getMarkdownFiles();
89
+ const linkCheckFiles = mdFiles.filter((mdFile) => linkCheckExcludeGlobs.every((excludeGlob) => !matchesGlob(mdFile, excludeGlob)));
86
90
  await execFromRoot([
87
91
  ...resolveToolCommand({ tool: "linkinator" }),
88
92
  "--retry",
@@ -95,7 +99,7 @@ async function lint(options) {
95
99
  String.raw`https://www\.npmjs\.com/package/`,
96
100
  "--url-rewrite-replace",
97
101
  "https://registry.npmjs.org/",
98
- { batchedArguments: mdFiles }
102
+ { batchedArguments: linkCheckFiles }
99
103
  ]);
100
104
  }
101
105
  const MARKDOWN_PATHSPEC = "*.md";
@@ -112,4 +116,4 @@ async function getMarkdownFiles() {
112
116
  export {
113
117
  lint
114
118
  };
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGdldE5vbklnbm9yZWRGaWxlcyB9IGZyb20gJy4uL2dpdC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVG9vbENvbW1hbmQgfSBmcm9tICcuLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIGdldFJvb3RGb2xkZXIsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJy4uL3Jvb3QudHMnO1xuaW1wb3J0IHtcbiAgY2hlY2tJc0luTm9kZU1vZHVsZXMsXG4gIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxufSBmcm9tICcuL21hcmtkb3dubGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIGxpbnR9IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgY29waWVkIHRvIHRoZSBwcm9qZWN0IHJvb3Qgd2hlbiB0aGUgcHJvamVjdCBoYXMgbm9uZS4gV2l0aG91dCBpdCxcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBydW5zIHdpdGggaXRzIG93biBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb25maWdGaWxlUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmlsZSBwYXRocyB0byBsaW50LiBJZiBvbWl0dGVkLCBsaW50cyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZpeCBsaW50aW5nIGlzc3VlcyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIExpbnRPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQob3B0aW9ucz86IExpbnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnbGlua2luYXRvcicgfSksXG4gICAgJy0tcmV0cnknLFxuICAgICctLXJldHJ5LWVycm9ycycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWNvdW50JyxcbiAgICAnMycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWppdHRlcicsXG4gICAgJzUnLFxuICAgICctLXVybC1yZXdyaXRlLXNlYXJjaCcsXG4gICAgU3RyaW5nLnJhd2BodHRwczovL3d3d1xcLm5wbWpzXFwuY29tL3BhY2thZ2UvYCxcbiAgICAnLS11cmwtcmV3cml0ZS1yZXBsYWNlJyxcbiAgICAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyxcbiAgICB7IGJhdGNoZWRBcmd1bWVudHM6IG1kRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2l0IHBhdGhzcGVjIG1hdGNoaW5nIGV2ZXJ5IG1hcmtkb3duIGZpbGUgaW4gdGhlIHJlcG9zaXRvcnksIGF0IGFueSBkZXB0aC5cbiAqL1xuY29uc3QgTUFSS0RPV05fUEFUSFNQRUMgPSAnKi5tZCc7XG5cbi8qKlxuICogTGlzdHMgdGhlIG1hcmtkb3duIGZpbGVzIHRvIGhhbmQgdG8gYGxpbmtpbmF0b3JgLlxuICpcbiAqIGBsaW5raW5hdG9yYCB0YWtlcyBhIGZpbGUgbGlzdCByYXRoZXIgdGhhbiBhbiBpZ25vcmUgY29uZmlndXJhdGlvbiwgc28gdGhlIGdpdGlnbm9yZWQgZmlsZXMgaGF2ZSB0byBiZVxuICogZHJvcHBlZCBiZWZvcmUgaXQgaXMgaW52b2tlZC4gR2l0IGl0c2VsZiBhbnN3ZXJzIHRoYXQgKG5lc3RlZCBpZ25vcmUgZmlsZXMsIGAhYCBuZWdhdGlvbnMgYW5kIGFsbCk7IHRoZVxuICogaGFuZC1tYWludGFpbmVkIGdsb2IgZXhjbHVzaW9ucyBiZWxvdyBhcmUgb25seSB0aGUgZmFsbGJhY2sgZm9yIGEgY2hlY2tvdXQgd2l0aG91dCBnaXQsIGFuZCB0aGV5IGFyZSB0aGVcbiAqIHZlcnkgbGlzdHMgdGhpcyBpbmRpcmVjdGlvbiBleGlzdHMgdG8gc3RvcCBmcm9tIGRyaWZ0aW5nLlxuICpcbiAqIFRoZSBgbm9kZV9tb2R1bGVzYCBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgZ2l0LWRlcml2ZWQgbGlzdCB0b28sIGFuZCBkZWxpYmVyYXRlbHkgc286IGdpdCBvbmx5IHNraXBzXG4gKiB3aGF0IHRoZSByZXBvc2l0b3J5IGFza2VkIGl0IHRvIHNraXAsIGFuZCBhIHJlcG9zaXRvcnkgY2FuIGRlbGliZXJhdGVseSBUUkFDSyBhIHZlbmRvcmVkIGBub2RlX21vZHVsZXNgXG4gKiB0cmVlLiBUaGF0IGlzIHRoZSBvbmUgZXhjbHVzaW9uIGAuZ2l0aWdub3JlYCBjYW5ub3QgYW5zd2VyIOKAlCBzZWUgYG1hcmtkb3dubGludC1pZ25vcmVzLnRzYC4gQXBwbHlpbmcgaXRcbiAqIGhlcmUga2VlcHMgYGxpbmtpbmF0b3JgIGluIHN0ZXAgd2l0aCB0aGUgbWFya2Rvd25saW50IGhhbGYsIHdoaWNoIGlnbm9yZXMgdGhlIHNhbWUgcGF0aHMgYnkgZ2xvYi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG1hcmtkb3duIGZpbGUgcGF0aHMsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG5vbklnbm9yZWRGaWxlcyA9IGF3YWl0IGdldE5vbklnbm9yZWRGaWxlcyh7IHBhdHRlcm5zOiBbTUFSS0RPV05fUEFUSFNQRUNdIH0pO1xuICByZXR1cm4gbm9uSWdub3JlZEZpbGVzXG4gICAgPyBub25JZ25vcmVkRmlsZXMuZmlsdGVyKChwYXRoKSA9PiAhY2hlY2tJc0luTm9kZU1vZHVsZXMocGF0aCkpXG4gICAgOiAoYXdhaXQgdG9BcnJheShnbG9iKFsnKiovKi5tZCddLCB7XG4gICAgICBleGNsdWRlOiBbXG4gICAgICAgICcuZ2l0LyoqJyxcbiAgICAgICAgJ2Rpc3QvKionLFxuICAgICAgICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0JcbiAgICAgIF1cbiAgICB9KSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMsZUFBZTtBQUN4QixTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGdCQUFnQjtBQUN6QixTQUFTLGtCQUFrQjtBQUMzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZ0JBQWdCO0FBRXpCLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsaUJBQWlCO0FBQzFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBOEJQLGVBQXNCLEtBQUssU0FBc0M7QUFDL0QsUUFBTSxFQUFFLHVCQUF1QixPQUFPLFlBQVksTUFBTSxJQUFJLFdBQVcsQ0FBQztBQUN4RSxRQUFNLGNBQWM7QUFBQSxJQUNsQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWjtBQUVBLFFBQU0sc0JBQXNCLFlBQVksS0FBSyxDQUFDLGVBQWU7QUFDM0QsVUFBTSxpQkFBaUIsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsV0FBTyxXQUFXLGNBQWM7QUFBQSxFQUNsQyxDQUFDO0FBRUQsTUFBSSxDQUFDLHVCQUF1Qix1QkFBdUI7QUFDakQsbUJBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLFVBQU0sR0FBRyx1QkFBdUIsd0JBQXdCLEVBQUUsTUFBTSxTQUFTLHFCQUFxQixFQUFFLENBQUMsQ0FBQztBQUFBLEVBQ3BHO0FBR0EsUUFBTSxVQUFVLE9BQU8sU0FBUyxRQUFRLENBQUMsVUFBVSxhQUFhO0FBRWhFLFFBQU0sYUFBYSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyxHQUFHLEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUksRUFBRSxrQkFBa0IsUUFBUSxDQUFDLENBQUM7QUFHekksUUFBTSxhQUFhLGNBQWMsS0FBSyxRQUFRLElBQUk7QUFDbEQsUUFBTSxVQUFVLE9BQU8sU0FDbkIsTUFBTSxJQUFJLENBQUMsTUFBTSxTQUFTLFlBQVksQ0FBQyxFQUFFLFdBQVcsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUNuRSxNQUFNLGlCQUFpQjtBQUUzQixRQUFNLGFBQWE7QUFBQSxJQUNqQixHQUFHLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQUEsSUFDNUM7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLE9BQU87QUFBQSxJQUNQO0FBQUEsSUFDQTtBQUFBLElBQ0EsRUFBRSxrQkFBa0IsUUFBUTtBQUFBLEVBQzlCLENBQUM7QUFDSDtBQUtBLE1BQU0sb0JBQW9CO0FBaUIxQixlQUFlLG1CQUFzQztBQUNuRCxRQUFNLGtCQUFrQixNQUFNLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBQ2xGLFNBQU8sa0JBQ0gsZ0JBQWdCLE9BQU8sQ0FBQyxTQUFTLENBQUMscUJBQXFCLElBQUksQ0FBQyxJQUMzRCxNQUFNLFFBQVEsS0FBSyxDQUFDLFNBQVMsR0FBRztBQUFBLElBQ2pDLFNBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDLENBQUM7QUFDTjsiLCJuYW1lcyI6W119
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2V0Tm9uSWdub3JlZEZpbGVzIH0gZnJvbSAnLi4vZ2l0LnRzJztcbmltcG9ydCB7IHJlc29sdmVUb29sQ29tbWFuZCB9IGZyb20gJy4uL3BhY2thZ2UtbWFuYWdlci50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuLi9yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQge1xuICBjaGVja0lzSW5Ob2RlTW9kdWxlcyxcbiAgTk9ERV9NT0RVTEVTX0lHTk9SRV9HTE9CXG59IGZyb20gJy4vbWFya2Rvd25saW50LWlnbm9yZXMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb3BpZWQgdG8gdGhlIHByb2plY3Qgcm9vdCB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLiBXaXRob3V0IGl0LFxuICAgKiBgbWFya2Rvd25saW50LWNsaTJgIHJ1bnMgd2l0aCBpdHMgb3duIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHbG9icywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLCBvZiBtYXJrZG93biBmaWxlcyB0byBsZWF2ZSBvdXQgb2YgdGhlIGBsaW5raW5hdG9yYCBwYXNzIG9ubHk7XG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgc3RpbGwgbGludHMgdGhlbS5cbiAgICpcbiAgICogRm9yIGEgZG9jdW1lbnRhdGlvbiBzaXRlIHdob3NlIHBhZ2VzIGxpbmsgdG8gZWFjaCBvdGhlciBiYXNlLWFic29sdXRlbHkgKGAvPHNpdGUtYmFzZT4vZ3VpZGVzLy4uLmApOiB0aG9zZVxuICAgKiBsaW5rcyByZXNvbHZlIG9ubHkgYWdhaW5zdCB0aGUgQlVJTFQgc2l0ZSwgc28gYGxpbmtpbmF0b3JgIHJlcG9ydHMgZWFjaCBvbmUgYXMgYSA0MDQsIGFuZCB0aGUgc2l0ZSdzIG93blxuICAgKiBidWlsZCBpcyB3aGF0IGNoZWNrcyB0aGVtLlxuICAgKlxuICAgKiBAZXhhbXBsZSBgWydkb2NzLyoqJ11gXG4gICAqL1xuICByZWFkb25seSBsaW5rQ2hlY2tFeGNsdWRlR2xvYnM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmlsZSBwYXRocyB0byBsaW50LiBJZiBvbWl0dGVkLCBsaW50cyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZpeCBsaW50aW5nIGlzc3VlcyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIExpbnRPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQob3B0aW9ucz86IExpbnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMgPSBbXSwgcGF0aHMsIHNob3VsZEZpeCA9IGZhbHNlIH0gPSBvcHRpb25zID8/IHt9O1xuICBjb25zdCBjb25maWdGaWxlcyA9IFtcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0NqcyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ0pzb24sXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1lhbWwsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1ltbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdNanNcbiAgXTtcblxuICBjb25zdCBkb2VzQ29uZmlnRmlsZUV4aXN0ID0gY29uZmlnRmlsZXMuc29tZSgoY29uZmlnRmlsZSkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBjb25maWdGaWxlIH0pO1xuICAgIHJldHVybiBleGlzdHNTeW5jKGNvbmZpZ0ZpbGVQYXRoKTtcbiAgfSk7XG5cbiAgaWYgKCFkb2VzQ29uZmlnRmlsZUV4aXN0ICYmIGRlZmF1bHRDb25maWdGaWxlUGF0aCkge1xuICAgIGdldExpYkRlYnVnZ2VyKCdtYXJrZG93bmxpbnQ6bGludCcpKCdtYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZC4gQ3JlYXRpbmcgZGVmYXVsdCBjb25maWcuLi4nKTtcbiAgICBhd2FpdCBjcChkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogYmFzZW5hbWUoZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB9KSk7XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaGVzIGFyZSBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHRhcmdldHMgPSBwYXRocz8ubGVuZ3RoID8gcGF0aHMgOiBbUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXJdO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWy4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdtYXJrZG93bmxpbnQtY2xpMicgfSksIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksIHsgYmF0Y2hlZEFyZ3VtZW50czogdGFyZ2V0cyB9XSk7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2ggaXMgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCByb290Rm9sZGVyID0gZ2V0Um9vdEZvbGRlcigpID8/IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IG1kRmlsZXMgPSBwYXRocz8ubGVuZ3RoXG4gICAgPyBwYXRocy5tYXAoKHApID0+IHJlbGF0aXZlKHJvb3RGb2xkZXIsIHApLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpIHx8IHApXG4gICAgOiBhd2FpdCBnZXRNYXJrZG93bkZpbGVzKCk7XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGNvbnN0IGxpbmtDaGVja0ZpbGVzID0gbWRGaWxlcy5maWx0ZXIoKG1kRmlsZSkgPT4gbGlua0NoZWNrRXhjbHVkZUdsb2JzLmV2ZXJ5KChleGNsdWRlR2xvYikgPT4gIW1hdGNoZXNHbG9iKG1kRmlsZSwgZXhjbHVkZUdsb2IpKSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2xpbmtpbmF0b3InIH0pLFxuICAgICctLXJldHJ5JyxcbiAgICAnLS1yZXRyeS1lcnJvcnMnLFxuICAgICctLXJldHJ5LWVycm9ycy1jb3VudCcsXG4gICAgJzMnLFxuICAgICctLXJldHJ5LWVycm9ycy1qaXR0ZXInLFxuICAgICc1JyxcbiAgICAnLS11cmwtcmV3cml0ZS1zZWFyY2gnLFxuICAgIFN0cmluZy5yYXdgaHR0cHM6Ly93d3dcXC5ucG1qc1xcLmNvbS9wYWNrYWdlL2AsXG4gICAgJy0tdXJsLXJld3JpdGUtcmVwbGFjZScsXG4gICAgJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLycsXG4gICAgeyBiYXRjaGVkQXJndW1lbnRzOiBsaW5rQ2hlY2tGaWxlcyB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnaXQgcGF0aHNwZWMgbWF0Y2hpbmcgZXZlcnkgbWFya2Rvd24gZmlsZSBpbiB0aGUgcmVwb3NpdG9yeSwgYXQgYW55IGRlcHRoLlxuICovXG5jb25zdCBNQVJLRE9XTl9QQVRIU1BFQyA9ICcqLm1kJztcblxuLyoqXG4gKiBMaXN0cyB0aGUgbWFya2Rvd24gZmlsZXMgdG8gaGFuZCB0byBgbGlua2luYXRvcmAuXG4gKlxuICogYGxpbmtpbmF0b3JgIHRha2VzIGEgZmlsZSBsaXN0IHJhdGhlciB0aGFuIGFuIGlnbm9yZSBjb25maWd1cmF0aW9uLCBzbyB0aGUgZ2l0aWdub3JlZCBmaWxlcyBoYXZlIHRvIGJlXG4gKiBkcm9wcGVkIGJlZm9yZSBpdCBpcyBpbnZva2VkLiBHaXQgaXRzZWxmIGFuc3dlcnMgdGhhdCAobmVzdGVkIGlnbm9yZSBmaWxlcywgYCFgIG5lZ2F0aW9ucyBhbmQgYWxsKTsgdGhlXG4gKiBoYW5kLW1haW50YWluZWQgZ2xvYiBleGNsdXNpb25zIGJlbG93IGFyZSBvbmx5IHRoZSBmYWxsYmFjayBmb3IgYSBjaGVja291dCB3aXRob3V0IGdpdCwgYW5kIHRoZXkgYXJlIHRoZVxuICogdmVyeSBsaXN0cyB0aGlzIGluZGlyZWN0aW9uIGV4aXN0cyB0byBzdG9wIGZyb20gZHJpZnRpbmcuXG4gKlxuICogVGhlIGBub2RlX21vZHVsZXNgIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBnaXQtZGVyaXZlZCBsaXN0IHRvbywgYW5kIGRlbGliZXJhdGVseSBzbzogZ2l0IG9ubHkgc2tpcHNcbiAqIHdoYXQgdGhlIHJlcG9zaXRvcnkgYXNrZWQgaXQgdG8gc2tpcCwgYW5kIGEgcmVwb3NpdG9yeSBjYW4gZGVsaWJlcmF0ZWx5IFRSQUNLIGEgdmVuZG9yZWQgYG5vZGVfbW9kdWxlc2BcbiAqIHRyZWUuIFRoYXQgaXMgdGhlIG9uZSBleGNsdXNpb24gYC5naXRpZ25vcmVgIGNhbm5vdCBhbnN3ZXIg4oCUIHNlZSBgbWFya2Rvd25saW50LWlnbm9yZXMudHNgLiBBcHBseWluZyBpdFxuICogaGVyZSBrZWVwcyBgbGlua2luYXRvcmAgaW4gc3RlcCB3aXRoIHRoZSBtYXJrZG93bmxpbnQgaGFsZiwgd2hpY2ggaWdub3JlcyB0aGUgc2FtZSBwYXRocyBieSBnbG9iLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWFya2Rvd24gZmlsZSBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgbm9uSWdub3JlZEZpbGVzID0gYXdhaXQgZ2V0Tm9uSWdub3JlZEZpbGVzKHsgcGF0dGVybnM6IFtNQVJLRE9XTl9QQVRIU1BFQ10gfSk7XG4gIHJldHVybiBub25JZ25vcmVkRmlsZXNcbiAgICA/IG5vbklnbm9yZWRGaWxlcy5maWx0ZXIoKHBhdGgpID0+ICFjaGVja0lzSW5Ob2RlTW9kdWxlcyhwYXRoKSlcbiAgICA6IChhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxuICAgICAgXVxuICAgIH0pKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLGlCQUFpQjtBQUMxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQTBDUCxlQUFzQixLQUFLLFNBQXNDO0FBQy9ELFFBQU0sRUFBRSx1QkFBdUIsd0JBQXdCLENBQUMsR0FBRyxPQUFPLFlBQVksTUFBTSxJQUFJLFdBQVcsQ0FBQztBQUNwRyxRQUFNLGNBQWM7QUFBQSxJQUNsQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWjtBQUVBLFFBQU0sc0JBQXNCLFlBQVksS0FBSyxDQUFDLGVBQWU7QUFDM0QsVUFBTSxpQkFBaUIsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsV0FBTyxXQUFXLGNBQWM7QUFBQSxFQUNsQyxDQUFDO0FBRUQsTUFBSSxDQUFDLHVCQUF1Qix1QkFBdUI7QUFDakQsbUJBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLFVBQU0sR0FBRyx1QkFBdUIsd0JBQXdCLEVBQUUsTUFBTSxTQUFTLHFCQUFxQixFQUFFLENBQUMsQ0FBQztBQUFBLEVBQ3BHO0FBR0EsUUFBTSxVQUFVLE9BQU8sU0FBUyxRQUFRLENBQUMsVUFBVSxhQUFhO0FBRWhFLFFBQU0sYUFBYSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyxHQUFHLEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUksRUFBRSxrQkFBa0IsUUFBUSxDQUFDLENBQUM7QUFHekksUUFBTSxhQUFhLGNBQWMsS0FBSyxRQUFRLElBQUk7QUFDbEQsUUFBTSxVQUFVLE9BQU8sU0FDbkIsTUFBTSxJQUFJLENBQUMsTUFBTSxTQUFTLFlBQVksQ0FBQyxFQUFFLFdBQVcsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUNuRSxNQUFNLGlCQUFpQjtBQUUzQixRQUFNLGlCQUFpQixRQUFRLE9BQU8sQ0FBQyxXQUFXLHNCQUFzQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxRQUFRLFdBQVcsQ0FBQyxDQUFDO0FBQ2pJLFFBQU0sYUFBYTtBQUFBLElBQ2pCLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFBQSxJQUM1QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQSxFQUFFLGtCQUFrQixlQUFlO0FBQUEsRUFDckMsQ0FBQztBQUNIO0FBS0EsTUFBTSxvQkFBb0I7QUFpQjFCLGVBQWUsbUJBQXNDO0FBQ25ELFFBQU0sa0JBQWtCLE1BQU0sbUJBQW1CLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDbEYsU0FBTyxrQkFDSCxnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQzNELE1BQU0sUUFBUSxLQUFLLENBQUMsU0FBUyxHQUFHO0FBQUEsSUFDakMsU0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUMsQ0FBQztBQUNOOyIsIm5hbWVzIjpbXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnaoumov/typescript-dev-toolkit",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Generic TypeScript project tooling: build, lint, format, spellcheck, test, gate and release scripts.",
5
5
  "keywords": [
6
6
  "typescript",
@@ -311,7 +311,7 @@
311
311
  }
312
312
  },
313
313
  "engines": {
314
- "node": ">=22.0.0"
314
+ "node": ">=22.5.0"
315
315
  },
316
316
  "publishConfig": {
317
317
  "access": "public"