@sendly/cli 3.24.0 → 3.27.1
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/commands/campaigns/schedule.js +20 -10
- package/dist/commands/conversations/context.d.ts +15 -0
- package/dist/commands/conversations/context.js +55 -0
- package/dist/commands/conversations/suggest-replies.d.ts +13 -0
- package/dist/commands/conversations/suggest-replies.js +50 -0
- package/dist/commands/conversations/update.d.ts +15 -0
- package/dist/commands/conversations/update.js +56 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +45 -1
- package/dist/commands/drafts/list.js +2 -2
- package/dist/commands/enterprise/generate-business-page.d.ts +16 -0
- package/dist/commands/enterprise/generate-business-page.js +62 -0
- package/dist/commands/enterprise/upload-verification-document.d.ts +13 -0
- package/dist/commands/enterprise/upload-verification-document.js +109 -0
- package/dist/commands/events/listen.d.ts +11 -0
- package/dist/commands/events/listen.js +82 -0
- package/dist/commands/labels/add.d.ts +14 -0
- package/dist/commands/labels/add.js +46 -0
- package/dist/commands/labels/remove.d.ts +14 -0
- package/dist/commands/labels/remove.js +46 -0
- package/dist/commands/rules/create.d.ts +16 -0
- package/dist/commands/rules/create.js +70 -0
- package/dist/commands/rules/delete.d.ts +13 -0
- package/dist/commands/rules/delete.js +29 -0
- package/dist/commands/rules/index.d.ts +10 -0
- package/dist/commands/rules/index.js +56 -0
- package/dist/commands/sms/batch.js +1 -1
- package/dist/commands/sms/schedule.d.ts +3 -3
- package/dist/commands/sms/schedule.js +117 -27
- package/dist/commands/sms/search.d.ts +16 -0
- package/dist/commands/sms/search.js +105 -0
- package/dist/commands/sms/send.d.ts +1 -1
- package/dist/commands/sms/send.js +55 -10
- package/dist/commands/templates/update.d.ts +15 -0
- package/dist/commands/templates/update.js +70 -0
- package/dist/commands/webhooks/listen.js +5 -1
- package/dist/lib/base-command.js +2 -2
- package/oclif.manifest.json +1388 -644
- package/package.json +17 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
3
|
+
import { json, table, isJsonMode, header, colors } from "../../lib/output.js";
|
|
4
|
+
export default class RulesList extends AuthenticatedCommand {
|
|
5
|
+
static description = "List auto-labeling rules";
|
|
6
|
+
static examples = [
|
|
7
|
+
"<%= config.bin %> rules",
|
|
8
|
+
"<%= config.bin %> rules --json",
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...AuthenticatedCommand.baseFlags,
|
|
12
|
+
};
|
|
13
|
+
async run() {
|
|
14
|
+
await this.parse(RulesList);
|
|
15
|
+
const result = await apiClient.get("/api/v1/rules");
|
|
16
|
+
if (isJsonMode()) {
|
|
17
|
+
json(result.data);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
header("Auto-Label Rules");
|
|
21
|
+
if (result.data.length === 0) {
|
|
22
|
+
console.log(colors.dim("No rules configured. Create one with: sendly rules create"));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
table(result.data.map((r) => ({
|
|
26
|
+
name: r.name,
|
|
27
|
+
enabled: r.enabled,
|
|
28
|
+
conditions: formatConditions(r.conditions),
|
|
29
|
+
actions: formatActions(r.actions),
|
|
30
|
+
priority: r.priority,
|
|
31
|
+
})), [
|
|
32
|
+
{ header: "Name", key: "name", width: 20 },
|
|
33
|
+
{ header: "Status", key: "enabled", width: 10, formatter: (v) => v ? colors.success("enabled") : colors.dim("disabled") },
|
|
34
|
+
{ header: "Conditions", key: "conditions", width: 30 },
|
|
35
|
+
{ header: "Actions", key: "actions", width: 20 },
|
|
36
|
+
{ header: "Priority", key: "priority", width: 8 },
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function formatConditions(c) {
|
|
41
|
+
const parts = [];
|
|
42
|
+
if (c.intent)
|
|
43
|
+
parts.push(`intent=${Array.isArray(c.intent) ? c.intent.join("|") : c.intent}`);
|
|
44
|
+
if (c.sentiment)
|
|
45
|
+
parts.push(`sentiment=${Array.isArray(c.sentiment) ? c.sentiment.join("|") : c.sentiment}`);
|
|
46
|
+
return parts.join(", ") || "any";
|
|
47
|
+
}
|
|
48
|
+
function formatActions(a) {
|
|
49
|
+
const parts = [];
|
|
50
|
+
if (Array.isArray(a.addLabels) && a.addLabels.length > 0)
|
|
51
|
+
parts.push(`${a.addLabels.length} label(s)`);
|
|
52
|
+
if (a.closeConversation)
|
|
53
|
+
parts.push("auto-close");
|
|
54
|
+
return parts.join(", ") || "none";
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFZOUUsTUFBTSxDQUFDLE9BQU8sT0FBTyxTQUFVLFNBQVEsb0JBQW9CO0lBQ3pELE1BQU0sQ0FBQyxXQUFXLEdBQUcsMEJBQTBCLENBQUM7SUFFaEQsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix5QkFBeUI7UUFDekIsZ0NBQWdDO0tBQ2pDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQW1CLGVBQWUsQ0FBQyxDQUFDO1FBRXRFLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQyxDQUFDO1lBQ3JGLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxDQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUMxQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDakMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1NBQ3JCLENBQUMsQ0FBQyxFQUNIO1lBQ0UsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMxQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDdEQsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNoRCxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1NBQ2xELENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBR0gsU0FBUyxnQkFBZ0IsQ0FBQyxDQUEwQjtJQUNsRCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsSUFBSSxDQUFDLENBQUMsTUFBTTtRQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLE1BQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1RyxJQUFJLENBQUMsQ0FBQyxTQUFTO1FBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsU0FBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNILE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLENBQTBCO0lBQy9DLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7UUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZHLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtRQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCB0YWJsZSwgaXNKc29uTW9kZSwgaGVhZGVyLCBjb2xvcnMgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgUnVsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBlbmFibGVkOiBib29sZWFuO1xuICBwcmlvcml0eTogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnVsZXNMaXN0IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkxpc3QgYXV0by1sYWJlbGluZyBydWxlc1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHJ1bGVzXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBydWxlcyAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhcnNlKFJ1bGVzTGlzdCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PHsgZGF0YTogUnVsZVtdIH0+KFwiL2FwaS92MS9ydWxlc1wiKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzdWx0LmRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGhlYWRlcihcIkF1dG8tTGFiZWwgUnVsZXNcIik7XG5cbiAgICBpZiAocmVzdWx0LmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiTm8gcnVsZXMgY29uZmlndXJlZC4gQ3JlYXRlIG9uZSB3aXRoOiBzZW5kbHkgcnVsZXMgY3JlYXRlXCIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0YWJsZShcbiAgICAgIHJlc3VsdC5kYXRhLm1hcCgocikgPT4gKHtcbiAgICAgICAgbmFtZTogci5uYW1lLFxuICAgICAgICBlbmFibGVkOiByLmVuYWJsZWQsXG4gICAgICAgIGNvbmRpdGlvbnM6IGZvcm1hdENvbmRpdGlvbnMoci5jb25kaXRpb25zKSxcbiAgICAgICAgYWN0aW9uczogZm9ybWF0QWN0aW9ucyhyLmFjdGlvbnMpLFxuICAgICAgICBwcmlvcml0eTogci5wcmlvcml0eSxcbiAgICAgIH0pKSxcbiAgICAgIFtcbiAgICAgICAgeyBoZWFkZXI6IFwiTmFtZVwiLCBrZXk6IFwibmFtZVwiLCB3aWR0aDogMjAgfSxcbiAgICAgICAgeyBoZWFkZXI6IFwiU3RhdHVzXCIsIGtleTogXCJlbmFibGVkXCIsIHdpZHRoOiAxMCwgZm9ybWF0dGVyOiAodjogdW5rbm93bikgPT4gdiA/IGNvbG9ycy5zdWNjZXNzKFwiZW5hYmxlZFwiKSA6IGNvbG9ycy5kaW0oXCJkaXNhYmxlZFwiKSB9LFxuICAgICAgICB7IGhlYWRlcjogXCJDb25kaXRpb25zXCIsIGtleTogXCJjb25kaXRpb25zXCIsIHdpZHRoOiAzMCB9LFxuICAgICAgICB7IGhlYWRlcjogXCJBY3Rpb25zXCIsIGtleTogXCJhY3Rpb25zXCIsIHdpZHRoOiAyMCB9LFxuICAgICAgICB7IGhlYWRlcjogXCJQcmlvcml0eVwiLCBrZXk6IFwicHJpb3JpdHlcIiwgd2lkdGg6IDggfSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRDb25kaXRpb25zKGM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmIChjLmludGVudCkgcGFydHMucHVzaChgaW50ZW50PSR7QXJyYXkuaXNBcnJheShjLmludGVudCkgPyAoYy5pbnRlbnQgYXMgc3RyaW5nW10pLmpvaW4oXCJ8XCIpIDogYy5pbnRlbnR9YCk7XG4gIGlmIChjLnNlbnRpbWVudCkgcGFydHMucHVzaChgc2VudGltZW50PSR7QXJyYXkuaXNBcnJheShjLnNlbnRpbWVudCkgPyAoYy5zZW50aW1lbnQgYXMgc3RyaW5nW10pLmpvaW4oXCJ8XCIpIDogYy5zZW50aW1lbnR9YCk7XG4gIHJldHVybiBwYXJ0cy5qb2luKFwiLCBcIikgfHwgXCJhbnlcIjtcbn1cblxuZnVuY3Rpb24gZm9ybWF0QWN0aW9ucyhhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShhLmFkZExhYmVscykgJiYgYS5hZGRMYWJlbHMubGVuZ3RoID4gMCkgcGFydHMucHVzaChgJHthLmFkZExhYmVscy5sZW5ndGh9IGxhYmVsKHMpYCk7XG4gIGlmIChhLmNsb3NlQ29udmVyc2F0aW9uKSBwYXJ0cy5wdXNoKFwiYXV0by1jbG9zZVwiKTtcbiAgcmV0dXJuIHBhcnRzLmpvaW4oXCIsIFwiKSB8fCBcIm5vbmVcIjtcbn1cbiJdfQ==
|
|
@@ -433,4 +433,4 @@ export default class SmsBatch extends AuthenticatedCommand {
|
|
|
433
433
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2JhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sRUFDTixJQUFJLEVBQ0osVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUE2RzdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sUUFBUyxTQUFRLG9CQUFvQjtJQUN4RCxNQUFNLENBQUMsV0FBVyxHQUNoQixnRUFBZ0UsQ0FBQztJQUVuRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLG1EQUFtRDtRQUNuRCx3RUFBd0U7UUFDeEUsNEVBQTRFO1FBQzVFLDZEQUE2RDtRQUM3RCx1RkFBdUY7UUFDdkYsbURBQW1EO1FBQ25ELHVDQUF1QztLQUN4QyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx5REFBeUQ7WUFDdEUsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7U0FDdEMsQ0FBQztRQUNGLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFX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RSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEJhdGNoVXBsb2FkUmVzcG9uc2Uge1xuICB1cGxvYWQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB9O1xuICB2YWxpZGF0aW9uOiB7XG4gICAgdG90YWxSb3dzOiBudW1iZXI7XG4gICAgdmFsaWRDb3VudDogbnVtYmVyO1xuICAgIGludmFsaWRDb3VudDogbnVtYmVyO1xuICAgIGR1cGxpY2F0ZXNSZW1vdmVkOiBudW1iZXI7XG4gICAgaGFzSGVhZGVyOiBib29sZWFuO1xuICB9O1xuICByZWNpcGllbnRzOiBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ/OiBzdHJpbmcgfT47XG4gIGVycm9yczogQXJyYXk8eyByb3c6IG51bWJlcjsgcGhvbmU6IHN0cmluZzsgZXJyb3I6IHN0cmluZyB9PjtcbiAgaGFzTW9yZUVycm9yczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEJhdGNoSGlzdG9yeVJlc3BvbnNlIHtcbiAgdXBsb2FkczogQXJyYXk8e1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHRvdGFsUm93czogbnVtYmVyO1xuICAgICAgdmFsaWRDb3VudDogbnVtYmVyO1xuICAgICAgaW52YWxpZENvdW50OiBudW1iZXI7XG4gICAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgfTtcbiAgfT47XG59XG5cbmludGVyZmFjZSBCYXRjaFJlc3BvbnNlIHtcbiAgYmF0Y2hJZDogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBzZW50OiBudW1iZXI7XG4gIHF1ZXVlZDogbnVtYmVyO1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlZGl0c1JlZnVuZGVkOiBudW1iZXI7XG4gIHN0YXR1czogc3RyaW5nO1xuICBtZXNzYWdlcz86IEFycmF5PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdG86IHN0cmluZztcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBlcnJvcj86IHN0cmluZztcbiAgfT47XG59XG5cbmludGVyZmFjZSBCYXRjaFByZXZpZXdSZXNwb25zZSB7XG4gIHRvdGFsOiBudW1iZXI7XG4gIHNlbmRhYmxlOiBudW1iZXI7XG4gIGJsb2NrZWQ6IG51bWJlcjtcbiAgZHVwbGljYXRlczogbnVtYmVyO1xuICBjcmVkaXRzTmVlZGVkOiBudW1iZXI7XG4gIGNyZWRpdEJhbGFuY2U6IG51bWJlcjtcbiAgaGFzU3VmZmljaWVudENyZWRpdHM6IGJvb2xlYW47XG4gIGtleVR5cGU6IFwidGVzdFwiIHwgXCJsaXZlXCI7XG4gIGtleVNjb3Blczogc3RyaW5nW107XG4gIGhhc1dyaXRlU2NvcGU6IGJvb2xlYW47XG4gIG1lc3NhZ2luZ1Byb2ZpbGU6IHtcbiAgICBpZDogc3RyaW5nIHwgbnVsbDtcbiAgICBjYW5TZW5kRG9tZXN0aWM6IGJvb2xlYW47XG4gICAgY2FuU2VuZEludGVybmF0aW9uYWw6IGJvb2xlYW47XG4gICAgdmVyaWZpY2F0aW9uU3RhdHVzOiBzdHJpbmcgfCBudWxsO1xuICAgIHZlcmlmaWNhdGlvblR5cGU6IHN0cmluZyB8IG51bGw7XG4gIH07XG4gIGJ5Q291bnRyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAgY3JlZGl0czogbnVtYmVyO1xuICAgICAgdGllcjogc3RyaW5nO1xuICAgICAgYWxsb3dlZDogYm9vbGVhbjtcbiAgICAgIGJsb2NrZWRSZWFzb24/OiBzdHJpbmc7XG4gICAgfVxuICA+O1xuICBibG9ja2VkTWVzc2FnZXM6IEFycmF5PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHRvOiBzdHJpbmc7XG4gICAgcmVhc29uOiBzdHJpbmc7XG4gIH0+O1xuICBjb21wbGlhbmNlOiB7XG4gICAgbWVzc2FnZVR5cGU6IFwibWFya2V0aW5nXCIgfCBcInRyYW5zYWN0aW9uYWxcIjtcbiAgICBzaGFmdEJsb2NrZWQ6IG51bWJlcjtcbiAgICBxdWlldEhvdXJzQmxvY2tlZDogbnVtYmVyO1xuICAgIHF1aWV0SG91cnNSZXNjaGVkdWxlZDogbnVtYmVyO1xuICAgIHNoYWZ0QmxvY2tlZE1lc3NhZ2VzOiBBcnJheTx7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgdG86IHN0cmluZztcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmc7XG4gICAgICBtYXRjaGVkVGVybXM6IHN0cmluZ1tdO1xuICAgIH0+O1xuICAgIHF1aWV0SG91cnNCbG9ja2VkTWVzc2FnZXM6IEFycmF5PHtcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICB0bzogc3RyaW5nO1xuICAgICAgcmVjaXBpZW50VGltZXpvbmU6IHN0cmluZztcbiAgICAgIHJlY2lwaWVudExvY2FsVGltZTogc3RyaW5nO1xuICAgICAgbmV4dEFsbG93ZWRUaW1lPzogc3RyaW5nO1xuICAgIH0+O1xuICB9O1xuICB3YXJuaW5nczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNtc0JhdGNoIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiU2VuZCBiYXRjaCBTTVMgbWVzc2FnZXMgKHVwbG9hZHMgQ1NWIHRvIGNsb3VkIGZvciBhdWRpdCB0cmFpbClcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1maWxlIHJlY2lwaWVudHMuY3N2XCIsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWZpbGUgcGhvbmVzLmNzdiAtLXRleHQgXCJIZWxsbyBldmVyeW9uZSFcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLXRvICsxNTU1MTIzNDU2NywrMTU1NTk4NzY1NDMgLS10ZXh0IFwiSGVsbG8hXCInLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tZmlsZSByZWNpcGllbnRzLmNzdiAtLWRyeS1ydW5cIixcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tZmlsZSBwaG9uZXMuY3N2IC0tdGV4dCBcIkNvZGU6IDEyM1wiIC0tdHlwZSB0cmFuc2FjdGlvbmFsJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLXJldXNlIGFiYzEyMy1kZWY0NTZcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWhpc3RvcnlcIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIGZpbGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIkZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNTViBmaWxlIHdpdGggcGhvbmUgbnVtYmVycyAoYW5kIG9wdGlvbmFsIG1lc3NhZ2UgdGV4dClcIixcbiAgICAgIGV4Y2x1c2l2ZTogW1widG9cIiwgXCJyZXVzZVwiLCBcImhpc3RvcnlcIl0sXG4gICAgfSksXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbW1hLXNlcGFyYXRlZCByZWNpcGllbnQgcGhvbmUgbnVtYmVycyAoRS4xNjQgZm9ybWF0KVwiLFxuICAgICAgZXhjbHVzaXZlOiBbXCJmaWxlXCIsIFwicmV1c2VcIiwgXCJoaXN0b3J5XCJdLFxuICAgIH0pLFxuICAgIHRleHQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm1cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1lc3NhZ2UgdGV4dCAocmVxdWlyZWQgd2l0aCAtLXRvLCBvcHRpb25hbCB3aXRoIC0tZmlsZSBpZiBDU1YgaGFzIHRleHQgY29sdW1uKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXIgZm9yIGFsbCBtZXNzYWdlc1wiLFxuICAgIH0pLFxuICAgIHR5cGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNZXNzYWdlIHR5cGU6IG1hcmtldGluZyAoZGVmYXVsdCkgb3IgdHJhbnNhY3Rpb25hbC4gVHJhbnNhY3Rpb25hbCBieXBhc3NlcyBxdWlldCBob3Vycy5cIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICAgIFwiZHJ5LXJ1blwiOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwiZFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUHJldmlldyBiYXRjaCB3aXRob3V0IHNlbmRpbmcgKHZhbGlkYXRlcyBhY2Nlc3MsIHNob3dzIGNvc3QgYW5kIGNvbXBsaWFuY2UgYnJlYWtkb3duKVwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gICAgcmV1c2U6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZS11c2UgYSBwcmV2aW91cyBiYXRjaCB1cGxvYWQgYnkgSUQgKHNlZSAtLWhpc3RvcnkpXCIsXG4gICAgICBleGNsdXNpdmU6IFtcImZpbGVcIiwgXCJ0b1wiLCBcImhpc3RvcnlcIl0sXG4gICAgfSksXG4gICAgaGlzdG9yeTogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTaG93IHJlY2VudCBiYXRjaCB1cGxvYWQgaGlzdG9yeVwiLFxuICAgICAgZXhjbHVzaXZlOiBbXCJmaWxlXCIsIFwidG9cIiwgXCJyZXVzZVwiXSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc0JhdGNoKTtcblxuICAgIC8vIEhhbmRsZSBoaXN0b3J5IHN1YmNvbW1hbmRcbiAgICBpZiAoZmxhZ3MuaGlzdG9yeSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd0hpc3RvcnkoKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcmV1c2Ugc3ViY29tbWFuZFxuICAgIGlmIChmbGFncy5yZXVzZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV1c2VCYXRjaChmbGFncy5yZXVzZSwgZmxhZ3MpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSAtLXRvIGZsYWcgKGlubGluZSByZWNpcGllbnRzLCBubyB1cGxvYWQgbmVlZGVkKVxuICAgIGlmIChmbGFncy50bykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VuZElubGluZVJlY2lwaWVudHMoZmxhZ3MpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSAtLWZpbGUgZmxhZyAodXBsb2FkIHRvIFIyKVxuICAgIGlmIChmbGFncy5maWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGxvYWRBbmRTZW5kKGZsYWdzKTtcbiAgICB9XG5cbiAgICBlcnJvcihcIkVpdGhlciAtLWZpbGUsIC0tdG8sIC0tcmV1c2UsIG9yIC0taGlzdG9yeSBpcyByZXF1aXJlZFwiKTtcbiAgICB0aGlzLmV4aXQoMSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBiYXRjaCB1cGxvYWQgaGlzdG9yeVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93SGlzdG9yeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkZldGNoaW5nIGJhdGNoIGhpc3RvcnkuLi5cIikuc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8QmF0Y2hIaXN0b3J5UmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvY2xpL2JhdGNoL2hpc3RvcnlcIixcbiAgICAgICAgeyBsaW1pdDogMTUgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZS51cGxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiXFxuTm8gYmF0Y2ggdXBsb2FkcyBmb3VuZC5cXG5cIikpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlVwbG9hZCBhIENTViBmaWxlIHdpdGg6IHNlbmRseSBzbXMgYmF0Y2ggLS1maWxlIHlvdXIuY3N2XCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiXFxu8J+TgSBSZWNlbnQgQmF0Y2ggVXBsb2Fkc1xcblwiKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDgwKSkpO1xuXG4gICAgICBmb3IgKGNvbnN0IHVwbG9hZCBvZiByZXNwb25zZS51cGxvYWRzKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh1cGxvYWQuY3JlYXRlZEF0KS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5mb3JtYXRCeXRlcyh1cGxvYWQuc2l6ZSk7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHVwbG9hZC5tZXRhZGF0YT8uc291cmNlID09PSBcImNsaVwiID8gXCJDTElcIiA6IFwiV2ViXCI7XG5cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYCR7Y29sb3JzLmluZm8odXBsb2FkLmlkLnNsaWNlKDAsIDgpKX0gICR7dXBsb2FkLmZpbGVuYW1lfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICBgICAgJHtkYXRlfSB8ICR7c2l6ZX0gfCAke3VwbG9hZC5tZXRhZGF0YT8udmFsaWRDb3VudCB8fCAwfSB2YWxpZCByZWNpcGllbnRzIHwgJHtzb3VyY2V9YCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDgwKSkpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXCJcXG5SZS11c2UgYSBiYXRjaDogc2VuZGx5IHNtcyBiYXRjaCAtLXJldXNlIDxpZD5cIiksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXVzZSBhIHByZXZpb3VzIGJhdGNoIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXVzZUJhdGNoKFxuICAgIHVwbG9hZElkOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHsgdGV4dD86IHN0cmluZzsgZnJvbT86IHN0cmluZzsgdHlwZT86IHN0cmluZzsgXCJkcnktcnVuXCI/OiBib29sZWFuIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiRmV0Y2hpbmcgYmF0Y2ggZGF0YS4uLlwiKS5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LmdldDxCYXRjaFVwbG9hZFJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvY2xpL2JhdGNoL3JldXNlLyR7dXBsb2FkSWR9YCxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLnN1Y2Nlc3MoYFxcbuKckyBMb2FkZWQgYmF0Y2g6ICR7cmVzcG9uc2UudXBsb2FkLmZpbGVuYW1lfWApLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgIGAgICR7cmVzcG9uc2UudmFsaWRhdGlvbi52YWxpZENvdW50fSB2YWxpZCByZWNpcGllbnRzIGZyb20gJHtyZXNwb25zZS52YWxpZGF0aW9uLnRvdGFsUm93c30gcm93c2AsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICAvLyBBcHBseSBzaGFyZWQgdGV4dCBpZiBwcm92aWRlZFxuICAgICAgbGV0IG1lc3NhZ2VzID0gcmVzcG9uc2UucmVjaXBpZW50cztcbiAgICAgIGlmIChmbGFncy50ZXh0KSB7XG4gICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMubWFwKChyKSA9PiAoe1xuICAgICAgICAgIHRvOiByLnRvLFxuICAgICAgICAgIHRleHQ6IHIudGV4dCB8fCBmbGFncy50ZXh0LFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGFsbCBtZXNzYWdlcyBoYXZlIHRleHRcbiAgICAgIGNvbnN0IG1pc3NpbmdUZXh0ID0gbWVzc2FnZXMuZmlsdGVyKChtKSA9PiAhbS50ZXh0Py50cmltKCkpO1xuICAgICAgaWYgKG1pc3NpbmdUZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXJyb3IoXG4gICAgICAgICAgYCR7bWlzc2luZ1RleHQubGVuZ3RofSByZWNpcGllbnRzIG1pc3NpbmcgbWVzc2FnZSB0ZXh0LiBVc2UgLS10ZXh0IHRvIHByb3ZpZGUgYSBkZWZhdWx0LmAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VlZCB3aXRoIHByZXZpZXcgb3Igc2VuZFxuICAgICAgYXdhaXQgdGhpcy5wcmV2aWV3T3JTZW5kKFxuICAgICAgICBtZXNzYWdlcyBhcyBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PixcbiAgICAgICAgZmxhZ3MsXG4gICAgICAgIHJlc3BvbnNlLnVwbG9hZC5pZCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCB0byBpbmxpbmUgcmVjaXBpZW50cyAoLS10byBmbGFnKVxuICAgKiBUaGlzIHBhdGggZG9lc24ndCB1cGxvYWQgdG8gUjIgc2luY2UgaXQncyBqdXN0IGEgZmV3IG51bWJlcnNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2VuZElubGluZVJlY2lwaWVudHMoZmxhZ3M6IHtcbiAgICB0bz86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIGZyb20/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBcImRyeS1ydW5cIj86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWZsYWdzLnRleHQpIHtcbiAgICAgIGVycm9yKFwiLS10ZXh0IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgLS10b1wiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBwaG9uZXMgPSBmbGFncy50byEuc3BsaXQoXCIsXCIpLm1hcCgocCkgPT4gcC50cmltKCkpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gcGhvbmVzLm1hcCgocGhvbmUpID0+ICh7XG4gICAgICB0bzogcGhvbmUuc3RhcnRzV2l0aChcIitcIikgPyBwaG9uZSA6IGArJHtwaG9uZX1gLFxuICAgICAgdGV4dDogZmxhZ3MudGV4dCEsXG4gICAgfSkpO1xuXG4gICAgLy8gVmFsaWRhdGUgcGhvbmUgbnVtYmVyc1xuICAgIGZvciAoY29uc3QgbXNnIG9mIG1lc3NhZ2VzKSB7XG4gICAgICBpZiAoIS9eXFwrWzEtOV1cXGR7MSwxNH0kLy50ZXN0KG1zZy50bykpIHtcbiAgICAgICAgZXJyb3IoYEludmFsaWQgcGhvbmUgbnVtYmVyOiAke21zZy50b31gLCB7XG4gICAgICAgICAgaGludDogXCJVc2UgRS4xNjQgZm9ybWF0OiArMTU1NTEyMzQ1NjdcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByZXZpZXdPclNlbmQobWVzc2FnZXMsIGZsYWdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgQ1NWIHRvIFIyIGFuZCBzZW5kXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHVwbG9hZEFuZFNlbmQoZmxhZ3M6IHtcbiAgICBmaWxlPzogc3RyaW5nO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgZnJvbT86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIFwiZHJ5LXJ1blwiPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gZmxhZ3MuZmlsZSE7XG5cbiAgICAvLyBDaGVjayBmaWxlIGV4aXN0c1xuICAgIGlmICghZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBmaWxlIGV4dGVuc2lvblxuICAgIGlmICghZmlsZVBhdGguZW5kc1dpdGgoXCIuY3N2XCIpKSB7XG4gICAgICBlcnJvcihcIk9ubHkgQ1NWIGZpbGVzIGFyZSBzdXBwb3J0ZWRcIiwge1xuICAgICAgICBoaW50OiBcIkNvbnZlcnQgeW91ciBmaWxlIHRvIENTViBmb3JtYXQgd2l0aCBjb2x1bW5zOiBwaG9uZSxtZXNzYWdlXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBSZWFkIGZpbGVcbiAgICBjb25zdCBidWZmZXIgPSByZWFkRmlsZVN5bmMoZmlsZVBhdGgpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gYmFzZW5hbWUoZmlsZVBhdGgpO1xuXG4gICAgLy8gQ2hlY2sgZmlsZSBzaXplICg1TUIgbGltaXQpXG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggPiA1ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIGVycm9yKFwiRmlsZSB0b28gbGFyZ2UgKG1heCA1TUIpXCIsIHtcbiAgICAgICAgaGludDogXCJTcGxpdCB5b3VyIENTViBpbnRvIHNtYWxsZXIgZmlsZXNcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBVcGxvYWRpbmcgJHtmaWxlbmFtZX0uLi5gKS5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVwbG9hZCB0byBSMiB2aWEgQ0xJIGVuZHBvaW50XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC51cGxvYWRGaWxlPEJhdGNoVXBsb2FkUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvY2xpL2JhdGNoL3VwbG9hZFwiLFxuICAgICAgICB7IGJ1ZmZlciwgZmlsZW5hbWUsIG1pbWV0eXBlOiBcInRleHQvY3N2XCIgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICAvLyBTaG93IHVwbG9hZCBzdW1tYXJ5XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuc3VjY2VzcyhgXFxu4pyTIFVwbG9hZGVkOiAke3Jlc3BvbnNlLnVwbG9hZC5maWxlbmFtZX1gKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKGAgIFVwbG9hZCBJRDogJHtyZXNwb25zZS51cGxvYWQuaWR9YCkpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgYCAgJHtyZXNwb25zZS52YWxpZGF0aW9uLnZhbGlkQ291bnR9IHZhbGlkIC8gJHtyZXNwb25zZS52YWxpZGF0aW9uLmludmFsaWRDb3VudH0gaW52YWxpZCAvICR7cmVzcG9uc2UudmFsaWRhdGlvbi5kdXBsaWNhdGVzUmVtb3ZlZH0gZHVwbGljYXRlcyByZW1vdmVkYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFNob3cgdmFsaWRhdGlvbiBlcnJvcnMgaWYgYW55XG4gICAgICBpZiAocmVzcG9uc2UuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLndhcm5pbmcoYFxcbuKaoO+4jyAgVmFsaWRhdGlvbiBlcnJvcnM6YCkpO1xuICAgICAgICBmb3IgKGNvbnN0IGVyciBvZiByZXNwb25zZS5lcnJvcnMuc2xpY2UoMCwgNSkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5kaW0oYCAgIFJvdyAke2Vyci5yb3d9OiAke2Vyci5waG9uZX0gLSAke2Vyci5lcnJvcn1gKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNNb3JlRXJyb3JzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICBgICAgLi4uIGFuZCAke3Jlc3BvbnNlLnZhbGlkYXRpb24uaW52YWxpZENvdW50IC0gNX0gbW9yZSBlcnJvcnNgLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZS5yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBlcnJvcihcIk5vIHZhbGlkIHJlY2lwaWVudHMgZm91bmQgaW4gQ1NWXCIpO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHNoYXJlZCB0ZXh0IGlmIHByb3ZpZGVkXG4gICAgICBsZXQgbWVzc2FnZXMgPSByZXNwb25zZS5yZWNpcGllbnRzO1xuICAgICAgaWYgKGZsYWdzLnRleHQpIHtcbiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdG86IHIudG8sXG4gICAgICAgICAgdGV4dDogci50ZXh0IHx8IGZsYWdzLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgYWxsIG1lc3NhZ2VzIGhhdmUgdGV4dFxuICAgICAgY29uc3QgbWlzc2luZ1RleHQgPSBtZXNzYWdlcy5maWx0ZXIoKG0pID0+ICFtLnRleHQ/LnRyaW0oKSk7XG4gICAgICBpZiAobWlzc2luZ1RleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBlcnJvcihcbiAgICAgICAgICBgJHttaXNzaW5nVGV4dC5sZW5ndGh9IHJlY2lwaWVudHMgbWlzc2luZyBtZXNzYWdlIHRleHQuIFVzZSAtLXRleHQgdG8gcHJvdmlkZSBhIGRlZmF1bHQuYCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgIFwiXFxuQ1NWIHNob3VsZCBoYXZlIGNvbHVtbnM6IHBob25lLG1lc3NhZ2UgT1IgdXNlIC0tdGV4dCBmbGFnXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZWVkIHdpdGggcHJldmlldyBvciBzZW5kXG4gICAgICBhd2FpdCB0aGlzLnByZXZpZXdPclNlbmQoXG4gICAgICAgIG1lc3NhZ2VzIGFzIEFycmF5PHsgdG86IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+LFxuICAgICAgICBmbGFncyxcbiAgICAgICAgcmVzcG9uc2UudXBsb2FkLmlkLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2aWV3IG9yIHNlbmQgdGhlIGJhdGNoXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByZXZpZXdPclNlbmQoXG4gICAgbWVzc2FnZXM6IEFycmF5PHsgdG86IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+LFxuICAgIGZsYWdzOiB7IGZyb20/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmc7IFwiZHJ5LXJ1blwiPzogYm9vbGVhbiB9LFxuICAgIHVwbG9hZElkPzogc3RyaW5nLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBDaGVjayBiYXRjaCBzaXplXG4gICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDEwMDApIHtcbiAgICAgIGVycm9yKFwiQmF0Y2ggc2l6ZSBjYW5ub3QgZXhjZWVkIDEwMDAgbWVzc2FnZXNcIiwge1xuICAgICAgICBoaW50OiBcIlNwbGl0IHlvdXIgbWVzc2FnZXMgaW50byBzbWFsbGVyIGJhdGNoZXNcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBkcnktcnVuIG1vZGVcbiAgICBpZiAoZmxhZ3NbXCJkcnktcnVuXCJdKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaG93UHJldmlldyhtZXNzYWdlcywgZmxhZ3MpO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIGJhdGNoXG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoYFNlbmRpbmcgJHttZXNzYWdlcy5sZW5ndGh9IG1lc3NhZ2VzLi4uYCk7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8QmF0Y2hSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlcy9iYXRjaFwiLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZXMsXG4gICAgICAgICAgbWVzc2FnZVR5cGU6IGZsYWdzLnR5cGUsXG4gICAgICAgICAgLi4uKGZsYWdzLmZyb20gJiYgeyBmcm9tOiBmbGFncy5mcm9tIH0pLFxuICAgICAgICAgIC4uLih1cGxvYWRJZCAmJiB7IHVwbG9hZElkIH0pLCAvLyBMaW5rIHRvIGZpbGUgdXBsb2FkIGZvciBhdWRpdCB0cmFpbFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIHN1Y2Nlc3MgbGV2ZWxcbiAgICAgIGNvbnN0IGFsbFN1Y2NlZWRlZCA9IHJlc3BvbnNlLmZhaWxlZCA9PT0gMDtcbiAgICAgIGNvbnN0IGFsbEZhaWxlZCA9IHJlc3BvbnNlLnNlbnQgPT09IDAgJiYgcmVzcG9uc2UuZmFpbGVkID4gMDtcbiAgICAgIGNvbnN0IHBhcnRpYWxTdWNjZXNzID0gcmVzcG9uc2Uuc2VudCA+IDAgJiYgcmVzcG9uc2UuZmFpbGVkID4gMDtcblxuICAgICAgaWYgKGFsbFN1Y2NlZWRlZCkge1xuICAgICAgICBzdWNjZXNzKFwiQmF0Y2ggc2VudCBzdWNjZXNzZnVsbHlcIiwge1xuICAgICAgICAgIFwiQmF0Y2ggSURcIjogcmVzcG9uc2UuYmF0Y2hJZCxcbiAgICAgICAgICBUb3RhbDogcmVzcG9uc2UudG90YWwsXG4gICAgICAgICAgU2VudDogY29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHJlc3BvbnNlLnNlbnQpKSxcbiAgICAgICAgICBcIkNyZWRpdHMgVXNlZFwiOiByZXNwb25zZS5jcmVkaXRzVXNlZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGFsbEZhaWxlZCkge1xuICAgICAgICBlcnJvcihcIkJhdGNoIGZhaWxlZFwiLCB7XG4gICAgICAgICAgaGludDogYEFsbCAke3Jlc3BvbnNlLmZhaWxlZH0gbWVzc2FnZXMgZmFpbGVkIHRvIHNlbmRgLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICBCYXRjaCBJRDogJHtyZXNwb25zZS5iYXRjaElkfWApKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmRpbShgICBDcmVkaXRzIFJlZnVuZGVkOiAke3Jlc3BvbnNlLmNyZWRpdHNSZWZ1bmRlZH1gKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAocGFydGlhbFN1Y2Nlc3MpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLndhcm5pbmcoXCJcXG7imqDvuI8gIEJhdGNoIGNvbXBsZXRlZCB3aXRoIGVycm9yc1xcblwiKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIEJhdGNoIElEOiAgICAgICAgICR7cmVzcG9uc2UuYmF0Y2hJZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgVG90YWw6ICAgICAgICAgICAgJHtyZXNwb25zZS50b3RhbH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYCAgU2VudDogICAgICAgICAgICAgJHtjb2xvcnMuc3VjY2VzcyhTdHJpbmcocmVzcG9uc2Uuc2VudCkpfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIEZhaWxlZDogICAgICAgICAgICR7Y29sb3JzLmVycm9yKFN0cmluZyhyZXNwb25zZS5mYWlsZWQpKX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBDcmVkaXRzIFVzZWQ6ICAgICAke3Jlc3BvbnNlLmNyZWRpdHNVc2VkfWApO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBDcmVkaXRzIFJlZnVuZGVkOiAke3Jlc3BvbnNlLmNyZWRpdHNSZWZ1bmRlZH1gKTtcblxuICAgICAgICAvLyBTaG93IGZhaWxlZCBtZXNzYWdlcyBpZiBhdmFpbGFibGVcbiAgICAgICAgaWYgKHJlc3BvbnNlLm1lc3NhZ2VzKSB7XG4gICAgICAgICAgY29uc3QgZmFpbGVkTXNncyA9IHJlc3BvbnNlLm1lc3NhZ2VzLmZpbHRlcihcbiAgICAgICAgICAgIChtKSA9PiBtLnN0YXR1cyA9PT0gXCJmYWlsZWRcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChmYWlsZWRNc2dzLmxlbmd0aCA+IDAgJiYgZmFpbGVkTXNncy5sZW5ndGggPD0gNSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIlxcbiAgRmFpbGVkIG1lc3NhZ2VzOlwiKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiBmYWlsZWRNc2dzKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGNvbG9ycy5kaW0oYCAgICAke21zZy50b306ICR7bXNnLmVycm9yIHx8IFwiVW5rbm93biBlcnJvclwifWApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoZmFpbGVkTXNncy5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICBgXFxuICAke2ZhaWxlZE1zZ3MubGVuZ3RofSBtZXNzYWdlcyBmYWlsZWQuIFVzZSAtLWpzb24gZm9yIGRldGFpbHMuYCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBiYXRjaCBwcmV2aWV3IChkcnktcnVuIG1vZGUpXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNob3dQcmV2aWV3KFxuICAgIG1lc3NhZ2VzOiBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PixcbiAgICBmbGFnczogeyB0eXBlPzogc3RyaW5nIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiQW5hbHl6aW5nIGJhdGNoLi4uXCIpLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJldmlldyA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEJhdGNoUHJldmlld1Jlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL21lc3NhZ2VzL2JhdGNoL3ByZXZpZXdcIixcbiAgICAgICAgeyBtZXNzYWdlcywgbWVzc2FnZVR5cGU6IGZsYWdzLnR5cGUgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocHJldmlldyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gU2hvdyBjb21wcmVoZW5zaXZlIHByZXZpZXdcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiXFxu8J+TiiBCYXRjaCBQcmV2aWV3IChEcnkgUnVuKVxcblwiKSk7XG5cbiAgICAgIC8vIFN1bW1hcnkgdGFibGVcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCLilIBcIi5yZXBlYXQoNTApKSk7XG4gICAgICBjb25zb2xlLmxvZyhgVG90YWwgbWVzc2FnZXM6ICAgICAke3ByZXZpZXcudG90YWx9YCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFNlbmRhYmxlOiAgICAgICAgICAgJHtjb2xvcnMuc3VjY2VzcyhTdHJpbmcocHJldmlldy5zZW5kYWJsZSkpfWAsXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBCbG9ja2VkOiAgICAgICAgICAgICR7cHJldmlldy5ibG9ja2VkID4gMCA/IGNvbG9ycy5lcnJvcihTdHJpbmcocHJldmlldy5ibG9ja2VkKSkgOiBcIjBcIn1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKGBEdXBsaWNhdGVzIHJlbW92ZWQ6ICR7cHJldmlldy5kdXBsaWNhdGVzfWApO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIuKUgFwiLnJlcGVhdCg1MCkpKTtcblxuICAgICAgLy8gQ3JlZGl0c1xuICAgICAgY29uc29sZS5sb2coYFxcbkNyZWRpdHMgbmVlZGVkOiAgICAgJHtwcmV2aWV3LmNyZWRpdHNOZWVkZWR9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgWW91ciBiYWxhbmNlOiAgICAgICAke3ByZXZpZXcuY3JlZGl0QmFsYW5jZX1gKTtcbiAgICAgIGlmICghcHJldmlldy5oYXNTdWZmaWNpZW50Q3JlZGl0cykge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBjb2xvcnMuZXJyb3IoXG4gICAgICAgICAgICBg4pqg77iPICBJbnN1ZmZpY2llbnQgY3JlZGl0cyEgTmVlZCAke3ByZXZpZXcuY3JlZGl0c05lZWRlZCAtIHByZXZpZXcuY3JlZGl0QmFsYW5jZX0gbW9yZS5gLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFjY2VzcyBpbmZvXG4gICAgICBjb25zb2xlLmxvZyhgXFxuQVBJIEtleSB0eXBlOiAgICAgICAke3ByZXZpZXcua2V5VHlwZS50b1VwcGVyQ2FzZSgpfWApO1xuICAgICAgY29uc29sZS5sb2coYFdyaXRlIGFjY2VzczogICAgICAgJHtwcmV2aWV3Lmhhc1dyaXRlU2NvcGUgPyBcIuKck1wiIDogXCLinJdcIn1gKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgRG9tZXN0aWMgKFVTL0NBKTogICAke3ByZXZpZXcubWVzc2FnaW5nUHJvZmlsZS5jYW5TZW5kRG9tZXN0aWMgPyBcIuKck1wiIDogXCLinJdcIn1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgSW50ZXJuYXRpb25hbDogICAgICAke3ByZXZpZXcubWVzc2FnaW5nUHJvZmlsZS5jYW5TZW5kSW50ZXJuYXRpb25hbCA/IFwi4pyTXCIgOiBcIuKcl1wifWAsXG4gICAgICApO1xuXG4gICAgICAvLyBDb3VudHJ5IGJyZWFrZG93blxuICAgICAgY29uc3QgY291bnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJldmlldy5ieUNvdW50cnkpO1xuICAgICAgaWYgKGNvdW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiXFxu8J+TjSBCeSBDb3VudHJ5OlxcblwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgW2NvdW50cnksIGRhdGFdIG9mIGNvdW50cmllcykge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGRhdGEuYWxsb3dlZCA/IGNvbG9ycy5zdWNjZXNzKFwi4pyTXCIpIDogY29sb3JzLmVycm9yKFwi4pyXXCIpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYCAgJHtzdGF0dXN9ICR7Y291bnRyeX06ICR7ZGF0YS5jb3VudH0gbXNncywgJHtkYXRhLmNyZWRpdHN9IGNyZWRpdHMgKCR7ZGF0YS50aWVyfSlgLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFkYXRhLmFsbG93ZWQgJiYgZGF0YS5ibG9ja2VkUmVhc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKGAgICAgIOKUlOKUgCAke2RhdGEuYmxvY2tlZFJlYXNvbn1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENvbXBsaWFuY2UgY2hlY2sgcmVzdWx0c1xuICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfm6HvuI8gIENvbXBsaWFuY2UgQ2hlY2s6XFxuXCIpKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYCAgTWVzc2FnZSBUeXBlOiAgICAgICR7cHJldmlldy5jb21wbGlhbmNlLm1lc3NhZ2VUeXBlLnRvVXBwZXJDYXNlKCl9YCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocHJldmlldy5jb21wbGlhbmNlLnNoYWZ0QmxvY2tlZCA+IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5lcnJvcihcbiAgICAgICAgICAgICAgYCAgU0hBRlQgQmxvY2tlZDogICAgICR7cHJldmlldy5jb21wbGlhbmNlLnNoYWZ0QmxvY2tlZH0gbWVzc2FnZXNgLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGZvciAoY29uc3QgbXNnIG9mIHByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWRNZXNzYWdlcy5zbGljZShcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAzLFxuICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICAgIGAgICAgIOKUlOKUgCAke21zZy50b306ICR7bXNnLmNhdGVnb3J5fSAoJHttc2cubWF0Y2hlZFRlcm1zLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgYCAgICAgLi4uIGFuZCAke3ByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWRNZXNzYWdlcy5sZW5ndGggLSAzfSBtb3JlYCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY29sb3JzLnN1Y2Nlc3MoXG4gICAgICAgICAgICAgIFwiICBTSEFGVCBDaGVjazogICAgICAg4pyTIEFsbCBtZXNzYWdlcyBwYXNzIGNvbnRlbnQgZmlsdGVyXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldmlldy5jb21wbGlhbmNlLm1lc3NhZ2VUeXBlID09PSBcIm1hcmtldGluZ1wiKSB7XG4gICAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzUmVzY2hlZHVsZWQgPiAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgYCAgUXVpZXQgSG91cnM6ICAgICAgICR7cHJldmlldy5jb21wbGlhbmNlLnF1aWV0SG91cnNSZXNjaGVkdWxlZH0gbWVzc2FnZXMgd2lsbCBiZSByZXNjaGVkdWxlZGAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgb2YgcHJldmlldy5jb21wbGlhbmNlLnF1aWV0SG91cnNCbG9ja2VkTWVzc2FnZXMuc2xpY2UoXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDMsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5leHRUaW1lID0gbXNnLm5leHRBbGxvd2VkVGltZVxuICAgICAgICAgICAgICAgID8gbmV3IERhdGUobXNnLm5leHRBbGxvd2VkVGltZSkudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgICAgICAgICAgIDogXCJuZXh0IGF2YWlsYWJsZSB3aW5kb3dcIjtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICAgIGAgICAgIOKUlOKUgCAke21zZy50b306ICR7bXNnLnJlY2lwaWVudFRpbWV6b25lfSDihpIgJHtuZXh0VGltZX1gLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldmlldy5jb21wbGlhbmNlLnF1aWV0SG91cnNCbG9ja2VkTWVzc2FnZXMubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICAgICAgYCAgICAgLi4uIGFuZCAke3ByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCAtIDN9IG1vcmVgLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBjb2xvcnMuc3VjY2VzcyhcbiAgICAgICAgICAgICAgICBcIiAgUXVpZXQgSG91cnM6ICAgICAgIOKckyBBbGwgcmVjaXBpZW50cyB3aXRoaW4gYWxsb3dlZCBob3Vyc1wiLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKFwiICBRdWlldCBIb3VyczogICAgICAgQnlwYXNzZWQgKHRyYW5zYWN0aW9uYWwgbWVzc2FnZSlcIiksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBXYXJuaW5nc1xuICAgICAgaWYgKHByZXZpZXcud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMud2FybmluZyhcIlxcbuKaoO+4jyAgV2FybmluZ3M6XCIpKTtcbiAgICAgICAgZm9yIChjb25zdCB3IG9mIHByZXZpZXcud2FybmluZ3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAg4oCiICR7d31gKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCbG9ja2VkIG1lc3NhZ2VzIChmaXJzdCA1KVxuICAgICAgaWYgKHByZXZpZXcuYmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmVycm9yKFxuICAgICAgICAgICAgYFxcbuKdjCBCbG9ja2VkIE1lc3NhZ2VzICgke3ByZXZpZXcuYmxvY2tlZE1lc3NhZ2VzLmxlbmd0aH0gdG90YWwpOmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBiIG9mIHByZXZpZXcuYmxvY2tlZE1lc3NhZ2VzLnNsaWNlKDAsIDUpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgICR7Yi50b306ICR7Yi5yZWFzb259YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXZpZXcuYmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5kaW0oYCAgIC4uLiBhbmQgJHtwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggLSA1fSBtb3JlYCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgXCJcXG5cIiArIGNvbG9ycy5kaW0oXCJObyBtZXNzYWdlcyB3ZXJlIHNlbnQuIFJlbW92ZSAtLWRyeS1ydW4gdG8gc2VuZC5cIiksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBieXRlcyB0byBodW1hbiByZWFkYWJsZSBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcbiAgICBpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQpLnRvRml4ZWQoMSl9IEtCYDtcbiAgICByZXR1cm4gYCR7KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKX0gTUJgO1xuICB9XG59XG4iXX0=
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2JhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sRUFDTixJQUFJLEVBQ0osVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUErRzdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sUUFBUyxTQUFRLG9CQUFvQjtJQUN4RCxNQUFNLENBQUMsV0FBVyxHQUNoQixnRUFBZ0UsQ0FBQztJQUVuRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLG1EQUFtRDtRQUNuRCx3RUFBd0U7UUFDeEUsNEVBQTRFO1FBQzVFLDZEQUE2RDtRQUM3RCx1RkFBdUY7UUFDdkYsbURBQW1EO1FBQ25ELHVDQUF1QztLQUN4QyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx5REFBeUQ7WUFDdEUsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7U0FDdEMsQ0FBQztRQUNGLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFX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RSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEJhdGNoVXBsb2FkUmVzcG9uc2Uge1xuICB1cGxvYWQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB9O1xuICB2YWxpZGF0aW9uOiB7XG4gICAgdG90YWxSb3dzOiBudW1iZXI7XG4gICAgdmFsaWRDb3VudDogbnVtYmVyO1xuICAgIGludmFsaWRDb3VudDogbnVtYmVyO1xuICAgIGR1cGxpY2F0ZXNSZW1vdmVkOiBudW1iZXI7XG4gICAgaGFzSGVhZGVyOiBib29sZWFuO1xuICB9O1xuICByZWNpcGllbnRzOiBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ/OiBzdHJpbmcgfT47XG4gIGVycm9yczogQXJyYXk8eyByb3c6IG51bWJlcjsgcGhvbmU6IHN0cmluZzsgZXJyb3I6IHN0cmluZyB9PjtcbiAgaGFzTW9yZUVycm9yczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEJhdGNoSGlzdG9yeVJlc3BvbnNlIHtcbiAgdXBsb2FkczogQXJyYXk8e1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHRvdGFsUm93czogbnVtYmVyO1xuICAgICAgdmFsaWRDb3VudDogbnVtYmVyO1xuICAgICAgaW52YWxpZENvdW50OiBudW1iZXI7XG4gICAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgfTtcbiAgfT47XG59XG5cbmludGVyZmFjZSBCYXRjaFJlc3BvbnNlIHtcbiAgYmF0Y2hJZDogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBzZW50OiBudW1iZXI7XG4gIHF1ZXVlZDogbnVtYmVyO1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlZGl0c1JlZnVuZGVkOiBudW1iZXI7XG4gIHN0YXR1czogc3RyaW5nO1xuICBtZXNzYWdlcz86IEFycmF5PHtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRvOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICAgIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgICBkZWxpdmVyZWRBdD86IHN0cmluZyB8IG51bGw7XG4gIH0+O1xufVxuXG5pbnRlcmZhY2UgQmF0Y2hQcmV2aWV3UmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyO1xuICBzZW5kYWJsZTogbnVtYmVyO1xuICBibG9ja2VkOiBudW1iZXI7XG4gIGR1cGxpY2F0ZXM6IG51bWJlcjtcbiAgY3JlZGl0c05lZWRlZDogbnVtYmVyO1xuICBjcmVkaXRCYWxhbmNlOiBudW1iZXI7XG4gIGhhc1N1ZmZpY2llbnRDcmVkaXRzOiBib29sZWFuO1xuICBrZXlUeXBlOiBcInRlc3RcIiB8IFwibGl2ZVwiO1xuICBrZXlTY29wZXM6IHN0cmluZ1tdO1xuICBoYXNXcml0ZVNjb3BlOiBib29sZWFuO1xuICBtZXNzYWdpbmdQcm9maWxlOiB7XG4gICAgaWQ6IHN0cmluZyB8IG51bGw7XG4gICAgY2FuU2VuZERvbWVzdGljOiBib29sZWFuO1xuICAgIGNhblNlbmRJbnRlcm5hdGlvbmFsOiBib29sZWFuO1xuICAgIHZlcmlmaWNhdGlvblN0YXR1czogc3RyaW5nIHwgbnVsbDtcbiAgICB2ZXJpZmljYXRpb25UeXBlOiBzdHJpbmcgfCBudWxsO1xuICB9O1xuICBieUNvdW50cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIGNyZWRpdHM6IG51bWJlcjtcbiAgICAgIHRpZXI6IHN0cmluZztcbiAgICAgIGFsbG93ZWQ6IGJvb2xlYW47XG4gICAgICBibG9ja2VkUmVhc29uPzogc3RyaW5nO1xuICAgIH1cbiAgPjtcbiAgYmxvY2tlZE1lc3NhZ2VzOiBBcnJheTx7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICB0bzogc3RyaW5nO1xuICAgIHJlYXNvbjogc3RyaW5nO1xuICB9PjtcbiAgY29tcGxpYW5jZToge1xuICAgIG1lc3NhZ2VUeXBlOiBcIm1hcmtldGluZ1wiIHwgXCJ0cmFuc2FjdGlvbmFsXCI7XG4gICAgc2hhZnRCbG9ja2VkOiBudW1iZXI7XG4gICAgcXVpZXRIb3Vyc0Jsb2NrZWQ6IG51bWJlcjtcbiAgICBxdWlldEhvdXJzUmVzY2hlZHVsZWQ6IG51bWJlcjtcbiAgICBzaGFmdEJsb2NrZWRNZXNzYWdlczogQXJyYXk8e1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgICAgbWF0Y2hlZFRlcm1zOiBzdHJpbmdbXTtcbiAgICB9PjtcbiAgICBxdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzOiBBcnJheTx7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgdG86IHN0cmluZztcbiAgICAgIHJlY2lwaWVudFRpbWV6b25lOiBzdHJpbmc7XG4gICAgICByZWNpcGllbnRMb2NhbFRpbWU6IHN0cmluZztcbiAgICAgIG5leHRBbGxvd2VkVGltZT86IHN0cmluZztcbiAgICB9PjtcbiAgfTtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNCYXRjaCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlNlbmQgYmF0Y2ggU01TIG1lc3NhZ2VzICh1cGxvYWRzIENTViB0byBjbG91ZCBmb3IgYXVkaXQgdHJhaWwpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tZmlsZSByZWNpcGllbnRzLmNzdlwiLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1maWxlIHBob25lcy5jc3YgLS10ZXh0IFwiSGVsbG8gZXZlcnlvbmUhXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS10byArMTU1NTEyMzQ1NjcsKzE1NTU5ODc2NTQzIC0tdGV4dCBcIkhlbGxvIVwiJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWZpbGUgcmVjaXBpZW50cy5jc3YgLS1kcnktcnVuXCIsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWZpbGUgcGhvbmVzLmNzdiAtLXRleHQgXCJDb2RlOiAxMjNcIiAtLXR5cGUgdHJhbnNhY3Rpb25hbCcsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1yZXVzZSBhYmMxMjMtZGVmNDU2XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1oaXN0b3J5XCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBmaWxlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJGXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDU1YgZmlsZSB3aXRoIHBob25lIG51bWJlcnMgKGFuZCBvcHRpb25hbCBtZXNzYWdlIHRleHQpXCIsXG4gICAgICBleGNsdXNpdmU6IFtcInRvXCIsIFwicmV1c2VcIiwgXCJoaXN0b3J5XCJdLFxuICAgIH0pLFxuICAgIHRvOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb21tYS1zZXBhcmF0ZWQgcmVjaXBpZW50IHBob25lIG51bWJlcnMgKEUuMTY0IGZvcm1hdClcIixcbiAgICAgIGV4Y2x1c2l2ZTogW1wiZmlsZVwiLCBcInJldXNlXCIsIFwiaGlzdG9yeVwiXSxcbiAgICB9KSxcbiAgICB0ZXh0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJtXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNZXNzYWdlIHRleHQgKHJlcXVpcmVkIHdpdGggLS10bywgb3B0aW9uYWwgd2l0aCAtLWZpbGUgaWYgQ1NWIGhhcyB0ZXh0IGNvbHVtbilcIixcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgSUQgb3IgcGhvbmUgbnVtYmVyIGZvciBhbGwgbWVzc2FnZXNcIixcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWVzc2FnZSB0eXBlOiBtYXJrZXRpbmcgKGRlZmF1bHQpIG9yIHRyYW5zYWN0aW9uYWwuIFRyYW5zYWN0aW9uYWwgYnlwYXNzZXMgcXVpZXQgaG91cnMuXCIsXG4gICAgICBvcHRpb25zOiBbXCJtYXJrZXRpbmdcIiwgXCJ0cmFuc2FjdGlvbmFsXCJdLFxuICAgICAgZGVmYXVsdDogXCJtYXJrZXRpbmdcIixcbiAgICB9KSxcbiAgICBcImRyeS1ydW5cIjogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcImRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlByZXZpZXcgYmF0Y2ggd2l0aG91dCBzZW5kaW5nICh2YWxpZGF0ZXMgYWNjZXNzLCBzaG93cyBjb3N0IGFuZCBjb21wbGlhbmNlIGJyZWFrZG93bilcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICAgIHJldXNlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUmUtdXNlIGEgcHJldmlvdXMgYmF0Y2ggdXBsb2FkIGJ5IElEIChzZWUgLS1oaXN0b3J5KVwiLFxuICAgICAgZXhjbHVzaXZlOiBbXCJmaWxlXCIsIFwidG9cIiwgXCJoaXN0b3J5XCJdLFxuICAgIH0pLFxuICAgIGhpc3Rvcnk6IEZsYWdzLmJvb2xlYW4oe1xuICAgICAgZGVzY3JpcHRpb246IFwiU2hvdyByZWNlbnQgYmF0Y2ggdXBsb2FkIGhpc3RvcnlcIixcbiAgICAgIGV4Y2x1c2l2ZTogW1wiZmlsZVwiLCBcInRvXCIsIFwicmV1c2VcIl0sXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShTbXNCYXRjaCk7XG5cbiAgICAvLyBIYW5kbGUgaGlzdG9yeSBzdWJjb21tYW5kXG4gICAgaWYgKGZsYWdzLmhpc3RvcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dIaXN0b3J5KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJldXNlIHN1YmNvbW1hbmRcbiAgICBpZiAoZmxhZ3MucmV1c2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldXNlQmF0Y2goZmxhZ3MucmV1c2UsIGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgLS10byBmbGFnIChpbmxpbmUgcmVjaXBpZW50cywgbm8gdXBsb2FkIG5lZWRlZClcbiAgICBpZiAoZmxhZ3MudG8pIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbmRJbmxpbmVSZWNpcGllbnRzKGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgLS1maWxlIGZsYWcgKHVwbG9hZCB0byBSMilcbiAgICBpZiAoZmxhZ3MuZmlsZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBsb2FkQW5kU2VuZChmbGFncyk7XG4gICAgfVxuXG4gICAgZXJyb3IoXCJFaXRoZXIgLS1maWxlLCAtLXRvLCAtLXJldXNlLCBvciAtLWhpc3RvcnkgaXMgcmVxdWlyZWRcIik7XG4gICAgdGhpcy5leGl0KDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYmF0Y2ggdXBsb2FkIGhpc3RvcnlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2hvd0hpc3RvcnkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJGZXRjaGluZyBiYXRjaCBoaXN0b3J5Li4uXCIpLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PEJhdGNoSGlzdG9yeVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL2NsaS9iYXRjaC9oaXN0b3J5XCIsXG4gICAgICAgIHsgbGltaXQ6IDE1IH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2UudXBsb2Fkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIlxcbk5vIGJhdGNoIHVwbG9hZHMgZm91bmQuXFxuXCIpKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJVcGxvYWQgYSBDU1YgZmlsZSB3aXRoOiBzZW5kbHkgc21zIGJhdGNoIC0tZmlsZSB5b3VyLmNzdlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk4EgUmVjZW50IEJhdGNoIFVwbG9hZHNcXG5cIikpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIuKUgFwiLnJlcGVhdCg4MCkpKTtcblxuICAgICAgZm9yIChjb25zdCB1cGxvYWQgb2YgcmVzcG9uc2UudXBsb2Fkcykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodXBsb2FkLmNyZWF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZm9ybWF0Qnl0ZXModXBsb2FkLnNpemUpO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB1cGxvYWQubWV0YWRhdGE/LnNvdXJjZSA9PT0gXCJjbGlcIiA/IFwiQ0xJXCIgOiBcIldlYlwiO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAke2NvbG9ycy5pbmZvKHVwbG9hZC5pZC5zbGljZSgwLCA4KSl9ICAke3VwbG9hZC5maWxlbmFtZX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgYCAgICR7ZGF0ZX0gfCAke3NpemV9IHwgJHt1cGxvYWQubWV0YWRhdGE/LnZhbGlkQ291bnQgfHwgMH0gdmFsaWQgcmVjaXBpZW50cyB8ICR7c291cmNlfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIuKUgFwiLnJlcGVhdCg4MCkpKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuZGltKFwiXFxuUmUtdXNlIGEgYmF0Y2g6IHNlbmRseSBzbXMgYmF0Y2ggLS1yZXVzZSA8aWQ+XCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS11c2UgYSBwcmV2aW91cyBiYXRjaCB1cGxvYWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmV1c2VCYXRjaChcbiAgICB1cGxvYWRJZDogc3RyaW5nLFxuICAgIGZsYWdzOiB7IHRleHQ/OiBzdHJpbmc7IGZyb20/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmc7IFwiZHJ5LXJ1blwiPzogYm9vbGVhbiB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkZldGNoaW5nIGJhdGNoIGRhdGEuLi5cIikuc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8QmF0Y2hVcGxvYWRSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL2NsaS9iYXRjaC9yZXVzZS8ke3VwbG9hZElkfWAsXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5zdWNjZXNzKGBcXG7inJMgTG9hZGVkIGJhdGNoOiAke3Jlc3BvbnNlLnVwbG9hZC5maWxlbmFtZX1gKSxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBgICAke3Jlc3BvbnNlLnZhbGlkYXRpb24udmFsaWRDb3VudH0gdmFsaWQgcmVjaXBpZW50cyBmcm9tICR7cmVzcG9uc2UudmFsaWRhdGlvbi50b3RhbFJvd3N9IHJvd3NgLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgLy8gQXBwbHkgc2hhcmVkIHRleHQgaWYgcHJvdmlkZWRcbiAgICAgIGxldCBtZXNzYWdlcyA9IHJlc3BvbnNlLnJlY2lwaWVudHM7XG4gICAgICBpZiAoZmxhZ3MudGV4dCkge1xuICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB0bzogci50byxcbiAgICAgICAgICB0ZXh0OiByLnRleHQgfHwgZmxhZ3MudGV4dCxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBhbGwgbWVzc2FnZXMgaGF2ZSB0ZXh0XG4gICAgICBjb25zdCBtaXNzaW5nVGV4dCA9IG1lc3NhZ2VzLmZpbHRlcigobSkgPT4gIW0udGV4dD8udHJpbSgpKTtcbiAgICAgIGlmIChtaXNzaW5nVGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9yKFxuICAgICAgICAgIGAke21pc3NpbmdUZXh0Lmxlbmd0aH0gcmVjaXBpZW50cyBtaXNzaW5nIG1lc3NhZ2UgdGV4dC4gVXNlIC0tdGV4dCB0byBwcm92aWRlIGEgZGVmYXVsdC5gLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2NlZWQgd2l0aCBwcmV2aWV3IG9yIHNlbmRcbiAgICAgIGF3YWl0IHRoaXMucHJldmlld09yU2VuZChcbiAgICAgICAgbWVzc2FnZXMgYXMgQXJyYXk8eyB0bzogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4sXG4gICAgICAgIGZsYWdzLFxuICAgICAgICByZXNwb25zZS51cGxvYWQuaWQsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgdG8gaW5saW5lIHJlY2lwaWVudHMgKC0tdG8gZmxhZylcbiAgICogVGhpcyBwYXRoIGRvZXNuJ3QgdXBsb2FkIHRvIFIyIHNpbmNlIGl0J3MganVzdCBhIGZldyBudW1iZXJzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNlbmRJbmxpbmVSZWNpcGllbnRzKGZsYWdzOiB7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICBmcm9tPzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgXCJkcnktcnVuXCI/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFmbGFncy50ZXh0KSB7XG4gICAgICBlcnJvcihcIi0tdGV4dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIC0tdG9cIik7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGhvbmVzID0gZmxhZ3MudG8hLnNwbGl0KFwiLFwiKS5tYXAoKHApID0+IHAudHJpbSgpKTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHBob25lcy5tYXAoKHBob25lKSA9PiAoe1xuICAgICAgdG86IHBob25lLnN0YXJ0c1dpdGgoXCIrXCIpID8gcGhvbmUgOiBgKyR7cGhvbmV9YCxcbiAgICAgIHRleHQ6IGZsYWdzLnRleHQhLFxuICAgIH0pKTtcblxuICAgIC8vIFZhbGlkYXRlIHBob25lIG51bWJlcnNcbiAgICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlcykge1xuICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChtc2cudG8pKSB7XG4gICAgICAgIGVycm9yKGBJbnZhbGlkIHBob25lIG51bWJlcjogJHttc2cudG99YCwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5wcmV2aWV3T3JTZW5kKG1lc3NhZ2VzLCBmbGFncyk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIENTViB0byBSMiBhbmQgc2VuZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRBbmRTZW5kKGZsYWdzOiB7XG4gICAgZmlsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIGZyb20/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBcImRyeS1ydW5cIj86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGZsYWdzLmZpbGUhO1xuXG4gICAgLy8gQ2hlY2sgZmlsZSBleGlzdHNcbiAgICBpZiAoIWV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgICBlcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZmlsZSBleHRlbnNpb25cbiAgICBpZiAoIWZpbGVQYXRoLmVuZHNXaXRoKFwiLmNzdlwiKSkge1xuICAgICAgZXJyb3IoXCJPbmx5IENTViBmaWxlcyBhcmUgc3VwcG9ydGVkXCIsIHtcbiAgICAgICAgaGludDogXCJDb252ZXJ0IHlvdXIgZmlsZSB0byBDU1YgZm9ybWF0IHdpdGggY29sdW1uczogcGhvbmUsbWVzc2FnZVwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBmaWxlXG4gICAgY29uc3QgYnVmZmVyID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGJhc2VuYW1lKGZpbGVQYXRoKTtcblxuICAgIC8vIENoZWNrIGZpbGUgc2l6ZSAoNU1CIGxpbWl0KVxuICAgIGlmIChidWZmZXIubGVuZ3RoID4gNSAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICBlcnJvcihcIkZpbGUgdG9vIGxhcmdlIChtYXggNU1CKVwiLCB7XG4gICAgICAgIGhpbnQ6IFwiU3BsaXQgeW91ciBDU1YgaW50byBzbWFsbGVyIGZpbGVzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihgVXBsb2FkaW5nICR7ZmlsZW5hbWV9Li4uYCkuc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBVcGxvYWQgdG8gUjIgdmlhIENMSSBlbmRwb2ludFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQudXBsb2FkRmlsZTxCYXRjaFVwbG9hZFJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL2NsaS9iYXRjaC91cGxvYWRcIixcbiAgICAgICAgeyBidWZmZXIsIGZpbGVuYW1lLCBtaW1ldHlwZTogXCJ0ZXh0L2NzdlwiIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgLy8gU2hvdyB1cGxvYWQgc3VtbWFyeVxuICAgICAgY29uc29sZS5sb2coY29sb3JzLnN1Y2Nlc3MoYFxcbuKckyBVcGxvYWRlZDogJHtyZXNwb25zZS51cGxvYWQuZmlsZW5hbWV9YCkpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICBVcGxvYWQgSUQ6ICR7cmVzcG9uc2UudXBsb2FkLmlkfWApKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgIGAgICR7cmVzcG9uc2UudmFsaWRhdGlvbi52YWxpZENvdW50fSB2YWxpZCAvICR7cmVzcG9uc2UudmFsaWRhdGlvbi5pbnZhbGlkQ291bnR9IGludmFsaWQgLyAke3Jlc3BvbnNlLnZhbGlkYXRpb24uZHVwbGljYXRlc1JlbW92ZWR9IGR1cGxpY2F0ZXMgcmVtb3ZlZGAsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICAvLyBTaG93IHZhbGlkYXRpb24gZXJyb3JzIGlmIGFueVxuICAgICAgaWYgKHJlc3BvbnNlLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy53YXJuaW5nKGBcXG7imqDvuI8gIFZhbGlkYXRpb24gZXJyb3JzOmApKTtcbiAgICAgICAgZm9yIChjb25zdCBlcnIgb2YgcmVzcG9uc2UuZXJyb3JzLnNsaWNlKDAsIDUpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKGAgICBSb3cgJHtlcnIucm93fTogJHtlcnIucGhvbmV9IC0gJHtlcnIuZXJyb3J9YCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2UuaGFzTW9yZUVycm9ycykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgYCAgIC4uLiBhbmQgJHtyZXNwb25zZS52YWxpZGF0aW9uLmludmFsaWRDb3VudCAtIDV9IG1vcmUgZXJyb3JzYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2UucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXJyb3IoXCJObyB2YWxpZCByZWNpcGllbnRzIGZvdW5kIGluIENTVlwiKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBzaGFyZWQgdGV4dCBpZiBwcm92aWRlZFxuICAgICAgbGV0IG1lc3NhZ2VzID0gcmVzcG9uc2UucmVjaXBpZW50cztcbiAgICAgIGlmIChmbGFncy50ZXh0KSB7XG4gICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMubWFwKChyKSA9PiAoe1xuICAgICAgICAgIHRvOiByLnRvLFxuICAgICAgICAgIHRleHQ6IHIudGV4dCB8fCBmbGFncy50ZXh0LFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGFsbCBtZXNzYWdlcyBoYXZlIHRleHRcbiAgICAgIGNvbnN0IG1pc3NpbmdUZXh0ID0gbWVzc2FnZXMuZmlsdGVyKChtKSA9PiAhbS50ZXh0Py50cmltKCkpO1xuICAgICAgaWYgKG1pc3NpbmdUZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXJyb3IoXG4gICAgICAgICAgYCR7bWlzc2luZ1RleHQubGVuZ3RofSByZWNpcGllbnRzIG1pc3NpbmcgbWVzc2FnZSB0ZXh0LiBVc2UgLS10ZXh0IHRvIHByb3ZpZGUgYSBkZWZhdWx0LmAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICBcIlxcbkNTViBzaG91bGQgaGF2ZSBjb2x1bW5zOiBwaG9uZSxtZXNzYWdlIE9SIHVzZSAtLXRleHQgZmxhZ1wiLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VlZCB3aXRoIHByZXZpZXcgb3Igc2VuZFxuICAgICAgYXdhaXQgdGhpcy5wcmV2aWV3T3JTZW5kKFxuICAgICAgICBtZXNzYWdlcyBhcyBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PixcbiAgICAgICAgZmxhZ3MsXG4gICAgICAgIHJlc3BvbnNlLnVwbG9hZC5pZCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJldmlldyBvciBzZW5kIHRoZSBiYXRjaFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmV2aWV3T3JTZW5kKFxuICAgIG1lc3NhZ2VzOiBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PixcbiAgICBmbGFnczogeyBmcm9tPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nOyBcImRyeS1ydW5cIj86IGJvb2xlYW4gfSxcbiAgICB1cGxvYWRJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQ2hlY2sgYmF0Y2ggc2l6ZVxuICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPiAxMDAwKSB7XG4gICAgICBlcnJvcihcIkJhdGNoIHNpemUgY2Fubm90IGV4Y2VlZCAxMDAwIG1lc3NhZ2VzXCIsIHtcbiAgICAgICAgaGludDogXCJTcGxpdCB5b3VyIG1lc3NhZ2VzIGludG8gc21hbGxlciBiYXRjaGVzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgZHJ5LXJ1biBtb2RlXG4gICAgaWYgKGZsYWdzW1wiZHJ5LXJ1blwiXSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1ByZXZpZXcobWVzc2FnZXMsIGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSBiYXRjaFxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nICR7bWVzc2FnZXMubGVuZ3RofSBtZXNzYWdlcy4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEJhdGNoUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXMvYmF0Y2hcIixcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2VzLFxuICAgICAgICAgIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlLFxuICAgICAgICAgIC4uLihmbGFncy5mcm9tICYmIHsgZnJvbTogZmxhZ3MuZnJvbSB9KSxcbiAgICAgICAgICAuLi4odXBsb2FkSWQgJiYgeyB1cGxvYWRJZCB9KSwgLy8gTGluayB0byBmaWxlIHVwbG9hZCBmb3IgYXVkaXQgdHJhaWxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSBzdWNjZXNzIGxldmVsXG4gICAgICBjb25zdCBhbGxTdWNjZWVkZWQgPSByZXNwb25zZS5mYWlsZWQgPT09IDA7XG4gICAgICBjb25zdCBhbGxGYWlsZWQgPSByZXNwb25zZS5zZW50ID09PSAwICYmIHJlc3BvbnNlLmZhaWxlZCA+IDA7XG4gICAgICBjb25zdCBwYXJ0aWFsU3VjY2VzcyA9IHJlc3BvbnNlLnNlbnQgPiAwICYmIHJlc3BvbnNlLmZhaWxlZCA+IDA7XG5cbiAgICAgIGlmIChhbGxTdWNjZWVkZWQpIHtcbiAgICAgICAgc3VjY2VzcyhcIkJhdGNoIHNlbnQgc3VjY2Vzc2Z1bGx5XCIsIHtcbiAgICAgICAgICBcIkJhdGNoIElEXCI6IHJlc3BvbnNlLmJhdGNoSWQsXG4gICAgICAgICAgVG90YWw6IHJlc3BvbnNlLnRvdGFsLFxuICAgICAgICAgIFNlbnQ6IGNvbG9ycy5zdWNjZXNzKFN0cmluZyhyZXNwb25zZS5zZW50KSksXG4gICAgICAgICAgXCJDcmVkaXRzIFVzZWRcIjogcmVzcG9uc2UuY3JlZGl0c1VzZWQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChhbGxGYWlsZWQpIHtcbiAgICAgICAgZXJyb3IoXCJCYXRjaCBmYWlsZWRcIiwge1xuICAgICAgICAgIGhpbnQ6IGBBbGwgJHtyZXNwb25zZS5mYWlsZWR9IG1lc3NhZ2VzIGZhaWxlZCB0byBzZW5kYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oYCAgQmF0Y2ggSUQ6ICR7cmVzcG9uc2UuYmF0Y2hJZH1gKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oYCAgQ3JlZGl0cyBSZWZ1bmRlZDogJHtyZXNwb25zZS5jcmVkaXRzUmVmdW5kZWR9YCksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpYWxTdWNjZXNzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy53YXJuaW5nKFwiXFxu4pqg77iPICBCYXRjaCBjb21wbGV0ZWQgd2l0aCBlcnJvcnNcXG5cIikpO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBCYXRjaCBJRDogICAgICAgICAke3Jlc3BvbnNlLmJhdGNoSWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIFRvdGFsOiAgICAgICAgICAgICR7cmVzcG9uc2UudG90YWx9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIFNlbnQ6ICAgICAgICAgICAgICR7Y29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHJlc3BvbnNlLnNlbnQpKX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgICBGYWlsZWQ6ICAgICAgICAgICAke2NvbG9ycy5lcnJvcihTdHJpbmcocmVzcG9uc2UuZmFpbGVkKSl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgQ3JlZGl0cyBVc2VkOiAgICAgJHtyZXNwb25zZS5jcmVkaXRzVXNlZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgQ3JlZGl0cyBSZWZ1bmRlZDogJHtyZXNwb25zZS5jcmVkaXRzUmVmdW5kZWR9YCk7XG5cbiAgICAgICAgLy8gU2hvdyBmYWlsZWQgbWVzc2FnZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlcykge1xuICAgICAgICAgIGNvbnN0IGZhaWxlZE1zZ3MgPSByZXNwb25zZS5tZXNzYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAobSkgPT4gbS5zdGF0dXMgPT09IFwiZmFpbGVkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmFpbGVkTXNncy5sZW5ndGggPiAwICYmIGZhaWxlZE1zZ3MubGVuZ3RoIDw9IDUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJcXG4gIEZhaWxlZCBtZXNzYWdlczpcIikpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgb2YgZmFpbGVkTXNncykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjb2xvcnMuZGltKGAgICAgJHttc2cudG99OiAke21zZy5lcnJvciB8fCBcIlVua25vd24gZXJyb3JcIn1gKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZE1zZ3MubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgYFxcbiAgJHtmYWlsZWRNc2dzLmxlbmd0aH0gbWVzc2FnZXMgZmFpbGVkLiBVc2UgLS1qc29uIGZvciBkZXRhaWxzLmAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYmF0Y2ggcHJldmlldyAoZHJ5LXJ1biBtb2RlKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93UHJldmlldyhcbiAgICBtZXNzYWdlczogQXJyYXk8eyB0bzogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4sXG4gICAgZmxhZ3M6IHsgdHlwZT86IHN0cmluZyB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkFuYWx5emluZyBiYXRjaC4uLlwiKS5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZpZXcgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCYXRjaFByZXZpZXdSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlcy9iYXRjaC9wcmV2aWV3XCIsXG4gICAgICAgIHsgbWVzc2FnZXMsIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHByZXZpZXcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgY29tcHJlaGVuc2l2ZSBwcmV2aWV3XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk4ogQmF0Y2ggUHJldmlldyAoRHJ5IFJ1bilcXG5cIikpO1xuXG4gICAgICAvLyBTdW1tYXJ5IHRhYmxlXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDUwKSkpO1xuICAgICAgY29uc29sZS5sb2coYFRvdGFsIG1lc3NhZ2VzOiAgICAgJHtwcmV2aWV3LnRvdGFsfWApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBTZW5kYWJsZTogICAgICAgICAgICR7Y29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHByZXZpZXcuc2VuZGFibGUpKX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQmxvY2tlZDogICAgICAgICAgICAke3ByZXZpZXcuYmxvY2tlZCA+IDAgPyBjb2xvcnMuZXJyb3IoU3RyaW5nKHByZXZpZXcuYmxvY2tlZCkpIDogXCIwXCJ9YCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhgRHVwbGljYXRlcyByZW1vdmVkOiAke3ByZXZpZXcuZHVwbGljYXRlc31gKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCLilIBcIi5yZXBlYXQoNTApKSk7XG5cbiAgICAgIC8vIENyZWRpdHNcbiAgICAgIGNvbnNvbGUubG9nKGBcXG5DcmVkaXRzIG5lZWRlZDogICAgICR7cHJldmlldy5jcmVkaXRzTmVlZGVkfWApO1xuICAgICAgY29uc29sZS5sb2coYFlvdXIgYmFsYW5jZTogICAgICAgJHtwcmV2aWV3LmNyZWRpdEJhbGFuY2V9YCk7XG4gICAgICBpZiAoIXByZXZpZXcuaGFzU3VmZmljaWVudENyZWRpdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmVycm9yKFxuICAgICAgICAgICAgYOKaoO+4jyAgSW5zdWZmaWNpZW50IGNyZWRpdHMhIE5lZWQgJHtwcmV2aWV3LmNyZWRpdHNOZWVkZWQgLSBwcmV2aWV3LmNyZWRpdEJhbGFuY2V9IG1vcmUuYCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBBY2Nlc3MgaW5mb1xuICAgICAgY29uc29sZS5sb2coYFxcbkFQSSBLZXkgdHlwZTogICAgICAgJHtwcmV2aWV3LmtleVR5cGUudG9VcHBlckNhc2UoKX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBXcml0ZSBhY2Nlc3M6ICAgICAgICR7cHJldmlldy5oYXNXcml0ZVNjb3BlID8gXCLinJNcIiA6IFwi4pyXXCJ9YCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYERvbWVzdGljIChVUy9DQSk6ICAgJHtwcmV2aWV3Lm1lc3NhZ2luZ1Byb2ZpbGUuY2FuU2VuZERvbWVzdGljID8gXCLinJNcIiA6IFwi4pyXXCJ9YCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEludGVybmF0aW9uYWw6ICAgICAgJHtwcmV2aWV3Lm1lc3NhZ2luZ1Byb2ZpbGUuY2FuU2VuZEludGVybmF0aW9uYWwgPyBcIuKck1wiIDogXCLinJdcIn1gLFxuICAgICAgKTtcblxuICAgICAgLy8gQ291bnRyeSBicmVha2Rvd25cbiAgICAgIGNvbnN0IGNvdW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByZXZpZXcuYnlDb3VudHJ5KTtcbiAgICAgIGlmIChjb3VudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk40gQnkgQ291bnRyeTpcXG5cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb3VudHJ5LCBkYXRhXSBvZiBjb3VudHJpZXMpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBkYXRhLmFsbG93ZWQgPyBjb2xvcnMuc3VjY2VzcyhcIuKck1wiKSA6IGNvbG9ycy5lcnJvcihcIuKcl1wiKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGAgICR7c3RhdHVzfSAke2NvdW50cnl9OiAke2RhdGEuY291bnR9IG1zZ3MsICR7ZGF0YS5jcmVkaXRzfSBjcmVkaXRzICgke2RhdGEudGllcn0pYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghZGF0YS5hbGxvd2VkICYmIGRhdGEuYmxvY2tlZFJlYXNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICAgICDilJTilIAgJHtkYXRhLmJsb2NrZWRSZWFzb259YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDb21wbGlhbmNlIGNoZWNrIHJlc3VsdHNcbiAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJcXG7wn5uh77iPICBDb21wbGlhbmNlIENoZWNrOlxcblwiKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIE1lc3NhZ2UgVHlwZTogICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5tZXNzYWdlVHlwZS50b1VwcGVyQ2FzZSgpfWAsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWQgPiAwKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZXJyb3IoXG4gICAgICAgICAgICAgIGAgIFNIQUZUIEJsb2NrZWQ6ICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWR9IG1lc3NhZ2VzYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiBwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMuc2xpY2UoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMyxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICBgICAgICDilJTilIAgJHttc2cudG99OiAke21zZy5jYXRlZ29yeX0gKCR7bXNnLm1hdGNoZWRUZXJtcy5qb2luKFwiLCBcIil9KWAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJldmlldy5jb21wbGlhbmNlLnNoYWZ0QmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICAgIGAgICAgIC4uLiBhbmQgJHtwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMubGVuZ3RoIC0gM30gbW9yZWAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5zdWNjZXNzKFxuICAgICAgICAgICAgICBcIiAgU0hBRlQgQ2hlY2s6ICAgICAgIOKckyBBbGwgbWVzc2FnZXMgcGFzcyBjb250ZW50IGZpbHRlclwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5tZXNzYWdlVHlwZSA9PT0gXCJtYXJrZXRpbmdcIikge1xuICAgICAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2UucXVpZXRIb3Vyc1Jlc2NoZWR1bGVkID4gMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy53YXJuaW5nKFxuICAgICAgICAgICAgICAgIGAgIFF1aWV0IEhvdXJzOiAgICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzUmVzY2hlZHVsZWR9IG1lc3NhZ2VzIHdpbGwgYmUgcmVzY2hlZHVsZWRgLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXNnIG9mIHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLnNsaWNlKFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAzLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0VGltZSA9IG1zZy5uZXh0QWxsb3dlZFRpbWVcbiAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKG1zZy5uZXh0QWxsb3dlZFRpbWUpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6IFwibmV4dCBhdmFpbGFibGUgd2luZG93XCI7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgICBgICAgICDilJTilIAgJHttc2cudG99OiAke21zZy5yZWNpcGllbnRUaW1lem9uZX0g4oaSICR7bmV4dFRpbWV9YCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICAgIGAgICAgIC4uLiBhbmQgJHtwcmV2aWV3LmNvbXBsaWFuY2UucXVpZXRIb3Vyc0Jsb2NrZWRNZXNzYWdlcy5sZW5ndGggLSAzfSBtb3JlYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgXCIgIFF1aWV0IEhvdXJzOiAgICAgICDinJMgQWxsIHJlY2lwaWVudHMgd2l0aGluIGFsbG93ZWQgaG91cnNcIixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY29sb3JzLmRpbShcIiAgUXVpZXQgSG91cnM6ICAgICAgIEJ5cGFzc2VkICh0cmFuc2FjdGlvbmFsIG1lc3NhZ2UpXCIpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gV2FybmluZ3NcbiAgICAgIGlmIChwcmV2aWV3Lndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLndhcm5pbmcoXCJcXG7imqDvuI8gIFdhcm5pbmdzOlwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgdyBvZiBwcmV2aWV3Lndhcm5pbmdzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgIOKAoiAke3d9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2tlZCBtZXNzYWdlcyAoZmlyc3QgNSlcbiAgICAgIGlmIChwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5lcnJvcihcbiAgICAgICAgICAgIGBcXG7inYwgQmxvY2tlZCBNZXNzYWdlcyAoJHtwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGh9IHRvdGFsKTpgLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgYiBvZiBwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5zbGljZSgwLCA1KSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAke2IudG99OiAke2IucmVhc29ufWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKGAgICAuLi4gYW5kICR7cHJldmlldy5ibG9ja2VkTWVzc2FnZXMubGVuZ3RoIC0gNX0gbW9yZWApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIFwiXFxuXCIgKyBjb2xvcnMuZGltKFwiTm8gbWVzc2FnZXMgd2VyZSBzZW50LiBSZW1vdmUgLS1kcnktcnVuIHRvIHNlbmQuXCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYnl0ZXMgdG8gaHVtYW4gcmVhZGFibGUgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEJ5dGVzKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBgJHtieXRlc30gQmA7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcbiAgfVxufVxuIl19
|
|
@@ -3,9 +3,9 @@ export default class SmsSchedule extends AuthenticatedCommand {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
to: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
-
text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
-
at: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
6
|
+
to: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
at: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
9
|
from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
10
|
type: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
11
|
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { Flags } from "@oclif/core";
|
|
2
2
|
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
3
|
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
-
import { success, error, spinner, colors, formatStatus, json, isJsonMode, } from "../../lib/output.js";
|
|
4
|
+
import { success, error, spinner, colors, formatStatus, json, isJsonMode, info, } from "../../lib/output.js";
|
|
5
|
+
import * as chrono from "chrono-node";
|
|
6
|
+
import inquirer from "inquirer";
|
|
5
7
|
export default class SmsSchedule extends AuthenticatedCommand {
|
|
6
|
-
static description = "Schedule an SMS message for future delivery";
|
|
8
|
+
static description = "Schedule an SMS message for future delivery. Supports natural language dates like 'tomorrow at 9am' or 'in 2 hours'.";
|
|
7
9
|
static examples = [
|
|
8
|
-
'<%= config.bin %> sms schedule --to +15551234567 --text "Reminder!" --at "
|
|
9
|
-
'<%= config.bin %> sms schedule --to +15551234567 --text "Meeting
|
|
10
|
-
'<%= config.bin %> sms schedule --to +15551234567 --text "
|
|
11
|
-
'<%= config.bin %> sms schedule --to +15551234567 --text "
|
|
10
|
+
'<%= config.bin %> sms schedule --to +15551234567 --text "Reminder!" --at "tomorrow at 9am"',
|
|
11
|
+
'<%= config.bin %> sms schedule --to +15551234567 --text "Meeting soon" --at "in 2 hours"',
|
|
12
|
+
'<%= config.bin %> sms schedule --to +15551234567 --text "Hello!" --at "next Monday 3pm"',
|
|
13
|
+
'<%= config.bin %> sms schedule --to +15551234567 --text "Sale!" --at "2026-04-01T10:00:00Z"',
|
|
14
|
+
'<%= config.bin %> sms schedule --to +15551234567 --text "Code: 123" --at "friday 5pm" --type transactional',
|
|
12
15
|
];
|
|
13
16
|
static flags = {
|
|
14
17
|
...AuthenticatedCommand.baseFlags,
|
|
15
18
|
to: Flags.string({
|
|
16
19
|
char: "t",
|
|
17
20
|
description: "Recipient phone number (E.164 format)",
|
|
18
|
-
required: true,
|
|
19
21
|
}),
|
|
20
22
|
text: Flags.string({
|
|
21
23
|
char: "m",
|
|
22
24
|
description: "Message text",
|
|
23
|
-
required: true,
|
|
24
25
|
}),
|
|
25
26
|
at: Flags.string({
|
|
26
27
|
char: "a",
|
|
27
|
-
description:
|
|
28
|
-
required: true,
|
|
28
|
+
description: 'Scheduled time — ISO 8601 or natural language ("tomorrow at 9am", "in 2 hours", "next Monday 3pm")',
|
|
29
29
|
}),
|
|
30
30
|
from: Flags.string({
|
|
31
31
|
char: "f",
|
|
@@ -39,45 +39,135 @@ export default class SmsSchedule extends AuthenticatedCommand {
|
|
|
39
39
|
};
|
|
40
40
|
async run() {
|
|
41
41
|
const { flags } = await this.parse(SmsSchedule);
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
let to = flags.to;
|
|
43
|
+
let text = flags.text;
|
|
44
|
+
let at = flags.at;
|
|
45
|
+
if (!to) {
|
|
46
|
+
if (process.stdin.isTTY) {
|
|
47
|
+
const answers = await inquirer.prompt([
|
|
48
|
+
{
|
|
49
|
+
type: "input",
|
|
50
|
+
name: "to",
|
|
51
|
+
message: "Recipient phone number (E.164):",
|
|
52
|
+
validate: (input) => {
|
|
53
|
+
if (!input)
|
|
54
|
+
return "Phone number is required";
|
|
55
|
+
if (!/^\+[1-9]\d{1,14}$/.test(input)) {
|
|
56
|
+
return "Invalid format. Use E.164: +15551234567";
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
]);
|
|
62
|
+
to = answers.to;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
error("Missing required flag: --to", {
|
|
66
|
+
hint: "Use --to +15551234567",
|
|
67
|
+
});
|
|
68
|
+
this.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (!text) {
|
|
72
|
+
if (process.stdin.isTTY) {
|
|
73
|
+
const answers = await inquirer.prompt([
|
|
74
|
+
{
|
|
75
|
+
type: "input",
|
|
76
|
+
name: "text",
|
|
77
|
+
message: "Message text:",
|
|
78
|
+
validate: (input) => {
|
|
79
|
+
if (!input.trim())
|
|
80
|
+
return "Message text cannot be empty";
|
|
81
|
+
return true;
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
]);
|
|
85
|
+
text = answers.text;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
error("Missing required flag: --text", {
|
|
89
|
+
hint: 'Use --text "Your message"',
|
|
90
|
+
});
|
|
91
|
+
this.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!at) {
|
|
95
|
+
if (process.stdin.isTTY) {
|
|
96
|
+
const answers = await inquirer.prompt([
|
|
97
|
+
{
|
|
98
|
+
type: "input",
|
|
99
|
+
name: "at",
|
|
100
|
+
message: 'Schedule time (e.g. "tomorrow at 9am", "in 2 hours"):',
|
|
101
|
+
validate: (input) => {
|
|
102
|
+
if (!input.trim())
|
|
103
|
+
return "Scheduled time is required";
|
|
104
|
+
return true;
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
]);
|
|
108
|
+
at = answers.at;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
error("Missing required flag: --at", {
|
|
112
|
+
hint: 'Use --at "tomorrow at 9am"',
|
|
113
|
+
});
|
|
114
|
+
this.exit(1);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (!/^\+[1-9]\d{1,14}$/.test(to)) {
|
|
44
118
|
error("Invalid phone number format", {
|
|
45
119
|
hint: "Use E.164 format: +15551234567",
|
|
46
120
|
});
|
|
47
121
|
this.exit(1);
|
|
48
122
|
}
|
|
49
|
-
|
|
50
|
-
if (!flags.text.trim()) {
|
|
123
|
+
if (!text.trim()) {
|
|
51
124
|
error("Message text cannot be empty");
|
|
52
125
|
this.exit(1);
|
|
53
126
|
}
|
|
54
|
-
|
|
55
|
-
const scheduledDate = new Date(flags.at);
|
|
127
|
+
let scheduledDate = new Date(at);
|
|
56
128
|
if (isNaN(scheduledDate.getTime())) {
|
|
57
|
-
|
|
58
|
-
|
|
129
|
+
const parsed = chrono.parseDate(at, new Date(), { forwardDate: true });
|
|
130
|
+
if (!parsed) {
|
|
131
|
+
error("Could not understand the scheduled time", {
|
|
132
|
+
hint: 'Try: "tomorrow at 9am", "in 2 hours", "next Monday 3pm", or ISO 8601: 2026-04-01T10:00:00Z',
|
|
133
|
+
});
|
|
134
|
+
this.exit(1);
|
|
135
|
+
}
|
|
136
|
+
scheduledDate = parsed;
|
|
137
|
+
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
138
|
+
if (!isJsonMode()) {
|
|
139
|
+
info(`Interpreted "${at}" as ${scheduledDate.toLocaleString()} (${tz})`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const timeUntilSend = scheduledDate.getTime() - Date.now();
|
|
143
|
+
if (timeUntilSend < 0) {
|
|
144
|
+
error("That time is in the past", {
|
|
145
|
+
hint: 'Did you mean a future time? Try: "tomorrow at 9am" or "in 2 hours"',
|
|
59
146
|
});
|
|
60
147
|
this.exit(1);
|
|
61
148
|
}
|
|
62
|
-
// Check scheduling time constraints (carrier requires 5 min - 5 days)
|
|
63
149
|
const FIVE_MINUTES = 5 * 60 * 1000;
|
|
64
|
-
const FIVE_DAYS = 5 * 24 * 60 * 60 * 1000;
|
|
65
|
-
const timeUntilSend = scheduledDate.getTime() - Date.now();
|
|
66
150
|
if (timeUntilSend < FIVE_MINUTES) {
|
|
67
|
-
|
|
151
|
+
const mins = Math.ceil(timeUntilSend / 60000);
|
|
152
|
+
error(`Too soon — that's only ${mins} minute${mins !== 1 ? "s" : ""} from now`, {
|
|
153
|
+
hint: "Messages must be scheduled at least 5 minutes in the future",
|
|
154
|
+
});
|
|
68
155
|
this.exit(1);
|
|
69
156
|
}
|
|
157
|
+
const FIVE_DAYS = 5 * 24 * 60 * 60 * 1000;
|
|
70
158
|
if (timeUntilSend > FIVE_DAYS) {
|
|
71
|
-
error("
|
|
159
|
+
error("Too far — must be within 5 days", {
|
|
160
|
+
hint: `That's ${Math.ceil(timeUntilSend / 86400000)} days from now. Maximum is 5 days.`,
|
|
161
|
+
});
|
|
72
162
|
this.exit(1);
|
|
73
163
|
}
|
|
74
164
|
const spin = spinner("Scheduling message...");
|
|
75
165
|
spin.start();
|
|
76
166
|
try {
|
|
77
167
|
const response = await apiClient.post("/api/v1/messages/schedule", {
|
|
78
|
-
to
|
|
79
|
-
text
|
|
80
|
-
scheduledAt:
|
|
168
|
+
to,
|
|
169
|
+
text,
|
|
170
|
+
scheduledAt: scheduledDate.toISOString(),
|
|
81
171
|
messageType: flags.type,
|
|
82
172
|
...(flags.from && { from: flags.from }),
|
|
83
173
|
});
|
|
@@ -100,4 +190,4 @@ export default class SmsSchedule extends AuthenticatedCommand {
|
|
|
100
190
|
}
|
|
101
191
|
}
|
|
102
192
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQVk3QixNQUFNLENBQUMsT0FBTyxPQUFPLFdBQVksU0FBUSxvQkFBb0I7SUFDM0QsTUFBTSxDQUFDLFdBQVcsR0FBRyw2Q0FBNkMsQ0FBQztJQUVuRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLGlHQUFpRztRQUNqRyx5SEFBeUg7UUFDekgsOEhBQThIO1FBQzlILHFHQUFxRztLQUN0RyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztZQUNwRCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxjQUFjO1lBQzNCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQ1QsOERBQThEO1lBQ2hFLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FB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QixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdEUsT0FBTyxDQUFDLG1CQUFtQixFQUFFO2dCQUMzQixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNmLE1BQU0sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBzcGlubmVyLFxuICBjb2xvcnMsXG4gIGZvcm1hdFN0YXR1cyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFNjaGVkdWxlZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb20/OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTY2hlZHVsZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTY2hlZHVsZSBhbiBTTVMgbWVzc2FnZSBmb3IgZnV0dXJlIGRlbGl2ZXJ5XCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2NoZWR1bGUgLS10byArMTU1NTEyMzQ1NjcgLS10ZXh0IFwiUmVtaW5kZXIhXCIgLS1hdCBcIjIwMjUtMDEtMjBUMTA6MDA6MDBaXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2NoZWR1bGUgLS10byArMTU1NTEyMzQ1NjcgLS10ZXh0IFwiTWVldGluZyBpbiAxIGhvdXJcIiAtLWF0IFwiMjAyNS0wMS0xNVQxNDowMDowMFpcIiAtLWZyb20gXCJTZW5kbHlcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJZb3VyIGNvZGU6IDEyMzQ1NlwiIC0tYXQgXCIyMDI1LTAxLTIwVDEwOjAwOjAwWlwiIC0tdHlwZSB0cmFuc2FjdGlvbmFsJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tYXQgXCIyMDI1LTAxLTIwVDEwOjAwOjAwWlwiIC0tanNvbicsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB0bzogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwidFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVjaXBpZW50IHBob25lIG51bWJlciAoRS4xNjQgZm9ybWF0KVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0XCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICBhdDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiYVwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU2NoZWR1bGVkIHRpbWUgKElTTyA4NjAxIGZvcm1hdCwgZS5nLiwgMjAyNS0wMS0yMFQxMDowMDowMFopXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgSUQgb3IgcGhvbmUgbnVtYmVyXCIsXG4gICAgfSksXG4gICAgdHlwZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1lc3NhZ2UgdHlwZTogbWFya2V0aW5nIChkZWZhdWx0KSBvciB0cmFuc2FjdGlvbmFsLiBUcmFuc2FjdGlvbmFsIG1lc3NhZ2VzIGJ5cGFzcyBxdWlldCBob3Vycy5cIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc1NjaGVkdWxlKTtcblxuICAgIC8vIFZhbGlkYXRlIHBob25lIG51bWJlciBmb3JtYXRcbiAgICBpZiAoIS9eXFwrWzEtOV1cXGR7MSwxNH0kLy50ZXN0KGZsYWdzLnRvKSkge1xuICAgICAgZXJyb3IoXCJJbnZhbGlkIHBob25lIG51bWJlciBmb3JtYXRcIiwge1xuICAgICAgICBoaW50OiBcIlVzZSBFLjE2NCBmb3JtYXQ6ICsxNTU1MTIzNDU2N1wiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgbWVzc2FnZSB0ZXh0XG4gICAgaWYgKCFmbGFncy50ZXh0LnRyaW0oKSkge1xuICAgICAgZXJyb3IoXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHNjaGVkdWxlZCB0aW1lXG4gICAgY29uc3Qgc2NoZWR1bGVkRGF0ZSA9IG5ldyBEYXRlKGZsYWdzLmF0KTtcbiAgICBpZiAoaXNOYU4oc2NoZWR1bGVkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICBlcnJvcihcIkludmFsaWQgc2NoZWR1bGVkIHRpbWUgZm9ybWF0XCIsIHtcbiAgICAgICAgaGludDogXCJVc2UgSVNPIDg2MDEgZm9ybWF0OiAyMDI1LTAxLTIwVDEwOjAwOjAwWlwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgc2NoZWR1bGluZyB0aW1lIGNvbnN0cmFpbnRzIChjYXJyaWVyIHJlcXVpcmVzIDUgbWluIC0gNSBkYXlzKVxuICAgIGNvbnN0IEZJVkVfTUlOVVRFUyA9IDUgKiA2MCAqIDEwMDA7XG4gICAgY29uc3QgRklWRV9EQVlTID0gNSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gICAgY29uc3QgdGltZVVudGlsU2VuZCA9IHNjaGVkdWxlZERhdGUuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKTtcblxuICAgIGlmICh0aW1lVW50aWxTZW5kIDwgRklWRV9NSU5VVEVTKSB7XG4gICAgICBlcnJvcihcIlNjaGVkdWxlZCB0aW1lIG11c3QgYmUgYXQgbGVhc3QgNSBtaW51dGVzIGZyb20gbm93XCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmICh0aW1lVW50aWxTZW5kID4gRklWRV9EQVlTKSB7XG4gICAgICBlcnJvcihcIlNjaGVkdWxlZCB0aW1lIG11c3QgYmUgd2l0aGluIDUgZGF5c1wiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIlNjaGVkdWxpbmcgbWVzc2FnZS4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXMvc2NoZWR1bGVcIixcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBmbGFncy50byxcbiAgICAgICAgICB0ZXh0OiBmbGFncy50ZXh0LFxuICAgICAgICAgIHNjaGVkdWxlZEF0OiBmbGFncy5hdCxcbiAgICAgICAgICBtZXNzYWdlVHlwZTogZmxhZ3MudHlwZSxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gbmV3IERhdGUocmVzcG9uc2Uuc2NoZWR1bGVkQXQpLnRvTG9jYWxlU3RyaW5nKCk7XG5cbiAgICAgIHN1Y2Nlc3MoXCJNZXNzYWdlIHNjaGVkdWxlZFwiLCB7XG4gICAgICAgIElEOiByZXNwb25zZS5pZCxcbiAgICAgICAgVG86IHJlc3BvbnNlLnRvLFxuICAgICAgICBTdGF0dXM6IGZvcm1hdFN0YXR1cyhyZXNwb25zZS5zdGF0dXMpLFxuICAgICAgICBcIlNjaGVkdWxlZCBGb3JcIjogY29sb3JzLmNvZGUoZm9ybWF0dGVkVGltZSksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEVBQ1YsSUFBSSxHQUNMLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBWWhDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBWSxTQUFRLG9CQUFvQjtJQUMzRCxNQUFNLENBQUMsV0FBVyxHQUFHLHNIQUFzSCxDQUFDO0lBRTVJLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRix5RkFBeUY7UUFDekYsNkZBQTZGO1FBQzdGLDRHQUE0RztLQUM3RyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDO1FBQ0YsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDZixJQUFJLEVBQUUsR0FBRztZ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O2dCQUNmLE1BQU0sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBzcGlubmVyLFxuICBjb2xvcnMsXG4gIGZvcm1hdFN0YXR1cyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbiAgaW5mbyxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCAqIGFzIGNocm9ubyBmcm9tIFwiY2hyb25vLW5vZGVcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcblxuaW50ZXJmYWNlIFNjaGVkdWxlZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb20/OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTY2hlZHVsZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTY2hlZHVsZSBhbiBTTVMgbWVzc2FnZSBmb3IgZnV0dXJlIGRlbGl2ZXJ5LiBTdXBwb3J0cyBuYXR1cmFsIGxhbmd1YWdlIGRhdGVzIGxpa2UgJ3RvbW9ycm93IGF0IDlhbScgb3IgJ2luIDIgaG91cnMnLlwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIlJlbWluZGVyIVwiIC0tYXQgXCJ0b21vcnJvdyBhdCA5YW1cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJNZWV0aW5nIHNvb25cIiAtLWF0IFwiaW4gMiBob3Vyc1wiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tYXQgXCJuZXh0IE1vbmRheSAzcG1cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJTYWxlIVwiIC0tYXQgXCIyMDI2LTA0LTAxVDEwOjAwOjAwWlwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkNvZGU6IDEyM1wiIC0tYXQgXCJmcmlkYXkgNXBtXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlY2lwaWVudCBwaG9uZSBudW1iZXIgKEUuMTY0IGZvcm1hdClcIixcbiAgICB9KSxcbiAgICB0ZXh0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJtXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJNZXNzYWdlIHRleHRcIixcbiAgICB9KSxcbiAgICBhdDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiYVwiLFxuICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZWQgdGltZSDigJQgSVNPIDg2MDEgb3IgbmF0dXJhbCBsYW5ndWFnZSAoXCJ0b21vcnJvdyBhdCA5YW1cIiwgXCJpbiAyIGhvdXJzXCIsIFwibmV4dCBNb25kYXkgM3BtXCIpJyxcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgSUQgb3IgcGhvbmUgbnVtYmVyXCIsXG4gICAgfSksXG4gICAgdHlwZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1lc3NhZ2UgdHlwZTogbWFya2V0aW5nIChkZWZhdWx0KSBvciB0cmFuc2FjdGlvbmFsLiBUcmFuc2FjdGlvbmFsIG1lc3NhZ2VzIGJ5cGFzcyBxdWlldCBob3Vycy5cIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc1NjaGVkdWxlKTtcblxuICAgIGxldCB0byA9IGZsYWdzLnRvO1xuICAgIGxldCB0ZXh0ID0gZmxhZ3MudGV4dDtcbiAgICBsZXQgYXQgPSBmbGFncy5hdDtcblxuICAgIGlmICghdG8pIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwidG9cIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiUmVjaXBpZW50IHBob25lIG51bWJlciAoRS4xNjQpOlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybiBcIlBob25lIG51bWJlciBpcyByZXF1aXJlZFwiO1xuICAgICAgICAgICAgICBpZiAoIS9eXFwrWzEtOV1cXGR7MSwxNH0kLy50ZXN0KGlucHV0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIkludmFsaWQgZm9ybWF0LiBVc2UgRS4xNjQ6ICsxNTU1MTIzNDU2N1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdG8gPSBhbnN3ZXJzLnRvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGZsYWc6IC0tdG9cIiwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIC0tdG8gKzE1NTUxMjM0NTY3XCIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRleHRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZSB0ZXh0OlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdGV4dCA9IGFuc3dlcnMudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLXRleHRcIiwge1xuICAgICAgICAgIGhpbnQ6ICdVc2UgLS10ZXh0IFwiWW91ciBtZXNzYWdlXCInLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYXQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiYXRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdTY2hlZHVsZSB0aW1lIChlLmcuIFwidG9tb3Jyb3cgYXQgOWFtXCIsIFwiaW4gMiBob3Vyc1wiKTonLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJTY2hlZHVsZWQgdGltZSBpcyByZXF1aXJlZFwiO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGF0ID0gYW5zd2Vycy5hdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLWF0XCIsIHtcbiAgICAgICAgICBoaW50OiAnVXNlIC0tYXQgXCJ0b21vcnJvdyBhdCA5YW1cIicsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdCh0byEpKSB7XG4gICAgICBlcnJvcihcIkludmFsaWQgcGhvbmUgbnVtYmVyIGZvcm1hdFwiLCB7XG4gICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIXRleHQhLnRyaW0oKSkge1xuICAgICAgZXJyb3IoXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGxldCBzY2hlZHVsZWREYXRlID0gbmV3IERhdGUoYXQhKTtcblxuICAgIGlmIChpc05hTihzY2hlZHVsZWREYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGNocm9uby5wYXJzZURhdGUoYXQhLCBuZXcgRGF0ZSgpLCB7IGZvcndhcmREYXRlOiB0cnVlIH0pO1xuICAgICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgICAgZXJyb3IoXCJDb3VsZCBub3QgdW5kZXJzdGFuZCB0aGUgc2NoZWR1bGVkIHRpbWVcIiwge1xuICAgICAgICAgIGhpbnQ6ICdUcnk6IFwidG9tb3Jyb3cgYXQgOWFtXCIsIFwiaW4gMiBob3Vyc1wiLCBcIm5leHQgTW9uZGF5IDNwbVwiLCBvciBJU08gODYwMTogMjAyNi0wNC0wMVQxMDowMDowMFonLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVkRGF0ZSA9IHBhcnNlZDtcblxuICAgICAgY29uc3QgdHogPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG4gICAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgICBpbmZvKGBJbnRlcnByZXRlZCBcIiR7YXR9XCIgYXMgJHtzY2hlZHVsZWREYXRlLnRvTG9jYWxlU3RyaW5nKCl9ICgke3R6fSlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0aW1lVW50aWxTZW5kID0gc2NoZWR1bGVkRGF0ZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKHRpbWVVbnRpbFNlbmQgPCAwKSB7XG4gICAgICBlcnJvcihcIlRoYXQgdGltZSBpcyBpbiB0aGUgcGFzdFwiLCB7XG4gICAgICAgIGhpbnQ6ICdEaWQgeW91IG1lYW4gYSBmdXR1cmUgdGltZT8gVHJ5OiBcInRvbW9ycm93IGF0IDlhbVwiIG9yIFwiaW4gMiBob3Vyc1wiJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IEZJVkVfTUlOVVRFUyA9IDUgKiA2MCAqIDEwMDA7XG4gICAgaWYgKHRpbWVVbnRpbFNlbmQgPCBGSVZFX01JTlVURVMpIHtcbiAgICAgIGNvbnN0IG1pbnMgPSBNYXRoLmNlaWwodGltZVVudGlsU2VuZCAvIDYwMDAwKTtcbiAgICAgIGVycm9yKGBUb28gc29vbiDigJQgdGhhdCdzIG9ubHkgJHttaW5zfSBtaW51dGUke21pbnMgIT09IDEgPyBcInNcIiA6IFwiXCJ9IGZyb20gbm93YCwge1xuICAgICAgICBoaW50OiBcIk1lc3NhZ2VzIG11c3QgYmUgc2NoZWR1bGVkIGF0IGxlYXN0IDUgbWludXRlcyBpbiB0aGUgZnV0dXJlXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBGSVZFX0RBWVMgPSA1ICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICBpZiAodGltZVVudGlsU2VuZCA+IEZJVkVfREFZUykge1xuICAgICAgZXJyb3IoXCJUb28gZmFyIOKAlCBtdXN0IGJlIHdpdGhpbiA1IGRheXNcIiwge1xuICAgICAgICBoaW50OiBgVGhhdCdzICR7TWF0aC5jZWlsKHRpbWVVbnRpbFNlbmQgLyA4NjQwMDAwMCl9IGRheXMgZnJvbSBub3cuIE1heGltdW0gaXMgNSBkYXlzLmAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIlNjaGVkdWxpbmcgbWVzc2FnZS4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXMvc2NoZWR1bGVcIixcbiAgICAgICAge1xuICAgICAgICAgIHRvLFxuICAgICAgICAgIHRleHQsXG4gICAgICAgICAgc2NoZWR1bGVkQXQ6IHNjaGVkdWxlZERhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBtZXNzYWdlVHlwZTogZmxhZ3MudHlwZSxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gbmV3IERhdGUocmVzcG9uc2Uuc2NoZWR1bGVkQXQpLnRvTG9jYWxlU3RyaW5nKCk7XG5cbiAgICAgIHN1Y2Nlc3MoXCJNZXNzYWdlIHNjaGVkdWxlZFwiLCB7XG4gICAgICAgIElEOiByZXNwb25zZS5pZCxcbiAgICAgICAgVG86IHJlc3BvbnNlLnRvLFxuICAgICAgICBTdGF0dXM6IGZvcm1hdFN0YXR1cyhyZXNwb25zZS5zdGF0dXMpLFxuICAgICAgICBcIlNjaGVkdWxlZCBGb3JcIjogY29sb3JzLmNvZGUoZm9ybWF0dGVkVGltZSksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class SmsSearch extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
query: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
limit: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
page: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
offset: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|