obsidian-dev-utils 94.3.0 → 94.4.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/CHANGELOG.md +9 -0
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/script-utils/demo-vault-buttons.cjs +358 -0
- package/dist/lib/cjs/script-utils/demo-vault-buttons.d.cts +112 -0
- package/dist/lib/cjs/script-utils/index.cjs +4 -1
- package/dist/lib/cjs/script-utils/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/test-runners/vitest-config.cjs +8 -2
- package/dist/lib/cjs/script-utils/test-runners/vitest-config.d.cts +5 -0
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/script-utils/demo-vault-buttons.d.mts +112 -0
- package/dist/lib/esm/script-utils/demo-vault-buttons.mjs +249 -0
- package/dist/lib/esm/script-utils/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/index.mjs +3 -1
- package/dist/lib/esm/script-utils/test-runners/vitest-config.d.mts +5 -0
- package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +8 -2
- package/package.json +4 -3
- package/script-utils/demo-vault-buttons/package.json +6 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initEsm() {
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
|
+
if (globalThis.process) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const browserProcess = {
|
|
13
|
+
browser: true,
|
|
14
|
+
cwd() {
|
|
15
|
+
return '/';
|
|
16
|
+
},
|
|
17
|
+
env: {},
|
|
18
|
+
platform: 'android'
|
|
19
|
+
};
|
|
20
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
21
|
+
globalThis.process = browserProcess;
|
|
22
|
+
})();
|
|
23
|
+
|
|
24
|
+
import {
|
|
25
|
+
readdirSync,
|
|
26
|
+
readFileSync
|
|
27
|
+
} from "node:fs";
|
|
28
|
+
import { join } from "node:path";
|
|
29
|
+
import process from "node:process";
|
|
30
|
+
import { evalInObsidian } from "obsidian-integration-testing";
|
|
31
|
+
import { getTemporaryVault } from "obsidian-integration-testing/vitest-global-setup-plugin";
|
|
32
|
+
import {
|
|
33
|
+
beforeAll,
|
|
34
|
+
describe,
|
|
35
|
+
expect,
|
|
36
|
+
it
|
|
37
|
+
} from "vitest";
|
|
38
|
+
import { getRootFolder } from "./root.mjs";
|
|
39
|
+
const CODE_SCRIPT_TOOLKIT_PLUGIN_ID = "fix-require-modules";
|
|
40
|
+
const DEFAULT_BUTTON_RESULT_TIMEOUT_IN_MILLISECONDS = 15e3;
|
|
41
|
+
const DEFAULT_SETTLE_TIMEOUT_IN_MILLISECONDS = 2e4;
|
|
42
|
+
const POLL_INTERVAL_IN_MILLISECONDS = 100;
|
|
43
|
+
const OUTPUT_EXCERPT_LENGTH = 400;
|
|
44
|
+
const DEFAULT_EXCLUDED_NOTES = ["README.md"];
|
|
45
|
+
const CODE_BUTTON_FENCE_REG_EXP = /^\s*```code-button/gm;
|
|
46
|
+
function formatFailures(noteName, failures) {
|
|
47
|
+
if (failures.length === 0) {
|
|
48
|
+
return "";
|
|
49
|
+
}
|
|
50
|
+
const details = failures.map((failure) => ` - "${failure.caption}" [${failure.status}]: ${failure.output.replaceAll(/\s+/g, " ").trim()}`).join("\n");
|
|
51
|
+
return `${String(failures.length)} button(s) in ${noteName} did not run cleanly:
|
|
52
|
+
${details}`;
|
|
53
|
+
}
|
|
54
|
+
function listNotesWithButtons(demoVaultPath, excludedNotes) {
|
|
55
|
+
return readdirSync(demoVaultPath, { withFileTypes: true }).filter((entry) => entry.isFile() && entry.name.endsWith(".md") && !excludedNotes.has(entry.name)).map((entry) => entry.name).sort().map((name) => ({
|
|
56
|
+
buttonCount: (readFileSync(join(demoVaultPath, name), "utf-8").match(CODE_BUTTON_FENCE_REG_EXP) ?? []).length,
|
|
57
|
+
name
|
|
58
|
+
})).filter((note) => note.buttonCount > 0);
|
|
59
|
+
}
|
|
60
|
+
function registerDemoVaultButtonSuite(options = {}) {
|
|
61
|
+
const rootFolder = options.rootFolder ?? getRootFolder() ?? process.cwd();
|
|
62
|
+
const demoVaultPath = join(rootFolder, "demo-vault");
|
|
63
|
+
const excludedNotes = new Set(options.excludedNotes ?? DEFAULT_EXCLUDED_NOTES);
|
|
64
|
+
const settleTimeoutInMilliseconds = options.settleTimeoutInMilliseconds ?? DEFAULT_SETTLE_TIMEOUT_IN_MILLISECONDS;
|
|
65
|
+
const buttonResultTimeoutInMilliseconds = options.buttonResultTimeoutInMilliseconds ?? DEFAULT_BUTTON_RESULT_TIMEOUT_IN_MILLISECONDS;
|
|
66
|
+
const notes = listNotesWithButtons(demoVaultPath, excludedNotes);
|
|
67
|
+
describe("demo-vault buttons", () => {
|
|
68
|
+
beforeAll(async () => {
|
|
69
|
+
const isCodeScriptToolkitLoaded = await checkCodeScriptToolkitLoaded(settleTimeoutInMilliseconds);
|
|
70
|
+
expect(isCodeScriptToolkitLoaded, "CodeScript Toolkit did not load, so no button could render").toBe(true);
|
|
71
|
+
});
|
|
72
|
+
it("has at least one note with a code button", () => {
|
|
73
|
+
expect(notes.length).toBeGreaterThan(0);
|
|
74
|
+
});
|
|
75
|
+
for (const note of notes) {
|
|
76
|
+
it(`runs every code button in ${note.name}`, async () => {
|
|
77
|
+
const captions = await openNoteAndListButtonCaptions(note, settleTimeoutInMilliseconds);
|
|
78
|
+
expect(captions.length, `${note.name} declares ${String(note.buttonCount)} button(s) but only ${String(captions.length)} rendered`).toBeGreaterThanOrEqual(note.buttonCount);
|
|
79
|
+
const failures = [];
|
|
80
|
+
for (const caption of captions) {
|
|
81
|
+
const result = await clickButton(note.name, caption, {
|
|
82
|
+
buttonResultTimeoutInMilliseconds,
|
|
83
|
+
settleTimeoutInMilliseconds
|
|
84
|
+
});
|
|
85
|
+
if (result.status !== "ok") {
|
|
86
|
+
failures.push(result);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
expect(failures, formatFailures(note.name, failures)).toEqual([]);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async function checkCodeScriptToolkitLoaded(timeoutInMilliseconds) {
|
|
95
|
+
return evalInObsidian({
|
|
96
|
+
async callback({ app, codeScriptToolkitPluginId, intervalInMilliseconds, lib: { waitUntil }, timeoutInMilliseconds: timeout }) {
|
|
97
|
+
if (typeof app.plugins.isEnabled === "function" && !app.plugins.isEnabled()) {
|
|
98
|
+
await app.plugins.setEnable(true);
|
|
99
|
+
}
|
|
100
|
+
if (!app.plugins.getPlugin(codeScriptToolkitPluginId)) {
|
|
101
|
+
await app.plugins.enablePlugin(codeScriptToolkitPluginId);
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
await waitUntil({
|
|
105
|
+
intervalInMilliseconds,
|
|
106
|
+
message: "CodeScript Toolkit never loaded",
|
|
107
|
+
predicate: () => app.plugins.getPlugin(codeScriptToolkitPluginId) !== null,
|
|
108
|
+
timeoutInMilliseconds: timeout
|
|
109
|
+
});
|
|
110
|
+
} catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
},
|
|
115
|
+
input: {
|
|
116
|
+
codeScriptToolkitPluginId: CODE_SCRIPT_TOOLKIT_PLUGIN_ID,
|
|
117
|
+
intervalInMilliseconds: POLL_INTERVAL_IN_MILLISECONDS,
|
|
118
|
+
timeoutInMilliseconds
|
|
119
|
+
},
|
|
120
|
+
vaultPath: getTemporaryVault().path
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
async function clickButton(notePath, buttonCaption, timeouts) {
|
|
124
|
+
return evalInObsidian({
|
|
125
|
+
async callback({
|
|
126
|
+
app,
|
|
127
|
+
buttonResultTimeoutInMilliseconds,
|
|
128
|
+
caption,
|
|
129
|
+
intervalInMilliseconds,
|
|
130
|
+
lib: { waitUntil },
|
|
131
|
+
obsidianModule,
|
|
132
|
+
outputExcerptLength,
|
|
133
|
+
settleTimeoutInMilliseconds
|
|
134
|
+
}) {
|
|
135
|
+
function view() {
|
|
136
|
+
return app.workspace.getActiveViewOfType(obsidianModule.MarkdownView);
|
|
137
|
+
}
|
|
138
|
+
function previewEl() {
|
|
139
|
+
return view()?.containerEl.querySelector(":scope .markdown-preview-view") ?? null;
|
|
140
|
+
}
|
|
141
|
+
function buttons() {
|
|
142
|
+
return [...view()?.containerEl.querySelectorAll(":scope .block-language-code-button button.mod-cta") ?? []];
|
|
143
|
+
}
|
|
144
|
+
function findButton() {
|
|
145
|
+
return buttons().find((candidate) => candidate.textContent === caption);
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
await waitUntil({
|
|
149
|
+
intervalInMilliseconds,
|
|
150
|
+
message: `code button "${caption}" never rendered`,
|
|
151
|
+
predicate: () => {
|
|
152
|
+
const scroller = previewEl();
|
|
153
|
+
if (scroller) {
|
|
154
|
+
scroller.scrollTop = scroller.scrollHeight;
|
|
155
|
+
}
|
|
156
|
+
return findButton() !== void 0;
|
|
157
|
+
},
|
|
158
|
+
timeoutInMilliseconds: settleTimeoutInMilliseconds
|
|
159
|
+
});
|
|
160
|
+
} catch {
|
|
161
|
+
return { caption, output: "", status: "timeout" };
|
|
162
|
+
}
|
|
163
|
+
const button = findButton();
|
|
164
|
+
if (!button) {
|
|
165
|
+
return { caption, output: "", status: "timeout" };
|
|
166
|
+
}
|
|
167
|
+
const block = button.closest(".block-language-code-button") ?? button.parentElement;
|
|
168
|
+
button.scrollIntoView();
|
|
169
|
+
button.click();
|
|
170
|
+
let status;
|
|
171
|
+
try {
|
|
172
|
+
await waitUntil({
|
|
173
|
+
intervalInMilliseconds,
|
|
174
|
+
message: `button "${caption}" never reported a result`,
|
|
175
|
+
predicate: () => /Executed (?:successfully|with error)/.test(block?.textContent ?? ""),
|
|
176
|
+
timeoutInMilliseconds: buttonResultTimeoutInMilliseconds
|
|
177
|
+
});
|
|
178
|
+
const text = block?.textContent ?? "";
|
|
179
|
+
if (text.includes("Executed with error")) {
|
|
180
|
+
status = "error";
|
|
181
|
+
} else if (text.includes("Executed successfully")) {
|
|
182
|
+
status = "ok";
|
|
183
|
+
} else {
|
|
184
|
+
status = "unknown";
|
|
185
|
+
}
|
|
186
|
+
} catch {
|
|
187
|
+
status = "timeout";
|
|
188
|
+
}
|
|
189
|
+
return { caption, output: (block?.textContent ?? "").slice(0, outputExcerptLength), status };
|
|
190
|
+
},
|
|
191
|
+
input: {
|
|
192
|
+
buttonResultTimeoutInMilliseconds: timeouts.buttonResultTimeoutInMilliseconds,
|
|
193
|
+
caption: buttonCaption,
|
|
194
|
+
intervalInMilliseconds: POLL_INTERVAL_IN_MILLISECONDS,
|
|
195
|
+
notePath,
|
|
196
|
+
outputExcerptLength: OUTPUT_EXCERPT_LENGTH,
|
|
197
|
+
settleTimeoutInMilliseconds: timeouts.settleTimeoutInMilliseconds
|
|
198
|
+
},
|
|
199
|
+
vaultPath: getTemporaryVault().path
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
async function openNoteAndListButtonCaptions(note, settleTimeoutInMilliseconds) {
|
|
203
|
+
return evalInObsidian({
|
|
204
|
+
async callback({ app, expectedButtonCount, intervalInMilliseconds, lib: { waitUntil }, notePath, obsidianModule, timeoutInMilliseconds }) {
|
|
205
|
+
function view() {
|
|
206
|
+
return app.workspace.getActiveViewOfType(obsidianModule.MarkdownView);
|
|
207
|
+
}
|
|
208
|
+
function previewEl() {
|
|
209
|
+
return view()?.containerEl.querySelector(":scope .markdown-preview-view") ?? null;
|
|
210
|
+
}
|
|
211
|
+
function captions() {
|
|
212
|
+
const rendered = [...view()?.containerEl.querySelectorAll(":scope .block-language-code-button button.mod-cta") ?? []].map((button) => button.textContent).filter((caption) => caption !== "");
|
|
213
|
+
return [...new Set(rendered)];
|
|
214
|
+
}
|
|
215
|
+
await app.workspace.openLinkText(notePath.replace(/\.md$/, ""), "", false);
|
|
216
|
+
await app.workspace.getLeaf(false).setViewState({ state: { file: notePath, mode: "preview" }, type: "markdown" });
|
|
217
|
+
try {
|
|
218
|
+
await waitUntil({
|
|
219
|
+
intervalInMilliseconds,
|
|
220
|
+
message: `"${notePath}" never mounted all ${String(expectedButtonCount)} of its buttons`,
|
|
221
|
+
predicate: () => {
|
|
222
|
+
const scroller = previewEl();
|
|
223
|
+
if (scroller) {
|
|
224
|
+
scroller.scrollTop = scroller.scrollHeight;
|
|
225
|
+
}
|
|
226
|
+
return captions().length >= expectedButtonCount;
|
|
227
|
+
},
|
|
228
|
+
timeoutInMilliseconds
|
|
229
|
+
});
|
|
230
|
+
} catch {
|
|
231
|
+
}
|
|
232
|
+
return captions();
|
|
233
|
+
},
|
|
234
|
+
input: {
|
|
235
|
+
expectedButtonCount: note.buttonCount,
|
|
236
|
+
intervalInMilliseconds: POLL_INTERVAL_IN_MILLISECONDS,
|
|
237
|
+
notePath: note.name,
|
|
238
|
+
timeoutInMilliseconds: settleTimeoutInMilliseconds
|
|
239
|
+
},
|
|
240
|
+
vaultPath: getTemporaryVault().path
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
export {
|
|
244
|
+
CODE_SCRIPT_TOOLKIT_PLUGIN_ID,
|
|
245
|
+
formatFailures,
|
|
246
|
+
listNotesWithButtons,
|
|
247
|
+
registerDemoVaultButtonSuite
|
|
248
|
+
};
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LWJ1dHRvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHZpdGVzdCBzdWl0ZSB0aGF0IG9wZW5zIGV2ZXJ5IG5vdGUgb2YgYSBwbHVnaW4ncyBpbi1yZXBvIGBkZW1vLXZhdWx0L2AsIGNsaWNrcyBlYWNoIGBjb2RlLWJ1dHRvbmBcbiAqIGluIGl0IGFnYWluc3QgYSByZWFsIE9ic2lkaWFuLCBhbmQgZmFpbHMgb24gYW55IGJ1dHRvbiB0aGF0IGVycm9ycyBvciBuZXZlciByZXBvcnRzIGEgcmVzdWx0LlxuICpcbiAqIEEgZGVtbyB2YXVsdCdzIGJ1dHRvbnMgYXJlIHRoZSBvbmUgcGFydCBvZiBpdCBubyBvdGhlciBnYXRlIGNhbiBjaGVjay4gYGxpbnQ6bWRgIHJlYWRzIHRoZSBtYXJrZG93bixcbiAqIHRoZSBjb3ZlcmFnZSBzdWl0ZSAoe0BsaW5rIC4vZGVtby12YXVsdC1jb3ZlcmFnZS50cyB8IGByZWdpc3RlckRlbW9WYXVsdENvdmVyYWdlU3VpdGVgfSkgY2hlY2tzIHRoZVxuICogYXV0aG9yaW5nIGNvbnZlbnRpb25zLCBhbmQgbmVpdGhlciBleGVjdXRlcyBhbnl0aGluZyBcdTIwMTQgYSBidXR0b24gd2hvc2UgYHJlcXVpcmUoJy9kZW1vU2V0dXAudHMnKWAgcGF0aFxuICogaXMgd3JvbmcsIG9yIHRoYXQgY2FsbHMgYW4gQVBJIHRoYXQgaGFzIHNpbmNlIGNoYW5nZWQgc2hhcGUsIGZhaWxzIGF0IGNsaWNrIHRpbWUgYW5kIG5vd2hlcmUgZWxzZS5cbiAqXG4gKiBUaGUgY29tcGFuaW9uIGhhbGYgXHUyMDE0IHNlZWRpbmcgdGhlIHRlbXAgdmF1bHQgd2l0aCB0aGUgZGVtby12YXVsdCB0cmVlLCBpdHMgYC5vYnNpZGlhbmAgY29uZmlnLCBhbmQgdGhlXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQgYmluYXJ5IHRoYXQgdHVybnMgYGBgYCBgYGBjb2RlLWJ1dHRvbiBgYGBgIGZlbmNlcyBpbnRvIGJ1dHRvbnMgXHUyMDE0IGlzXG4gKiBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWAgaW4gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgOyBoYW5kIGl0cyByZXN1bHQgdG8gdGhlIHByb2plY3Qnc1xuICogYGdsb2JhbFNldHVwYCBhbmQgbmFtZSBDb2RlU2NyaXB0IFRvb2xraXQgaW4gYGVuYWJsZUNvbW11bml0eVBsdWdpbnNgLlxuICovXG5cbmltcG9ydCB7XG4gIHJlYWRkaXJTeW5jLFxuICByZWFkRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnO1xuaW1wb3J0IHsgZ2V0VGVtcG9yYXJ5VmF1bHQgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJztcbmltcG9ydCB7XG4gIGJlZm9yZUFsbCxcbiAgZGVzY3JpYmUsXG4gIGV4cGVjdCxcbiAgaXRcbn0gZnJvbSAndml0ZXN0JztcblxuaW1wb3J0IHsgZ2V0Um9vdEZvbGRlciB9IGZyb20gJy4vcm9vdC50cyc7XG5cbi8qKlxuICogQ29kZVNjcmlwdCBUb29sa2l0J3MgbWFuaWZlc3QgaWQuIEl0IGlzIHN0aWxsIHRoZSBwbHVnaW4ncyBvcmlnaW5hbCBgZml4LXJlcXVpcmUtbW9kdWxlc2AgaWQsIHdoaWNoXG4gKiBubyBsb25nZXIgbWF0Y2hlcyBpdHMgbmFtZSBcdTIwMTQgdGhlIGlkIGlzIHB1Ymxpc2hlZCwgc28gaXQgY2Fubm90IGJlIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCA9ICdmaXgtcmVxdWlyZS1tb2R1bGVzJztcblxuLyoqXG4gKiBUaGUgb3V0Y29tZSBvZiBjbGlja2luZyBvbmUgYnV0dG9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbW9WYXVsdEJ1dHRvblJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgYnV0dG9uJ3MgY2FwdGlvbiwgYXMgcmVuZGVyZWQuXG4gICAqL1xuICByZWFkb25seSBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXN1bHQgbGluZSBDb2RlU2NyaXB0IFRvb2xraXQgcHJpbnRlZCB1bmRlciB0aGUgYnV0dG9uLCB0cnVuY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYnV0dG9uIHJlcG9ydGVkIHN1Y2Nlc3MsIHJlcG9ydGVkIGFuIGVycm9yLCBvciBuZXZlciByZXBvcnRlZCBhdCBhbGwuXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6ICdlcnJvcicgfCAnb2snIHwgJ3RpbWVvdXQnIHwgJ3Vua25vd24nO1xufVxuXG4vKipcbiAqIE9uZSBkZW1vLXZhdWx0IG5vdGUgYW5kIGhvdyBtYW55IGJ1dHRvbnMgaXRzIHNvdXJjZSBkZWNsYXJlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZW1vVmF1bHROb3RlIHtcbiAgLyoqXG4gICAqIEhvdyBtYW55IGBjb2RlLWJ1dHRvbmAgZmVuY2VzIHRoZSBub3RlJ3Mgc291cmNlIGRlY2xhcmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5vdGUncyBmaWxlIG5hbWUsIHJlbGF0aXZlIHRvIHRoZSBkZW1vIHZhdWx0IHJvb3QuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIHtAbGluayByZWdpc3RlckRlbW9WYXVsdEJ1dHRvblN1aXRlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckRlbW9WYXVsdEJ1dHRvblN1aXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIb3cgbG9uZywgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IGZvciBhIGNsaWNrZWQgYnV0dG9uIHRvIHJlcG9ydCBhIHJlc3VsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDE1MDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uUmVzdWx0VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOb3RlIGZpbGUgbmFtZXMgKHJlbGF0aXZlIHRvIHRoZSBkZW1vIHZhdWx0IHJvb3QpIHRvIHNraXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbJ1JFQURNRS5tZCddYFxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZWROb3Rlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSByb290IGhvbGRpbmcgYGRlbW8tdmF1bHQvYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIHJlc29sdmVkIHJlcG8gcm9vdCwgZmFsbGluZyBiYWNrIHRvIGBwcm9jZXNzLmN3ZCgpYC5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgZm9yIGEgbm90ZSdzIHByZXZpZXcgYW5kIGl0cyBidXR0b25zIHRvIG1vdW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMjAwMDBgXG4gICAqL1xuICByZWFkb25seSBzZXR0bGVUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHdhaXRpbmcgYnVkZ2V0cyBhIHNpbmdsZSBidXR0b24gY2xpY2sgaXMgYWxsb3dlZC5cbiAqL1xuaW50ZXJmYWNlIENsaWNrQnV0dG9uVGltZW91dHMge1xuICAvKipcbiAgICogSG93IGxvbmcgdG8gd2FpdCBmb3IgdGhlIGNsaWNrZWQgYnV0dG9uIHRvIHJlcG9ydCBhIHJlc3VsdC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1dHRvblJlc3VsdFRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyB0byB3YWl0IGZvciB0aGUgYnV0dG9uIGl0c2VsZiB0byBtb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHNldHRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG5jb25zdCBERUZBVUxUX0JVVFRPTl9SRVNVTFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxNV8wMDA7XG5jb25zdCBERUZBVUxUX1NFVFRMRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDIwXzAwMDtcbmNvbnN0IFBPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gMTAwO1xuY29uc3QgT1VUUFVUX0VYQ0VSUFRfTEVOR1RIID0gNDAwO1xuXG4vLyBgUkVBRE1FLm1kYCBpcyB0aGUgcmVwby1mYWNpbmcgcGFnZSBHaXRIdWIgcmVuZGVycywgbm90IGEgd2Fsa3Rocm91Z2guIGAwMCBTdGFydC5tZGAgaXMgZGVsaWJlcmF0ZWx5XG4vLyBOT1QgZXhjbHVkZWQ6IHNpbmNlIFQ0NzggdGhlIGxhbmRpbmcgbm90ZXMgY2FycnkgYnV0dG9ucyBvZiB0aGVpciBvd24uXG5jb25zdCBERUZBVUxUX0VYQ0xVREVEX05PVEVTID0gWydSRUFETUUubWQnXTtcblxuY29uc3QgQ09ERV9CVVRUT05fRkVOQ0VfUkVHX0VYUCA9IC9eXFxzKmBgYGNvZGUtYnV0dG9uL2dtO1xuXG4vLyBUaGUgcmVuZGVyZWQtYnV0dG9uIHNlbGVjdG9yIGlzIGA6c2NvcGUgLmJsb2NrLWxhbmd1YWdlLWNvZGUtYnV0dG9uIGJ1dHRvbi5tb2QtY3RhYC4gSXQgaXMgd3JpdHRlblxuLy8gT3V0IGF0IGVhY2ggdXNlIHNpdGUgcmF0aGVyIHRoYW4gaGVsZCBpbiBhIGNvbnN0YW50IGhlcmU6IGV2ZXJ5IGNsb3N1cmUgYmVsb3cgaXMgc2VyaWFsaXplZCB3aXRoXG4vLyBgdG9TdHJpbmcoKWAgYW5kIGV2YWx1YXRlZCBpbnNpZGUgT2JzaWRpYW4sIHdoZXJlIG5vdGhpbmcgZnJvbSB0aGlzIG1vZHVsZSdzIHNjb3BlIGV4aXN0cy5cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGFzc2VydGlvbiBtZXNzYWdlIGZvciBhIG5vdGUncyBmYWlsaW5nIGJ1dHRvbnMuXG4gKlxuICogVGhlIGNhcHR1cmVkIG91dHB1dCBpcyBpbmNsdWRlZCBiZWNhdXNlIGEgYnV0dG9uJ3MgZmFpbHVyZSBpcyBhIHJ1bnRpbWUgb25lIFx1MjAxNCB0aGUgc3RhY2sgQ29kZVNjcmlwdFxuICogVG9vbGtpdCBwcmludHMgdW5kZXIgaXQgaXMgdGhlIG9ubHkgZGlhZ25vc2lzIHRoZXJlIGlzLlxuICpcbiAqIEBwYXJhbSBub3RlTmFtZSAtIFRoZSBub3RlIHRoZSBidXR0b25zIGJlbG9uZyB0by5cbiAqIEBwYXJhbSBmYWlsdXJlcyAtIFRoZSBmYWlsaW5nIGJ1dHRvbnMuXG4gKiBAcmV0dXJucyBUaGUgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZhaWx1cmVzKG5vdGVOYW1lOiBzdHJpbmcsIGZhaWx1cmVzOiByZWFkb25seSBEZW1vVmF1bHRCdXR0b25SZXN1bHRbXSk6IHN0cmluZyB7XG4gIGlmIChmYWlsdXJlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBkZXRhaWxzID0gZmFpbHVyZXNcbiAgICAubWFwKChmYWlsdXJlKSA9PiBgICAtIFwiJHtmYWlsdXJlLmNhcHRpb259XCIgWyR7ZmFpbHVyZS5zdGF0dXN9XTogJHtmYWlsdXJlLm91dHB1dC5yZXBsYWNlQWxsKC9cXHMrL2csICcgJykudHJpbSgpfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuICByZXR1cm4gYCR7U3RyaW5nKGZhaWx1cmVzLmxlbmd0aCl9IGJ1dHRvbihzKSBpbiAke25vdGVOYW1lfSBkaWQgbm90IHJ1biBjbGVhbmx5OlxcbiR7ZGV0YWlsc31gO1xufVxuXG4vKipcbiAqIExpc3RzIHRoZSBkZW1vIHZhdWx0J3MgdG9wLWxldmVsIG5vdGVzIHRoYXQgZGVjbGFyZSBhdCBsZWFzdCBvbmUgYGNvZGUtYnV0dG9uYC5cbiAqXG4gKiBPbmx5IHRoZSB2YXVsdCByb290IGlzIHdhbGtlZDogYE1hdGVyaWFscy9gIGhvbGRzIGZpeHR1cmVzIHRoZSB3YWxrdGhyb3VnaHMgYWN0IG9uLCBub3Qgd2Fsa3Rocm91Z2hzLlxuICpcbiAqIEBwYXJhbSBkZW1vVmF1bHRQYXRoIC0gVGhlIGRlbW8gdmF1bHQgcm9vdC5cbiAqIEBwYXJhbSBleGNsdWRlZE5vdGVzIC0gTm90ZSBmaWxlIG5hbWVzIHRvIHNraXAuXG4gKiBAcmV0dXJucyBUaGUgbm90ZXMsIHNvcnRlZCBieSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdE5vdGVzV2l0aEJ1dHRvbnMoZGVtb1ZhdWx0UGF0aDogc3RyaW5nLCBleGNsdWRlZE5vdGVzOiBSZWFkb25seVNldDxzdHJpbmc+KTogRGVtb1ZhdWx0Tm90ZVtdIHtcbiAgcmV0dXJuIHJlYWRkaXJTeW5jKGRlbW9WYXVsdFBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuICAgIC5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5pc0ZpbGUoKSAmJiBlbnRyeS5uYW1lLmVuZHNXaXRoKCcubWQnKSAmJiAhZXhjbHVkZWROb3Rlcy5oYXMoZW50cnkubmFtZSkpXG4gICAgLm1hcCgoZW50cnkpID0+IGVudHJ5Lm5hbWUpXG4gICAgLnNvcnQoKVxuICAgIC5tYXAoKG5hbWUpID0+ICh7XG4gICAgICBidXR0b25Db3VudDogKHJlYWRGaWxlU3luYyhqb2luKGRlbW9WYXVsdFBhdGgsIG5hbWUpLCAndXRmLTgnKS5tYXRjaChDT0RFX0JVVFRPTl9GRU5DRV9SRUdfRVhQKSA/PyBbXSkubGVuZ3RoLFxuICAgICAgbmFtZVxuICAgIH0pKVxuICAgIC5maWx0ZXIoKG5vdGUpID0+IG5vdGUuYnV0dG9uQ291bnQgPiAwKTtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEV2ZXJ5IGFzc2VydGlvbiBiZWxvdyBydW5zIGFnYWluc3QgYSByZWFsIE9ic2lkaWFuIG92ZXIgQ0RQLCBkcml2ZW4gYnkgY2xvc3VyZXMgdGhpcyBwcm9jZXNzIHNlcmlhbGl6ZXMgYW5kIGFub3RoZXIgZXhlY3V0ZXMuIFRoZSB0ZXN0YWJsZSBwYXJ0cyBhcmUgbGlzdE5vdGVzV2l0aEJ1dHRvbnMgYW5kIGZvcm1hdEZhaWx1cmVzLCB3aGljaCBoYXZlIHRoZWlyIG93biB1bml0IHRlc3RzLiAqL1xuLyoqXG4gKiBSZWdpc3RlcnMgYSB2aXRlc3Qgc3VpdGUgdGhhdCBjbGlja3MgZXZlcnkgYGNvZGUtYnV0dG9uYCBpbiB0aGUgcmVwbydzIGRlbW8gdmF1bHQuXG4gKlxuICogT25lIGBpdGAgcGVyIG5vdGUsIGFuZCBvbmUgYGV2YWxJbk9ic2lkaWFuYCBwZXIgYnV0dG9uOiBhIHNpbmdsZSBjbG9zdXJlIHJ1bnMgYXMgb25lIENEUFxuICogYFJ1bnRpbWUuZXZhbHVhdGVgLCB3aGljaCB0aGUgaGFybmVzcyBjYXBzIGF0IDMwIHMsIHNvIGEgbm90ZSB3aXRoIGEgZG96ZW4gYnV0dG9ucyB3b3VsZCBvdGhlcndpc2VcbiAqIHRpbWUgb3V0IGFzIGEgd2hvbGUgcmF0aGVyIHRoYW4gcmVwb3J0aW5nIHdoaWNoIGJ1dHRvbiBmYWlsZWQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFJlZ2lzdGVyRGVtb1ZhdWx0QnV0dG9uU3VpdGVPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVtb1ZhdWx0QnV0dG9uU3VpdGUob3B0aW9uczogUmVnaXN0ZXJEZW1vVmF1bHRCdXR0b25TdWl0ZU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBjb25zdCByb290Rm9sZGVyID0gb3B0aW9ucy5yb290Rm9sZGVyID8/IGdldFJvb3RGb2xkZXIoKSA/PyBwcm9jZXNzLmN3ZCgpO1xuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gam9pbihyb290Rm9sZGVyLCAnZGVtby12YXVsdCcpO1xuICBjb25zdCBleGNsdWRlZE5vdGVzID0gbmV3IFNldChvcHRpb25zLmV4Y2x1ZGVkTm90ZXMgPz8gREVGQVVMVF9FWENMVURFRF9OT1RFUyk7XG4gIGNvbnN0IHNldHRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IG9wdGlvbnMuc2V0dGxlVGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfU0VUVExFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuICBjb25zdCBidXR0b25SZXN1bHRUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBvcHRpb25zLmJ1dHRvblJlc3VsdFRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX0JVVFRPTl9SRVNVTFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgY29uc3Qgbm90ZXMgPSBsaXN0Tm90ZXNXaXRoQnV0dG9ucyhkZW1vVmF1bHRQYXRoLCBleGNsdWRlZE5vdGVzKTtcblxuICBkZXNjcmliZSgnZGVtby12YXVsdCBidXR0b25zJywgKCkgPT4ge1xuICAgIGJlZm9yZUFsbChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpc0NvZGVTY3JpcHRUb29sa2l0TG9hZGVkID0gYXdhaXQgY2hlY2tDb2RlU2NyaXB0VG9vbGtpdExvYWRlZChzZXR0bGVUaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgICAgLy8gV2l0aG91dCBpdCBldmVyeSBgY29kZS1idXR0b25gIGZlbmNlIHN0YXlzIGEgcGxhaW4gY29kZSBibG9jaywgc28gZXZlcnkgbm90ZSBiZWxvdyB3b3VsZCByZXBvcnRcbiAgICAgIC8vIFplcm8gYnV0dG9ucyBhbmQgcGFzcyB2YWN1b3VzbHkuIEZhaWwgaGVyZSBpbnN0ZWFkLCBvbmNlLCB3aXRoIHRoZSByZWFzb24uXG4gICAgICBleHBlY3QoaXNDb2RlU2NyaXB0VG9vbGtpdExvYWRlZCwgJ0NvZGVTY3JpcHQgVG9vbGtpdCBkaWQgbm90IGxvYWQsIHNvIG5vIGJ1dHRvbiBjb3VsZCByZW5kZXInKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gQSB2YXVsdCB3aG9zZSBub3RlcyBkZWNsYXJlIG5vIGJ1dHRvbnMgaXMgYSByZWFsIGZhaWx1cmUgb2YgRzk4J3MgaW50ZXJhY3RpdmUgaGFsZiwgbm90IGEgcmVhc29uXG4gICAgLy8gVG8gcmVnaXN0ZXIgbm90aGluZyBhbmQgcmVwb3J0IGdyZWVuLlxuICAgIGl0KCdoYXMgYXQgbGVhc3Qgb25lIG5vdGUgd2l0aCBhIGNvZGUgYnV0dG9uJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KG5vdGVzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBub3RlIG9mIG5vdGVzKSB7XG4gICAgICBpdChgcnVucyBldmVyeSBjb2RlIGJ1dHRvbiBpbiAke25vdGUubmFtZX1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhcHRpb25zID0gYXdhaXQgb3Blbk5vdGVBbmRMaXN0QnV0dG9uQ2FwdGlvbnMobm90ZSwgc2V0dGxlVGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICAgICAgLy8gUmVhZGluZyB2aWV3IG1vdW50cyBhIG5vdGUncyBsZWFkaW5nIHNlY3Rpb25zIG1vcmUgdGhhbiBvbmNlIHdoaWxlIGl0IHNldHRsZXMsIHNvIHRoZSBET00gY2FuXG4gICAgICAgIC8vIEhvbGQgc2V2ZXJhbCBlbGVtZW50cyBwZXIgZmVuY2UuIFRoZSBjYXB0aW9ucyBhcmUgZGVkdXBsaWNhdGVkLCBhbmQgdGhlIGFzc2VydGlvbiBpcyB0aGF0IGF0XG4gICAgICAgIC8vIExlYXN0IGFzIG1hbnkgRElTVElOQ1QgYnV0dG9ucyByZW5kZXJlZCBhcyB0aGUgc291cmNlIGRlY2xhcmVzIFx1MjAxNCBhIGZlbmNlIHRoYXQgc2lsZW50bHkgc3RheWVkXG4gICAgICAgIC8vIEEgcGxhaW4gY29kZSBibG9jayBpcyB0aGUgZmFpbHVyZSB0aGlzIGNhdGNoZXMuXG4gICAgICAgIGV4cGVjdChjYXB0aW9ucy5sZW5ndGgsIGAke25vdGUubmFtZX0gZGVjbGFyZXMgJHtTdHJpbmcobm90ZS5idXR0b25Db3VudCl9IGJ1dHRvbihzKSBidXQgb25seSAke1N0cmluZyhjYXB0aW9ucy5sZW5ndGgpfSByZW5kZXJlZGApXG4gICAgICAgICAgLnRvQmVHcmVhdGVyVGhhbk9yRXF1YWwobm90ZS5idXR0b25Db3VudCk7XG5cbiAgICAgICAgY29uc3QgZmFpbHVyZXM6IERlbW9WYXVsdEJ1dHRvblJlc3VsdFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY2FwdGlvbiBvZiBjYXB0aW9ucykge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWNrQnV0dG9uKG5vdGUubmFtZSwgY2FwdGlvbiwge1xuICAgICAgICAgICAgYnV0dG9uUmVzdWx0VGltZW91dEluTWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgc2V0dGxlVGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIGZhaWx1cmVzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoZmFpbHVyZXMsIGZvcm1hdEZhaWx1cmVzKG5vdGUubmFtZSwgZmFpbHVyZXMpKS50b0VxdWFsKFtdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEcml2ZXMgYSByZWFsIE9ic2lkaWFuIG92ZXIgQ0RQOiB0aGUgY2xvc3VyZSBpcyBzZXJpYWxpemVkIGhlcmUgYW5kIGV4ZWN1dGVkIGluIGFub3RoZXIgcHJvY2Vzcywgc28gaXQgY2Fubm90IGJlIGV4ZXJjaXNlZCBieSBhIHVuaXQgdGVzdC4gKi9cbi8qKlxuICogVHVybnMgcmVzdHJpY3RlZCBtb2RlIG9mZiBhbmQgZW5hYmxlcyBDb2RlU2NyaXB0IFRvb2xraXQsIHdob3NlIGJpbmFyeSB0aGUgZ2xvYmFsIHNldHVwIHNlZWRlZC5cbiAqXG4gKiBAcGFyYW0gdGltZW91dEluTWlsbGlzZWNvbmRzIC0gSG93IGxvbmcgdG8gd2FpdCBmb3IgaXQgdG8gbG9hZC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgQ29kZVNjcmlwdCBUb29sa2l0IGlzIGxvYWRlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tDb2RlU2NyaXB0VG9vbGtpdExvYWRlZCh0aW1lb3V0SW5NaWxsaXNlY29uZHM6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gZXZhbEluT2JzaWRpYW4oe1xuICAgIGFzeW5jIGNhbGxiYWNrKHsgYXBwLCBjb2RlU2NyaXB0VG9vbGtpdFBsdWdpbklkLCBpbnRlcnZhbEluTWlsbGlzZWNvbmRzLCBsaWI6IHsgd2FpdFVudGlsIH0sIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogdGltZW91dCB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICBpZiAodHlwZW9mIGFwcC5wbHVnaW5zLmlzRW5hYmxlZCA9PT0gJ2Z1bmN0aW9uJyAmJiAhYXBwLnBsdWdpbnMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgYXdhaXQgYXBwLnBsdWdpbnMuc2V0RW5hYmxlKHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKCFhcHAucGx1Z2lucy5nZXRQbHVnaW4oY29kZVNjcmlwdFRvb2xraXRQbHVnaW5JZCkpIHtcbiAgICAgICAgYXdhaXQgYXBwLnBsdWdpbnMuZW5hYmxlUGx1Z2luKGNvZGVTY3JpcHRUb29sa2l0UGx1Z2luSWQpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsKHtcbiAgICAgICAgICBpbnRlcnZhbEluTWlsbGlzZWNvbmRzLFxuICAgICAgICAgIG1lc3NhZ2U6ICdDb2RlU2NyaXB0IFRvb2xraXQgbmV2ZXIgbG9hZGVkJyxcbiAgICAgICAgICBwcmVkaWNhdGU6ICgpOiBib29sZWFuID0+IGFwcC5wbHVnaW5zLmdldFBsdWdpbihjb2RlU2NyaXB0VG9vbGtpdFBsdWdpbklkKSAhPT0gbnVsbCxcbiAgICAgICAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IHRpbWVvdXRcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBpbnB1dDoge1xuICAgICAgY29kZVNjcmlwdFRvb2xraXRQbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQsXG4gICAgICBpbnRlcnZhbEluTWlsbGlzZWNvbmRzOiBQT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyxcbiAgICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgIH0sXG4gICAgdmF1bHRQYXRoOiBnZXRUZW1wb3JhcnlWYXVsdCgpLnBhdGhcbiAgfSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEcml2ZXMgYSByZWFsIE9ic2lkaWFuIG92ZXIgQ0RQOiB0aGUgY2xvc3VyZSBpcyBzZXJpYWxpemVkIGhlcmUgYW5kIGV4ZWN1dGVkIGluIGFub3RoZXIgcHJvY2Vzcywgc28gaXQgY2Fubm90IGJlIGV4ZXJjaXNlZCBieSBhIHVuaXQgdGVzdC4gKi9cbi8qKlxuICogQ2xpY2tzIG9uZSBidXR0b24gYW5kIHJlYWRzIHRoZSByZXN1bHQgbGluZSBDb2RlU2NyaXB0IFRvb2xraXQgd3JpdGVzIHVuZGVyIGl0LlxuICpcbiAqIEEgYnV0dG9uIHRoYXQgcmUtcmVuZGVycyBpdHMgb3duIG5vdGUgKGEgc2V0dGluZ3MgY2hhbmdlLCBhIHJlbG9hZCkgZGV0YWNoZXMgdGhlIGJsb2NrIGl0IGxpdmVzIGluLFxuICogc28gdGhlIGJsb2NrIGVsZW1lbnQgaXMgY2FwdHVyZWQgQkVGT1JFIHRoZSBjbGljayBhbmQgcmVhZCBhZnRlcndhcmRzIFx1MjAxNCBDb2RlU2NyaXB0IFRvb2xraXQgd3JpdGVzIHRoZVxuICogcmVzdWx0IGludG8gdGhhdCBzYW1lIGVsZW1lbnQgZXZlbiBvbmNlIGl0IGlzIGRldGFjaGVkLlxuICpcbiAqIEBwYXJhbSBub3RlUGF0aCAtIFRoZSBub3RlIGhvbGRpbmcgdGhlIGJ1dHRvbi5cbiAqIEBwYXJhbSBidXR0b25DYXB0aW9uIC0gVGhlIGJ1dHRvbidzIHJlbmRlcmVkIGNhcHRpb24sIHdoaWNoIGlzIGhvdyBpdCBpcyBhZGRyZXNzZWQuXG4gKiBAcGFyYW0gdGltZW91dHMgLSBUaGUgcmVuZGVyIGFuZCByZXN1bHQgYnVkZ2V0cy5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgRGVtb1ZhdWx0QnV0dG9uUmVzdWx0fS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2xpY2tCdXR0b24oXG4gIG5vdGVQYXRoOiBzdHJpbmcsXG4gIGJ1dHRvbkNhcHRpb246IHN0cmluZyxcbiAgdGltZW91dHM6IENsaWNrQnV0dG9uVGltZW91dHNcbik6IFByb21pc2U8RGVtb1ZhdWx0QnV0dG9uUmVzdWx0PiB7XG4gIHJldHVybiBldmFsSW5PYnNpZGlhbih7XG4gICAgYXN5bmMgY2FsbGJhY2soe1xuICAgICAgYXBwLFxuICAgICAgYnV0dG9uUmVzdWx0VGltZW91dEluTWlsbGlzZWNvbmRzLFxuICAgICAgY2FwdGlvbixcbiAgICAgIGludGVydmFsSW5NaWxsaXNlY29uZHMsXG4gICAgICBsaWI6IHsgd2FpdFVudGlsIH0sXG4gICAgICBvYnNpZGlhbk1vZHVsZSxcbiAgICAgIG91dHB1dEV4Y2VycHRMZW5ndGgsXG4gICAgICBzZXR0bGVUaW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICB9KTogUHJvbWlzZTxEZW1vVmF1bHRCdXR0b25SZXN1bHQ+IHtcbiAgICAgIGZ1bmN0aW9uIHZpZXcoKTogSW5zdGFuY2VUeXBlPHR5cGVvZiBvYnNpZGlhbk1vZHVsZS5NYXJrZG93blZpZXc+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUob2JzaWRpYW5Nb2R1bGUuTWFya2Rvd25WaWV3KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHByZXZpZXdFbCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdmlldygpPy5jb250YWluZXJFbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignOnNjb3BlIC5tYXJrZG93bi1wcmV2aWV3LXZpZXcnKSA/PyBudWxsO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gYnV0dG9ucygpOiBIVE1MQnV0dG9uRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIFsuLi52aWV3KCk/LmNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEJ1dHRvbkVsZW1lbnQ+KCc6c2NvcGUgLmJsb2NrLWxhbmd1YWdlLWNvZGUtYnV0dG9uIGJ1dHRvbi5tb2QtY3RhJykgPz8gW11dO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBmaW5kQnV0dG9uKCk6IEhUTUxCdXR0b25FbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGJ1dHRvbnMoKS5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS50ZXh0Q29udGVudCA9PT0gY2FwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbCh7XG4gICAgICAgICAgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICBtZXNzYWdlOiBgY29kZSBidXR0b24gXCIke2NhcHRpb259XCIgbmV2ZXIgcmVuZGVyZWRgLFxuICAgICAgICAgIHByZWRpY2F0ZTogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZXIgPSBwcmV2aWV3RWwoKTtcbiAgICAgICAgICAgIGlmIChzY3JvbGxlcikge1xuICAgICAgICAgICAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSBzY3JvbGxlci5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmluZEJ1dHRvbigpICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IHNldHRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4geyBjYXB0aW9uLCBvdXRwdXQ6ICcnLCBzdGF0dXM6ICd0aW1lb3V0JyB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBidXR0b24gPSBmaW5kQnV0dG9uKCk7XG4gICAgICBpZiAoIWJ1dHRvbikge1xuICAgICAgICByZXR1cm4geyBjYXB0aW9uLCBvdXRwdXQ6ICcnLCBzdGF0dXM6ICd0aW1lb3V0JyB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBibG9jayA9IGJ1dHRvbi5jbG9zZXN0PEhUTUxFbGVtZW50PignLmJsb2NrLWxhbmd1YWdlLWNvZGUtYnV0dG9uJykgPz8gYnV0dG9uLnBhcmVudEVsZW1lbnQ7XG4gICAgICBidXR0b24uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgIGJ1dHRvbi5jbGljaygpO1xuXG4gICAgICBsZXQgc3RhdHVzOiBEZW1vVmF1bHRCdXR0b25SZXN1bHRbJ3N0YXR1cyddO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsKHtcbiAgICAgICAgICBpbnRlcnZhbEluTWlsbGlzZWNvbmRzLFxuICAgICAgICAgIG1lc3NhZ2U6IGBidXR0b24gXCIke2NhcHRpb259XCIgbmV2ZXIgcmVwb3J0ZWQgYSByZXN1bHRgLFxuICAgICAgICAgIHByZWRpY2F0ZTogKCk6IGJvb2xlYW4gPT4gL0V4ZWN1dGVkICg/OnN1Y2Nlc3NmdWxseXx3aXRoIGVycm9yKS8udGVzdChibG9jaz8udGV4dENvbnRlbnQgPz8gJycpLFxuICAgICAgICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogYnV0dG9uUmVzdWx0VGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0ZXh0ID0gYmxvY2s/LnRleHRDb250ZW50ID8/ICcnO1xuICAgICAgICBpZiAodGV4dC5pbmNsdWRlcygnRXhlY3V0ZWQgd2l0aCBlcnJvcicpKSB7XG4gICAgICAgICAgc3RhdHVzID0gJ2Vycm9yJztcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0LmluY2x1ZGVzKCdFeGVjdXRlZCBzdWNjZXNzZnVsbHknKSkge1xuICAgICAgICAgIHN0YXR1cyA9ICdvayc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdHVzID0gJ3Vua25vd24nO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgc3RhdHVzID0gJ3RpbWVvdXQnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjYXB0aW9uLCBvdXRwdXQ6IChibG9jaz8udGV4dENvbnRlbnQgPz8gJycpLnNsaWNlKDAsIG91dHB1dEV4Y2VycHRMZW5ndGgpLCBzdGF0dXMgfTtcbiAgICB9LFxuICAgIGlucHV0OiB7XG4gICAgICBidXR0b25SZXN1bHRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IHRpbWVvdXRzLmJ1dHRvblJlc3VsdFRpbWVvdXRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGNhcHRpb246IGJ1dHRvbkNhcHRpb24sXG4gICAgICBpbnRlcnZhbEluTWlsbGlzZWNvbmRzOiBQT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyxcbiAgICAgIG5vdGVQYXRoLFxuICAgICAgb3V0cHV0RXhjZXJwdExlbmd0aDogT1VUUFVUX0VYQ0VSUFRfTEVOR1RILFxuICAgICAgc2V0dGxlVGltZW91dEluTWlsbGlzZWNvbmRzOiB0aW1lb3V0cy5zZXR0bGVUaW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICB9LFxuICAgIHZhdWx0UGF0aDogZ2V0VGVtcG9yYXJ5VmF1bHQoKS5wYXRoXG4gIH0pO1xufVxuXG4vKipcbiAqIE9wZW5zIGEgbm90ZSBpbiByZWFkaW5nIHZpZXcgYW5kIGxpc3RzIHRoZSBjYXB0aW9ucyBvZiB0aGUgYnV0dG9ucyB0aGF0IG1vdW50ZWQsIGRlZHVwbGljYXRlZCBhbmQgaW5cbiAqIGRvY3VtZW50IG9yZGVyLlxuICpcbiAqIFR3byBxdWlya3Mgb2YgcmVhZGluZyB2aWV3IHNoYXBlIHRoaXMuIEl0IHJlbmRlcnMgbGF6aWx5IGFuZCB1bm1vdW50cyBzZWN0aW9ucyBmYXIgb2ZmLXNjcmVlbiwgc28gdGhlXG4gKiBwcmV2aWV3IGlzIHNjcm9sbGVkIHRvIHRoZSBib3R0b20gd2hpbGUgd2FpdGluZyBvciBhIG5vdGUncyBsYXN0IGJ1dHRvbnMgbmV2ZXIgbW91bnQgYXQgYWxsLiBBbmRcbiAqIHdoaWxlIGl0IHNldHRsZXMgaXQgY2FuIGhvbGQgU0VWRVJBTCBlbGVtZW50cyBwZXIgZmVuY2UgXHUyMDE0IHRoZSBzYW1lIGJ1dHRvbiB3YXMgb2JzZXJ2ZWQgcmVuZGVyZWQgdHdpY2VcbiAqIFx1MjAxNCBzbyB0aGUgY2FwdGlvbnMgYXJlIGRlZHVwbGljYXRlZDsgY2xpY2tpbmcgYnkgY2FwdGlvbiB0aGVuIGFkZHJlc3NlcyBlYWNoIGJ1dHRvbiBvbmNlIGhvd2V2ZXIgbWFueVxuICogY29waWVzIG9mIGl0IHRoZSBET00gaXMgaG9sZGluZy5cbiAqXG4gKiBAcGFyYW0gbm90ZSAtIFRoZSBub3RlIHRvIG9wZW4uXG4gKiBAcGFyYW0gc2V0dGxlVGltZW91dEluTWlsbGlzZWNvbmRzIC0gSG93IGxvbmcgdG8gd2FpdCBmb3IgdGhlIGJ1dHRvbnMgdG8gbW91bnQuXG4gKiBAcmV0dXJucyBUaGUgZGlzdGluY3QgYnV0dG9uIGNhcHRpb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBvcGVuTm90ZUFuZExpc3RCdXR0b25DYXB0aW9ucyhub3RlOiBEZW1vVmF1bHROb3RlLCBzZXR0bGVUaW1lb3V0SW5NaWxsaXNlY29uZHM6IG51bWJlcik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgcmV0dXJuIGV2YWxJbk9ic2lkaWFuKHtcbiAgICBhc3luYyBjYWxsYmFjayh7IGFwcCwgZXhwZWN0ZWRCdXR0b25Db3VudCwgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kcywgbGliOiB7IHdhaXRVbnRpbCB9LCBub3RlUGF0aCwgb2JzaWRpYW5Nb2R1bGUsIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyB9KTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgZnVuY3Rpb24gdmlldygpOiBJbnN0YW5jZVR5cGU8dHlwZW9mIG9ic2lkaWFuTW9kdWxlLk1hcmtkb3duVmlldz4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShvYnNpZGlhbk1vZHVsZS5NYXJrZG93blZpZXcpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcHJldmlld0VsKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB2aWV3KCk/LmNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCc6c2NvcGUgLm1hcmtkb3duLXByZXZpZXctdmlldycpID8/IG51bGw7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBjYXB0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkID0gWy4uLnZpZXcoKT8uY29udGFpbmVyRWwucXVlcnlTZWxlY3RvckFsbDxIVE1MQnV0dG9uRWxlbWVudD4oJzpzY29wZSAuYmxvY2stbGFuZ3VhZ2UtY29kZS1idXR0b24gYnV0dG9uLm1vZC1jdGEnKSA/PyBbXV1cbiAgICAgICAgICAubWFwKChidXR0b24pID0+IGJ1dHRvbi50ZXh0Q29udGVudClcbiAgICAgICAgICAuZmlsdGVyKChjYXB0aW9uKSA9PiBjYXB0aW9uICE9PSAnJyk7XG4gICAgICAgIHJldHVybiBbLi4ubmV3IFNldChyZW5kZXJlZCldO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBhcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChub3RlUGF0aC5yZXBsYWNlKC9cXC5tZCQvLCAnJyksICcnLCBmYWxzZSk7XG4gICAgICBhd2FpdCBhcHAud29ya3NwYWNlLmdldExlYWYoZmFsc2UpLnNldFZpZXdTdGF0ZSh7IHN0YXRlOiB7IGZpbGU6IG5vdGVQYXRoLCBtb2RlOiAncHJldmlldycgfSwgdHlwZTogJ21hcmtkb3duJyB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsKHtcbiAgICAgICAgICBpbnRlcnZhbEluTWlsbGlzZWNvbmRzLFxuICAgICAgICAgIG1lc3NhZ2U6IGBcIiR7bm90ZVBhdGh9XCIgbmV2ZXIgbW91bnRlZCBhbGwgJHtTdHJpbmcoZXhwZWN0ZWRCdXR0b25Db3VudCl9IG9mIGl0cyBidXR0b25zYCxcbiAgICAgICAgICBwcmVkaWNhdGU6ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVyID0gcHJldmlld0VsKCk7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsZXIpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsZXIuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNhcHRpb25zKCkubGVuZ3RoID49IGV4cGVjdGVkQnV0dG9uQ291bnQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gVGhlIGNhcHRpb25zIGFyZSByZXR1cm5lZCBlaXRoZXIgd2F5OyB0aGUgY2FsbGVyIGFzc2VydHMgb24gdGhlbSBhbmQgcmVwb3J0cyB0aGUgc2hvcnRmYWxsLlxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FwdGlvbnMoKTtcbiAgICB9LFxuICAgIGlucHV0OiB7XG4gICAgICBleHBlY3RlZEJ1dHRvbkNvdW50OiBub3RlLmJ1dHRvbkNvdW50LFxuICAgICAgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kczogUE9MTF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICBub3RlUGF0aDogbm90ZS5uYW1lLFxuICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiBzZXR0bGVUaW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICB9LFxuICAgIHZhdWx0UGF0aDogZ2V0VGVtcG9yYXJ5VmF1bHQoKS5wYXRoXG4gIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFDckIsT0FBTyxhQUFhO0FBQ3BCLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMseUJBQXlCO0FBQ2xDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHFCQUFxQjtBQU12QixNQUFNLGdDQUFnQztBQXFGN0MsTUFBTSxnREFBZ0Q7QUFDdEQsTUFBTSx5Q0FBeUM7QUFDL0MsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSx3QkFBd0I7QUFJOUIsTUFBTSx5QkFBeUIsQ0FBQyxXQUFXO0FBRTNDLE1BQU0sNEJBQTRCO0FBZ0IzQixTQUFTLGVBQWUsVUFBa0IsVUFBb0Q7QUFDbkcsTUFBSSxTQUFTLFdBQVcsR0FBRztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sVUFBVSxTQUNiLElBQUksQ0FBQyxZQUFZLFFBQVEsUUFBUSxPQUFPLE1BQU0sUUFBUSxNQUFNLE1BQU0sUUFBUSxPQUFPLFdBQVcsUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFDakgsS0FBSyxJQUFJO0FBQ1osU0FBTyxHQUFHLE9BQU8sU0FBUyxNQUFNLENBQUMsaUJBQWlCLFFBQVE7QUFBQSxFQUEwQixPQUFPO0FBQzdGO0FBV08sU0FBUyxxQkFBcUIsZUFBdUIsZUFBcUQ7QUFDL0csU0FBTyxZQUFZLGVBQWUsRUFBRSxlQUFlLEtBQUssQ0FBQyxFQUN0RCxPQUFPLENBQUMsVUFBVSxNQUFNLE9BQU8sS0FBSyxNQUFNLEtBQUssU0FBUyxLQUFLLEtB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
|
|
@@ -6,6 +6,7 @@ export * as 'cli-utils' from './cli-utils.mjs';
|
|
|
6
6
|
export * as 'code-generator' from './code-generator.mjs';
|
|
7
7
|
export * as 'commitlint-config' from './commitlint-config.mjs';
|
|
8
8
|
export * as 'demo-vault-app-json' from './demo-vault-app-json.mjs';
|
|
9
|
+
export * as 'demo-vault-buttons' from './demo-vault-buttons.mjs';
|
|
9
10
|
export * as 'demo-vault-coverage' from './demo-vault-coverage.mjs';
|
|
10
11
|
export * as 'demo-vault' from './demo-vault.mjs';
|
|
11
12
|
export * as 'env-toggle' from './env-toggle.mjs';
|
|
@@ -28,6 +28,7 @@ import * as cli_utils from "./cli-utils.mjs";
|
|
|
28
28
|
import * as code_generator from "./code-generator.mjs";
|
|
29
29
|
import * as commitlint_config from "./commitlint-config.mjs";
|
|
30
30
|
import * as demo_vault_app_json from "./demo-vault-app-json.mjs";
|
|
31
|
+
import * as demo_vault_buttons from "./demo-vault-buttons.mjs";
|
|
31
32
|
import * as demo_vault_coverage from "./demo-vault-coverage.mjs";
|
|
32
33
|
import * as demo_vault from "./demo-vault.mjs";
|
|
33
34
|
import * as env_toggle from "./env-toggle.mjs";
|
|
@@ -56,6 +57,7 @@ export {
|
|
|
56
57
|
commitlint_config as "commitlint-config",
|
|
57
58
|
demo_vault as "demo-vault",
|
|
58
59
|
demo_vault_app_json as "demo-vault-app-json",
|
|
60
|
+
demo_vault_buttons as "demo-vault-buttons",
|
|
59
61
|
demo_vault_coverage as "demo-vault-coverage",
|
|
60
62
|
env_toggle as "env-toggle",
|
|
61
63
|
exec,
|
|
@@ -75,4 +77,4 @@ export {
|
|
|
75
77
|
version,
|
|
76
78
|
warnings_as_errors as "warnings-as-errors"
|
|
77
79
|
};
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdidWlsZCcgZnJvbSAnLi9idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnYnVuZGxlcnMnIGZyb20gJy4vYnVuZGxlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2NoZWNrLXByb2plY3QtdHlwZXMnIGZyb20gJy4vY2hlY2stcHJvamVjdC10eXBlcy50cyc7XG5leHBvcnQgKiBhcyAnY2xpLXV0aWxzJyBmcm9tICcuL2NsaS11dGlscy50cyc7XG5leHBvcnQgKiBhcyAnY29kZS1nZW5lcmF0b3InIGZyb20gJy4vY29kZS1nZW5lcmF0b3IudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtY29uZmlnJyBmcm9tICcuL2NvbW1pdGxpbnQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWFwcC1qc29uJyBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtYnV0dG9ucycgZnJvbSAnLi9kZW1vLXZhdWx0LWJ1dHRvbnMudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtY292ZXJhZ2UnIGZyb20gJy4vZGVtby12YXVsdC1jb3ZlcmFnZS50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdCcgZnJvbSAnLi9kZW1vLXZhdWx0LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2l0JyBmcm9tICcuL2dpdC50cyc7XG5leHBvcnQgKiBhcyAnanNvbicgZnJvbSAnLi9qc29uLnRzJztcbmV4cG9ydCAqIGFzICdsaW50ZXJzJyBmcm9tICcuL2xpbnRlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ25hbm8tc3RhZ2VkLWNvbmZpZycgZnJvbSAnLi9uYW5vLXN0YWdlZC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ25wbS1wdWJsaXNoJyBmcm9tICcuL25wbS1wdWJsaXNoLnRzJztcbmV4cG9ydCAqIGFzICducG0tcnVuJyBmcm9tICcuL25wbS1ydW4udHMnO1xuZXhwb3J0ICogYXMgJ25wbScgZnJvbSAnLi9ucG0udHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzJyBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmV4cG9ydCAqIGFzICdyb290JyBmcm9tICcuL3Jvb3QudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG5leHBvcnQgKiBhcyAnd2FybmluZ3MtYXMtZXJyb3JzJyBmcm9tICcuL3dhcm5pbmdzLWFzLWVycm9ycy50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVksV0FBYTtBQUN6QixZQUFZLGNBQWdCO0FBQzVCLFlBQVlBLHlCQUEyQjtBQUN2QyxZQUFZQyxlQUFpQjtBQUM3QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLGdCQUFrQjtBQUM5QixZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWSxVQUFZO0FBQ3hCLFlBQVksZ0JBQWtCO0FBQzlCLFlBQVksUUFBVTtBQUN0QixZQUFZLFNBQVc7QUFDdkIsWUFBWSxVQUFZO0FBQ3hCLFlBQVksYUFBZTtBQUMzQixZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsaUJBQW1CO0FBQy9CLFlBQVlDLGFBQWU7QUFDM0IsWUFBWSxTQUFXO0FBQ3ZCLFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZLFVBQVk7QUFDeEIsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZLGFBQWU7QUFDM0IsWUFBWUMsd0JBQTBCOyIsCiAgIm5hbWVzIjogWyJjaGVjay1wcm9qZWN0LXR5cGVzIiwgImNsaS11dGlscyIsICJjb2RlLWdlbmVyYXRvciIsICJjb21taXRsaW50LWNvbmZpZyIsICJkZW1vLXZhdWx0LWFwcC1qc29uIiwgImRlbW8tdmF1bHQtYnV0dG9ucyIsICJkZW1vLXZhdWx0LWNvdmVyYWdlIiwgImRlbW8tdmF1bHQiLCAiZW52LXRvZ2dsZSIsICJuYW5vLXN0YWdlZC1jb25maWciLCAibnBtLXB1Ymxpc2giLCAibnBtLXJ1biIsICJvYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocyIsICJ0ZXN0LXJ1bm5lcnMiLCAidmFsaWRhdGUtZGVjbGFyYXRpb25zIiwgIndhcm5pbmdzLWFzLWVycm9ycyJdCn0K
|
|
@@ -68,6 +68,11 @@ export declare class ObsidianPluginVitestConfigContext {
|
|
|
68
68
|
readonly bigTimeoutInMilliseconds = 30000;
|
|
69
69
|
/**
|
|
70
70
|
* The coverage `exclude` globs. Push onto it to drop more files from the coverage report.
|
|
71
|
+
*
|
|
72
|
+
* Declaration files are excluded by default because the coverage `include` below is `src/**\/*.ts`,
|
|
73
|
+
* which a `.d.ts` matches. A declaration file emits no runtime code, so it reports 0% and no test can
|
|
74
|
+
* ever raise it — a plugin that grows one under `src/` silently loses its 100% gate, and the usual
|
|
75
|
+
* remedy of an inline `v8 ignore` comment does not apply to a type-only file.
|
|
71
76
|
*/
|
|
72
77
|
readonly coverageExclude: string[];
|
|
73
78
|
/**
|
|
@@ -29,6 +29,7 @@ const HOOK_TIMEOUT_MULTIPLIER = 4;
|
|
|
29
29
|
const PERFORMANCE_TIMEOUT_IN_MILLISECONDS = 6e5;
|
|
30
30
|
const ANDROID_TEST_FILES = "src/**/*.android.integration.test.ts";
|
|
31
31
|
const CROSS_PLATFORM_TEST_FILES = "src/**/*.cross-platform.integration.test.ts";
|
|
32
|
+
const DECLARATION_FILES = "src/**/*.d.ts";
|
|
32
33
|
const DESKTOP_PERFORMANCE_TEST_FILES = "src/**/*.desktop-performance.integration.test.ts";
|
|
33
34
|
const DESKTOP_TEST_FILES = "src/**/*.desktop.integration.test.ts";
|
|
34
35
|
const INTEGRATION_TEST_FILES = "src/**/*.integration.test.ts";
|
|
@@ -73,8 +74,13 @@ class ObsidianPluginVitestConfigContext {
|
|
|
73
74
|
bigTimeoutInMilliseconds = BIG_TIMEOUT_IN_MILLISECONDS;
|
|
74
75
|
/**
|
|
75
76
|
* The coverage `exclude` globs. Push onto it to drop more files from the coverage report.
|
|
77
|
+
*
|
|
78
|
+
* Declaration files are excluded by default because the coverage `include` below is `src/**\/*.ts`,
|
|
79
|
+
* which a `.d.ts` matches. A declaration file emits no runtime code, so it reports 0% and no test can
|
|
80
|
+
* ever raise it — a plugin that grows one under `src/` silently loses its 100% gate, and the usual
|
|
81
|
+
* remedy of an inline `v8 ignore` comment does not apply to a type-only file.
|
|
76
82
|
*/
|
|
77
|
-
coverageExclude = [UNIT_TEST_FILES];
|
|
83
|
+
coverageExclude = [UNIT_TEST_FILES, DECLARATION_FILES];
|
|
78
84
|
/**
|
|
79
85
|
* The `integration-tests:desktop` project, running the desktop-only and cross-platform suites against a
|
|
80
86
|
* real desktop Obsidian over CDP.
|
|
@@ -207,4 +213,4 @@ export {
|
|
|
207
213
|
ObsidianPluginVitestConfigContext,
|
|
208
214
|
defineObsidianPluginVitestConfig
|
|
209
215
|
};
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCB2aXRlc3QgY29uZmlndXJhdGlvbiBmb3IgT2JzaWRpYW4gcGx1Z2lucy5cbiAqXG4gKiBFdmVyeSBwbHVnaW4gaW4gdGhlIHdvcmtzcGFjZSBkZWNsYXJlcyB0aGUgc2FtZSBmaXZlIHZpdGVzdCBwcm9qZWN0cyBcdTIwMTQgYHVuaXQtdGVzdHNgIHBsdXMgdGhlXG4gKiBgaW50ZWdyYXRpb24tdGVzdHM6e25vLWFwcCxkZXNrdG9wLGRlc2t0b3AtcGVyZm9ybWFuY2UsYW5kcm9pZH1gIGZhbWlseSBcdTIwMTQgd2l0aCB0aGUgc2FtZSB0aW1lb3V0cyxcbiAqIGBzZXR1cEZpbGVzYCwgYW5kIGBnbG9iYWxTZXR1cGAgd2lyaW5nLiBNYWludGFpbmluZyB0aGF0IHBlciByZXBvIG1lYW5zIGEgY29udmVudGlvbiBjaGFuZ2UgY29zdHMgb25lXG4gKiBuZWFyLWlkZW50aWNhbCBlZGl0IHBlciBwbHVnaW4sIGFuZCBhbnkgcmVwbyB0aGF0IGlzIG1pc3NlZCBkcmlmdHMgc2lsZW50bHkuIFRoaXMgbW9kdWxlIG93bnMgdGhhdFxuICogY29uZmlndXJhdGlvbiBvbmNlLCBzbyBhIHBsdWdpbidzIGBzY3JpcHRzL3ZpdGVzdC1jb25maWcudHNgIGNvbGxhcHNlcyB0byBhIHNpbmdsZSBjYWxsLlxuICpcbiAqIFRoZSBzZWFtIG1pcnJvcnMge0BsaW5rIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29ic2lkaWFuLWRldi11dGlscyB8IHRoZSBFU0xpbnQgb25lfVxuICogKGBkZWZpbmVFc2xpbnRDb25maWdzYCk6IHRoZSBmYWN0b3J5IGJ1aWxkcyBhIGNvbnRleHQgaG9sZGluZyB0aGUgc3RhbmRhcmQgcHJvamVjdHMsIHRoZSBjYWxsZXIgZWRpdHNcbiAqIGl0IGluIHBsYWNlIHRocm91Z2gge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5lZGl0Q29udGV4dH0sIGFuZCBhcHBlbmRzIGFueVxuICogcHJvamVjdCB0aGUgYmFzZSBkb2VzIG5vdCBrbm93IGFib3V0IHRocm91Z2hcbiAqIHtAbGluayBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMuY3VzdG9tUHJvamVjdHN9LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgVGVzdFByb2plY3RDb25maWd1cmF0aW9uLFxuICBUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb24sXG4gIFZpdGVVc2VyQ29uZmlnXG59IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZXN0L2NvbmZpZyc7XG5cbi8qKlxuICogVGhlIGB0ZXN0YCBzZWN0aW9uIG9mIGEgc2luZ2xlIHZpdGVzdCBwcm9qZWN0IGVudHJ5LlxuICovXG5leHBvcnQgdHlwZSBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSBOb25OdWxsYWJsZTxUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb25bJ3Rlc3QnXT47XG5cbmNvbnN0IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5jb25zdCBCSUdfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMF8wMDA7XG5jb25zdCBIT09LX1RJTUVPVVRfTVVMVElQTElFUiA9IDQ7XG5jb25zdCBQRVJGT1JNQU5DRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwMF8wMDA7XG5cbmNvbnN0IEFORFJPSURfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5hbmRyb2lkLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5jcm9zcy1wbGF0Zm9ybS5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IERFU0tUT1BfUEVSRk9STUFOQ0VfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5kZXNrdG9wLXBlcmZvcm1hbmNlLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgREVTS1RPUF9URVNUX0ZJTEVTID0gJ3NyYy8qKi8qLmRlc2t0b3AuaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBJTlRFR1JBVElPTl9URVNUX0ZJTEVTID0gJ3NyYy8qKi8qLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgTk9fQVBQX1RFU1RfRklMRVMgPSAnc3JjLyoqLyoubm8tYXBwLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgVU5JVF9URVNUX0ZJTEVTID0gJ3NyYy8qKi8qLnRlc3QudHMnO1xuXG5jb25zdCBPQlNJRElBTl9WRVJTSU9OX0VOVl9WQVJJQUJMRV9OQU1FID0gJ09CU0lESUFOX1ZFUlNJT04nO1xuY29uc3QgU0hBUkVEX0VYQ0xVREUgPSBbJ25vZGVfbW9kdWxlcycsICdkaXN0J107XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIGRlZmluaW5nIGEgcGx1Z2luJ3Mgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgcHJvamVjdHMgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBrbm93IGFib3V0LCBzdWNoIGFzIGEgcGx1Z2luJ3Mgb3duXG4gICAqIGBpbnRlZ3JhdGlvbi10ZXN0czpkZW1vLXZhdWx0YCBwcm9qZWN0LiBUaGUgcmV0dXJuZWQgcHJvamVjdHMgYXJlIGFwcGVuZGVkIGFmdGVyIHRoZSBzdGFuZGFyZCBmaXZlLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBUaGUgZXh0cmEgcHJvamVjdHMuXG4gICAqL1xuICBjdXN0b21Qcm9qZWN0cz8oY29udGV4dDogT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KTogVGVzdFByb2plY3RDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBlZGl0cyB0aGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gY29udGV4dCBiZWZvcmUgaXQgaXMgYXNzZW1ibGVkIGludG8gYSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgZWRpdENvbnRleHQ/KGNvbnRleHQ6IE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCk6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIGEgcGx1Z2luJ3Mgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRXZlcnkgbWVtYmVyIGlzIGxpdmU6IHRoZSBhcnJheXMgYW5kIG9iamVjdHMgaXQgZXhwb3NlcyBhcmUgdGhlIHZlcnkgb25lcyB0aGUgYXNzZW1ibGVkIGNvbmZpZ3VyYXRpb25cbiAqIGlzIGJ1aWx0IGZyb20sIHNvIGVkaXRpbmcgdGhlbSBpbiBwbGFjZSB0aHJvdWdoXG4gKiB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmVkaXRDb250ZXh0fSBpcyB3aGF0IGN1c3RvbWl6ZXMgdGhlIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmFuZHJvaWRgIHByb2plY3QsIHJ1bm5pbmcgdGhlIG1vYmlsZS1vbmx5IGFuZCBjcm9zcy1wbGF0Zm9ybSBzdWl0ZXMgYWdhaW5zdCBhblxuICAgKiBBbmRyb2lkIGVtdWxhdG9yIHRocm91Z2ggQXBwaXVtLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFuZHJvaWQ6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGVudmlyb25tZW50T3B0aW9uczoge1xuICAgICAgb2JzaWRpYW5UcmFuc3BvcnQ6IHtcbiAgICAgICAgYXBwaXVtVXJsOiAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJyxcbiAgICAgICAgYXZkTmFtZTogJ29ic2lkaWFuX3Rlc3QnLFxuICAgICAgICB0eXBlOiAnb2JzaWRpYW4tYW5kcm9pZC1hcHBpdW0nXG4gICAgICB9XG4gICAgfSxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGdsb2JhbFNldHVwOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1wbHVnaW4nXSxcbiAgICBob29rVGltZW91dDogQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EUyAqIEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSLFxuICAgIGluY2x1ZGU6IFtBTkRST0lEX1RFU1RfRklMRVMsIENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czphbmRyb2lkJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IGJ1ZGdldCBvZiB0aGUgQW5kcm9pZCBpbnRlZ3JhdGlvbiBwcm9qZWN0LCBpbiBtaWxsaXNlY29uZHMuIEJvb3RpbmcgYW4gZW11bGF0b3IgYW5kXG4gICAqIGRyaXZpbmcgaXQgb3ZlciBBcHBpdW0gaXMgc2xvd2VyIHRoYW4gdGhlIGRlc2t0b3AgcGF0aCwgaGVuY2UgaXRzIG93biBjb25zdGFudC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFuZHJvaWRUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBBTkRST0lEX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAzMDAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiaWdUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBCSUdfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb3ZlcmFnZSBgZXhjbHVkZWAgZ2xvYnMuIFB1c2ggb250byBpdCB0byBkcm9wIG1vcmUgZmlsZXMgZnJvbSB0aGUgY292ZXJhZ2UgcmVwb3J0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvdmVyYWdlRXhjbHVkZTogc3RyaW5nW10gPSBbVU5JVF9URVNUX0ZJTEVTXTtcblxuICAvKipcbiAgICogVGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBkZXNrdG9wLW9ubHkgYW5kIGNyb3NzLXBsYXRmb3JtIHN1aXRlcyBhZ2FpbnN0IGFcbiAgICogcmVhbCBkZXNrdG9wIE9ic2lkaWFuIG92ZXIgQ0RQLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2t0b3A6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbiddLFxuICAgIGhvb2tUaW1lb3V0OiBCSUdfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgKiBIT09LX1RJTUVPVVRfTVVMVElQTElFUixcbiAgICBpbmNsdWRlOiBbREVTS1RPUF9URVNUX0ZJTEVTLCBDUk9TU19QTEFURk9STV9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcCcsXG4gICAgc2V0dXBGaWxlczogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1zZXR1cCddLFxuICAgIHRlc3RUaW1lb3V0OiBCSUdfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBhdC1zY2FsZSBzdWl0ZXMuIEl0IGlzIGRlY2xhcmVkIGZvclxuICAgKiBldmVyeSBwbHVnaW4gZXZlbiB3aGVuIHRoZXJlIGlzIG5vIHN1Y2ggc3VpdGUgeWV0IFx1MjAxNCBgcGFzc1dpdGhOb1Rlc3RzYCBtYWtlcyBhbiBlbXB0eSBwcm9qZWN0IGZyZWUsXG4gICAqIGFuZCB0aGUgbWF0Y2hpbmcgYHRlc3Q6aW50ZWdyYXRpb246ZGVza3RvcDpwZXJmb3JtYW5jZWAgc2NyaXB0IGV4aXN0cyBmbGVldC13aWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2t0b3BQZXJmb3JtYW5jZTogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBnbG9iYWxTZXR1cDogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTLFxuICAgIGluY2x1ZGU6IFtERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtdWx0aXBsaWVyIGFwcGxpZWQgdG8gYSBwcm9qZWN0J3MgdGVzdCBidWRnZXQgdG8gZ2V0IGl0cyBob29rIGJ1ZGdldC4gQSBob29rIHR5cGljYWxseSBwb3B1bGF0ZXNcbiAgICogYW5kIG9wZW5zIGEgdmF1bHQsIHNvIGl0IG5lZWRzIHNldmVyYWwgdGltZXMgd2hhdCBhIHNpbmdsZSB0ZXN0IGRvZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGhvb2tUaW1lb3V0TXVsdGlwbGllciA9IEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSO1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOm5vLWFwcGAgcHJvamVjdCwgcnVubmluZyB0aGUgc3VpdGVzIHRoYXQgbmVlZCBubyBPYnNpZGlhbiBpbnN0YW5jZSBhdCBhbGwuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9BcHA6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgaG9va1RpbWVvdXQ6IEJJR19USU1FT1VUX0lOX01JTExJU0VDT05EUyAqIEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSLFxuICAgIGluY2x1ZGU6IFtOT19BUFBfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOm5vLWFwcCcsXG4gICAgdGVzdFRpbWVvdXQ6IEJJR19USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSBwZXJmb3JtYW5jZSBpbnRlZ3JhdGlvbiBwcm9qZWN0LCBpbiBtaWxsaXNlY29uZHMuIEEgcGVyZm9ybWFuY2UgdmF1bHQgaXNcbiAgICogcHJlLXBvcHVsYXRlZCB3aXRoIHRlbnMgb2YgdGhvdXNhbmRzIG9mIG5vdGVzIGJlZm9yZSBPYnNpZGlhbiBvcGVucywgc28gYm90aCBpdHMgc2V0dXAgYW5kIGl0cyB0ZXN0c1xuICAgKiBuZWVkIGZhciBtb3JlIHRpbWUgdGhhbiB0aGUgcmVndWxhciBpbnRlZ3JhdGlvbiBwcm9qZWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZXJmb3JtYW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgYHVuaXQtdGVzdHNgIHByb2plY3QsIHJ1bm5pbmcgdGhlIG1vY2tlZC1PYnNpZGlhbiBzdWl0ZXMgaW4gYGpzZG9tYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1bml0VGVzdHM6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICBleGNsdWRlOiBbLi4uU0hBUkVEX0VYQ0xVREUsIElOVEVHUkFUSU9OX1RFU1RfRklMRVNdLFxuICAgIGV4ZWNBcmd2OiBbJy0tbm8td2Vic3RvcmFnZSddLFxuICAgIGluY2x1ZGU6IFtVTklUX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICd1bml0LXRlc3RzJyxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBkZXBzYCBpcyBkZWNsYXJlZCBieSBgdml0ZXN0YDsgcmVuYW1pbmcgaXQgaGVyZSB3b3VsZCBub3QgbWF0Y2ggdGhlIEFQSS5cbiAgICAgIGRlcHM6IHtcbiAgICAgICAgaW5saW5lOiBbJ0BvYnNpZGlhbi10eXBpbmdzJywgJ29ic2lkaWFuLWRldi11dGlscyddXG4gICAgICB9XG4gICAgfSxcbiAgICBzZXR1cEZpbGVzOiBbXG4gICAgICAnb2JzaWRpYW4tdGVzdC1tb2Nrcy92aXRlc3Qtc2V0dXAnLFxuICAgICAgJ29ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW4tdHlwaW5ncy92aXRlc3Qtc2V0dXAnLFxuICAgICAgJ29ic2lkaWFuLWRldi11dGlscy92aXRlc3Qtc2V0dXAnXG4gICAgXVxuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbnRleHQgc2VlZGVkIHdpdGggdGhlIHN0YW5kYXJkIHByb2plY3RzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG9ic2lkaWFuVmVyc2lvbiA9IHByb2Nlc3MuZW52W09CU0lESUFOX1ZFUlNJT05fRU5WX1ZBUklBQkxFX05BTUVdO1xuXG4gICAgLypcbiAgICAgKiBTdXBwb3J0IGlzIHRoZSByYW5nZSBbbGF0ZXN0IHB1YmxpYywgbGF0ZXN0IGNhdGFseXN0XSBhbmQgQk9USCBlbmRzIG11c3Qgd29yayAoRzk5KSwgc28gdGhlIHZlcnNpb25cbiAgICAgKiBpcyBhIGtub2IgcmF0aGVyIHRoYW4gYSBjb25zdGFudC4gVGhlIGtleSBpcyBhZGRlZCBPTkxZIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHNldDogYW4gZXhwbGljaXRcbiAgICAgKiBgb2JzaWRpYW5WZXJzaW9uYCBtYWtlcyB0aGUgaGFybmVzcyByZXNvbHZlIGEgY29uY3JldGUgdmVyc2lvbiBhbmQgc3dhcCB0aGUgYXNhciwgd2hpY2ggaXMgbm90IHdoYXRcbiAgICAgKiBhbiB1bnBpbm5lZCBydW4gZG9lcywgc28gc2VlZGluZyBhIGRlZmF1bHQgaGVyZSB3b3VsZCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGV2ZXJ5IHBsdWdpbi5cbiAgICAgKi9cbiAgICBpZiAob2JzaWRpYW5WZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVza3RvcC5lbnZpcm9ubWVudE9wdGlvbnMgPSB7XG4gICAgICAgIG9ic2lkaWFuVHJhbnNwb3J0OiB7XG4gICAgICAgICAgb2JzaWRpYW5WZXJzaW9uLFxuICAgICAgICAgIHR5cGU6ICdvYnNpZGlhbi1jZHAnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gZm9yIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnKG9wdGlvbnM6IERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucyA9IHt9KTogVml0ZVVzZXJDb25maWcge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCgpO1xuXG4gIGlmIChvcHRpb25zLmVkaXRDb250ZXh0KSB7XG4gICAgb3B0aW9ucy5lZGl0Q29udGV4dChjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGN1c3RvbVByb2plY3RzID0gb3B0aW9ucy5jdXN0b21Qcm9qZWN0cz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoe1xuICAgIHRlc3Q6IHtcbiAgICAgIGNvdmVyYWdlOiB7XG4gICAgICAgIGV4Y2x1ZGU6IGNvbnRleHQuY292ZXJhZ2VFeGNsdWRlLFxuICAgICAgICBpbmNsdWRlOiBbJ3NyYy8qKi8qLnRzJ10sXG4gICAgICAgIHByb3ZpZGVyOiAndjgnLFxuICAgICAgICByZXBvcnRlcjogWyd0ZXh0JywgJ2xjb3YnLCAnaHRtbCddLFxuICAgICAgICByZXBvcnRzRGlyZWN0b3J5OiAnLi9jb3ZlcmFnZSdcbiAgICAgIH0sXG4gICAgICBleGNsdWRlOiBbLi4uU0hBUkVEX0VYQ0xVREVdLFxuICAgICAgZ2xvYmFsczogZmFsc2UsXG4gICAgICBpbmNsdWRlOiBbVU5JVF9URVNUX0ZJTEVTXSxcbiAgICAgIHBhc3NXaXRoTm9UZXN0czogdHJ1ZSxcbiAgICAgIHByb2plY3RzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvbHZlOiB7XG4gICAgICAgICAgICBhbGlhczoge1xuICAgICAgICAgICAgICBvYnNpZGlhbjogJ29ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZXN0OiBjb250ZXh0LnVuaXRUZXN0c1xuICAgICAgICB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQubm9BcHAgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0LmRlc2t0b3AgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0LmRlc2t0b3BQZXJmb3JtYW5jZSB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQuYW5kcm9pZCB9LFxuICAgICAgICAuLi5jdXN0b21Qcm9qZWN0c1xuICAgICAgXVxuICAgIH1cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQSxPQUFPLGFBQWE7QUFDcEIsU0FBUyxvQkFBb0I7QUFPN0IsTUFBTSxrQ0FBa0M7QUFDeEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSwwQkFBMEI7QUFDaEMsTUFBTSxzQ0FBc0M7QUFFNUMsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSw0QkFBNEI7QUFDbEMsTUFBTSxpQ0FBaUM7QUFDdkMsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSx5QkFBeUI7QUFDL0IsTUFBTSxvQkFBb0I7QUFD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
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCB2aXRlc3QgY29uZmlndXJhdGlvbiBmb3IgT2JzaWRpYW4gcGx1Z2lucy5cbiAqXG4gKiBFdmVyeSBwbHVnaW4gaW4gdGhlIHdvcmtzcGFjZSBkZWNsYXJlcyB0aGUgc2FtZSBmaXZlIHZpdGVzdCBwcm9qZWN0cyBcdTIwMTQgYHVuaXQtdGVzdHNgIHBsdXMgdGhlXG4gKiBgaW50ZWdyYXRpb24tdGVzdHM6e25vLWFwcCxkZXNrdG9wLGRlc2t0b3AtcGVyZm9ybWFuY2UsYW5kcm9pZH1gIGZhbWlseSBcdTIwMTQgd2l0aCB0aGUgc2FtZSB0aW1lb3V0cyxcbiAqIGBzZXR1cEZpbGVzYCwgYW5kIGBnbG9iYWxTZXR1cGAgd2lyaW5nLiBNYWludGFpbmluZyB0aGF0IHBlciByZXBvIG1lYW5zIGEgY29udmVudGlvbiBjaGFuZ2UgY29zdHMgb25lXG4gKiBuZWFyLWlkZW50aWNhbCBlZGl0IHBlciBwbHVnaW4sIGFuZCBhbnkgcmVwbyB0aGF0IGlzIG1pc3NlZCBkcmlmdHMgc2lsZW50bHkuIFRoaXMgbW9kdWxlIG93bnMgdGhhdFxuICogY29uZmlndXJhdGlvbiBvbmNlLCBzbyBhIHBsdWdpbidzIGBzY3JpcHRzL3ZpdGVzdC1jb25maWcudHNgIGNvbGxhcHNlcyB0byBhIHNpbmdsZSBjYWxsLlxuICpcbiAqIFRoZSBzZWFtIG1pcnJvcnMge0BsaW5rIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29ic2lkaWFuLWRldi11dGlscyB8IHRoZSBFU0xpbnQgb25lfVxuICogKGBkZWZpbmVFc2xpbnRDb25maWdzYCk6IHRoZSBmYWN0b3J5IGJ1aWxkcyBhIGNvbnRleHQgaG9sZGluZyB0aGUgc3RhbmRhcmQgcHJvamVjdHMsIHRoZSBjYWxsZXIgZWRpdHNcbiAqIGl0IGluIHBsYWNlIHRocm91Z2gge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5lZGl0Q29udGV4dH0sIGFuZCBhcHBlbmRzIGFueVxuICogcHJvamVjdCB0aGUgYmFzZSBkb2VzIG5vdCBrbm93IGFib3V0IHRocm91Z2hcbiAqIHtAbGluayBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMuY3VzdG9tUHJvamVjdHN9LlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgVGVzdFByb2plY3RDb25maWd1cmF0aW9uLFxuICBUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb24sXG4gIFZpdGVVc2VyQ29uZmlnXG59IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZXN0L2NvbmZpZyc7XG5cbi8qKlxuICogVGhlIGB0ZXN0YCBzZWN0aW9uIG9mIGEgc2luZ2xlIHZpdGVzdCBwcm9qZWN0IGVudHJ5LlxuICovXG5leHBvcnQgdHlwZSBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSBOb25OdWxsYWJsZTxUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb25bJ3Rlc3QnXT47XG5cbmNvbnN0IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5jb25zdCBCSUdfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMF8wMDA7XG5jb25zdCBIT09LX1RJTUVPVVRfTVVMVElQTElFUiA9IDQ7XG5jb25zdCBQRVJGT1JNQU5DRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwMF8wMDA7XG5cbmNvbnN0IEFORFJPSURfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5hbmRyb2lkLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5jcm9zcy1wbGF0Zm9ybS5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IERFQ0xBUkFUSU9OX0ZJTEVTID0gJ3NyYy8qKi8qLmQudHMnO1xuY29uc3QgREVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVTID0gJ3NyYy8qKi8qLmRlc2t0b3AtcGVyZm9ybWFuY2UuaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBERVNLVE9QX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouZGVza3RvcC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IElOVEVHUkFUSU9OX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBOT19BUFBfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5uby1hcHAuaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfRklMRVMgPSAnc3JjLyoqLyoudGVzdC50cyc7XG5cbmNvbnN0IE9CU0lESUFOX1ZFUlNJT05fRU5WX1ZBUklBQkxFX05BTUUgPSAnT0JTSURJQU5fVkVSU0lPTic7XG5jb25zdCBTSEFSRURfRVhDTFVERSA9IFsnbm9kZV9tb2R1bGVzJywgJ2Rpc3QnXTtcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgZGVmaW5pbmcgYSBwbHVnaW4ncyB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyBwcm9qZWN0cyB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGRvZXMgbm90IGtub3cgYWJvdXQsIHN1Y2ggYXMgYSBwbHVnaW4ncyBvd25cbiAgICogYGludGVncmF0aW9uLXRlc3RzOmRlbW8tdmF1bHRgIHByb2plY3QuIFRoZSByZXR1cm5lZCBwcm9qZWN0cyBhcmUgYXBwZW5kZWQgYWZ0ZXIgdGhlIHN0YW5kYXJkIGZpdmUuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIFRoZSBleHRyYSBwcm9qZWN0cy5cbiAgICovXG4gIGN1c3RvbVByb2plY3RzPyhjb250ZXh0OiBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQpOiBUZXN0UHJvamVjdENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0IGJlZm9yZSBpdCBpcyBhc3NlbWJsZWQgaW50byBhIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gICAqL1xuICBlZGl0Q29udGV4dD8oY29udGV4dDogT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgZGVmaW5pbmcgYSBwbHVnaW4ncyB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBFdmVyeSBtZW1iZXIgaXMgbGl2ZTogdGhlIGFycmF5cyBhbmQgb2JqZWN0cyBpdCBleHBvc2VzIGFyZSB0aGUgdmVyeSBvbmVzIHRoZSBhc3NlbWJsZWQgY29uZmlndXJhdGlvblxuICogaXMgYnVpbHQgZnJvbSwgc28gZWRpdGluZyB0aGVtIGluIHBsYWNlIHRocm91Z2hcbiAqIHtAbGluayBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMuZWRpdENvbnRleHR9IGlzIHdoYXQgY3VzdG9taXplcyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6YW5kcm9pZGAgcHJvamVjdCwgcnVubmluZyB0aGUgbW9iaWxlLW9ubHkgYW5kIGNyb3NzLXBsYXRmb3JtIHN1aXRlcyBhZ2FpbnN0IGFuXG4gICAqIEFuZHJvaWQgZW11bGF0b3IgdGhyb3VnaCBBcHBpdW0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYW5kcm9pZDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZW52aXJvbm1lbnRPcHRpb25zOiB7XG4gICAgICBvYnNpZGlhblRyYW5zcG9ydDoge1xuICAgICAgICBhcHBpdW1Vcmw6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMnLFxuICAgICAgICBhdmROYW1lOiAnb2JzaWRpYW5fdGVzdCcsXG4gICAgICAgIHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSdcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbiddLFxuICAgIGhvb2tUaW1lb3V0OiBBTkRST0lEX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTICogSE9PS19USU1FT1VUX01VTFRJUExJRVIsXG4gICAgaW5jbHVkZTogW0FORFJPSURfVEVTVF9GSUxFUywgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOmFuZHJvaWQnLFxuICAgIHNldHVwRmlsZXM6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnXSxcbiAgICB0ZXN0VGltZW91dDogQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSBBbmRyb2lkIGludGVncmF0aW9uIHByb2plY3QsIGluIG1pbGxpc2Vjb25kcy4gQm9vdGluZyBhbiBlbXVsYXRvciBhbmRcbiAgICogZHJpdmluZyBpdCBvdmVyIEFwcGl1bSBpcyBzbG93ZXIgdGhhbiB0aGUgZGVza3RvcCBwYXRoLCBoZW5jZSBpdHMgb3duIGNvbnN0YW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYW5kcm9pZFRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIHJlZ3VsYXIgaW50ZWdyYXRpb24gcHJvamVjdHMsIGluIG1pbGxpc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJpZ1RpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IEJJR19USU1FT1VUX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIGNvdmVyYWdlIGBleGNsdWRlYCBnbG9icy4gUHVzaCBvbnRvIGl0IHRvIGRyb3AgbW9yZSBmaWxlcyBmcm9tIHRoZSBjb3ZlcmFnZSByZXBvcnQuXG4gICAqXG4gICAqIERlY2xhcmF0aW9uIGZpbGVzIGFyZSBleGNsdWRlZCBieSBkZWZhdWx0IGJlY2F1c2UgdGhlIGNvdmVyYWdlIGBpbmNsdWRlYCBiZWxvdyBpcyBgc3JjLyoqXFwvKi50c2AsXG4gICAqIHdoaWNoIGEgYC5kLnRzYCBtYXRjaGVzLiBBIGRlY2xhcmF0aW9uIGZpbGUgZW1pdHMgbm8gcnVudGltZSBjb2RlLCBzbyBpdCByZXBvcnRzIDAlIGFuZCBubyB0ZXN0IGNhblxuICAgKiBldmVyIHJhaXNlIGl0IFx1MjAxNCBhIHBsdWdpbiB0aGF0IGdyb3dzIG9uZSB1bmRlciBgc3JjL2Agc2lsZW50bHkgbG9zZXMgaXRzIDEwMCUgZ2F0ZSwgYW5kIHRoZSB1c3VhbFxuICAgKiByZW1lZHkgb2YgYW4gaW5saW5lIGB2OCBpZ25vcmVgIGNvbW1lbnQgZG9lcyBub3QgYXBwbHkgdG8gYSB0eXBlLW9ubHkgZmlsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb3ZlcmFnZUV4Y2x1ZGU6IHN0cmluZ1tdID0gW1VOSVRfVEVTVF9GSUxFUywgREVDTEFSQVRJT05fRklMRVNdO1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3BgIHByb2plY3QsIHJ1bm5pbmcgdGhlIGRlc2t0b3Atb25seSBhbmQgY3Jvc3MtcGxhdGZvcm0gc3VpdGVzIGFnYWluc3QgYVxuICAgKiByZWFsIGRlc2t0b3AgT2JzaWRpYW4gb3ZlciBDRFAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVza3RvcDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBnbG9iYWxTZXR1cDogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IEJJR19USU1FT1VUX0lOX01JTExJU0VDT05EUyAqIEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSLFxuICAgIGluY2x1ZGU6IFtERVNLVE9QX1RFU1RfRklMRVMsIENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IEJJR19USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2VgIHByb2plY3QsIHJ1bm5pbmcgdGhlIGF0LXNjYWxlIHN1aXRlcy4gSXQgaXMgZGVjbGFyZWQgZm9yXG4gICAqIGV2ZXJ5IHBsdWdpbiBldmVuIHdoZW4gdGhlcmUgaXMgbm8gc3VjaCBzdWl0ZSB5ZXQgXHUyMDE0IGBwYXNzV2l0aE5vVGVzdHNgIG1ha2VzIGFuIGVtcHR5IHByb2plY3QgZnJlZSxcbiAgICogYW5kIHRoZSBtYXRjaGluZyBgdGVzdDppbnRlZ3JhdGlvbjpkZXNrdG9wOnBlcmZvcm1hbmNlYCBzY3JpcHQgZXhpc3RzIGZsZWV0LXdpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVza3RvcFBlcmZvcm1hbmNlOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGdsb2JhbFNldHVwOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1wbHVnaW4nXSxcbiAgICBob29rVGltZW91dDogUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgaW5jbHVkZTogW0RFU0tUT1BfUEVSRk9STUFOQ0VfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2UnLFxuICAgIHNldHVwRmlsZXM6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnXSxcbiAgICB0ZXN0VGltZW91dDogUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIG11bHRpcGxpZXIgYXBwbGllZCB0byBhIHByb2plY3QncyB0ZXN0IGJ1ZGdldCB0byBnZXQgaXRzIGhvb2sgYnVkZ2V0LiBBIGhvb2sgdHlwaWNhbGx5IHBvcHVsYXRlc1xuICAgKiBhbmQgb3BlbnMgYSB2YXVsdCwgc28gaXQgbmVlZHMgc2V2ZXJhbCB0aW1lcyB3aGF0IGEgc2luZ2xlIHRlc3QgZG9lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaG9va1RpbWVvdXRNdWx0aXBsaWVyID0gSE9PS19USU1FT1VUX01VTFRJUExJRVI7XG5cbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6bm8tYXBwYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBzdWl0ZXMgdGhhdCBuZWVkIG5vIE9ic2lkaWFuIGluc3RhbmNlIGF0IGFsbC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub0FwcDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBob29rVGltZW91dDogQklHX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTICogSE9PS19USU1FT1VUX01VTFRJUExJRVIsXG4gICAgaW5jbHVkZTogW05PX0FQUF9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6bm8tYXBwJyxcbiAgICB0ZXN0VGltZW91dDogQklHX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIHBlcmZvcm1hbmNlIGludGVncmF0aW9uIHByb2plY3QsIGluIG1pbGxpc2Vjb25kcy4gQSBwZXJmb3JtYW5jZSB2YXVsdCBpc1xuICAgKiBwcmUtcG9wdWxhdGVkIHdpdGggdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMgYmVmb3JlIE9ic2lkaWFuIG9wZW5zLCBzbyBib3RoIGl0cyBzZXR1cCBhbmQgaXRzIHRlc3RzXG4gICAqIG5lZWQgZmFyIG1vcmUgdGltZSB0aGFuIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlcmZvcm1hbmNlVGltZW91dEluTWlsbGlzZWNvbmRzID0gUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSBgdW5pdC10ZXN0c2AgcHJvamVjdCwgcnVubmluZyB0aGUgbW9ja2VkLU9ic2lkaWFuIHN1aXRlcyBpbiBganNkb21gLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVuaXRUZXN0czogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnanNkb20nLFxuICAgIGV4Y2x1ZGU6IFsuLi5TSEFSRURfRVhDTFVERSwgSU5URUdSQVRJT05fVEVTVF9GSUxFU10sXG4gICAgZXhlY0FyZ3Y6IFsnLS1uby13ZWJzdG9yYWdlJ10sXG4gICAgaW5jbHVkZTogW1VOSVRfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ3VuaXQtdGVzdHMnLFxuICAgIHNlcnZlcjoge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGRlcHNgIGlzIGRlY2xhcmVkIGJ5IGB2aXRlc3RgOyByZW5hbWluZyBpdCBoZXJlIHdvdWxkIG5vdCBtYXRjaCB0aGUgQVBJLlxuICAgICAgZGVwczoge1xuICAgICAgICBpbmxpbmU6IFsnQG9ic2lkaWFuLXR5cGluZ3MnLCAnb2JzaWRpYW4tZGV2LXV0aWxzJ11cbiAgICAgIH1cbiAgICB9LFxuICAgIHNldHVwRmlsZXM6IFtcbiAgICAgICdvYnNpZGlhbi10ZXN0LW1vY2tzL3ZpdGVzdC1zZXR1cCcsXG4gICAgICAnb2JzaWRpYW4tdGVzdC1tb2Nrcy9vYnNpZGlhbi10eXBpbmdzL3ZpdGVzdC1zZXR1cCcsXG4gICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3ZpdGVzdC1zZXR1cCdcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29udGV4dCBzZWVkZWQgd2l0aCB0aGUgc3RhbmRhcmQgcHJvamVjdHMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgb2JzaWRpYW5WZXJzaW9uID0gcHJvY2Vzcy5lbnZbT0JTSURJQU5fVkVSU0lPTl9FTlZfVkFSSUFCTEVfTkFNRV07XG5cbiAgICAvKlxuICAgICAqIFN1cHBvcnQgaXMgdGhlIHJhbmdlIFtsYXRlc3QgcHVibGljLCBsYXRlc3QgY2F0YWx5c3RdIGFuZCBCT1RIIGVuZHMgbXVzdCB3b3JrIChHOTkpLCBzbyB0aGUgdmVyc2lvblxuICAgICAqIGlzIGEga25vYiByYXRoZXIgdGhhbiBhIGNvbnN0YW50LiBUaGUga2V5IGlzIGFkZGVkIE9OTFkgd2hlbiB0aGUgdmFyaWFibGUgaXMgc2V0OiBhbiBleHBsaWNpdFxuICAgICAqIGBvYnNpZGlhblZlcnNpb25gIG1ha2VzIHRoZSBoYXJuZXNzIHJlc29sdmUgYSBjb25jcmV0ZSB2ZXJzaW9uIGFuZCBzd2FwIHRoZSBhc2FyLCB3aGljaCBpcyBub3Qgd2hhdFxuICAgICAqIGFuIHVucGlubmVkIHJ1biBkb2VzLCBzbyBzZWVkaW5nIGEgZGVmYXVsdCBoZXJlIHdvdWxkIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgZXZlcnkgcGx1Z2luLlxuICAgICAqL1xuICAgIGlmIChvYnNpZGlhblZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kZXNrdG9wLmVudmlyb25tZW50T3B0aW9ucyA9IHtcbiAgICAgICAgb2JzaWRpYW5UcmFuc3BvcnQ6IHtcbiAgICAgICAgICBvYnNpZGlhblZlcnNpb24sXG4gICAgICAgICAgdHlwZTogJ29ic2lkaWFuLWNkcCdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBmb3IgYW4gT2JzaWRpYW4gcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWcob3B0aW9uczogRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zID0ge30pOiBWaXRlVXNlckNvbmZpZyB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KCk7XG5cbiAgaWYgKG9wdGlvbnMuZWRpdENvbnRleHQpIHtcbiAgICBvcHRpb25zLmVkaXRDb250ZXh0KGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgY3VzdG9tUHJvamVjdHMgPSBvcHRpb25zLmN1c3RvbVByb2plY3RzPy4oY29udGV4dCkgPz8gW107XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyh7XG4gICAgdGVzdDoge1xuICAgICAgY292ZXJhZ2U6IHtcbiAgICAgICAgZXhjbHVkZTogY29udGV4dC5jb3ZlcmFnZUV4Y2x1ZGUsXG4gICAgICAgIGluY2x1ZGU6IFsnc3JjLyoqLyoudHMnXSxcbiAgICAgICAgcHJvdmlkZXI6ICd2OCcsXG4gICAgICAgIHJlcG9ydGVyOiBbJ3RleHQnLCAnbGNvdicsICdodG1sJ10sXG4gICAgICAgIHJlcG9ydHNEaXJlY3Rvcnk6ICcuL2NvdmVyYWdlJ1xuICAgICAgfSxcbiAgICAgIGV4Y2x1ZGU6IFsuLi5TSEFSRURfRVhDTFVERV0sXG4gICAgICBnbG9iYWxzOiBmYWxzZSxcbiAgICAgIGluY2x1ZGU6IFtVTklUX1RFU1RfRklMRVNdLFxuICAgICAgcGFzc1dpdGhOb1Rlc3RzOiB0cnVlLFxuICAgICAgcHJvamVjdHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAgIG9ic2lkaWFuOiAnb2JzaWRpYW4tdGVzdC1tb2Nrcy9vYnNpZGlhbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlc3Q6IGNvbnRleHQudW5pdFRlc3RzXG4gICAgICAgIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5ub0FwcCB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQuZGVza3RvcCB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQuZGVza3RvcFBlcmZvcm1hbmNlIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5hbmRyb2lkIH0sXG4gICAgICAgIC4uLmN1c3RvbVByb2plY3RzXG4gICAgICBdXG4gICAgfVxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLE9BQU8sYUFBYTtBQUNwQixTQUFTLG9CQUFvQjtBQU83QixNQUFNLGtDQUFrQztBQUN4QyxNQUFNLDhCQUE4QjtBQUNwQyxNQUFNLDBCQUEwQjtBQUNoQyxNQUFNLHNDQUFzQztBQUU1QyxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLDRCQUE0QjtBQUNsQyxNQUFNLG9CQUFvQjtBQUMxQixNQUFNLGlDQUFpQztBQUN2QyxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLHlCQUF5QjtBQUMvQixNQUFNLG9CQUFvQjtBQUMxQixNQUFNLGtCQUFrQjtBQUV4QixNQUFNLHFDQUFxQztBQUMzQyxNQUFNLGlCQUFpQixDQUFDLGdCQUFnQixNQUFNO0FBOEJ2QyxNQUFNLGtDQUFrQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLN0IsVUFBNkM7QUFBQSxJQUMzRCxhQUFhO0FBQUEsSUFDYixvQkFBb0I7QUFBQSxNQUNsQixtQkFBbUI7QUFBQSxRQUNqQixXQUFXO0FBQUEsUUFDWCxTQUFTO0FBQUEsUUFDVCxNQUFNO0FBQUEsTUFDUjtBQUFBLElBQ0Y7QUFBQSxJQUNBLGlCQUFpQjtBQUFBLElBQ2pCLGFBQWEsQ0FBQyx5REFBeUQ7QUFBQSxJQUN2RSxhQUFhLGtDQUFrQztBQUFBLElBQy9DLFNBQVMsQ0FBQyxvQkFBb0IseUJBQXlCO0FBQUEsSUFDdkQsTUFBTTtBQUFBLElBQ04sWUFBWSxDQUFDLDJDQUEyQztBQUFBLElBQ3hELGFBQWE7QUFBQSxFQUNm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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-dev-utils",
|
|
3
|
-
"version": "94.
|
|
3
|
+
"version": "94.4.0",
|
|
4
4
|
"description": "This is the collection of useful functions that you can use for your Obsidian plugin development.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"obsidian"
|
|
@@ -666,6 +666,7 @@
|
|
|
666
666
|
"version": "jiti scripts/version.ts"
|
|
667
667
|
},
|
|
668
668
|
"overrides": {
|
|
669
|
+
"@puppeteer/browsers": "^3.2.0",
|
|
669
670
|
"@typescript-eslint/eslint-plugin": "$@typescript-eslint/eslint-plugin",
|
|
670
671
|
"@typescript-eslint/parser": "$@typescript-eslint/parser",
|
|
671
672
|
"@vitest/coverage-v8": "$@vitest/coverage-v8",
|
|
@@ -713,7 +714,7 @@
|
|
|
713
714
|
"eslint": "^10.8.1",
|
|
714
715
|
"eslint-import-resolver-typescript": "^4.4.5",
|
|
715
716
|
"eslint-plugin-import-x": "^4.17.1",
|
|
716
|
-
"eslint-plugin-jsdoc": "^64.
|
|
717
|
+
"eslint-plugin-jsdoc": "^64.2.0",
|
|
717
718
|
"eslint-plugin-obsidianmd": "^0.4.1",
|
|
718
719
|
"eslint-plugin-perfectionist": "^5.10.1",
|
|
719
720
|
"eslint-plugin-tsdoc": "^0.5.2",
|
|
@@ -765,7 +766,7 @@
|
|
|
765
766
|
"jsdom": "^30.0.1",
|
|
766
767
|
"moment": "^2.30.1",
|
|
767
768
|
"nano-staged": "^1.0.2",
|
|
768
|
-
"obsidian-integration-testing": "^10.
|
|
769
|
+
"obsidian-integration-testing": "^10.3.2",
|
|
769
770
|
"obsidian-test-mocks": "^4.1.0",
|
|
770
771
|
"satori": "^0.29.0",
|
|
771
772
|
"starlight-github-alerts": "^0.4.0",
|