@dotglitch/ngx-common 1.1.1 → 1.1.2
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.
|
@@ -17,11 +17,20 @@ export class CommandPaletteService {
|
|
|
17
17
|
this.interval = setInterval(() => {
|
|
18
18
|
// Go backwards since we're splicing items out of the array.
|
|
19
19
|
for (let i = this.commandBlocks.length; i >= 0; i--) {
|
|
20
|
-
|
|
20
|
+
let commandBlock = this.commandBlocks[i];
|
|
21
|
+
// If the current index is somehow null, rip it out of
|
|
22
|
+
// the array and wait for cleanup to trigger again
|
|
23
|
+
// for the rest of the array.
|
|
24
|
+
// TODO: Could this lead to leaks where things at the end
|
|
25
|
+
// never get cleaned?
|
|
26
|
+
if (commandBlock == null) {
|
|
27
|
+
this.commandBlocks.splice(i, 1);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
21
30
|
// If the element has been disconnected from the DOM, we will
|
|
22
31
|
// treat it as having been permanently removed.
|
|
23
32
|
// TODO: Could this ever cause unintended consequences?
|
|
24
|
-
if (!commandBlock
|
|
33
|
+
if (!commandBlock?.element.isConnected)
|
|
25
34
|
this.commandBlocks.splice(i, 1);
|
|
26
35
|
}
|
|
27
36
|
}, 5 * 60 * 1000);
|
|
@@ -95,10 +104,12 @@ export class CommandPaletteService {
|
|
|
95
104
|
log(LogIcon.circle_blue, `Inserted action`, action);
|
|
96
105
|
}
|
|
97
106
|
// Make the shortcut keys lowercase so case sensitivity doesn't scalp someone
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
107
|
+
if (action.shortcutKey) {
|
|
108
|
+
if (Array.isArray(action.shortcutKey))
|
|
109
|
+
action.shortcutKey = action.shortcutKey.map(k => k.toLowerCase());
|
|
110
|
+
else
|
|
111
|
+
action.shortcutKey = action.shortcutKey.toLowerCase();
|
|
112
|
+
}
|
|
102
113
|
commandBlock.actions.push(action);
|
|
103
114
|
}
|
|
104
115
|
removeCommand(element, action) {
|
|
@@ -191,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
191
202
|
providedIn: 'root'
|
|
192
203
|
}]
|
|
193
204
|
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.LazyLoaderService }] });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1wYWxldHRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3NlcnZpY2VzL2NvbW1hbmQtcGFsZXR0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOzs7O0FBRWxHLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQWlIdEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBSzlCLFlBQ3FCLE1BQWlCLEVBQ2pCLFVBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFMMUMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBT3ZDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsNERBQTREO1lBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFM0MsNkRBQTZEO2dCQUM3RCwrQ0FBK0M7Z0JBQy9DLHVEQUF1RDtnQkFD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RSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCLENBQUMsVUFBdUIsUUFBUSxDQUFDLElBQUksRUFBRSxVQUEyQixFQUFFO1FBQ3JGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQixDQUFDLFVBQXVCLFFBQVEsQ0FBQyxJQUFJO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQXBOUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSG9zdExpc3RlbmVyLCBUeXBlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25zb2xlTG9nZ2VyLCBMb2dJY29uIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGF6eUxvYWRlclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2xhenktbG9hZGVyL2xhenktbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZFBhbGV0dGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbW1hbmQtcGFsZXR0ZS9jb21tYW5kLXBhbGV0dGUuY29tcG9uZW50JztcblxuY29uc3QgeyBsb2csIHdhcm4sIGVyciB9ID0gQ29uc29sZUxvZ2dlcihcIkNvbW1hbmRQYWxldHRlXCIsIFwiIzIxOTZmM1wiKTtcblxudHlwZSBLZXlDb2RlID0gXCJCYWNrc3BhY2VcIiB8IFwiVGFiXCIgfCBcIkVudGVyXCIgfCBcIlNoaWZ0TGVmdFwiIHwgXCJTaGlmdFJpZ2h0XCJcbiAgICB8IFwiQ29udHJvbExlZnRcIiB8IFwiQ29udHJvbFJpZ2h0XCIgfCBcIkFsdExlZnRcIiB8IFwiQWx0UmlnaHRcIiB8IFwiUGF1c2VcIiB8IFwiQ2Fwc0xvY2tcIlxuICAgIHwgXCJFc2NhcGVcIiB8IFwiU3BhY2VcIiB8IFwiUGFnZVVwXCIgfCBcIlBhZ2VEb3duXCIgfCBcIkVuZFwiIHwgXCJIb21lXCIgfCBcIkFycm93TGVmdFwiXG4gICAgfCBcIkFycm93VXBcIiB8IFwiQXJyb3dSaWdodFwiIHwgXCJBcnJvd0Rvd25cIiB8IFwiUHJpbnRTY3JlZW5cIiB8IFwiSW5zZXJ0XCIgfCBcIkRlbGV0ZVwiXG4gICAgfCBcIk1ldGFMZWZ0XCIgfCBcIk1ldGFSaWdodFwiIHwgXCJDb250ZXh0TWVudVwiIHwgXCJOdW1wYWQwXCIgfCBcIk51bXBhZDFcIiB8IFwiTnVtcGFkMlwiXG4gICAgfCBcIk51bXBhZDNcIiB8IFwiTnVtcGFkNFwiIHwgXCJOdW1wYWQ1XCIgfCBcIk51bXBhZDZcIiB8IFwiTnVtcGFkN1wiIHwgXCJOdW1wYWQ4XCJcbiAgICB8IFwiTnVtcGFkOVwiIHwgXCJOdW1wYWRNdWx0aXBseVwiIHwgXCJOdW1wYWRBZGRcIiB8IFwiTnVtcGFkU3VidHJhY3RcIlxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgfCBcIk51bXBhZERpdmlkZVwiXG4gICAgfCBcIkYxXCIgfCBcIkYyXCIgfCBcIkYzXCIgfCBcIkY0XCIgfCBcIkY1XCIgfCBcIkY2XCIgfCBcIkY3XCIgfCBcIkY4XCIgfCBcIkY5XCIgfCBcIkYxMFwiIHwgXCJGMTFcIiB8IFwiRjEyXCJcbiAgICB8IFwiTnVtTG9ja1wiIHwgXCJTY3JvbGxMb2NrXCIgfCBcIlNlbWljb2xvblwiIHwgXCJFcXVhbFwiIHwgXCJDb21tYVwiIHwgXCJNaW51c1wiXG4gICAgfCBcIlBlcmlvZFwiIHwgXCJTbGFzaFwiIHwgXCJCYWNrcXVvdGVcIiB8IFwiQnJhY2tldExlZnRcIiB8IFwiQmFja3NsYXNoXCJcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgfCBcIlF1b3RlXCIgfCBcImJhY2tzcGFjZVwiIHwgXCJ0YWJcIiB8IFwiZW50ZXJcIiB8IFwic2hpZnRsZWZ0XCJcbiAgICB8IFwic2hpZnRyaWdodFwiIHwgXCJjb250cm9sbGVmdFwiIHwgXCJjb250cm9scmlnaHRcIiB8IFwiYWx0bGVmdFwiIHwgXCJhbHRyaWdodFwiXG4gICAgfCBcInBhdXNlXCIgfCBcImNhcHNsb2NrXCIgfCBcImVzY2FwZVwiIHwgXCJzcGFjZVwiIHwgXCJwYWdldXBcIiB8IFwicGFnZWRvd25cIiB8IFwiZW5kXCJcbiAgICB8IFwiaG9tZVwiIHwgXCJhcnJvd2xlZnRcIiB8IFwiYXJyb3d1cFwiIHwgXCJhcnJvd3JpZ2h0XCIgfCBcImFycm93ZG93blwiIHwgXCJwcmludHNjcmVlblwiXG4gICAgfCBcImluc2VydFwiIHwgXCJkZWxldGVcIiB8IFwibWV0YWxlZnRcIiB8IFwibWV0YXJpZ2h0XCIgfCBcImNvbnRleHRtZW51XCJcbiAgICB8IFwibnVtcGFkMFwiIHwgXCJudW1wYWQxXCIgfCBcIm51bXBhZDJcIiB8IFwibnVtcGFkM1wiIHwgXCJudW1wYWQ0XCIgfCBcIm51bXBhZDVcIlxuICAgIHwgXCJudW1wYWQ2XCIgfCBcIm51bXBhZDdcIiB8IFwibnVtcGFkOFwiIHwgXCJudW1wYWQ5XCIgfCBcIm51bXBhZG11bHRpcGx5XCIgfCBcIm51bXBhZGFkZFwiXG4gICAgfCBcIm51bXBhZHN1YnRyYWN0XCIgfCBcIm51bXBhZGRlY2ltYWxcIiB8IFwibnVtcGFkZGl2aWRlXCJcbiAgICB8IFwiZjFcIiB8IFwiZjJcIiB8IFwiZjNcIiB8IFwiZjRcIiB8IFwiZjVcIiB8IFwiZjZcIiB8IFwiZjdcIiB8IFwiZjhcIiB8IFwiZjlcIiB8IFwiZjEwXCIgfCBcImYxMVwiIHwgXCJmMTJcIlxuICAgIHwgXCJudW1sb2NrXCIgfCBcInNjcm9sbGxvY2tcIiB8IFwic2VtaWNvbG9uXCIgfCBcImVxdWFsXCIgfCBcImNvbW1hXCIgfCBcIm1pbnVzXCIgfCBcInBlcmlvZFwiXG4gICAgfCBcInNsYXNoXCIgfCBcImJhY2txdW90ZVwiIHwgXCJicmFja2V0bGVmdFwiIHwgXCJiYWNrc2xhc2hcIiB8IFwiYnJhY2tldHJpZ2h0XCIgfCBcInF1b3RlXCJcbiAgICB8IFwiQVwiIHwgXCJCXCIgfCBcIkNcIiB8IFwiRFwiIHwgXCJFXCIgfCBcIkZcIiB8IFwiR1wiIHwgXCJIXCIgfCBcIklcIiB8IFwiSlwiIHwgXCJLXCIgfCBcIkxcIiB8IFwiTVwiXG4gICAgfCBcIk5cIiB8IFwiT1wiIHwgXCJQXCIgfCBcIlFcIiB8IFwiUlwiIHwgXCJTXCIgfCBcIlRcIiB8IFwiVVwiIHwgXCJWXCIgfCBcIldcIiB8IFwiWFwiIHwgXCJZXCIgfCBcIlpcIlxuICAgIHwgXCJhXCIgfCBcImJcIiB8IFwiY1wiIHwgXCJkXCIgfCBcImVcIiB8IFwiZlwiIHwgXCJnXCIgfCBcImhcIiB8IFwiaVwiIHwgXCJqXCIgfCBcImtcIiB8IFwibFwiIHwgXCJtXCJcbiAgICB8IFwiblwiIHwgXCJvXCIgfCBcInBcIiB8IFwicVwiIHwgXCJyXCIgfCBcInNcIiB8IFwidFwiIHwgXCJ1XCIgfCBcInZcIiB8IFwid1wiIHwgXCJ4XCIgfCBcInlcIiB8IFwielwiO1xuXG4vLyBjdHJsK2FsdCttZXRhK3NoaWZ0XG50eXBlIEtleVByZWZpeCA9XG4gICAgYGN0cmxgIHxcbiAgICBgY3RybCthbHRgIHxcbiAgICBgY3RybCthbHQrc2hpZnRgIHxcbiAgICBgY3RybCthbHQrc2hpZnQrbWV0YWAgfFxuICAgIGBjdHJsK2FsdCttZXRhYCB8XG4gICAgYGN0cmwrc2hpZnRgIHxcbiAgICBgY3RybCtzaGlmdCttZXRhYCB8XG4gICAgYGN0cmwrbWV0YWAgfFxuICAgIGBhbHRgIHxcbiAgICBgYWx0K3NoaWZ0YCB8XG4gICAgYGFsdCtzaGlmdCttZXRhYCB8XG4gICAgYGFsdCttZXRhYCB8XG4gICAgYHNoaWZ0YCB8XG4gICAgYHNoaWZ0K21ldGFgIHxcbiAgICBgbWV0YWBcblxuZXhwb3J0IHR5cGUgS2V5YmluZEV2ZW50ID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBLZXliaW5kQ29kZSA9IGAke0tleVByZWZpeH0rJHtLZXlDb2RlfWAgfCBLZXlDb2RlO1xuXG5cblxuZXhwb3J0IHR5cGUgQ29tbWFuZEFjdGlvbjxUID0gYW55PiA9IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbm9uLW1vZGlmaWVyIGtleShzKSB0aGF0IG11c3QgYmUgcHJlc3NlZCBmb3IgdGhlIGV2ZW50IHRvIGZpcmUuXG4gICAgICovXG4gICAgc2hvcnRjdXRLZXk6IEtleWJpbmRDb2RlIHwgS2V5YmluZENvZGVbXSxcblxuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUga2V5Ym9hcmQgc2hvcnRjdXQgaXMgcHJlc3NlZCBvciB0aGUgaXRlbVxuICAgICAqIGlzIGFjdGl2YXRlZCBpbiB0aGUgR1VJIG1lbnVcbiAgICAgKiBJZiB0aGUgR1VJIG1lbnUgaXMgb3BlbiwgaXQgd2lsbCBzaG93IGEgc3Bpbm5lciBpZiB0aGUgYWN0aW9uIHJldHVybnMgYSBgUHJvbWlzZWBcbiAgICAgKi9cbiAgICBhY3Rpb246IChldnQ6IEtleWJvYXJkRXZlbnQsIGRhdGE/OiBUKSA9PiBQcm9taXNlPGFueT4gfCBhbnksXG5cbiAgICAvKipcbiAgICAgKiBBcmJpdHJhcnkgZGF0YSBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIGFjdGlvblxuICAgICAqL1xuICAgIGRhdGE/OiBULFxuXG4gICAgLyoqXG4gICAgICogTGFiZWwgaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZSBwb3B1cFxuICAgICAqL1xuICAgIGxhYmVsPzogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogS2V5d29yZHMgdGhhdCBjYW4gaGVscCBwaWNrIHRoaXMgY29tbWFuZFxuICAgICAqL1xuICAgIGtleXdvcmRzPzogc3RyaW5nIHwgc3RyaW5nW10sXG5cbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIHBvcHVwXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcm9vdCBhbmNlc3RvciBlbGVtZW50IG9mIHRoZSBhY3Rpb25cbiAgICAgKiAoVGhpcyBhbGxvd3Mgc2NvcGluZyBjb21tYW5kcyB0byBzcGVjaWZpYyBIVE1MIGVsZW1lbnRzKVxuICAgICAqIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgZXZlbnQgdGFyZ2V0IG11c3QgYmUgYSBkZXNjZW5kYW50XG4gICAgICpcbiAgICAgKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hpbmcgZGVzY2VuZGFudHMsIG9ubHlcbiAgICAgKiB0aGUgZnVydGhlc3QgZGVzY2VuZGFudCB3aWxsIGJlIGZpcmVkXG4gICAgICovXG4gICAgcm9vdEVsZW1lbnQ/OiBIVE1MRWxlbWVudCxcblxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBmb3IgdGhlIHJvb3QuIFVzZWQgZm9yIHRoZSBVSSBjb250cm9sIGFuZCBkZWJ1Z2dpbmcuXG4gICAgICovXG4gICAgcm9vdE5hbWU/OiBzdHJpbmcsXG5cbiAgICAvLyBwcmV2ZW50RGVmYXVsdD86IGJvb2xlYW4sXG4gICAgLy8gc3RvcFByb3BhZ2F0aW9uPzogYm9vbGVhblxufTtcblxudHlwZSBDb21tYW5kQmxvY2sgPSB7XG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgYWN0aW9uczogQ29tbWFuZEFjdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tbWFuZFBhbGV0dGVPcHRpb25zID0ge1xuICAgIGtleWJpbmQ6IEtleWJpbmRDb2RlXG59XG5cbi8qKlxuICpcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb21tYW5kUGFsZXR0ZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBjb21tYW5kQmxvY2tzOiBDb21tYW5kQmxvY2tbXSA9IFtdO1xuICAgIHByaXZhdGUgaW50ZXJ2YWw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsYXp5TG9hZGVyOiBMYXp5TG9hZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgKGV2dCkgPT4gdGhpcy5vbktleURvd24oZXZ0KSk7XG5cbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEdvIGJhY2t3YXJkcyBzaW5jZSB3ZSdyZSBzcGxpY2luZyBpdGVtcyBvdXQgb2YgdGhlIGFycmF5LlxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuY29tbWFuZEJsb2Nrcy5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZEJsb2NrID0gdGhpcy5jb21tYW5kQmxvY2tzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gdGhlIERPTSwgd2Ugd2lsbFxuICAgICAgICAgICAgICAgIC8vIHRyZWF0IGl0IGFzIGhhdmluZyBiZWVuIHBlcm1hbmVudGx5IHJlbW92ZWQuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQ291bGQgdGhpcyBldmVyIGNhdXNlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzP1xuICAgICAgICAgICAgICAgIGlmICghY29tbWFuZEJsb2NrLmVsZW1lbnQuaXNDb25uZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWFuZEJsb2Nrcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDUgKiA2MCAqIDEwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb21tYW5kQmxvY2tzKGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgICBjb25zdCBlbGVtZW50UGF0aDogSFRNTEVsZW1lbnRbXSA9IFtlbGVtZW50XTtcbiAgICAgICAgbGV0IGN1cnJlbnRUYXJnZXQ6IEhUTUxFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZWxlbWVudFBhdGgudW5zaGlmdChjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgfSB3aGlsZSAoY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KTtcblxuICAgICAgICAvLyBPcmRlcmVkIG1hdGNoaW5nIGNvbW1hbmQgYmxvY2tzLCBjbG9zZXN0IGZpcnN0XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tbWFuZEJsb2NrczogQ29tbWFuZEJsb2NrW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRQYXRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21tYW5kQmxvY2sgPSB0aGlzLmNvbW1hbmRCbG9ja3MuZmluZChjYiA9PiBjYi5lbGVtZW50ID09IGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNvbW1hbmRCbG9jaykge1xuICAgICAgICAgICAgICAgIG1hdGNoaW5nQ29tbWFuZEJsb2Nrcy51bnNoaWZ0KGNvbW1hbmRCbG9jayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hpbmdDb21tYW5kQmxvY2tzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBrZXlkb3duIGV2ZW50c1xuICAgICAqXG4gICAgICogSWYgYW4gZXZlbnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZSwgd2UgZG9uJ3QgbmVlZFxuICAgICAqIHRvIGV4cGxpY2l0bHkgcmVtb3ZlIHRoZSBiaW5kaW5ncywgYXMgdGhleSB3aWxsIG5ldmVyIGZpcmVcbiAgICAgKlxuICAgICAqIFdlIHBlcmlvZGljYWxseSBjaGVjayBhbmQgcmVtb3ZlIHVuY29ubmVjdGVkIGNvbW1hbmQgYmxvY2tzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbktleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tbWFuZEJsb2NrcyA9IHRoaXMuZ2V0Q29tbWFuZEJsb2NrcyhldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICAvLyBTdHJpbmcgaW4gZm9ybWF0IGBjdHJsK2FsdCtGYCwgYGN0cmwrRmAgZXRjLlxuICAgICAgICBjb25zdCBrZXkgPSBbXG4gICAgICAgICAgICBldnQuY3RybEtleSA/IFwiY3RybFwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXZ0LmFsdEtleSA/IFwiYWx0XCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBldnQuc2hpZnRLZXkgPyBcInNoaWZ0XCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBldnQubWV0YUtleSA/IFwibWV0YVwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXZ0LmNvZGUuc3RhcnRzV2l0aChcIktleVwiKSA/IGV2dC5rZXkgOiBldnQuY29kZVxuICAgICAgICBdLmZpbHRlcihhID0+IGEpLmpvaW4oJysnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tbWFuZEJsb2NrIG9mIG1hdGNoaW5nQ29tbWFuZEJsb2Nrcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gY29tbWFuZEJsb2NrLmFjdGlvbnMuZmluZChhID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhLnNob3J0Y3V0S2V5KVxuICAgICAgICAgICAgICAgICAgICA/IGEuc2hvcnRjdXRLZXkuaW5jbHVkZXMoa2V5IGFzIGFueSlcbiAgICAgICAgICAgICAgICAgICAgOiBhLnNob3J0Y3V0S2V5ID09IGtleSBhcyBhbnlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VBY3Rpb24oYWN0aW9uKTtcblxuICAgICAgICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIGFjdGlvbiBhbmQgbW92ZSBvbi5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBLZWVwIGNoZWNraW5nIGZvciBtYXRjaGluZyBhY3Rpb25zXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBleGVjdXRpb24gcmVhY2hlcyB0aGlzIHBvaW50LCB0aGVyZSB3ZXJlIG5vIG1hdGNoaW5nIGFjdGlvbnMgb24gdGhlXG4gICAgICAgIC8vIHBhdGggb2YgZWxlbWVudHMgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRDb21tYW5kKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBhY3Rpb246IENvbW1hbmRBY3Rpb24pIHtcbiAgICAgICAgY29uc3QgY29tbWFuZEJsb2NrID0gdGhpcy5jb21tYW5kQmxvY2tzLmZpbmQoYiA9PiBiLmVsZW1lbnQgPT0gZWxlbWVudCkgPz8gKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0geyBlbGVtZW50LCBhY3Rpb25zOiBbXSB9O1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kQmxvY2tzLnB1c2goY2IpO1xuICAgICAgICAgICAgcmV0dXJuIGNiO1xuICAgICAgICB9KSgpO1xuXG4gICAgICAgIC8vIFRoaXMgaXMgbGlrZWx5IGEgZHVwbGljYXRlIGVudHJ5XG4gICAgICAgIGlmIChjb21tYW5kQmxvY2suYWN0aW9ucy5maW5kKGEgPT4gYS5zaG9ydGN1dEtleSA9PSBhY3Rpb24uc2hvcnRjdXRLZXkpKSB7XG4gICAgICAgICAgICB3YXJuKExvZ0ljb24ud2FybmluZywgYEluc2VydGluZyBkdXBsaWNhdGUgYWN0aW9uIG9uIGVsZW1lbnRgLCB7IGVsZW1lbnQsIGFjdGlvbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxvZyhMb2dJY29uLmNpcmNsZV9ibHVlLCBgSW5zZXJ0ZWQgYWN0aW9uYCwgYWN0aW9uKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSB0aGUgc2hvcnRjdXQga2V5cyBsb3dlcmNhc2Ugc28gY2FzZSBzZW5zaXRpdml0eSBkb2Vzbid0IHNjYWxwIHNvbWVvbmVcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uLnNob3J0Y3V0S2V5KSlcbiAgICAgICAgICAgIGFjdGlvbi5zaG9ydGN1dEtleSA9IGFjdGlvbi5zaG9ydGN1dEtleS5tYXAoayA9PiBrLnRvTG93ZXJDYXNlKCkpIGFzIGFueTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWN0aW9uLnNob3J0Y3V0S2V5ID0gYWN0aW9uLnNob3J0Y3V0S2V5LnRvTG93ZXJDYXNlKCkgYXMgYW55O1xuXG4gICAgICAgIGNvbW1hbmRCbG9jay5hY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUNvbW1hbmQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGFjdGlvbjogQ29tbWFuZEFjdGlvbiB8IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb21tYW5kQmxvY2sgPSB0aGlzLmNvbW1hbmRCbG9ja3MuZmluZChiID0+IGIuZWxlbWVudCA9PSBlbGVtZW50KSA/PyB7IGVsZW1lbnQsIGFjdGlvbnM6IFtdIH07XG4gICAgICAgIGNvbnN0IGFjdGlvbkluZGV4ID0gY29tbWFuZEJsb2NrPy5hY3Rpb25zLmZpbmRJbmRleChhID0+IHR5cGVvZiBhY3Rpb24gPT0gXCJzdHJpbmdcIiA/IGEuc2hvcnRjdXRLZXkgPT0gYWN0aW9uIDogYSA9PSBhY3Rpb24pO1xuXG4gICAgICAgIGlmICghY29tbWFuZEJsb2NrKSB7XG4gICAgICAgICAgICBlcnIoTG9nSWNvbi53YXJuaW5nLCBgQ2Fubm90IHJlbW92ZSBjb21tYW5kOiBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW55IGNvbW1hbmRzIHJlZ2lzdGVyZWRgLCB7IGVsZW1lbnQsIGFjdGlvbiB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFjdGlvbkluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICB3YXJuKExvZ0ljb24ud2FybmluZywgYENhbm5vdCByZW1vdmUgY29tbWFuZDogbm90IHByZXNlbnQgaW4gbGlzdGAsIHsgZWxlbWVudCwgYWN0aW9uIH0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb21tYW5kQmxvY2suYWN0aW9ucy5zcGxpY2UoYWN0aW9uSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBpbml0aWFsaXplKG9wdGlvbnM6IENvbW1hbmRQYWxldHRlT3B0aW9ucykge1xuICAgICAgICB0aGlzLmF0dGFjaEVsZW1lbnRDb21tYW5kcyhbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2hvcnRjdXRLZXk6IG9wdGlvbnMua2V5YmluZCxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMub3BlblBhbGV0dGUoKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPcGVuIHRoZSBjb21tYW5kIHBhbGV0dGVcIixcbiAgICAgICAgICAgICAgICBrZXl3b3JkczogW1wiY29tbWFuZFwiLCBcInByb21wdFwiLCBcImNvbnNvbGVcIiwgXCJhY3Rpb25zXCJdLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkNvbW1hbmQgUGFsZXR0ZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gdGhlIGNvbW1hbmQgcGFsZXR0ZVxuICAgICAqL1xuICAgIG9wZW5QYWxldHRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbihDb21tYW5kUGFsZXR0ZUNvbXBvbmVudCwge1xuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB0b3A6IFwiOHB4XCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhOiB7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHVibGljIGhlbHBlciB0byBpbnZva2UgYW4gYWN0aW9uLlxuICAgICAqL1xuICAgIGludm9rZUFjdGlvbihhY3Rpb246IENvbW1hbmRBY3Rpb24sIGFyZ3M/KSB7XG4gICAgICAgIGNvbnN0IGZuID0gYWN0aW9uLmFjdGlvbjtcbiAgICAgICAgaWYgKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gZm4oYXJncyk7XG5cbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcHJvbWlzZXMgc28gdGhhdCB0aGUgR1VJIGNhbiBzaG93IHNwaW5uZXJzIGZvciB0aGVtXG4gICAgICAgICAgICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChleCkge1xuICAgICAgICAgICAgICAgIGVycihMb2dJY29uLmJvbWIsIGBFeGVjdXRpbmcgYWN0aW9uIHRocmV3IGFuIGVycm9yYCwgeyBhY3Rpb24gfSwgZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2FybihMb2dJY29uLndhcm5pbmcsIGBDYW5ub3QgZXhlY3V0ZSBhY3Rpb24sIHR5cGUgaXMgbm90IFwiZnVuY3Rpb25cImAsIHsgYWN0aW9uIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoIGNvbW1hbmRzIHRvIGFuIEVsZW1lbnQgYW5kIGl0J3Mgc3VidHJlZVxuICAgICAqL1xuICAgIGF0dGFjaEVsZW1lbnRDb21tYW5kcyhhY3Rpb25zOiBDb21tYW5kQWN0aW9uW10pXG4gICAgYXR0YWNoRWxlbWVudENvbW1hbmRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBhY3Rpb25zOiBDb21tYW5kQWN0aW9uW10pXG4gICAgYXR0YWNoRWxlbWVudENvbW1hbmRzKGVsZW1lbnQ6IENvbW1hbmRBY3Rpb25bXSB8IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keSwgYWN0aW9uczogQ29tbWFuZEFjdGlvbltdID0gW10pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGFjdGlvbnMgPSBlbGVtZW50O1xuICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIH1cblxuICAgICAgICBhY3Rpb25zLmZvckVhY2goYSA9PiB0aGlzLmFkZENvbW1hbmQoZWxlbWVudCBhcyBhbnksIGEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRhY2ggc3BlY2lmaWVkIGNvbW1hbmRzIGZyb20gYW4gRWxlbWVudCBzdWJ0cmVlXG4gICAgICovXG4gICAgZGV0YWNoRWxlbWVudENvbW1hbmRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keSwgYWN0aW9uczogQ29tbWFuZEFjdGlvbltdID0gW10pIHtcbiAgICAgICAgYWN0aW9ucy5mb3JFYWNoKGEgPT4gdGhpcy5yZW1vdmVDb21tYW5kKGVsZW1lbnQsIGEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBjb21tYW5kcyB1bmRlciBhIGdpdmVuIGVsZW1lbnRcbiAgICAgKi9cbiAgICBnZXRSZWdpc3RlcmVkQ29tbWFuZHMoZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbW1hbmRCbG9ja3MoZWxlbWVudCkubWFwKGMgPT4gYy5hY3Rpb25zKS5mbGF0KCk7XG4gICAgfVxufVxuIl19
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1wYWxldHRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3NlcnZpY2VzL2NvbW1hbmQtcGFsZXR0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOzs7O0FBRWxHLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQWlIdEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBSzlCLFlBQ3FCLE1BQWlCLEVBQ2pCLFVBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFMMUMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBT3ZDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsNERBQTREO1lBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFekMsc0RBQXNEO2dCQUN0RCxrREFBa0Q7Z0JBQ2xELDZCQUE2QjtnQkFD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dEY7SUFDTCxDQUFDO0lBT0QscUJBQXFCLENBQUMsVUFBeUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUEyQixFQUFFO1FBQ3ZHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QixPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ2xCLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQzNCO1FBRUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCLENBQUMsVUFBdUIsUUFBUSxDQUFDLElBQUksRUFBRSxVQUEyQixFQUFFO1FBQ3JGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQixDQUFDLFVBQXVCLFFBQVEsQ0FBQyxJQUFJO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQWhPUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSG9zdExpc3RlbmVyLCBUeXBlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25zb2xlTG9nZ2VyLCBMb2dJY29uIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGF6eUxvYWRlclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2xhenktbG9hZGVyL2xhenktbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZFBhbGV0dGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbW1hbmQtcGFsZXR0ZS9jb21tYW5kLXBhbGV0dGUuY29tcG9uZW50JztcblxuY29uc3QgeyBsb2csIHdhcm4sIGVyciB9ID0gQ29uc29sZUxvZ2dlcihcIkNvbW1hbmRQYWxldHRlXCIsIFwiIzIxOTZmM1wiKTtcblxudHlwZSBLZXlDb2RlID0gXCJCYWNrc3BhY2VcIiB8IFwiVGFiXCIgfCBcIkVudGVyXCIgfCBcIlNoaWZ0TGVmdFwiIHwgXCJTaGlmdFJpZ2h0XCJcbiAgICB8IFwiQ29udHJvbExlZnRcIiB8IFwiQ29udHJvbFJpZ2h0XCIgfCBcIkFsdExlZnRcIiB8IFwiQWx0UmlnaHRcIiB8IFwiUGF1c2VcIiB8IFwiQ2Fwc0xvY2tcIlxuICAgIHwgXCJFc2NhcGVcIiB8IFwiU3BhY2VcIiB8IFwiUGFnZVVwXCIgfCBcIlBhZ2VEb3duXCIgfCBcIkVuZFwiIHwgXCJIb21lXCIgfCBcIkFycm93TGVmdFwiXG4gICAgfCBcIkFycm93VXBcIiB8IFwiQXJyb3dSaWdodFwiIHwgXCJBcnJvd0Rvd25cIiB8IFwiUHJpbnRTY3JlZW5cIiB8IFwiSW5zZXJ0XCIgfCBcIkRlbGV0ZVwiXG4gICAgfCBcIk1ldGFMZWZ0XCIgfCBcIk1ldGFSaWdodFwiIHwgXCJDb250ZXh0TWVudVwiIHwgXCJOdW1wYWQwXCIgfCBcIk51bXBhZDFcIiB8IFwiTnVtcGFkMlwiXG4gICAgfCBcIk51bXBhZDNcIiB8IFwiTnVtcGFkNFwiIHwgXCJOdW1wYWQ1XCIgfCBcIk51bXBhZDZcIiB8IFwiTnVtcGFkN1wiIHwgXCJOdW1wYWQ4XCJcbiAgICB8IFwiTnVtcGFkOVwiIHwgXCJOdW1wYWRNdWx0aXBseVwiIHwgXCJOdW1wYWRBZGRcIiB8IFwiTnVtcGFkU3VidHJhY3RcIlxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgfCBcIk51bXBhZERpdmlkZVwiXG4gICAgfCBcIkYxXCIgfCBcIkYyXCIgfCBcIkYzXCIgfCBcIkY0XCIgfCBcIkY1XCIgfCBcIkY2XCIgfCBcIkY3XCIgfCBcIkY4XCIgfCBcIkY5XCIgfCBcIkYxMFwiIHwgXCJGMTFcIiB8IFwiRjEyXCJcbiAgICB8IFwiTnVtTG9ja1wiIHwgXCJTY3JvbGxMb2NrXCIgfCBcIlNlbWljb2xvblwiIHwgXCJFcXVhbFwiIHwgXCJDb21tYVwiIHwgXCJNaW51c1wiXG4gICAgfCBcIlBlcmlvZFwiIHwgXCJTbGFzaFwiIHwgXCJCYWNrcXVvdGVcIiB8IFwiQnJhY2tldExlZnRcIiB8IFwiQmFja3NsYXNoXCJcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgfCBcIlF1b3RlXCIgfCBcImJhY2tzcGFjZVwiIHwgXCJ0YWJcIiB8IFwiZW50ZXJcIiB8IFwic2hpZnRsZWZ0XCJcbiAgICB8IFwic2hpZnRyaWdodFwiIHwgXCJjb250cm9sbGVmdFwiIHwgXCJjb250cm9scmlnaHRcIiB8IFwiYWx0bGVmdFwiIHwgXCJhbHRyaWdodFwiXG4gICAgfCBcInBhdXNlXCIgfCBcImNhcHNsb2NrXCIgfCBcImVzY2FwZVwiIHwgXCJzcGFjZVwiIHwgXCJwYWdldXBcIiB8IFwicGFnZWRvd25cIiB8IFwiZW5kXCJcbiAgICB8IFwiaG9tZVwiIHwgXCJhcnJvd2xlZnRcIiB8IFwiYXJyb3d1cFwiIHwgXCJhcnJvd3JpZ2h0XCIgfCBcImFycm93ZG93blwiIHwgXCJwcmludHNjcmVlblwiXG4gICAgfCBcImluc2VydFwiIHwgXCJkZWxldGVcIiB8IFwibWV0YWxlZnRcIiB8IFwibWV0YXJpZ2h0XCIgfCBcImNvbnRleHRtZW51XCJcbiAgICB8IFwibnVtcGFkMFwiIHwgXCJudW1wYWQxXCIgfCBcIm51bXBhZDJcIiB8IFwibnVtcGFkM1wiIHwgXCJudW1wYWQ0XCIgfCBcIm51bXBhZDVcIlxuICAgIHwgXCJudW1wYWQ2XCIgfCBcIm51bXBhZDdcIiB8IFwibnVtcGFkOFwiIHwgXCJudW1wYWQ5XCIgfCBcIm51bXBhZG11bHRpcGx5XCIgfCBcIm51bXBhZGFkZFwiXG4gICAgfCBcIm51bXBhZHN1YnRyYWN0XCIgfCBcIm51bXBhZGRlY2ltYWxcIiB8IFwibnVtcGFkZGl2aWRlXCJcbiAgICB8IFwiZjFcIiB8IFwiZjJcIiB8IFwiZjNcIiB8IFwiZjRcIiB8IFwiZjVcIiB8IFwiZjZcIiB8IFwiZjdcIiB8IFwiZjhcIiB8IFwiZjlcIiB8IFwiZjEwXCIgfCBcImYxMVwiIHwgXCJmMTJcIlxuICAgIHwgXCJudW1sb2NrXCIgfCBcInNjcm9sbGxvY2tcIiB8IFwic2VtaWNvbG9uXCIgfCBcImVxdWFsXCIgfCBcImNvbW1hXCIgfCBcIm1pbnVzXCIgfCBcInBlcmlvZFwiXG4gICAgfCBcInNsYXNoXCIgfCBcImJhY2txdW90ZVwiIHwgXCJicmFja2V0bGVmdFwiIHwgXCJiYWNrc2xhc2hcIiB8IFwiYnJhY2tldHJpZ2h0XCIgfCBcInF1b3RlXCJcbiAgICB8IFwiQVwiIHwgXCJCXCIgfCBcIkNcIiB8IFwiRFwiIHwgXCJFXCIgfCBcIkZcIiB8IFwiR1wiIHwgXCJIXCIgfCBcIklcIiB8IFwiSlwiIHwgXCJLXCIgfCBcIkxcIiB8IFwiTVwiXG4gICAgfCBcIk5cIiB8IFwiT1wiIHwgXCJQXCIgfCBcIlFcIiB8IFwiUlwiIHwgXCJTXCIgfCBcIlRcIiB8IFwiVVwiIHwgXCJWXCIgfCBcIldcIiB8IFwiWFwiIHwgXCJZXCIgfCBcIlpcIlxuICAgIHwgXCJhXCIgfCBcImJcIiB8IFwiY1wiIHwgXCJkXCIgfCBcImVcIiB8IFwiZlwiIHwgXCJnXCIgfCBcImhcIiB8IFwiaVwiIHwgXCJqXCIgfCBcImtcIiB8IFwibFwiIHwgXCJtXCJcbiAgICB8IFwiblwiIHwgXCJvXCIgfCBcInBcIiB8IFwicVwiIHwgXCJyXCIgfCBcInNcIiB8IFwidFwiIHwgXCJ1XCIgfCBcInZcIiB8IFwid1wiIHwgXCJ4XCIgfCBcInlcIiB8IFwielwiO1xuXG4vLyBjdHJsK2FsdCttZXRhK3NoaWZ0XG50eXBlIEtleVByZWZpeCA9XG4gICAgYGN0cmxgIHxcbiAgICBgY3RybCthbHRgIHxcbiAgICBgY3RybCthbHQrc2hpZnRgIHxcbiAgICBgY3RybCthbHQrc2hpZnQrbWV0YWAgfFxuICAgIGBjdHJsK2FsdCttZXRhYCB8XG4gICAgYGN0cmwrc2hpZnRgIHxcbiAgICBgY3RybCtzaGlmdCttZXRhYCB8XG4gICAgYGN0cmwrbWV0YWAgfFxuICAgIGBhbHRgIHxcbiAgICBgYWx0K3NoaWZ0YCB8XG4gICAgYGFsdCtzaGlmdCttZXRhYCB8XG4gICAgYGFsdCttZXRhYCB8XG4gICAgYHNoaWZ0YCB8XG4gICAgYHNoaWZ0K21ldGFgIHxcbiAgICBgbWV0YWBcblxuZXhwb3J0IHR5cGUgS2V5YmluZEV2ZW50ID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBLZXliaW5kQ29kZSA9IGAke0tleVByZWZpeH0rJHtLZXlDb2RlfWAgfCBLZXlDb2RlO1xuXG5cblxuZXhwb3J0IHR5cGUgQ29tbWFuZEFjdGlvbjxUID0gYW55PiA9IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbm9uLW1vZGlmaWVyIGtleShzKSB0aGF0IG11c3QgYmUgcHJlc3NlZCBmb3IgdGhlIGV2ZW50IHRvIGZpcmUuXG4gICAgICovXG4gICAgc2hvcnRjdXRLZXk/OiBLZXliaW5kQ29kZSB8IEtleWJpbmRDb2RlW10sXG5cbiAgICAvKipcbiAgICAgKiBBY3Rpb24gdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIGtleWJvYXJkIHNob3J0Y3V0IGlzIHByZXNzZWQgb3IgdGhlIGl0ZW1cbiAgICAgKiBpcyBhY3RpdmF0ZWQgaW4gdGhlIEdVSSBtZW51XG4gICAgICogSWYgdGhlIEdVSSBtZW51IGlzIG9wZW4sIGl0IHdpbGwgc2hvdyBhIHNwaW5uZXIgaWYgdGhlIGFjdGlvbiByZXR1cm5zIGEgYFByb21pc2VgXG4gICAgICovXG4gICAgYWN0aW9uOiAoZXZ0OiBLZXlib2FyZEV2ZW50LCBkYXRhPzogVCkgPT4gUHJvbWlzZTxhbnk+IHwgYW55LFxuXG4gICAgLyoqXG4gICAgICogQXJiaXRyYXJ5IGRhdGEgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBhY3Rpb25cbiAgICAgKi9cbiAgICBkYXRhPzogVCxcblxuICAgIC8qKlxuICAgICAqIExhYmVsIGluIHRoZSBjb21tYW5kIHBhbGV0dGUgcG9wdXBcbiAgICAgKi9cbiAgICBsYWJlbD86IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIEtleXdvcmRzIHRoYXQgY2FuIGhlbHAgcGljayB0aGlzIGNvbW1hbmRcbiAgICAgKi9cbiAgICBrZXl3b3Jkcz86IHN0cmluZyB8IHN0cmluZ1tdLFxuXG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBwb3B1cFxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogVGhlIHJvb3QgYW5jZXN0b3IgZWxlbWVudCBvZiB0aGUgYWN0aW9uXG4gICAgICogKFRoaXMgYWxsb3dzIHNjb3BpbmcgY29tbWFuZHMgdG8gc3BlY2lmaWMgSFRNTCBlbGVtZW50cylcbiAgICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGV2ZW50IHRhcmdldCBtdXN0IGJlIGEgZGVzY2VuZGFudFxuICAgICAqXG4gICAgICogSWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoaW5nIGRlc2NlbmRhbnRzLCBvbmx5XG4gICAgICogdGhlIGZ1cnRoZXN0IGRlc2NlbmRhbnQgd2lsbCBiZSBmaXJlZFxuICAgICAqL1xuICAgIHJvb3RFbGVtZW50PzogSFRNTEVsZW1lbnQsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgZm9yIHRoZSByb290LiBVc2VkIGZvciB0aGUgVUkgY29udHJvbCBhbmQgZGVidWdnaW5nLlxuICAgICAqL1xuICAgIHJvb3ROYW1lPzogc3RyaW5nLFxuXG4gICAgLy8gcHJldmVudERlZmF1bHQ/OiBib29sZWFuLFxuICAgIC8vIHN0b3BQcm9wYWdhdGlvbj86IGJvb2xlYW5cbn07XG5cbnR5cGUgQ29tbWFuZEJsb2NrID0ge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIGFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbW1hbmRQYWxldHRlT3B0aW9ucyA9IHtcbiAgICBrZXliaW5kOiBLZXliaW5kQ29kZVxufVxuXG4vKipcbiAqXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29tbWFuZFBhbGV0dGVTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgY29tbWFuZEJsb2NrczogQ29tbWFuZEJsb2NrW10gPSBbXTtcbiAgICBwcml2YXRlIGludGVydmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGF6eUxvYWRlcjogTGF6eUxvYWRlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIChldnQpID0+IHRoaXMub25LZXlEb3duKGV2dCkpO1xuXG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBHbyBiYWNrd2FyZHMgc2luY2Ugd2UncmUgc3BsaWNpbmcgaXRlbXMgb3V0IG9mIHRoZSBhcnJheS5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmNvbW1hbmRCbG9ja3MubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBjb21tYW5kQmxvY2sgPSB0aGlzLmNvbW1hbmRCbG9ja3NbaV07XG5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBpbmRleCBpcyBzb21laG93IG51bGwsIHJpcCBpdCBvdXQgb2ZcbiAgICAgICAgICAgICAgICAvLyB0aGUgYXJyYXkgYW5kIHdhaXQgZm9yIGNsZWFudXAgdG8gdHJpZ2dlciBhZ2FpblxuICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgcmVzdCBvZiB0aGUgYXJyYXkuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQ291bGQgdGhpcyBsZWFkIHRvIGxlYWtzIHdoZXJlIHRoaW5ncyBhdCB0aGUgZW5kXG4gICAgICAgICAgICAgICAgLy8gbmV2ZXIgZ2V0IGNsZWFuZWQ/XG4gICAgICAgICAgICAgICAgaWYgKGNvbW1hbmRCbG9jayA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWFuZEJsb2Nrcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgRE9NLCB3ZSB3aWxsXG4gICAgICAgICAgICAgICAgLy8gdHJlYXQgaXQgYXMgaGF2aW5nIGJlZW4gcGVybWFuZW50bHkgcmVtb3ZlZC5cbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBDb3VsZCB0aGlzIGV2ZXIgY2F1c2UgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXM/XG4gICAgICAgICAgICAgICAgaWYgKCFjb21tYW5kQmxvY2s/LmVsZW1lbnQuaXNDb25uZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWFuZEJsb2Nrcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDUgKiA2MCAqIDEwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb21tYW5kQmxvY2tzKGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgICBjb25zdCBlbGVtZW50UGF0aDogSFRNTEVsZW1lbnRbXSA9IFtlbGVtZW50XTtcbiAgICAgICAgbGV0IGN1cnJlbnRUYXJnZXQ6IEhUTUxFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZWxlbWVudFBhdGgudW5zaGlmdChjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgfSB3aGlsZSAoY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KTtcblxuICAgICAgICAvLyBPcmRlcmVkIG1hdGNoaW5nIGNvbW1hbmQgYmxvY2tzLCBjbG9zZXN0IGZpcnN0XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tbWFuZEJsb2NrczogQ29tbWFuZEJsb2NrW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRQYXRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21tYW5kQmxvY2sgPSB0aGlzLmNvbW1hbmRCbG9ja3MuZmluZChjYiA9PiBjYi5lbGVtZW50ID09IGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNvbW1hbmRCbG9jaykge1xuICAgICAgICAgICAgICAgIG1hdGNoaW5nQ29tbWFuZEJsb2Nrcy51bnNoaWZ0KGNvbW1hbmRCbG9jayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hpbmdDb21tYW5kQmxvY2tzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBrZXlkb3duIGV2ZW50c1xuICAgICAqXG4gICAgICogSWYgYW4gZXZlbnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZSwgd2UgZG9uJ3QgbmVlZFxuICAgICAqIHRvIGV4cGxpY2l0bHkgcmVtb3ZlIHRoZSBiaW5kaW5ncywgYXMgdGhleSB3aWxsIG5ldmVyIGZpcmVcbiAgICAgKlxuICAgICAqIFdlIHBlcmlvZGljYWxseSBjaGVjayBhbmQgcmVtb3ZlIHVuY29ubmVjdGVkIGNvbW1hbmQgYmxvY2tzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbktleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tbWFuZEJsb2NrcyA9IHRoaXMuZ2V0Q29tbWFuZEJsb2NrcyhldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICAvLyBTdHJpbmcgaW4gZm9ybWF0IGBjdHJsK2FsdCtGYCwgYGN0cmwrRmAgZXRjLlxuICAgICAgICBjb25zdCBrZXkgPSBbXG4gICAgICAgICAgICBldnQuY3RybEtleSA/IFwiY3RybFwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXZ0LmFsdEtleSA/IFwiYWx0XCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBldnQuc2hpZnRLZXkgPyBcInNoaWZ0XCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBldnQubWV0YUtleSA/IFwibWV0YVwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXZ0LmNvZGUuc3RhcnRzV2l0aChcIktleVwiKSA/IGV2dC5rZXkgOiBldnQuY29kZVxuICAgICAgICBdLmZpbHRlcihhID0+IGEpLmpvaW4oJysnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tbWFuZEJsb2NrIG9mIG1hdGNoaW5nQ29tbWFuZEJsb2Nrcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gY29tbWFuZEJsb2NrLmFjdGlvbnMuZmluZChhID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhLnNob3J0Y3V0S2V5KVxuICAgICAgICAgICAgICAgICAgICA/IGEuc2hvcnRjdXRLZXkuaW5jbHVkZXMoa2V5IGFzIGFueSlcbiAgICAgICAgICAgICAgICAgICAgOiBhLnNob3J0Y3V0S2V5ID09IGtleSBhcyBhbnlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VBY3Rpb24oYWN0aW9uKTtcblxuICAgICAgICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIGFjdGlvbiBhbmQgbW92ZSBvbi5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBLZWVwIGNoZWNraW5nIGZvciBtYXRjaGluZyBhY3Rpb25zXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBleGVjdXRpb24gcmVhY2hlcyB0aGlzIHBvaW50LCB0aGVyZSB3ZXJlIG5vIG1hdGNoaW5nIGFjdGlvbnMgb24gdGhlXG4gICAgICAgIC8vIHBhdGggb2YgZWxlbWVudHMgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRDb21tYW5kKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBhY3Rpb246IENvbW1hbmRBY3Rpb24pIHtcbiAgICAgICAgY29uc3QgY29tbWFuZEJsb2NrID0gdGhpcy5jb21tYW5kQmxvY2tzLmZpbmQoYiA9PiBiLmVsZW1lbnQgPT0gZWxlbWVudCkgPz8gKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0geyBlbGVtZW50LCBhY3Rpb25zOiBbXSB9O1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kQmxvY2tzLnB1c2goY2IpO1xuICAgICAgICAgICAgcmV0dXJuIGNiO1xuICAgICAgICB9KSgpO1xuXG4gICAgICAgIC8vIFRoaXMgaXMgbGlrZWx5IGEgZHVwbGljYXRlIGVudHJ5XG4gICAgICAgIGlmIChjb21tYW5kQmxvY2suYWN0aW9ucy5maW5kKGEgPT4gYS5zaG9ydGN1dEtleSA9PSBhY3Rpb24uc2hvcnRjdXRLZXkpKSB7XG4gICAgICAgICAgICB3YXJuKExvZ0ljb24ud2FybmluZywgYEluc2VydGluZyBkdXBsaWNhdGUgYWN0aW9uIG9uIGVsZW1lbnRgLCB7IGVsZW1lbnQsIGFjdGlvbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxvZyhMb2dJY29uLmNpcmNsZV9ibHVlLCBgSW5zZXJ0ZWQgYWN0aW9uYCwgYWN0aW9uKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSB0aGUgc2hvcnRjdXQga2V5cyBsb3dlcmNhc2Ugc28gY2FzZSBzZW5zaXRpdml0eSBkb2Vzbid0IHNjYWxwIHNvbWVvbmVcbiAgICAgICAgaWYgKGFjdGlvbi5zaG9ydGN1dEtleSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uLnNob3J0Y3V0S2V5KSlcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2hvcnRjdXRLZXkgPSBhY3Rpb24uc2hvcnRjdXRLZXkubWFwKGsgPT4gay50b0xvd2VyQ2FzZSgpKSBhcyBhbnk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWN0aW9uLnNob3J0Y3V0S2V5ID0gYWN0aW9uLnNob3J0Y3V0S2V5LnRvTG93ZXJDYXNlKCkgYXMgYW55O1xuICAgICAgICB9XG5cbiAgICAgICAgY29tbWFuZEJsb2NrLmFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQ29tbWFuZChlbGVtZW50OiBIVE1MRWxlbWVudCwgYWN0aW9uOiBDb21tYW5kQWN0aW9uIHwgc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRCbG9jayA9IHRoaXMuY29tbWFuZEJsb2Nrcy5maW5kKGIgPT4gYi5lbGVtZW50ID09IGVsZW1lbnQpID8/IHsgZWxlbWVudCwgYWN0aW9uczogW10gfTtcbiAgICAgICAgY29uc3QgYWN0aW9uSW5kZXggPSBjb21tYW5kQmxvY2s/LmFjdGlvbnMuZmluZEluZGV4KGEgPT4gdHlwZW9mIGFjdGlvbiA9PSBcInN0cmluZ1wiID8gYS5zaG9ydGN1dEtleSA9PSBhY3Rpb24gOiBhID09IGFjdGlvbik7XG5cbiAgICAgICAgaWYgKCFjb21tYW5kQmxvY2spIHtcbiAgICAgICAgICAgIGVycihMb2dJY29uLndhcm5pbmcsIGBDYW5ub3QgcmVtb3ZlIGNvbW1hbmQ6IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbnkgY29tbWFuZHMgcmVnaXN0ZXJlZGAsIHsgZWxlbWVudCwgYWN0aW9uIH0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWN0aW9uSW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgIHdhcm4oTG9nSWNvbi53YXJuaW5nLCBgQ2Fubm90IHJlbW92ZSBjb21tYW5kOiBub3QgcHJlc2VudCBpbiBsaXN0YCwgeyBlbGVtZW50LCBhY3Rpb24gfSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbW1hbmRCbG9jay5hY3Rpb25zLnNwbGljZShhY3Rpb25JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIGluaXRpYWxpemUob3B0aW9uczogQ29tbWFuZFBhbGV0dGVPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuYXR0YWNoRWxlbWVudENvbW1hbmRzKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaG9ydGN1dEtleTogb3B0aW9ucy5rZXliaW5kLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5vcGVuUGFsZXR0ZSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk9wZW4gdGhlIGNvbW1hbmQgcGFsZXR0ZVwiLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiBbXCJjb21tYW5kXCIsIFwicHJvbXB0XCIsIFwiY29uc29sZVwiLCBcImFjdGlvbnNcIl0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiQ29tbWFuZCBQYWxldHRlXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiB0aGUgY29tbWFuZCBwYWxldHRlXG4gICAgICovXG4gICAgb3BlblBhbGV0dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZy5vcGVuKENvbW1hbmRQYWxldHRlQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHRvcDogXCI4cHhcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGE6IHtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQdWJsaWMgaGVscGVyIHRvIGludm9rZSBhbiBhY3Rpb24uXG4gICAgICovXG4gICAgaW52b2tlQWN0aW9uKGFjdGlvbjogQ29tbWFuZEFjdGlvbiwgYXJncz8pIHtcbiAgICAgICAgY29uc3QgZm4gPSBhY3Rpb24uYWN0aW9uO1xuICAgICAgICBpZiAodHlwZW9mIGZuID09ICdmdW5jdGlvbicpIHtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBmbihhcmdzKTtcblxuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBwcm9taXNlcyBzbyB0aGF0IHRoZSBHVUkgY2FuIHNob3cgc3Bpbm5lcnMgZm9yIHRoZW1cbiAgICAgICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICAgICAgZXJyKExvZ0ljb24uYm9tYiwgYEV4ZWN1dGluZyBhY3Rpb24gdGhyZXcgYW4gZXJyb3JgLCB7IGFjdGlvbiB9LCBleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3YXJuKExvZ0ljb24ud2FybmluZywgYENhbm5vdCBleGVjdXRlIGFjdGlvbiwgdHlwZSBpcyBub3QgXCJmdW5jdGlvblwiYCwgeyBhY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2ggY29tbWFuZHMgdG8gYW4gRWxlbWVudCBhbmQgaXQncyBzdWJ0cmVlXG4gICAgICovXG4gICAgYXR0YWNoRWxlbWVudENvbW1hbmRzKGFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXSlcbiAgICBhdHRhY2hFbGVtZW50Q29tbWFuZHMoZWxlbWVudDogSFRNTEVsZW1lbnQsIGFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXSlcbiAgICBhdHRhY2hFbGVtZW50Q29tbWFuZHMoZWxlbWVudDogQ29tbWFuZEFjdGlvbltdIHwgSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5LCBhY3Rpb25zOiBDb21tYW5kQWN0aW9uW10gPSBbXSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSkge1xuICAgICAgICAgICAgYWN0aW9ucyA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjdGlvbnMuZm9yRWFjaChhID0+IHRoaXMuYWRkQ29tbWFuZChlbGVtZW50IGFzIGFueSwgYSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGFjaCBzcGVjaWZpZWQgY29tbWFuZHMgZnJvbSBhbiBFbGVtZW50IHN1YnRyZWVcbiAgICAgKi9cbiAgICBkZXRhY2hFbGVtZW50Q29tbWFuZHMoZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5LCBhY3Rpb25zOiBDb21tYW5kQWN0aW9uW10gPSBbXSkge1xuICAgICAgICBhY3Rpb25zLmZvckVhY2goYSA9PiB0aGlzLnJlbW92ZUNvbW1hbmQoZWxlbWVudCwgYSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGNvbW1hbmRzIHVuZGVyIGEgZ2l2ZW4gZWxlbWVudFxuICAgICAqL1xuICAgIGdldFJlZ2lzdGVyZWRDb21tYW5kcyhlbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29tbWFuZEJsb2NrcyhlbGVtZW50KS5tYXAoYyA9PiBjLmFjdGlvbnMpLmZsYXQoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -2391,11 +2391,20 @@ class CommandPaletteService {
|
|
|
2391
2391
|
this.interval = setInterval(() => {
|
|
2392
2392
|
// Go backwards since we're splicing items out of the array.
|
|
2393
2393
|
for (let i = this.commandBlocks.length; i >= 0; i--) {
|
|
2394
|
-
|
|
2394
|
+
let commandBlock = this.commandBlocks[i];
|
|
2395
|
+
// If the current index is somehow null, rip it out of
|
|
2396
|
+
// the array and wait for cleanup to trigger again
|
|
2397
|
+
// for the rest of the array.
|
|
2398
|
+
// TODO: Could this lead to leaks where things at the end
|
|
2399
|
+
// never get cleaned?
|
|
2400
|
+
if (commandBlock == null) {
|
|
2401
|
+
this.commandBlocks.splice(i, 1);
|
|
2402
|
+
return;
|
|
2403
|
+
}
|
|
2395
2404
|
// If the element has been disconnected from the DOM, we will
|
|
2396
2405
|
// treat it as having been permanently removed.
|
|
2397
2406
|
// TODO: Could this ever cause unintended consequences?
|
|
2398
|
-
if (!commandBlock
|
|
2407
|
+
if (!commandBlock?.element.isConnected)
|
|
2399
2408
|
this.commandBlocks.splice(i, 1);
|
|
2400
2409
|
}
|
|
2401
2410
|
}, 5 * 60 * 1000);
|
|
@@ -2469,10 +2478,12 @@ class CommandPaletteService {
|
|
|
2469
2478
|
log(LogIcon.circle_blue, `Inserted action`, action);
|
|
2470
2479
|
}
|
|
2471
2480
|
// Make the shortcut keys lowercase so case sensitivity doesn't scalp someone
|
|
2472
|
-
if (
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2481
|
+
if (action.shortcutKey) {
|
|
2482
|
+
if (Array.isArray(action.shortcutKey))
|
|
2483
|
+
action.shortcutKey = action.shortcutKey.map(k => k.toLowerCase());
|
|
2484
|
+
else
|
|
2485
|
+
action.shortcutKey = action.shortcutKey.toLowerCase();
|
|
2486
|
+
}
|
|
2476
2487
|
commandBlock.actions.push(action);
|
|
2477
2488
|
}
|
|
2478
2489
|
removeCommand(element, action) {
|