@mnaoumov/obsidian-dev-toolkit 3.2.0 → 3.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.
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +3 -77
- package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +3 -76
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild.cjs +1 -75
- package/dist/lib/cjs/bundlers/index.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-cli-reload.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-build.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-features.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.cjs +32 -85
- package/dist/lib/cjs/bundlers/parcel.cjs +112 -81
- package/dist/lib/cjs/bundlers/parcel.d.cts +13 -6
- package/dist/lib/cjs/bundlers/rollup-compatible-features.cjs +1 -75
- package/dist/lib/cjs/bundlers/rollup-compatible.cjs +1 -75
- package/dist/lib/cjs/bundlers/rollup.cjs +1 -75
- package/dist/lib/cjs/bundlers/vite.cjs +1 -75
- package/dist/lib/cjs/bundlers/webpack.cjs +3 -77
- package/dist/lib/cjs/demo-vault-app-json.cjs +1 -75
- package/dist/lib/cjs/demo-vault-buttons.cjs +1 -75
- package/dist/lib/cjs/demo-vault-cli.cjs +1 -75
- package/dist/lib/cjs/demo-vault-coverage.cjs +139 -118
- package/dist/lib/cjs/demo-vault-coverage.d.cts +100 -5
- package/dist/lib/cjs/demo-vault.cjs +3 -77
- package/dist/lib/cjs/docs-site/index.cjs +1 -75
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.cjs +1 -75
- package/dist/lib/cjs/formatters/dprint.cjs +1 -75
- package/dist/lib/cjs/formatters/index.cjs +1 -75
- package/dist/lib/cjs/index.cjs +1 -81
- package/dist/lib/cjs/index.d.cts +0 -2
- package/dist/lib/cjs/integration-test-setup.cjs +1 -75
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +1 -75
- package/dist/lib/cjs/jest-setup.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-config.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +2 -77
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +1 -75
- package/dist/lib/cjs/linters/eslint.cjs +1 -75
- package/dist/lib/cjs/linters/index.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint.cjs +1 -75
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -75
- package/dist/lib/cjs/linters/plugin-names.cjs +1 -75
- package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -75
- package/dist/lib/cjs/setup.cjs +1 -75
- package/dist/lib/cjs/templates.cjs +3 -77
- package/dist/lib/cjs/test-runners/coverage-badge-cli.cjs +1 -75
- package/dist/lib/cjs/test-runners/coverage-badge.cjs +1 -75
- package/dist/lib/cjs/test-runners/e2e-runner-support.cjs +1 -75
- package/dist/lib/cjs/test-runners/index.cjs +1 -78
- package/dist/lib/cjs/test-runners/index.d.cts +0 -1
- package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +3 -77
- package/dist/lib/cjs/test-runners/jest-config.cjs +1 -75
- package/dist/lib/cjs/test-runners/obsidian-test-runner.cjs +1 -75
- package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +4 -75
- package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +12 -3
- package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +1 -75
- package/dist/lib/cjs/test-runners/vitest-config.cjs +4 -80
- package/dist/lib/cjs/test-runners/wdio-obsidian.cjs +1 -75
- package/dist/lib/cjs/version.cjs +1 -75
- package/dist/lib/cjs/vitest-setup.cjs +1 -75
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -2
- package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.mjs +32 -15
- package/dist/lib/esm/bundlers/parcel.d.mts +13 -6
- package/dist/lib/esm/bundlers/parcel.mjs +110 -5
- package/dist/lib/esm/demo-vault-coverage.d.mts +100 -5
- package/dist/lib/esm/demo-vault-coverage.mjs +139 -44
- package/dist/lib/esm/index.d.mts +0 -2
- package/dist/lib/esm/index.mjs +1 -5
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +2 -2
- package/dist/lib/esm/test-runners/index.d.mts +0 -1
- package/dist/lib/esm/test-runners/index.mjs +1 -3
- package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +12 -3
- package/dist/lib/esm/test-runners/performance-eval-cap.mjs +3 -1
- package/dist/lib/esm/test-runners/vitest-config.mjs +4 -5
- package/package.json +3 -2
|
@@ -61,6 +61,20 @@
|
|
|
61
61
|
* or a misspelled directive all fail: an exemption nobody can justify, that nothing needs any more, or that
|
|
62
62
|
* silently does nothing is worse than no exemption at all.
|
|
63
63
|
*
|
|
64
|
+
* They also check that every `Try it` section — a heading of any level starting `Try it`, up to the next
|
|
65
|
+
* heading of the same or a higher level — holds a `code-button` that performs its setup, because a reader
|
|
66
|
+
* asked to configure things by hand is a reader the demo lost. A section whose steps really cannot be
|
|
67
|
+
* scripted says so with the same directive, naming the `demo-vault-validation/try-it-code-button` rule on
|
|
68
|
+
* the heading, and with the same checks on the directive itself:
|
|
69
|
+
*
|
|
70
|
+
* ```markdown
|
|
71
|
+
* <!-- obsidian-dev-utils-disable-next-line demo-vault-validation/try-it-code-button -- Dragging a file in from outside Obsidian cannot be scripted. -->
|
|
72
|
+
* ## Try it
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* That check ships as a warning ({@link DemoVaultAuthoringSpec.tryItCodeButtons}), so a vault written
|
|
76
|
+
* before it existed keeps passing while it is brought up to it.
|
|
77
|
+
*
|
|
64
78
|
* Two layers are exposed:
|
|
65
79
|
* - {@link DemoVaultCoverageChecker} — a framework-agnostic core that reads the corpus, parses interface /
|
|
66
80
|
* class / enum members and exported functions, and returns diagnostic arrays (what is undemonstrated / stale
|
|
@@ -83,7 +97,17 @@ export interface DemoVaultAuthoringSpec {
|
|
|
83
97
|
* `00 Start.md`.
|
|
84
98
|
*/
|
|
85
99
|
readonly startNote?: string;
|
|
100
|
+
/**
|
|
101
|
+
* How a `Try it` section with no `code-button` and no directive explaining why is reported: `'warn'`
|
|
102
|
+
* prints the sections and passes, `'error'` fails the suite. Defaults to `'warn'`.
|
|
103
|
+
*/
|
|
104
|
+
readonly tryItCodeButtons?: DemoVaultCheckSeverity;
|
|
86
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* How a check that is being introduced gradually reports what it finds: `'warn'` prints it and passes,
|
|
108
|
+
* `'error'` fails.
|
|
109
|
+
*/
|
|
110
|
+
export type DemoVaultCheckSeverity = 'error' | 'warn';
|
|
87
111
|
/**
|
|
88
112
|
* Reflects a config interface whose options are demonstrated by their bare name.
|
|
89
113
|
*/
|
|
@@ -268,6 +292,46 @@ export interface DemoVaultNote {
|
|
|
268
292
|
*/
|
|
269
293
|
readonly relativePath: string;
|
|
270
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* What a note's inline `obsidian-dev-utils-disable…` directives allow, rule by rule, and what is wrong with
|
|
297
|
+
* them.
|
|
298
|
+
*/
|
|
299
|
+
export interface DirectiveScan {
|
|
300
|
+
/**
|
|
301
|
+
* For each rule, the zero-based line numbers a directive exempts from it.
|
|
302
|
+
*/
|
|
303
|
+
readonly allowedLineIndexesByRule: ReadonlyMap<string, ReadonlySet<number>>;
|
|
304
|
+
/**
|
|
305
|
+
* The directive mistakes found, each phrased for a failing assertion.
|
|
306
|
+
*/
|
|
307
|
+
readonly problems: string[];
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* The running state of a directive scan, threaded through the per-line helpers.
|
|
311
|
+
*/
|
|
312
|
+
export interface DirectiveScanState {
|
|
313
|
+
/**
|
|
314
|
+
* For each rule, the lines a directive has exempted from it so far.
|
|
315
|
+
*/
|
|
316
|
+
readonly allowedLineIndexesByRule: Map<string, Set<number>>;
|
|
317
|
+
/**
|
|
318
|
+
* For each rule, the region currently open, and whether it has covered a target yet.
|
|
319
|
+
*/
|
|
320
|
+
readonly openRegionsByRule: Map<string, OpenDirectiveRegion>;
|
|
321
|
+
/**
|
|
322
|
+
* For each rule, the line a `disable-next-line` was read on, while it still waits for the line it covers.
|
|
323
|
+
*/
|
|
324
|
+
readonly pendingNextLineIndexesByRule: Map<string, number>;
|
|
325
|
+
/**
|
|
326
|
+
* The directive mistakes found so far.
|
|
327
|
+
*/
|
|
328
|
+
readonly problems: string[];
|
|
329
|
+
/**
|
|
330
|
+
* For each rule, the lines of the note that break it — the lines a directive for it has to cover to be
|
|
331
|
+
* doing any work.
|
|
332
|
+
*/
|
|
333
|
+
readonly targetLineIndexesByRule: ReadonlyMap<string, ReadonlySet<number>>;
|
|
334
|
+
}
|
|
271
335
|
/**
|
|
272
336
|
* The parsed members of a source interface, class, or enum.
|
|
273
337
|
*/
|
|
@@ -302,6 +366,22 @@ export interface NoteLine {
|
|
|
302
366
|
/**
|
|
303
367
|
* A `disable` region that has been opened and not yet enabled again.
|
|
304
368
|
*/
|
|
369
|
+
export interface OpenDirectiveRegion {
|
|
370
|
+
/**
|
|
371
|
+
* Whether the region has covered a line breaking its rule, which is what stops it being reported as
|
|
372
|
+
* pointless.
|
|
373
|
+
*/
|
|
374
|
+
isUsed: boolean;
|
|
375
|
+
/**
|
|
376
|
+
* The line the region was opened on.
|
|
377
|
+
*/
|
|
378
|
+
readonly lineIndex: number;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* A `disable` region that has been opened and not yet enabled again.
|
|
382
|
+
*
|
|
383
|
+
* @deprecated Use {@link OpenDirectiveRegion}: the directives now serve more than the wikilink rule.
|
|
384
|
+
*/
|
|
305
385
|
export interface OpenWikilinkDirectiveRegion {
|
|
306
386
|
/**
|
|
307
387
|
* Whether the region has covered a wikilink, which is what stops it being reported as pointless.
|
|
@@ -351,6 +431,8 @@ export interface RegisterDemoVaultCoverageSuiteParams {
|
|
|
351
431
|
}
|
|
352
432
|
/**
|
|
353
433
|
* What a note's inline `obsidian-dev-utils-disable…` directives allow, and what is wrong with them.
|
|
434
|
+
*
|
|
435
|
+
* @deprecated Use {@link DirectiveScan}: the directives now serve more than the wikilink rule.
|
|
354
436
|
*/
|
|
355
437
|
export interface WikilinkDirectiveScan {
|
|
356
438
|
/**
|
|
@@ -364,6 +446,8 @@ export interface WikilinkDirectiveScan {
|
|
|
364
446
|
}
|
|
365
447
|
/**
|
|
366
448
|
* The running state of a directive scan, threaded through the per-line helpers.
|
|
449
|
+
*
|
|
450
|
+
* @deprecated Use {@link DirectiveScanState}: the directives now serve more than the wikilink rule.
|
|
367
451
|
*/
|
|
368
452
|
export interface WikilinkDirectiveScanState {
|
|
369
453
|
/**
|
|
@@ -373,7 +457,7 @@ export interface WikilinkDirectiveScanState {
|
|
|
373
457
|
/**
|
|
374
458
|
* The region currently open, and whether it has covered a wikilink yet.
|
|
375
459
|
*/
|
|
376
|
-
openRegion: null |
|
|
460
|
+
openRegion: null | OpenDirectiveRegion;
|
|
377
461
|
/**
|
|
378
462
|
* The line a `disable-next-line` was read on, while it still waits for the line it covers.
|
|
379
463
|
*/
|
|
@@ -448,11 +532,12 @@ export declare class DemoVaultCoverageChecker {
|
|
|
448
532
|
*/
|
|
449
533
|
findNotesWithoutIntroProse(): string[];
|
|
450
534
|
/**
|
|
451
|
-
* Finds notes whose
|
|
452
|
-
*
|
|
453
|
-
* any more, which would go on hiding
|
|
535
|
+
* Finds notes whose exemptions are not doing any work — a wikilink allowance or an inline directive for
|
|
536
|
+
* any rule declared without a reason, misspelled, or covering nothing that breaks its rule. All of them
|
|
537
|
+
* are drift: an exemption nobody can justify, and one nothing needs any more, which would go on hiding
|
|
538
|
+
* the next mistake somebody makes by accident.
|
|
454
539
|
*
|
|
455
|
-
* @returns
|
|
540
|
+
* @returns One `<note>: <problem>` entry per problem found.
|
|
456
541
|
*/
|
|
457
542
|
findNotesWithUnjustifiedWikilinkAllowance(): string[];
|
|
458
543
|
/**
|
|
@@ -471,6 +556,16 @@ export declare class DemoVaultCoverageChecker {
|
|
|
471
556
|
* @returns The distinct stale member names referenced in the demo corpus.
|
|
472
557
|
*/
|
|
473
558
|
findStaleReferences(params: DemoVaultCoverageCheckerFindStaleReferencesParams): string[];
|
|
559
|
+
/**
|
|
560
|
+
* Finds `Try it` sections with no `code-button` in them. A `Try it` section is a heading of any level
|
|
561
|
+
* starting `Try it`, up to the next heading of the same or a higher level; the setup it asks for is
|
|
562
|
+
* what a button is for, so a section that leaves the reader to do it by hand is the shape this check
|
|
563
|
+
* rejects. A section whose heading a `demo-vault-validation/try-it-code-button` directive covers has
|
|
564
|
+
* stated why it cannot be scripted, and is skipped — see the file overview.
|
|
565
|
+
*
|
|
566
|
+
* @returns One `<note>: line <n>` entry per offending section, naming the line of its heading.
|
|
567
|
+
*/
|
|
568
|
+
findTryItSectionsWithoutCodeButton(): string[];
|
|
474
569
|
/**
|
|
475
570
|
* Finds members that are not demonstrated anywhere in the demo corpus.
|
|
476
571
|
*
|
|
@@ -29,80 +29,6 @@ function ensureBrowserProcess() {
|
|
|
29
29
|
|
|
30
30
|
ensureBrowserProcess();
|
|
31
31
|
})();
|
|
32
|
-
(function patchObsidianRequire() {
|
|
33
|
-
const originalRequire = require;
|
|
34
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
require = Object.assign(
|
|
39
|
-
(id) => requirePatched(id),
|
|
40
|
-
originalRequire,
|
|
41
|
-
{
|
|
42
|
-
__isPatched: true
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
-
'@codemirror/autocomplete',
|
|
52
|
-
'@codemirror/collab',
|
|
53
|
-
'@codemirror/commands',
|
|
54
|
-
'@codemirror/language',
|
|
55
|
-
'@codemirror/lint',
|
|
56
|
-
'@codemirror/search',
|
|
57
|
-
'@codemirror/state',
|
|
58
|
-
'@codemirror/text',
|
|
59
|
-
'@codemirror/view',
|
|
60
|
-
'@lezer/common',
|
|
61
|
-
'@lezer/highlight',
|
|
62
|
-
'@lezer/lr',
|
|
63
|
-
'obsidian']
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
-
'@codemirror/closebrackets',
|
|
68
|
-
'@codemirror/comment',
|
|
69
|
-
'@codemirror/fold',
|
|
70
|
-
'@codemirror/gutter',
|
|
71
|
-
'@codemirror/highlight',
|
|
72
|
-
'@codemirror/history',
|
|
73
|
-
'@codemirror/matchbrackets',
|
|
74
|
-
'@codemirror/panel',
|
|
75
|
-
'@codemirror/rangeset',
|
|
76
|
-
'@codemirror/rectangular-selection',
|
|
77
|
-
'@codemirror/stream-parser',
|
|
78
|
-
'@codemirror/tooltip']
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
function requirePatched(id) {
|
|
82
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
-
return originalRequire?.(id);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
-
if (globalThis.app.isMobile) {
|
|
88
|
-
if (id === 'process' || id === 'node:process') {
|
|
89
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
-
|
|
92
|
-
return process;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
const module = originalRequire?.(id);
|
|
96
|
-
if (module) {
|
|
97
|
-
return extractDefault(module);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
})();
|
|
106
32
|
|
|
107
33
|
"use strict";
|
|
108
34
|
var __defProp = Object.defineProperty;
|
|
@@ -136,7 +62,7 @@ var import_node_fs = require('node:fs');
|
|
|
136
62
|
var import_promises = require('node:fs/promises');
|
|
137
63
|
var import_demo_vault_app_json = require('./demo-vault-app-json.cjs');
|
|
138
64
|
var import_obsidian_plugin_repo_paths = require('./obsidian-plugin-repo-paths.cjs');
|
|
139
|
-
var __import_meta_url = globalThis["import.meta.url"] ?? (function
|
|
65
|
+
var __import_meta_url = globalThis["import.meta.url"] ?? (function getCjsImportMetaUrl() {
|
|
140
66
|
if (typeof __filename === "string") {
|
|
141
67
|
const localRequire = require;
|
|
142
68
|
const url = localRequire("node:url");
|
|
@@ -144,7 +70,7 @@ var __import_meta_url = globalThis["import.meta.url"] ?? (function getObsidianCj
|
|
|
144
70
|
return url.pathToFileURL(__filename).href;
|
|
145
71
|
}
|
|
146
72
|
}
|
|
147
|
-
return
|
|
73
|
+
return globalThis.location?.href ?? "";
|
|
148
74
|
})();
|
|
149
75
|
const DEMO_VAULT_HELPER_PLUGIN_ID = "demo-vault-helper";
|
|
150
76
|
const DATA_JSON_FILE_NAME = "data.json";
|
|
@@ -274,4 +200,4 @@ async function readDemoVaultEntries(params) {
|
|
|
274
200
|
0 && (module.exports = {
|
|
275
201
|
archivePluginDemoVault
|
|
276
202
|
});
|
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/IChmdW5jdGlvbiBnZXRPYnNpZGlhbkNqc0ltcG9ydE1ldGFVcmwoKSB7XG4gIGlmICh0eXBlb2YgX19maWxlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgIGNvbnN0IHVybCA9IGxvY2FsUmVxdWlyZSgnbm9kZTp1cmwnKTtcbiAgICBpZiAodHlwZW9mIHVybC5wYXRoVG9GaWxlVVJMID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdXJsLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkuaHJlZjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gJycgOiBhY3RpdmVXaW5kb3cubG9jYXRpb24uaHJlZjtcbn0pKCk7XG4vKipcbiAqIEBmaWxlXG4gKlxuICogQXJjaGl2ZXMgYSBwbHVnaW4ncyBkZW1vIHZhdWx0IGFzIGEgcmVsZWFzZSBhcnRpZmFjdC5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gc2hpcCBhIGN1cmF0ZWQgZGVtbyB2YXVsdCBhdCBgZGVtby12YXVsdC9gIGluIGl0cyByZXBvIHJvb3QuIEF0IHJlbGVhc2UgdGltZSB0aGlzXG4gKiBtb2R1bGUgaW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGludG8gdGhhdCB2YXVsdCdzIGAub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AgZm9sZGVyIGFuZFxuICogemlwcyB0aGUgd2hvbGUgdmF1bHQgaW50byBgZGlzdC9idWlsZC88cGx1Z2luLWlkPi1kZW1vLXZhdWx0LnppcGAsIHNvIHRoZSBleGlzdGluZyBHaXRIdWItcmVsZWFzZVxuICogc3RlcCAod2hpY2ggdXBsb2FkcyBldmVyeSBmaWxlIGluIGBkaXN0L2J1aWxkL2ApIGF0dGFjaGVzIGl0IGF1dG9tYXRpY2FsbHkuXG4gKlxuICogVGhlIHZlcnNpb24gaXMgZGVsaWJlcmF0ZWx5IGFic2VudCBmcm9tIHRoYXQgbmFtZSBhbmQgbGl2ZXMgSU5TSURFIHRoZSBhcmNoaXZlIGluc3RlYWQg4oCUIHNlZVxuICogYG9ic2lkaWFuL2RlbW8tdmF1bHQtbmFtaW5nLnRzYCBmb3Igd2h5IOKAlCBpbiB0aGUgdHdvIHBsYWNlcyBhIHBlcnNvbiBhY3R1YWxseSBtZWV0cyBpdDogdGhlIHZhdWx0XG4gKiBzaXRzIHVuZGVyIGEgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPi9gIGZvbGRlciwgc28gdW56aXBwaW5nIHNldmVyYWwgcmVsZWFzZXMgYnkgaGFuZFxuICogaW50byBvbmUgZm9sZGVyIG5laXRoZXIgY29sbGlkZXMgbm9yIHByb2R1Y2VzIGFub255bW91cyBkaXJlY3RvcmllcywgYW5kIHRoZSB2YXVsdCdzIGBSRUFETUUubWRgXG4gKiBoZWFkaW5nIGdhaW5zIHRoZSB2ZXJzaW9uIGl0IGRlbW9uc3RyYXRlcy5cbiAqXG4gKiBUaGUgYXJjaGl2ZWQgY29weSBhbHNvIGNhcnJpZXMgdGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zIChzZWVcbiAqIGBkZW1vLXZhdWx0LWFwcC1qc29uLnRzYCkuIFRob3NlIHNldHRpbmdzIGFuZCB0aGUgUkVBRE1FIGhlYWRpbmcgYXJlIHdyaXR0ZW4gaW50byB0aGUgWklQIEVOVFJZIGFuZFxuICogbmV2ZXIgaW50byB0aGUgcmVwbyBmb2xkZXI6IGJvdGggZmlsZXMgYXJlIHRyYWNrZWQsIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHlcbiAqIHB1c2hlZCwgc28gYW4gaW4tcGxhY2Ugd3JpdGUgd291bGQgbGVhdmUgYW4gdW5jb21taXR0ZWQgY2hhbmdlIGJlaGluZCBhIHB1Ymxpc2hlZCByZWxlYXNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgfSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL2RlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzJztcblxuaW1wb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGVtby12YXVsdC1uYW1pbmcnO1xuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZnMnO1xuaW1wb3J0IHtcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcm9vdCc7XG5pbXBvcnQge1xuICBnZXRGb2xkZXJOYW1lLFxuICBqb2luLFxuICByZWxhdGl2ZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyB6aXBTeW5jIH0gZnJvbSAnZmZsYXRlJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7XG4gIGNwLFxuICBta2RpcixcbiAgcmVhZEZpbGUsXG4gIHdyaXRlRmlsZVxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRBcHBKc29uIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcblxuaW1wb3J0IHtcbiAgYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50LFxuICBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3MsXG4gIHBhcnNlRGVtb1ZhdWx0QXBwSnNvblxufSBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcblxuY29uc3QgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEID0gJ2RlbW8tdmF1bHQtaGVscGVyJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IERBVEFfSlNPTl9JTkRFTlQgPSAyO1xuY29uc3QgUkVBRE1FX0ZJTEVfTkFNRSA9ICdSRUFETUUubWQnO1xuXG4vLyBUaGUgUkVBRE1FJ3Mgb3BlbmluZyBgIyBIMWAsIGFuZCBvbmx5IHRoYXQgb25lOiB3aXRob3V0IHRoZSBgbWAgZmxhZyB0aGUgbWF0Y2ggaXMgYW5jaG9yZWQgdG8gdGhlIHN0YXJ0XG4vLyBvZiB0aGUgZmlsZSwgYW5kIGAuYCBzdG9wcyBhdCB0aGUgbmV3bGluZSB0aGF0IGVuZHMgdGhlIGxpbmUuXG5jb25zdCBPUEVOSU5HX0hFQURJTkdfUkVHX0VYUCA9IC9eIyAuKi87XG5cbi8qKlxuICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBrZXllZCBieSB0aGUgbmFtZSBlYWNoIG9uZSB0YWtlcyBpbnNpZGUgdGhlIFpJUC5cbiAqXG4gKiBUaGUgd2hvbGUgYXJjaGl2ZSBpcyBhc3NlbWJsZWQgYXMgdGhpcyBtYXAgYW5kIHNlcmlhbGl6ZWQgb25jZSwgc28gaW5qZWN0aW5nIGFuIGVudHJ5IGlzIGFuIG9yZGluYXJ5XG4gKiBgc2V0YCByYXRoZXIgdGhhbiBhIG11dGF0aW9uIG9mIGEgaGFsZi1idWlsdCBhcmNoaXZlIG9iamVjdC5cbiAqL1xudHlwZSBEZW1vVmF1bHRaaXBFbnRyaWVzID0gTWFwPHN0cmluZywgQnVmZmVyPjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5qZWN0QXBwSnNvbn0uXG4gKi9cbmludGVyZmFjZSBJbmplY3RBcHBKc29uUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21taXR0ZWQgc2V0dGluZ3MgdGhlIG93bmVkIG9uZXMgYXJlIG1lcmdlZCBvdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSnNvbjogRGVtb1ZhdWx0QXBwSnNvbjtcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBlZGl0ZWQgaW4gcGxhY2UuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5qZWN0UmVhZG1lVmVyc2lvbn0uXG4gKi9cbmludGVyZmFjZSBJbmplY3RSZWFkbWVWZXJzaW9uUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3MgZW50cmllcywgZWRpdGVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogRGVtb1ZhdWx0WmlwRW50cmllcztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBtaW5pbWFsIHNoYXBlIG9mIGEgcGx1Z2luIGBtYW5pZmVzdC5qc29uYCByZWFkIGJ5IHtAbGluayBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0fS5cbiAqL1xuaW50ZXJmYWNlIFBsdWdpbk1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgYXMgdGhlIGZvbGRlciBuYW1lIHVuZGVyIGBkZW1vLXZhdWx0Ly5vYnNpZGlhbi9wbHVnaW5zL2AuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHZlcnNpb24sIGVtYmVkZGVkIGluIHRoZSBhcmNoaXZlJ3MgdG9wLWxldmVsIGZvbGRlciBuYW1lIGFuZCBpdHMgUkVBRE1FIGhlYWRpbmcuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlYWREZW1vVmF1bHRFbnRyaWVzfS5cbiAqL1xuaW50ZXJmYWNlIFJlYWREZW1vVmF1bHRFbnRyaWVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBmb2xkZXIgdG8gcmVhZCwgYXMgYW4gYWJzb2x1dGUgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbW9WYXVsdFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0L2AgaW4gdGhlIHJlcG8gcm9vdCkgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL2AgaW50byB0aGUgdmF1bHQnc1xuICogYC5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYCBmb2xkZXIsIHRoZW4gemlwcyB0aGUgd2hvbGUgdmF1bHQgdG9cbiAqIGBkaXN0L2J1aWxkLzxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCwgdW5kZXIgYSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+L2AgZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGNyZWF0ZWQgemlwIGFyY2hpdmUsIG9yXG4gKiBgbnVsbGAgaWYgdGhlIHJlcG8gaGFzIG5vIGBkZW1vLXZhdWx0L2AgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgY29uc3QgZGVtb1ZhdWx0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0IH0pO1xuICBpZiAoIWV4aXN0c1N5bmMoZGVtb1ZhdWx0UGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uIH0pO1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUobWFuaWZlc3RQYXRoLCAndXRmLTgnKSkgYXMgUGx1Z2luTWFuaWZlc3Q7XG5cbiAgY29uc3QgcGx1Z2luRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBtYW5pZmVzdC5pZFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3QgZGlzdEJ1aWxkUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBhd2FpdCBjcChkaXN0QnVpbGRQYXRoLCBwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGF3YWl0IGluamVjdERlbW9WYXVsdEhlbHBlcihtYW5pZmVzdC5pZCk7XG5cbiAgY29uc3QgemlwUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCwgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKG1hbmlmZXN0LmlkKSlcbiAgfSk7XG4gIGNvbnN0IHJvb3RGb2xkZXJOYW1lID0gZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZSh7XG4gICAgcGx1Z2luSWQ6IG1hbmlmZXN0LmlkLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCByZWFkRGVtb1ZhdWx0RW50cmllcyh7XG4gICAgZGVtb1ZhdWx0UGF0aCxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9KTtcbiAgaW5qZWN0QXBwSnNvbih7XG4gICAgYXBwSnNvbjogYXdhaXQgcmVhZENvbW1pdHRlZEFwcEpzb24oKSxcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0pO1xuICBpbmplY3RSZWFkbWVWZXJzaW9uKHtcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIC8vIEV2ZXJ5IGVudHJ5IGlzIHN0YW1wZWQgd2l0aCB0aGUgbW9tZW50IHRoZSBhcmNoaXZlIGlzIGJ1aWx0IHJhdGhlciB0aGFuIHRoZSBmaWxlJ3Mgb3duIG10aW1lLCB3aGljaCBpc1xuICAvLyB3aGF0IHRoZSBwcmV2aW91cyBhcmNoaXZlciB3cm90ZS4gQSBkZW1vIHZhdWx0J3MgY29tbWl0dGVkIHRpbWVzdGFtcHMgYXJlIGNoZWNrb3V0IGFydGlmYWN0cyBvZiB3aG9ldmVyXG4gIC8vIHJhbiB0aGUgcmVsZWFzZSwgc28gdGhleSBjYXJyeSBub3RoaW5nIGEgcmVhZGVyIGNvdWxkIHVzZTsgdGhlIGJ1aWxkIHRpbWUgYXQgbGVhc3QgZGVzY3JpYmVzIHRoZVxuICAvLyBhcmNoaXZlLlxuICBhd2FpdCB3cml0ZUZpbGUoemlwUGF0aCwgemlwU3luYyhPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcykpKTtcbiAgcmV0dXJuIHppcFBhdGg7XG59XG5cbi8vIFN0b3JlcyB0aGUgYXJjaGl2ZWQgdmF1bHQncyBgLm9ic2lkaWFuL2FwcC5qc29uYCDigJQgdGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB3aXRoIHRoZSBvd25lZCBvbmVzIG1lcmdlZFxuLy8gb3ZlciB0aGVtLiBUaGUgRU5UUlkgaXMgd3JpdHRlbiByYXRoZXIgdGhhbiB0aGUgZmlsZSwgc28gdGhlIHJlcG8gZm9sZGVyIGlzIGxlZnQgZXhhY3RseSBhcyBpdCB3YXMsIGFuZFxuLy8gQSB2YXVsdCB3aXRoIG5vdGhpbmcgZWxzZSB0byBjb25maWd1cmUg4oCUIHdoaWNoIGNvbW1pdHMgbm8gYGFwcC5qc29uYCBhdCBhbGwg4oCUIGdldHMgb25lIGhlcmUgcmVnYXJkbGVzcy5cbmZ1bmN0aW9uIGluamVjdEFwcEpzb24ocGFyYW1zOiBJbmplY3RBcHBKc29uUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBhcHBKc29uLFxuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyeU5hbWUgPSBqb2luKHJvb3RGb2xkZXJOYW1lLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbik7XG4gIGVudHJpZXMuc2V0KGVudHJ5TmFtZSwgQnVmZmVyLmZyb20oYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50KHsgYXBwSnNvbiB9KSwgJ3V0Zi04JykpO1xufVxuXG4vLyBJbmplY3RzIHRoZSBidWlsdCwgYG9ic2lkaWFuLWRldi11dGlsc2Atb3duZWQgYGRlbW8tdmF1bHQtaGVscGVyYCBib290c3RyYXAgcGx1Z2luIChzaGlwcGVkIGluIHRoaXMgcGFja2FnZSkgaW50byB0aGUgZGVtbyB2YXVsdCwgc28gbm8gcGVyLXZhdWx0IGNvcHkgaXMgY29tbWl0dGVkIGFuZCBhbiBgb2JzaWRpYW4tZGV2LXV0aWxzYCBidW1wIHByb3BhZ2F0ZXMgZml4ZXMuXG4vL1xuLy8gQWxvbmdzaWRlIHRoZSBiaW5hcmllcyBpdCB3cml0ZXMgdGhlIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCBuYW1pbmcgdGhlIGRlbW9uc3RyYXRlZCBwbHVnaW4uIFRoYXQgaXNcbi8vIHRoZSBvbmUgbW9tZW50IHRoZSBpZCBpcyBrbm93biBmb3IgY2VydGFpbiDigJQgaXQgY29tZXMgZnJvbSB0aGUgcGx1Z2luJ3Mgb3duIG1hbmlmZXN0IOKAlCB3aGVyZWFzIHRoZVxuLy8gb3BlbmVkIHZhdWx0IG9ubHkgb2ZmZXJzIHBsdWdpbiBmb2xkZXJzIHRvIGNvdW50LCB3aGljaCB0aGUgYm9vdHN0cmFwIGl0c2VsZiBhZGRzIHRvIChzZWVcbi8vIGBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc2ApLlxuYXN5bmMgZnVuY3Rpb24gaW5qZWN0RGVtb1ZhdWx0SGVscGVyKGRlbW9lZFBsdWdpbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGFja2FnZUZvbGRlciA9IGdldFJvb3RGb2xkZXIoZ2V0Rm9sZGVyTmFtZShpbXBvcnQubWV0YS51cmwpKTtcbiAgaWYgKCFwYWNrYWdlRm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB0aGUgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0IHBhY2thZ2UgZm9sZGVyIHRvIGluamVjdCB0aGUgZGVtby12YXVsdC1oZWxwZXIgcGx1Z2luLicpO1xuICB9XG5cbiAgY29uc3QgaGVscGVyU291cmNlUGF0aCA9IGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdERlbW9WYXVsdEhlbHBlcik7XG4gIGNvbnN0IGhlbHBlckZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgICAgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEXG4gICAgKVxuICB9KTtcbiAgYXdhaXQgbWtkaXIoaGVscGVyRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgY3AoaGVscGVyU291cmNlUGF0aCwgaGVscGVyRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBzZXR0aW5nczogRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgPSB7IGRlbW9lZFBsdWdpbklkIH07XG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKGhlbHBlckZvbGRlciwgREFUQV9KU09OX0ZJTEVfTkFNRSksIGAke0pTT04uc3RyaW5naWZ5KHNldHRpbmdzLCBudWxsLCBEQVRBX0pTT05fSU5ERU5UKX1cXG5gLCAndXRmLTgnKTtcbn1cblxuLy8gTmFtZXMgdGhlIHZlcnNpb24gb24gdGhlIGFyY2hpdmVkIGBSRUFETUUubWRgJ3MgaGVhZGluZywgc28gdGhlIHZhdWx0IHNheXMgd2hpY2ggcmVsZWFzZSBpdCBkZW1vbnN0cmF0ZXNcbi8vIGhvd2V2ZXIgZmFyIGl0IHRyYXZlbHMgZnJvbSB0aGUgcmVsZWFzZSBwYWdlIGl0IHdhcyBkb3dubG9hZGVkIGZyb20uXG4vL1xuLy8gRW50cnktb25seSwgZm9yIHRoZSBzYW1lIHJlYXNvbiBgaW5qZWN0QXBwSnNvbmAgaXM6IHRoZSBjb21taXR0ZWQgUkVBRE1FIGlzIGEgdHJhY2tlZCwgaGFuZC1hdXRob3JlZFxuLy8gZmlsZSBhbmQgYHVwZGF0ZVZlcnNpb25gIGFyY2hpdmVzIGFmdGVyIGl0IGhhcyBhbHJlYWR5IHB1c2hlZC5cbi8vXG4vLyBBIHZhdWx0IHRoYXQgc2hpcHMgbm8gUkVBRE1FLCBvciBvbmUgb3BlbmluZyBvbiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBgIyBIMWAsIGlzIGxlZnQgYWxvbmUgcmF0aGVyXG4vLyB0aGFuIGNvcnJlY3RlZC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgZXhlbXB0cyBgUkVBRE1FLm1kYCBmcm9tIGl0cyBIMSBjaGVjaywgc28gbmVpdGhlciBzaGFwZVxuLy8gaXMgYSBkZWZlY3Qg4oCUIGFuZCBhIHJlbGVhc2UgaXMgdGhlIHdyb25nIG1vbWVudCB0byBzdGFydCBmYWlsaW5nIG9uIG9uZS5cbmZ1bmN0aW9uIGluamVjdFJlYWRtZVZlcnNpb24ocGFyYW1zOiBJbmplY3RSZWFkbWVWZXJzaW9uUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lLFxuICAgIHZlcnNpb25cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyeU5hbWUgPSBqb2luKHJvb3RGb2xkZXJOYW1lLCBSRUFETUVfRklMRV9OQU1FKTtcbiAgY29uc3QgZW50cnkgPSBlbnRyaWVzLmdldChlbnRyeU5hbWUpO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29udGVudCA9IGVudHJ5LnRvU3RyaW5nKCd1dGYtOCcpO1xuICBjb25zdCB2ZXJzaW9uZWRDb250ZW50ID0gY29udGVudC5yZXBsYWNlKE9QRU5JTkdfSEVBRElOR19SRUdfRVhQLCAoaGVhZGluZykgPT4gYCR7aGVhZGluZ30gdiR7dmVyc2lvbn1gKTtcbiAgaWYgKHZlcnNpb25lZENvbnRlbnQgPT09IGNvbnRlbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlbnRyaWVzLnNldChlbnRyeU5hbWUsIEJ1ZmZlci5mcm9tKHZlcnNpb25lZENvbnRlbnQsICd1dGYtOCcpKTtcbn1cblxuLy8gUmVhZHMgdGhlIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgYC5vYnNpZGlhbi9hcHAuanNvbmAsIHJlZnVzaW5nIHRoZSBzZXR0aW5ncyB0aGlzIHBhY2thZ2Ugb3ducy5cbi8vXG4vLyBUaG9zZSBzZXR0aW5ncyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgYXJjaGl2ZSwgc28gYSBjb21taXR0ZWQgb25lIGlzIGEgc2Vjb25kIHNvdXJjZSBvZiB0cnV0aCB0aGF0XG4vLyBub3RoaW5nIGtlZXBzIGluIHN0ZXAuIFRoZSBkZW1vLXZhdWx0IGNvdmVyYWdlIHN1aXRlIGFscmVhZHkgZmFpbHMgb24gaXQsIHdoaWNoIG1lYW5zIHJlYWNoaW5nIGhlcmVcbi8vIG1lYW5zIHRoYXQgZ2F0ZSB3YXMgc2tpcHBlZCDigJQgc28gdGhpcyByZWZ1c2VzIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIGEgdmFsdWUgc29tZWJvZHkgY2hvc2Ugb24gcHVycG9zZS5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb21taXR0ZWRBcHBKc29uKCk6IFByb21pc2U8RGVtb1ZhdWx0QXBwSnNvbj4ge1xuICBjb25zdCBhcHBKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFwcEpzb24pXG4gIH0pO1xuICBjb25zdCBjb250ZW50ID0gZXhpc3RzU3luYyhhcHBKc29uUGF0aCkgPyBhd2FpdCByZWFkRmlsZShhcHBKc29uUGF0aCwgJ3V0Zi04JykgOiBudWxsO1xuICBjb25zdCBhcHBKc29uID0gcGFyc2VEZW1vVmF1bHRBcHBKc29uKHsgY29udGVudCwgcGF0aDogYXBwSnNvblBhdGggfSk7XG5cbiAgY29uc3Qgb3duZWRTZXR0aW5ncyA9IGZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5ncyh7IGFwcEpzb24gfSk7XG4gIGlmIChvd25lZFNldHRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHthcHBKc29uUGF0aH0gc2V0cyAke293bmVkU2V0dGluZ3Muam9pbignLCAnKX0sIHdoaWNoIG9ic2lkaWFuLWRldi11dGlscyBvd25zIGFuZCB3cml0ZXMgaW50byB0aGUgYXJjaGl2ZWQgZGVtbyB2YXVsdC4gU2V0dGluZ3MgaXQgb3ducyBtdXN0IG5vdCBiZSBjb21taXR0ZWQuYFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gYXBwSnNvbjtcbn1cblxuLy8gUmVhZHMgZXZlcnkgZmlsZSBpbiB0aGUgZGVtbyB2YXVsdCBhcyBhbiBhcmNoaXZlIGVudHJ5LCB1bmRlciB0aGUgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIgdGhlIGFyY2hpdmVcbi8vIHNpdHMgaW4uXG4vL1xuLy8gT25seSBGSUxFUyBiZWNvbWUgZW50cmllcy4gR2l0IGNhbm5vdCB0cmFjayBhbiBlbXB0eSBmb2xkZXIsIHNvIGEgY29tbWl0dGVkIGRlbW8gdmF1bHQgaGFzIG5vbmUg4oCUIGFuZFxuLy8gYGV4dHJhY3RaaXBBcmNoaXZlYCBjcmVhdGVzIGFuIGVudHJ5J3MgcGFyZW50IGZvbGRlcnMgd2hldGhlciBvciBub3QgdGhlIGFyY2hpdmUgZGVjbGFyZWQgdGhlbSwgc28gYVxuLy8gZm9sZGVyIGVudHJ5IHdvdWxkIGVhcm4gbm90aGluZyBldmVuIGlmIG9uZSBjb3VsZCBleGlzdC5cbmFzeW5jIGZ1bmN0aW9uIHJlYWREZW1vVmF1bHRFbnRyaWVzKHBhcmFtczogUmVhZERlbW9WYXVsdEVudHJpZXNQYXJhbXMpOiBQcm9taXNlPERlbW9WYXVsdFppcEVudHJpZXM+IHtcbiAgY29uc3Qge1xuICAgIGRlbW9WYXVsdFBhdGgsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzID0gbmV3IE1hcDxzdHJpbmcsIEJ1ZmZlcj4oKTtcbiAgZm9yIChjb25zdCBkaXJlbnQgb2YgYXdhaXQgcmVhZGRpclBvc2l4KGRlbW9WYXVsdFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlLCB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pKSB7XG4gICAgaWYgKCFkaXJlbnQuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSBqb2luKGRpcmVudC5wYXJlbnRQYXRoLCBkaXJlbnQubmFtZSk7XG4gICAgZW50cmllcy5zZXQoam9pbihyb290Rm9sZGVyTmFtZSwgcmVsYXRpdmUoZGVtb1ZhdWx0UGF0aCwgcGF0aCkpLCBhd2FpdCByZWFkRmlsZShwYXRoKSk7XG4gIH1cblxuICByZXR1cm4gZW50cmllcztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQ0EsK0JBR087QUFDUCxnQkFBNkI7QUFDN0Isa0JBR087QUFDUCxrQkFJTztBQUNQLG9CQUF3QjtBQUN4QixxQkFBMkI7QUFDM0Isc0JBS087QUFJUCxpQ0FJTztBQUNQLHdDQUF3QztBQWxFeEMsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxTQUFTLDhCQUE4QjtBQUMvRixNQUFJLE9BQU8sZUFBZSxVQUFVO0FBQ2xDLFVBQU0sZUFBZTtBQUNyQixVQUFNLE1BQU0sYUFBYSxV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
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/IChmdW5jdGlvbiBnZXRDanNJbXBvcnRNZXRhVXJsKCkge1xuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgIGNvbnN0IHVybCA9IGxvY2FsUmVxdWlyZShcIm5vZGU6dXJsXCIpO1xuICAgIGlmICh0eXBlb2YgdXJsLnBhdGhUb0ZpbGVVUkwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgfVxuICB9XG4gIHJldHVybiBnbG9iYWxUaGlzLmxvY2F0aW9uPy5ocmVmID8/IFwiXCI7XG59KSgpO1xuLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFyY2hpdmVzIGEgcGx1Z2luJ3MgZGVtbyB2YXVsdCBhcyBhIHJlbGVhc2UgYXJ0aWZhY3QuXG4gKlxuICogQSBwbHVnaW4gY2FuIHNoaXAgYSBjdXJhdGVkIGRlbW8gdmF1bHQgYXQgYGRlbW8tdmF1bHQvYCBpbiBpdHMgcmVwbyByb290LiBBdCByZWxlYXNlIHRpbWUgdGhpc1xuICogbW9kdWxlIGluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBpbnRvIHRoYXQgdmF1bHQncyBgLm9ic2lkaWFuL3BsdWdpbnMvPGlkPi9gIGZvbGRlciBhbmRcbiAqIHppcHMgdGhlIHdob2xlIHZhdWx0IGludG8gYGRpc3QvYnVpbGQvPHBsdWdpbi1pZD4tZGVtby12YXVsdC56aXBgLCBzbyB0aGUgZXhpc3RpbmcgR2l0SHViLXJlbGVhc2VcbiAqIHN0ZXAgKHdoaWNoIHVwbG9hZHMgZXZlcnkgZmlsZSBpbiBgZGlzdC9idWlsZC9gKSBhdHRhY2hlcyBpdCBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIFRoZSB2ZXJzaW9uIGlzIGRlbGliZXJhdGVseSBhYnNlbnQgZnJvbSB0aGF0IG5hbWUgYW5kIGxpdmVzIElOU0lERSB0aGUgYXJjaGl2ZSBpbnN0ZWFkIOKAlCBzZWVcbiAqIGBvYnNpZGlhbi9kZW1vLXZhdWx0LW5hbWluZy50c2AgZm9yIHdoeSDigJQgaW4gdGhlIHR3byBwbGFjZXMgYSBwZXJzb24gYWN0dWFsbHkgbWVldHMgaXQ6IHRoZSB2YXVsdFxuICogc2l0cyB1bmRlciBhIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj4vYCBmb2xkZXIsIHNvIHVuemlwcGluZyBzZXZlcmFsIHJlbGVhc2VzIGJ5IGhhbmRcbiAqIGludG8gb25lIGZvbGRlciBuZWl0aGVyIGNvbGxpZGVzIG5vciBwcm9kdWNlcyBhbm9ueW1vdXMgZGlyZWN0b3JpZXMsIGFuZCB0aGUgdmF1bHQncyBgUkVBRE1FLm1kYFxuICogaGVhZGluZyBnYWlucyB0aGUgdmVyc2lvbiBpdCBkZW1vbnN0cmF0ZXMuXG4gKlxuICogVGhlIGFyY2hpdmVkIGNvcHkgYWxzbyBjYXJyaWVzIHRoZSBgLm9ic2lkaWFuL2FwcC5qc29uYCBzZXR0aW5ncyB0aGlzIHBhY2thZ2Ugb3ducyAoc2VlXG4gKiBgZGVtby12YXVsdC1hcHAtanNvbi50c2ApLiBUaG9zZSBzZXR0aW5ncyBhbmQgdGhlIFJFQURNRSBoZWFkaW5nIGFyZSB3cml0dGVuIGludG8gdGhlIFpJUCBFTlRSWSBhbmRcbiAqIG5ldmVyIGludG8gdGhlIHJlcG8gZm9sZGVyOiBib3RoIGZpbGVzIGFyZSB0cmFja2VkLCBhbmQgYHVwZGF0ZVZlcnNpb25gIGFyY2hpdmVzIGFmdGVyIGl0IGhhcyBhbHJlYWR5XG4gKiBwdXNoZWQsIHNvIGFuIGluLXBsYWNlIHdyaXRlIHdvdWxkIGxlYXZlIGFuIHVuY29tbWl0dGVkIGNoYW5nZSBiZWhpbmQgYSBwdWJsaXNoZWQgcmVsZWFzZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWxpYi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncyc7XG5cbmltcG9ydCB7XG4gIGdldERlbW9WYXVsdEFyY2hpdmVGaWxlTmFtZSxcbiAgZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZVxufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL2RlbW8tdmF1bHQtbmFtaW5nJztcbmltcG9ydCB7IHJlYWRkaXJQb3NpeCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2ZzJztcbmltcG9ydCB7XG4gIGdldFJvb3RGb2xkZXIsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Jvb3QnO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyTmFtZSxcbiAgam9pbixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgemlwU3luYyB9IGZyb20gJ2ZmbGF0ZSc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgbWtkaXIsXG4gIHJlYWRGaWxlLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB0eXBlIHsgRGVtb1ZhdWx0QXBwSnNvbiB9IGZyb20gJy4vZGVtby12YXVsdC1hcHAtanNvbi50cyc7XG5cbmltcG9ydCB7XG4gIGJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudCxcbiAgZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzLFxuICBwYXJzZURlbW9WYXVsdEFwcEpzb25cbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5cbmNvbnN0IERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRCA9ICdkZW1vLXZhdWx0LWhlbHBlcic7XG5jb25zdCBEQVRBX0pTT05fRklMRV9OQU1FID0gJ2RhdGEuanNvbic7XG5jb25zdCBEQVRBX0pTT05fSU5ERU5UID0gMjtcbmNvbnN0IFJFQURNRV9GSUxFX05BTUUgPSAnUkVBRE1FLm1kJztcblxuLy8gVGhlIFJFQURNRSdzIG9wZW5pbmcgYCMgSDFgLCBhbmQgb25seSB0aGF0IG9uZTogd2l0aG91dCB0aGUgYG1gIGZsYWcgdGhlIG1hdGNoIGlzIGFuY2hvcmVkIHRvIHRoZSBzdGFydFxuLy8gb2YgdGhlIGZpbGUsIGFuZCBgLmAgc3RvcHMgYXQgdGhlIG5ld2xpbmUgdGhhdCBlbmRzIHRoZSBsaW5lLlxuY29uc3QgT1BFTklOR19IRUFESU5HX1JFR19FWFAgPSAvXiMgLiovO1xuXG4vKipcbiAqIFRoZSBhcmNoaXZlJ3MgZW50cmllcywga2V5ZWQgYnkgdGhlIG5hbWUgZWFjaCBvbmUgdGFrZXMgaW5zaWRlIHRoZSBaSVAuXG4gKlxuICogVGhlIHdob2xlIGFyY2hpdmUgaXMgYXNzZW1ibGVkIGFzIHRoaXMgbWFwIGFuZCBzZXJpYWxpemVkIG9uY2UsIHNvIGluamVjdGluZyBhbiBlbnRyeSBpcyBhbiBvcmRpbmFyeVxuICogYHNldGAgcmF0aGVyIHRoYW4gYSBtdXRhdGlvbiBvZiBhIGhhbGYtYnVpbHQgYXJjaGl2ZSBvYmplY3QuXG4gKi9cbnR5cGUgRGVtb1ZhdWx0WmlwRW50cmllcyA9IE1hcDxzdHJpbmcsIEJ1ZmZlcj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGluamVjdEFwcEpzb259LlxuICovXG5pbnRlcmZhY2UgSW5qZWN0QXBwSnNvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWl0dGVkIHNldHRpbmdzIHRoZSBvd25lZCBvbmVzIGFyZSBtZXJnZWQgb3Zlci5cbiAgICovXG4gIHJlYWRvbmx5IGFwcEpzb246IERlbW9WYXVsdEFwcEpzb247XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3MgZW50cmllcywgZWRpdGVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogRGVtb1ZhdWx0WmlwRW50cmllcztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGluamVjdFJlYWRtZVZlcnNpb259LlxuICovXG5pbnRlcmZhY2UgSW5qZWN0UmVhZG1lVmVyc2lvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGVkaXRlZCBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3Mgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIsIHdoaWNoIGV2ZXJ5IGVudHJ5IG5hbWUgaXMgcmVsYXRpdmUgdG8uXG4gICAqL1xuICByZWFkb25seSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHZlcnNpb24gdGhlIHZhdWx0IGRlbW9uc3RyYXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgbWluaW1hbCBzaGFwZSBvZiBhIHBsdWdpbiBgbWFuaWZlc3QuanNvbmAgcmVhZCBieSB7QGxpbmsgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdH0uXG4gKi9cbmludGVyZmFjZSBQbHVnaW5NYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGlkLCB1c2VkIGFzIHRoZSBmb2xkZXIgbmFtZSB1bmRlciBgZGVtby12YXVsdC8ub2JzaWRpYW4vcGx1Z2lucy9gLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB2ZXJzaW9uLCBlbWJlZGRlZCBpbiB0aGUgYXJjaGl2ZSdzIHRvcC1sZXZlbCBmb2xkZXIgbmFtZSBhbmQgaXRzIFJFQURNRSBoZWFkaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWFkRGVtb1ZhdWx0RW50cmllc30uXG4gKi9cbmludGVyZmFjZSBSZWFkRGVtb1ZhdWx0RW50cmllc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgdmF1bHQgZm9sZGVyIHRvIHJlYWQsIGFzIGFuIGFic29sdXRlIHBhdGguXG4gICAqL1xuICByZWFkb25seSBkZW1vVmF1bHRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3Mgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIsIHdoaWNoIGV2ZXJ5IGVudHJ5IG5hbWUgaXMgcmVsYXRpdmUgdG8uXG4gICAqL1xuICByZWFkb25seSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFyY2hpdmVzIHRoZSBwbHVnaW4ncyBkZW1vIHZhdWx0IChgZGVtby12YXVsdC9gIGluIHRoZSByZXBvIHJvb3QpIGFzIGEgcmVsZWFzZSBhcnRpZmFjdC5cbiAqXG4gKiBJbnN0YWxscyB0aGUgZnJlc2hseSBidWlsdCBwbHVnaW4gZnJvbSBgZGlzdC9idWlsZC9gIGludG8gdGhlIHZhdWx0J3NcbiAqIGAub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AgZm9sZGVyLCB0aGVuIHppcHMgdGhlIHdob2xlIHZhdWx0IHRvXG4gKiBgZGlzdC9idWlsZC88cGx1Z2luLWlkPi1kZW1vLXZhdWx0LnppcGAsIHVuZGVyIGEgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPi9gIGZvbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBjcmVhdGVkIHppcCBhcmNoaXZlLCBvclxuICogYG51bGxgIGlmIHRoZSByZXBvIGhhcyBubyBgZGVtby12YXVsdC9gIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFyY2hpdmVQbHVnaW5EZW1vVmF1bHQoKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IGRlbW9WYXVsdFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCB9KTtcbiAgaWYgKCFleGlzdHNTeW5jKGRlbW9WYXVsdFBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBtYW5pZmVzdFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiB9KTtcbiAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKG1hbmlmZXN0UGF0aCwgJ3V0Zi04JykpIGFzIFBsdWdpbk1hbmlmZXN0O1xuXG4gIGNvbnN0IHBsdWdpbkZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgICAgbWFuaWZlc3QuaWRcbiAgICApXG4gIH0pO1xuICBhd2FpdCBta2RpcihwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGRpc3RCdWlsZFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCB9KTtcbiAgYXdhaXQgY3AoZGlzdEJ1aWxkUGF0aCwgcGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBhd2FpdCBpbmplY3REZW1vVmF1bHRIZWxwZXIobWFuaWZlc3QuaWQpO1xuXG4gIGNvbnN0IHppcFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIGdldERlbW9WYXVsdEFyY2hpdmVGaWxlTmFtZShtYW5pZmVzdC5pZCkpXG4gIH0pO1xuICBjb25zdCByb290Rm9sZGVyTmFtZSA9IGdldERlbW9WYXVsdEZvbGRlck5hbWUoe1xuICAgIHBsdWdpbklkOiBtYW5pZmVzdC5pZCxcbiAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uXG4gIH0pO1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZERlbW9WYXVsdEVudHJpZXMoe1xuICAgIGRlbW9WYXVsdFBhdGgsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSk7XG4gIGluamVjdEFwcEpzb24oe1xuICAgIGFwcEpzb246IGF3YWl0IHJlYWRDb21taXR0ZWRBcHBKc29uKCksXG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9KTtcbiAgaW5qZWN0UmVhZG1lVmVyc2lvbih7XG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZSxcbiAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uXG4gIH0pO1xuICAvLyBFdmVyeSBlbnRyeSBpcyBzdGFtcGVkIHdpdGggdGhlIG1vbWVudCB0aGUgYXJjaGl2ZSBpcyBidWlsdCByYXRoZXIgdGhhbiB0aGUgZmlsZSdzIG93biBtdGltZSwgd2hpY2ggaXNcbiAgLy8gd2hhdCB0aGUgcHJldmlvdXMgYXJjaGl2ZXIgd3JvdGUuIEEgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCB0aW1lc3RhbXBzIGFyZSBjaGVja291dCBhcnRpZmFjdHMgb2Ygd2hvZXZlclxuICAvLyByYW4gdGhlIHJlbGVhc2UsIHNvIHRoZXkgY2Fycnkgbm90aGluZyBhIHJlYWRlciBjb3VsZCB1c2U7IHRoZSBidWlsZCB0aW1lIGF0IGxlYXN0IGRlc2NyaWJlcyB0aGVcbiAgLy8gYXJjaGl2ZS5cbiAgYXdhaXQgd3JpdGVGaWxlKHppcFBhdGgsIHppcFN5bmMoT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpKSk7XG4gIHJldHVybiB6aXBQYXRoO1xufVxuXG4vLyBTdG9yZXMgdGhlIGFyY2hpdmVkIHZhdWx0J3MgYC5vYnNpZGlhbi9hcHAuanNvbmAg4oCUIHRoZSBjb21taXR0ZWQgc2V0dGluZ3Mgd2l0aCB0aGUgb3duZWQgb25lcyBtZXJnZWRcbi8vIG92ZXIgdGhlbS4gVGhlIEVOVFJZIGlzIHdyaXR0ZW4gcmF0aGVyIHRoYW4gdGhlIGZpbGUsIHNvIHRoZSByZXBvIGZvbGRlciBpcyBsZWZ0IGV4YWN0bHkgYXMgaXQgd2FzLCBhbmRcbi8vIEEgdmF1bHQgd2l0aCBub3RoaW5nIGVsc2UgdG8gY29uZmlndXJlIOKAlCB3aGljaCBjb21taXRzIG5vIGBhcHAuanNvbmAgYXQgYWxsIOKAlCBnZXRzIG9uZSBoZXJlIHJlZ2FyZGxlc3MuXG5mdW5jdGlvbiBpbmplY3RBcHBKc29uKHBhcmFtczogSW5qZWN0QXBwSnNvblBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgYXBwSnNvbixcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZW50cnlOYW1lID0gam9pbihyb290Rm9sZGVyTmFtZSwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFwcEpzb24pO1xuICBlbnRyaWVzLnNldChlbnRyeU5hbWUsIEJ1ZmZlci5mcm9tKGJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudCh7IGFwcEpzb24gfSksICd1dGYtOCcpKTtcbn1cblxuLy8gSW5qZWN0cyB0aGUgYnVpbHQsIGBvYnNpZGlhbi1kZXYtdXRpbHNgLW93bmVkIGBkZW1vLXZhdWx0LWhlbHBlcmAgYm9vdHN0cmFwIHBsdWdpbiAoc2hpcHBlZCBpbiB0aGlzIHBhY2thZ2UpIGludG8gdGhlIGRlbW8gdmF1bHQsIHNvIG5vIHBlci12YXVsdCBjb3B5IGlzIGNvbW1pdHRlZCBhbmQgYW4gYG9ic2lkaWFuLWRldi11dGlsc2AgYnVtcCBwcm9wYWdhdGVzIGZpeGVzLlxuLy9cbi8vIEFsb25nc2lkZSB0aGUgYmluYXJpZXMgaXQgd3JpdGVzIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAgbmFtaW5nIHRoZSBkZW1vbnN0cmF0ZWQgcGx1Z2luLiBUaGF0IGlzXG4vLyB0aGUgb25lIG1vbWVudCB0aGUgaWQgaXMga25vd24gZm9yIGNlcnRhaW4g4oCUIGl0IGNvbWVzIGZyb20gdGhlIHBsdWdpbidzIG93biBtYW5pZmVzdCDigJQgd2hlcmVhcyB0aGVcbi8vIG9wZW5lZCB2YXVsdCBvbmx5IG9mZmVycyBwbHVnaW4gZm9sZGVycyB0byBjb3VudCwgd2hpY2ggdGhlIGJvb3RzdHJhcCBpdHNlbGYgYWRkcyB0byAoc2VlXG4vLyBgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3NgKS5cbmFzeW5jIGZ1bmN0aW9uIGluamVjdERlbW9WYXVsdEhlbHBlcihkZW1vZWRQbHVnaW5JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBhY2thZ2VGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGdldEZvbGRlck5hbWUoaW1wb3J0Lm1ldGEudXJsKSk7XG4gIGlmICghcGFja2FnZUZvbGRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHJlc29sdmUgdGhlIEBtbmFvdW1vdi9vYnNpZGlhbi1kZXYtdG9vbGtpdCBwYWNrYWdlIGZvbGRlciB0byBpbmplY3QgdGhlIGRlbW8tdmF1bHQtaGVscGVyIHBsdWdpbi4nKTtcbiAgfVxuXG4gIGNvbnN0IGhlbHBlclNvdXJjZVBhdGggPSBqb2luKHBhY2thZ2VGb2xkZXIsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3REZW1vVmF1bHRIZWxwZXIpO1xuICBjb25zdCBoZWxwZXJGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGx1Z2lucyxcbiAgICAgIERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKGhlbHBlckZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGNwKGhlbHBlclNvdXJjZVBhdGgsIGhlbHBlckZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2V0dGluZ3M6IERlbW9WYXVsdEhlbHBlclNldHRpbmdzID0geyBkZW1vZWRQbHVnaW5JZCB9O1xuICBhd2FpdCB3cml0ZUZpbGUoam9pbihoZWxwZXJGb2xkZXIsIERBVEFfSlNPTl9GSUxFX05BTUUpLCBgJHtKU09OLnN0cmluZ2lmeShzZXR0aW5ncywgbnVsbCwgREFUQV9KU09OX0lOREVOVCl9XFxuYCwgJ3V0Zi04Jyk7XG59XG5cbi8vIE5hbWVzIHRoZSB2ZXJzaW9uIG9uIHRoZSBhcmNoaXZlZCBgUkVBRE1FLm1kYCdzIGhlYWRpbmcsIHNvIHRoZSB2YXVsdCBzYXlzIHdoaWNoIHJlbGVhc2UgaXQgZGVtb25zdHJhdGVzXG4vLyBob3dldmVyIGZhciBpdCB0cmF2ZWxzIGZyb20gdGhlIHJlbGVhc2UgcGFnZSBpdCB3YXMgZG93bmxvYWRlZCBmcm9tLlxuLy9cbi8vIEVudHJ5LW9ubHksIGZvciB0aGUgc2FtZSByZWFzb24gYGluamVjdEFwcEpzb25gIGlzOiB0aGUgY29tbWl0dGVkIFJFQURNRSBpcyBhIHRyYWNrZWQsIGhhbmQtYXV0aG9yZWRcbi8vIGZpbGUgYW5kIGB1cGRhdGVWZXJzaW9uYCBhcmNoaXZlcyBhZnRlciBpdCBoYXMgYWxyZWFkeSBwdXNoZWQuXG4vL1xuLy8gQSB2YXVsdCB0aGF0IHNoaXBzIG5vIFJFQURNRSwgb3Igb25lIG9wZW5pbmcgb24gc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gYCMgSDFgLCBpcyBsZWZ0IGFsb25lIHJhdGhlclxuLy8gdGhhbiBjb3JyZWN0ZWQuIFRoZSBkZW1vLXZhdWx0IGNvdmVyYWdlIHN1aXRlIGV4ZW1wdHMgYFJFQURNRS5tZGAgZnJvbSBpdHMgSDEgY2hlY2ssIHNvIG5laXRoZXIgc2hhcGVcbi8vIGlzIGEgZGVmZWN0IOKAlCBhbmQgYSByZWxlYXNlIGlzIHRoZSB3cm9uZyBtb21lbnQgdG8gc3RhcnQgZmFpbGluZyBvbiBvbmUuXG5mdW5jdGlvbiBpbmplY3RSZWFkbWVWZXJzaW9uKHBhcmFtczogSW5qZWN0UmVhZG1lVmVyc2lvblBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZSxcbiAgICB2ZXJzaW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZW50cnlOYW1lID0gam9pbihyb290Rm9sZGVyTmFtZSwgUkVBRE1FX0ZJTEVfTkFNRSk7XG4gIGNvbnN0IGVudHJ5ID0gZW50cmllcy5nZXQoZW50cnlOYW1lKTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSBlbnRyeS50b1N0cmluZygndXRmLTgnKTtcbiAgY29uc3QgdmVyc2lvbmVkQ29udGVudCA9IGNvbnRlbnQucmVwbGFjZShPUEVOSU5HX0hFQURJTkdfUkVHX0VYUCwgKGhlYWRpbmcpID0+IGAke2hlYWRpbmd9IHYke3ZlcnNpb259YCk7XG4gIGlmICh2ZXJzaW9uZWRDb250ZW50ID09PSBjb250ZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZW50cmllcy5zZXQoZW50cnlOYW1lLCBCdWZmZXIuZnJvbSh2ZXJzaW9uZWRDb250ZW50LCAndXRmLTgnKSk7XG59XG5cbi8vIFJlYWRzIHRoZSBkZW1vIHZhdWx0J3MgY29tbWl0dGVkIGAub2JzaWRpYW4vYXBwLmpzb25gLCByZWZ1c2luZyB0aGUgc2V0dGluZ3MgdGhpcyBwYWNrYWdlIG93bnMuXG4vL1xuLy8gVGhvc2Ugc2V0dGluZ3MgYXJlIGluamVjdGVkIGludG8gdGhlIGFyY2hpdmUsIHNvIGEgY29tbWl0dGVkIG9uZSBpcyBhIHNlY29uZCBzb3VyY2Ugb2YgdHJ1dGggdGhhdFxuLy8gbm90aGluZyBrZWVwcyBpbiBzdGVwLiBUaGUgZGVtby12YXVsdCBjb3ZlcmFnZSBzdWl0ZSBhbHJlYWR5IGZhaWxzIG9uIGl0LCB3aGljaCBtZWFucyByZWFjaGluZyBoZXJlXG4vLyBtZWFucyB0aGF0IGdhdGUgd2FzIHNraXBwZWQg4oCUIHNvIHRoaXMgcmVmdXNlcyByYXRoZXIgdGhhbiBvdmVyd3JpdGluZyBhIHZhbHVlIHNvbWVib2R5IGNob3NlIG9uIHB1cnBvc2UuXG5hc3luYyBmdW5jdGlvbiByZWFkQ29tbWl0dGVkQXBwSnNvbigpOiBQcm9taXNlPERlbW9WYXVsdEFwcEpzb24+IHtcbiAgY29uc3QgYXBwSnNvblBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BcHBKc29uKVxuICB9KTtcbiAgY29uc3QgY29udGVudCA9IGV4aXN0c1N5bmMoYXBwSnNvblBhdGgpID8gYXdhaXQgcmVhZEZpbGUoYXBwSnNvblBhdGgsICd1dGYtOCcpIDogbnVsbDtcbiAgY29uc3QgYXBwSnNvbiA9IHBhcnNlRGVtb1ZhdWx0QXBwSnNvbih7IGNvbnRlbnQsIHBhdGg6IGFwcEpzb25QYXRoIH0pO1xuXG4gIGNvbnN0IG93bmVkU2V0dGluZ3MgPSBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3MoeyBhcHBKc29uIH0pO1xuICBpZiAob3duZWRTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7YXBwSnNvblBhdGh9IHNldHMgJHtvd25lZFNldHRpbmdzLmpvaW4oJywgJyl9LCB3aGljaCBvYnNpZGlhbi1kZXYtdXRpbHMgb3ducyBhbmQgd3JpdGVzIGludG8gdGhlIGFyY2hpdmVkIGRlbW8gdmF1bHQuIFNldHRpbmdzIGl0IG93bnMgbXVzdCBub3QgYmUgY29tbWl0dGVkLmBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGFwcEpzb247XG59XG5cbi8vIFJlYWRzIGV2ZXJ5IGZpbGUgaW4gdGhlIGRlbW8gdmF1bHQgYXMgYW4gYXJjaGl2ZSBlbnRyeSwgdW5kZXIgdGhlIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyIHRoZSBhcmNoaXZlXG4vLyBzaXRzIGluLlxuLy9cbi8vIE9ubHkgRklMRVMgYmVjb21lIGVudHJpZXMuIEdpdCBjYW5ub3QgdHJhY2sgYW4gZW1wdHkgZm9sZGVyLCBzbyBhIGNvbW1pdHRlZCBkZW1vIHZhdWx0IGhhcyBub25lIOKAlCBhbmRcbi8vIGBleHRyYWN0WmlwQXJjaGl2ZWAgY3JlYXRlcyBhbiBlbnRyeSdzIHBhcmVudCBmb2xkZXJzIHdoZXRoZXIgb3Igbm90IHRoZSBhcmNoaXZlIGRlY2xhcmVkIHRoZW0sIHNvIGFcbi8vIGZvbGRlciBlbnRyeSB3b3VsZCBlYXJuIG5vdGhpbmcgZXZlbiBpZiBvbmUgY291bGQgZXhpc3QuXG5hc3luYyBmdW5jdGlvbiByZWFkRGVtb1ZhdWx0RW50cmllcyhwYXJhbXM6IFJlYWREZW1vVmF1bHRFbnRyaWVzUGFyYW1zKTogUHJvbWlzZTxEZW1vVmF1bHRaaXBFbnRyaWVzPiB7XG4gIGNvbnN0IHtcbiAgICBkZW1vVmF1bHRQYXRoLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZW50cmllczogRGVtb1ZhdWx0WmlwRW50cmllcyA9IG5ldyBNYXA8c3RyaW5nLCBCdWZmZXI+KCk7XG4gIGZvciAoY29uc3QgZGlyZW50IG9mIGF3YWl0IHJlYWRkaXJQb3NpeChkZW1vVmF1bHRQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZGlyZW50LmlzRmlsZSgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoID0gam9pbihkaXJlbnQucGFyZW50UGF0aCwgZGlyZW50Lm5hbWUpO1xuICAgIGVudHJpZXMuc2V0KGpvaW4ocm9vdEZvbGRlck5hbWUsIHJlbGF0aXZlKGRlbW9WYXVsdFBhdGgsIHBhdGgpKSwgYXdhaXQgcmVhZEZpbGUocGF0aCkpO1xuICB9XG5cbiAgcmV0dXJuIGVudHJpZXM7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtDQSwrQkFHTztBQUNQLGdCQUE2QjtBQUM3QixrQkFHTztBQUNQLGtCQUlPO0FBQ1Asb0JBQXdCO0FBQ3hCLHFCQUEyQjtBQUMzQixzQkFLTztBQUlQLGlDQUlPO0FBQ1Asd0NBQXdDO0FBaEV4QyxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLFNBQVMsc0JBQXNCO0FBQ3ZGLE1BQUksT0FBTyxlQUFlLFVBQVU7QUFDbEMsVUFBTSxlQUFlO0FBQ3JCLFVBQU0sTUFBTSxhQUFhLFVBQVU7QUFDbkMsUUFBSSxPQUFPLElBQUksa0JBQWtCLFlBQVk7QUFDM0MsYUFBTyxJQUFJLGNBQWMsVUFBVSxFQUFFO0FBQUEsSUFDdkM7QUFBQSxFQUNGO0FBQ0EsU0FBTyxXQUFXLFVBQVUsUUFBUTtBQUN0QyxHQUFHO0FBeURILE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0s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
|
|
@@ -2,80 +2,6 @@
|
|
|
2
2
|
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
|
-
(function patchObsidianRequire() {
|
|
6
|
-
const originalRequire = require;
|
|
7
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
require = Object.assign(
|
|
12
|
-
(id) => requirePatched(id),
|
|
13
|
-
originalRequire,
|
|
14
|
-
{
|
|
15
|
-
__isPatched: true
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
function extractDefault(module) {
|
|
20
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
24
|
-
'@codemirror/autocomplete',
|
|
25
|
-
'@codemirror/collab',
|
|
26
|
-
'@codemirror/commands',
|
|
27
|
-
'@codemirror/language',
|
|
28
|
-
'@codemirror/lint',
|
|
29
|
-
'@codemirror/search',
|
|
30
|
-
'@codemirror/state',
|
|
31
|
-
'@codemirror/text',
|
|
32
|
-
'@codemirror/view',
|
|
33
|
-
'@lezer/common',
|
|
34
|
-
'@lezer/highlight',
|
|
35
|
-
'@lezer/lr',
|
|
36
|
-
'obsidian']
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
40
|
-
'@codemirror/closebrackets',
|
|
41
|
-
'@codemirror/comment',
|
|
42
|
-
'@codemirror/fold',
|
|
43
|
-
'@codemirror/gutter',
|
|
44
|
-
'@codemirror/highlight',
|
|
45
|
-
'@codemirror/history',
|
|
46
|
-
'@codemirror/matchbrackets',
|
|
47
|
-
'@codemirror/panel',
|
|
48
|
-
'@codemirror/rangeset',
|
|
49
|
-
'@codemirror/rectangular-selection',
|
|
50
|
-
'@codemirror/stream-parser',
|
|
51
|
-
'@codemirror/tooltip']
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
function requirePatched(id) {
|
|
55
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
56
|
-
return originalRequire?.(id);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
60
|
-
if (globalThis.app.isMobile) {
|
|
61
|
-
if (id === 'process' || id === 'node:process') {
|
|
62
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
63
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
64
|
-
|
|
65
|
-
return process;
|
|
66
|
-
}
|
|
67
|
-
} else {
|
|
68
|
-
const module = originalRequire?.(id);
|
|
69
|
-
if (module) {
|
|
70
|
-
return extractDefault(module);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
75
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
76
|
-
return {};
|
|
77
|
-
}
|
|
78
|
-
})();
|
|
79
5
|
|
|
80
6
|
"use strict";
|
|
81
7
|
var __create = Object.create;
|
|
@@ -115,4 +41,4 @@ var obsidian_external_type_links = __toESM(((module) => module && module.__esMod
|
|
|
115
41
|
0 && (module.exports = {
|
|
116
42
|
"obsidian-external-type-links": null
|
|
117
43
|
});
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1leHRlcm5hbC10eXBlLWxpbmtzJyBmcm9tICcuL29ic2lkaWFuLWV4dGVybmFsLXR5cGUtbGlua3MudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBLHdDQUFBQTtBQUFBO0FBQUE7QUFFQSxJQUFBQSwrQkFBZ0Q7IiwKICAibmFtZXMiOiBbIm9ic2lkaWFuLWV4dGVybmFsLXR5cGUtbGlua3MiXQp9Cg==
|
|
@@ -2,80 +2,6 @@
|
|
|
2
2
|
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
|
-
(function patchObsidianRequire() {
|
|
6
|
-
const originalRequire = require;
|
|
7
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
require = Object.assign(
|
|
12
|
-
(id) => requirePatched(id),
|
|
13
|
-
originalRequire,
|
|
14
|
-
{
|
|
15
|
-
__isPatched: true
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
function extractDefault(module) {
|
|
20
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
24
|
-
'@codemirror/autocomplete',
|
|
25
|
-
'@codemirror/collab',
|
|
26
|
-
'@codemirror/commands',
|
|
27
|
-
'@codemirror/language',
|
|
28
|
-
'@codemirror/lint',
|
|
29
|
-
'@codemirror/search',
|
|
30
|
-
'@codemirror/state',
|
|
31
|
-
'@codemirror/text',
|
|
32
|
-
'@codemirror/view',
|
|
33
|
-
'@lezer/common',
|
|
34
|
-
'@lezer/highlight',
|
|
35
|
-
'@lezer/lr',
|
|
36
|
-
'obsidian']
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
40
|
-
'@codemirror/closebrackets',
|
|
41
|
-
'@codemirror/comment',
|
|
42
|
-
'@codemirror/fold',
|
|
43
|
-
'@codemirror/gutter',
|
|
44
|
-
'@codemirror/highlight',
|
|
45
|
-
'@codemirror/history',
|
|
46
|
-
'@codemirror/matchbrackets',
|
|
47
|
-
'@codemirror/panel',
|
|
48
|
-
'@codemirror/rangeset',
|
|
49
|
-
'@codemirror/rectangular-selection',
|
|
50
|
-
'@codemirror/stream-parser',
|
|
51
|
-
'@codemirror/tooltip']
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
function requirePatched(id) {
|
|
55
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
56
|
-
return originalRequire?.(id);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
60
|
-
if (globalThis.app.isMobile) {
|
|
61
|
-
if (id === 'process' || id === 'node:process') {
|
|
62
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
63
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
64
|
-
|
|
65
|
-
return process;
|
|
66
|
-
}
|
|
67
|
-
} else {
|
|
68
|
-
const module = originalRequire?.(id);
|
|
69
|
-
if (module) {
|
|
70
|
-
return extractDefault(module);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
75
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
76
|
-
return {};
|
|
77
|
-
}
|
|
78
|
-
})();
|
|
79
5
|
|
|
80
6
|
"use strict";
|
|
81
7
|
var __defProp = Object.defineProperty;
|
|
@@ -116,4 +42,4 @@ const OBSIDIAN_EXTERNAL_TYPE_LINKS = /* @__PURE__ */ new Map([
|
|
|
116
42
|
0 && (module.exports = {
|
|
117
43
|
OBSIDIAN_EXTERNAL_TYPE_LINKS
|
|
118
44
|
});
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9vYnNpZGlhbi1leHRlcm5hbC10eXBlLWxpbmtzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIE9ic2lkaWFuIGxheWVyIG9mIGEgZG9jdW1lbnRhdGlvbiBzaXRlJ3MgZXh0ZXJuYWwgdHlwZSBsaW5rcywgZm9yIGBEb2NzU2l0ZUNvbmZpZy5leHRlcm5hbFR5cGVMaW5rc2Agb2ZcbiAqIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9kb2NzLXNpdGUvZG9jcy1zaXRlLWNvbmZpZ2AuXG4gKlxuICogVGhlIGdlbmVyaWMgYnVpbGRlcidzIG93biBtYXAgY292ZXJzIHRoZSBUeXBlU2NyaXB0IGFuZCBET00gbGlicmFyaWVzIG9ubHksIGxlYXZpbmcgYW4gZWNvc3lzdGVtJ3MgcmVmZXJlbmNlcyB0b1xuICogdGhlIGxheWVyIGRvY3VtZW50aW5nIGl0LCBhcyB0aGlzIHBhY2thZ2UncyBFU0xpbnQgY29uZmlnIGxheWVycyBvbiB0aGUgZ2VuZXJpYyBvbmUuIEFuIE9ic2lkaWFuIHBsdWdpbidzIEFQSSBuYW1lc1xuICogdGhlIENvZGVNaXJyb3IgYW5kIE1vbWVudCB0eXBlcyBPYnNpZGlhbiByZS1leHBvcnRzLCB3aGljaCBubyBkb2N1bWVudGVkIHBhY2thZ2UgZGVjbGFyZXMuXG4gKi9cblxuLy8gQ3NwZWxsOmRpc2FibGUgLS0gVVJMIGZyYWdtZW50cyBhcmUgbm90IHdvcmRzXG4vKipcbiAqIFRoZSBDb2RlTWlycm9yIGFuZCBNb21lbnQgdHlwZSBuYW1lcyBhbiBPYnNpZGlhbiBwYWNrYWdlJ3MgQVBJIG5hbWVzLCBtYXBwZWQgdG8gdGhlIHBhZ2UgdGhlaXIgcmVmZXJlbmNlcyBsaW5rIHRvLlxuICpcbiAqIFBhc3MgaXQgYXMgYSBzaXRlJ3MgYGV4dGVybmFsVHlwZUxpbmtzYCwgb3Igc3ByZWFkIGl0IGludG8gYSBsYXJnZXIgbWFwOlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY29uc3QgRE9DU19TSVRFX0NPTkZJRzogRG9jc1NpdGVDb25maWcgPSB7XG4gKiAgIGV4dGVybmFsVHlwZUxpbmtzOiBPQlNJRElBTl9FWFRFUk5BTF9UWVBFX0xJTktTLFxuICogICByZXBvOiAnbXktcGFja2FnZScsXG4gKiAgIHRpdGxlOiAnTXkgUGFja2FnZSdcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX0VYVEVSTkFMX1RZUEVfTElOS1M6IFJlYWRvbmx5TWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcbiAgWydDaGFuZ2VTcGVjJywgJ2h0dHBzOi8vY29kZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkNoYW5nZVNwZWMnXSxcbiAgWydDaGFyQ2F0ZWdvcnknLCAnaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9kb2NzL3JlZi8jc3RhdGUuQ2hhckNhdGVnb3J5J10sXG4gIFsnRGVjb3JhdGlvblNldCcsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3LkRlY29yYXRpb25TZXQnXSxcbiAgWydEaXJlY3Rpb24nLCAnaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5EaXJlY3Rpb24nXSxcbiAgWydET01FdmVudEhhbmRsZXJzJywgJ2h0dHBzOi8vY29kZW1pcnJvci5uZXQvZG9jcy9yZWYvI3ZpZXcuRE9NRXZlbnRIYW5kbGVycyddLFxuICBbJ0V4dGVuc2lvbicsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5FeHRlbnNpb24nXSxcbiAgWydGYWNldFJlYWRlcicsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5GYWNldFJlYWRlciddLFxuICBbJ01vbWVudCcsICdodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvcGFyc2luZy8nXSxcbiAgWydNb21lbnRJbnB1dCcsICdodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvcGFyc2luZy8nXSxcbiAgWydSYW5nZUN1cnNvcicsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5SYW5nZUN1cnNvciddXG5dKTtcbi8vIENzcGVsbDplbmFibGVcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCTyxNQUFNLCtCQUE0RCxvQkFBSSxJQUFvQjtBQUFBLEVBQy9GLENBQUMsY0FBYyxtREFBbUQ7QUFBQSxFQUNsRSxDQUFDLGdCQUFnQixxREFBcUQ7QUFBQSxFQUN0RSxDQUFDLGlCQUFpQixxREFBcUQ7QUFBQSxFQUN2RSxDQUFDLGFBQWEsaURBQWlEO0FBQUEsRUFDL0QsQ0FBQyxvQkFBb0Isd0RBQXdEO0FBQUEsRUFDN0UsQ0FBQyxhQUFhLGtEQUFrRDtBQUFBLEVBQ2hFLENBQUMsZUFBZSxvREFBb0Q7QUFBQSxFQUNwRSxDQUFDLFVBQVUsc0NBQXNDO0FBQUEsRUFDakQsQ0FBQyxlQUFlLHNDQUFzQztBQUFBLEVBQ3RELENBQUMsZUFBZSxvREFBb0Q7QUFDdEUsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -29,80 +29,6 @@ function ensureBrowserProcess() {
|
|
|
29
29
|
|
|
30
30
|
ensureBrowserProcess();
|
|
31
31
|
})();
|
|
32
|
-
(function patchObsidianRequire() {
|
|
33
|
-
const originalRequire = require;
|
|
34
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
require = Object.assign(
|
|
39
|
-
(id) => requirePatched(id),
|
|
40
|
-
originalRequire,
|
|
41
|
-
{
|
|
42
|
-
__isPatched: true
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
-
'@codemirror/autocomplete',
|
|
52
|
-
'@codemirror/collab',
|
|
53
|
-
'@codemirror/commands',
|
|
54
|
-
'@codemirror/language',
|
|
55
|
-
'@codemirror/lint',
|
|
56
|
-
'@codemirror/search',
|
|
57
|
-
'@codemirror/state',
|
|
58
|
-
'@codemirror/text',
|
|
59
|
-
'@codemirror/view',
|
|
60
|
-
'@lezer/common',
|
|
61
|
-
'@lezer/highlight',
|
|
62
|
-
'@lezer/lr',
|
|
63
|
-
'obsidian']
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
-
'@codemirror/closebrackets',
|
|
68
|
-
'@codemirror/comment',
|
|
69
|
-
'@codemirror/fold',
|
|
70
|
-
'@codemirror/gutter',
|
|
71
|
-
'@codemirror/highlight',
|
|
72
|
-
'@codemirror/history',
|
|
73
|
-
'@codemirror/matchbrackets',
|
|
74
|
-
'@codemirror/panel',
|
|
75
|
-
'@codemirror/rangeset',
|
|
76
|
-
'@codemirror/rectangular-selection',
|
|
77
|
-
'@codemirror/stream-parser',
|
|
78
|
-
'@codemirror/tooltip']
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
function requirePatched(id) {
|
|
82
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
-
return originalRequire?.(id);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
-
if (globalThis.app.isMobile) {
|
|
88
|
-
if (id === 'process' || id === 'node:process') {
|
|
89
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
-
|
|
92
|
-
return process;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
const module = originalRequire?.(id);
|
|
96
|
-
if (module) {
|
|
97
|
-
return extractDefault(module);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
})();
|
|
106
32
|
|
|
107
33
|
"use strict";
|
|
108
34
|
var __defProp = Object.defineProperty;
|
|
@@ -138,4 +64,4 @@ async function format(options) {
|
|
|
138
64
|
0 && (module.exports = {
|
|
139
65
|
format
|
|
140
66
|
});
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3JtYXR0ZXJzL2RwcmludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRm9ybWF0cyBhbiBPYnNpZGlhbiBwbHVnaW4gd2l0aCBkcHJpbnQ6IHRoZSBnZW5lcmljIHJ1bm5lciBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAsIGZhbGxpbmdcbiAqIGJhY2sgdG8gdGhpcyBwYWNrYWdlJ3MgYGRwcmludC5qc29uYCB0ZW1wbGF0ZSB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2Zvcm1hdHRlcnMvZHByaW50JztcblxuaW1wb3J0IHsgZm9ybWF0IGFzIGZvcm1hdEdlbmVyaWMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9mb3JtYXR0ZXJzL2RwcmludCc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXBvLXBhdGhzJztcblxuaW1wb3J0IHsgZ2V0VGVtcGxhdGVGaWxlUGF0aCB9IGZyb20gJy4uL3RlbXBsYXRlcy50cyc7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEZvcm1hdE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0KG9wdGlvbnM/
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3JtYXR0ZXJzL2RwcmludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRm9ybWF0cyBhbiBPYnNpZGlhbiBwbHVnaW4gd2l0aCBkcHJpbnQ6IHRoZSBnZW5lcmljIHJ1bm5lciBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAsIGZhbGxpbmdcbiAqIGJhY2sgdG8gdGhpcyBwYWNrYWdlJ3MgYGRwcmludC5qc29uYCB0ZW1wbGF0ZSB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2Zvcm1hdHRlcnMvZHByaW50JztcblxuaW1wb3J0IHsgZm9ybWF0IGFzIGZvcm1hdEdlbmVyaWMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9mb3JtYXR0ZXJzL2RwcmludCc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXBvLXBhdGhzJztcblxuaW1wb3J0IHsgZ2V0VGVtcGxhdGVGaWxlUGF0aCB9IGZyb20gJy4uL3RlbXBsYXRlcy50cyc7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEZvcm1hdE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0KG9wdGlvbnM/OiBGb3JtYXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGZvcm1hdEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLkRwcmludEpzb24pLCAuLi5vcHRpb25zIH0pO1xufVxuZXhwb3J0IHsgdHlwZSBGb3JtYXRPcHRpb25zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZm9ybWF0dGVycy9kcHJpbnQnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSxvQkFBd0M7QUFDeEMsd0JBQTBCO0FBRTFCLHVCQUFvQztBQVVwQyxJQUFBQSxpQkFBbUM7QUFIbkMsZUFBc0IsT0FBTyxTQUF3QztBQUNuRSxZQUFNLGNBQUFDLFFBQWMsRUFBRSwyQkFBdUIsc0NBQW9CLDRCQUFVLFVBQVUsR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUN0RzsiLCJuYW1lcyI6WyJpbXBvcnRfZHByaW50IiwiZm9ybWF0R2VuZXJpYyJdfQ==
|