obsidian-typings 4.111.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/implementations.cjs +914 -57
- package/dist/cjs/implementations.d.cts +8743 -2797
- package/dist/cjs/types.d.cts +11327 -3565
- package/dist/esm/implementations.mjs +1067 -46
- package/dist/obsidian-typings.api.json +12643 -6998
- package/package.json +45 -39
- package/scripts/postinstall.mjs +10 -10
|
@@ -30,12 +30,136 @@ __export(index_exports, {
|
|
|
30
30
|
ViewType: () => ViewType,
|
|
31
31
|
createTFileInstance: () => createTFileInstance,
|
|
32
32
|
createTFolderInstance: () => createTFolderInstance,
|
|
33
|
+
getAbstractTextComponentConstructor: () => getAbstractTextComponentConstructor,
|
|
34
|
+
getAllPropertiesViewConstructor: () => getAllPropertiesViewConstructor,
|
|
33
35
|
getAppConstructor: () => getAppConstructor,
|
|
36
|
+
getAppMenuBarManagerConstructor: () => getAppMenuBarManagerConstructor,
|
|
37
|
+
getAppSettingConstructor: () => getAppSettingConstructor,
|
|
38
|
+
getAudioViewConstructor: () => getAudioViewConstructor,
|
|
39
|
+
getBacklinkViewConstructor: () => getBacklinkViewConstructor,
|
|
40
|
+
getBaseComponentConstructor: () => getBaseComponentConstructor,
|
|
41
|
+
getBasesEntryConstructor: () => getBasesEntryConstructor,
|
|
42
|
+
getBasesEntryGroupConstructor: () => getBasesEntryGroupConstructor,
|
|
43
|
+
getBasesQueryResultConstructor: () => getBasesQueryResultConstructor,
|
|
44
|
+
getBasesViewConfigConstructor: () => getBasesViewConfigConstructor,
|
|
45
|
+
getBasesViewConstructor: () => getBasesViewConstructor,
|
|
46
|
+
getBookmarksViewConstructor: () => getBookmarksViewConstructor,
|
|
47
|
+
getBooleanValueConstructor: () => getBooleanValueConstructor,
|
|
48
|
+
getButtonComponentConstructor: () => getButtonComponentConstructor,
|
|
49
|
+
getCanvasViewConstructor: () => getCanvasViewConstructor,
|
|
50
|
+
getCapacitorAdapterConstructor: () => getCapacitorAdapterConstructor,
|
|
51
|
+
getCliConstructor: () => getCliConstructor,
|
|
52
|
+
getColorComponentConstructor: () => getColorComponentConstructor,
|
|
53
|
+
getCommandsConstructor: () => getCommandsConstructor,
|
|
54
|
+
getComponentConstructor: () => getComponentConstructor,
|
|
55
|
+
getCustomCSSConstructor: () => getCustomCSSConstructor,
|
|
56
|
+
getDateValueConstructor: () => getDateValueConstructor,
|
|
57
|
+
getDragManagerConstructor: () => getDragManagerConstructor,
|
|
58
|
+
getDropdownComponentConstructor: () => getDropdownComponentConstructor,
|
|
59
|
+
getDurationValueConstructor: () => getDurationValueConstructor,
|
|
60
|
+
getEditableFileViewConstructor: () => getEditableFileViewConstructor,
|
|
61
|
+
getEditorConstructor: () => getEditorConstructor,
|
|
62
|
+
getEditorSuggestsConstructor: () => getEditorSuggestsConstructor,
|
|
63
|
+
getEmbedRegistryConstructor: () => getEmbedRegistryConstructor,
|
|
64
|
+
getEmptyViewConstructor: () => getEmptyViewConstructor,
|
|
65
|
+
getEventsConstructor: () => getEventsConstructor,
|
|
66
|
+
getExtraButtonComponentConstructor: () => getExtraButtonComponentConstructor,
|
|
67
|
+
getFileExplorerViewConstructor: () => getFileExplorerViewConstructor,
|
|
68
|
+
getFileManagerConstructor: () => getFileManagerConstructor,
|
|
69
|
+
getFilePropertiesViewConstructor: () => getFilePropertiesViewConstructor,
|
|
70
|
+
getFileSystemAdapterConstructor: () => getFileSystemAdapterConstructor,
|
|
71
|
+
getFileValueConstructor: () => getFileValueConstructor,
|
|
72
|
+
getFoldManagerConstructor: () => getFoldManagerConstructor,
|
|
73
|
+
getFrameDomConstructor: () => getFrameDomConstructor,
|
|
74
|
+
getFuzzySuggestModalConstructor: () => getFuzzySuggestModalConstructor,
|
|
75
|
+
getGraphViewConstructor: () => getGraphViewConstructor,
|
|
76
|
+
getHTMLValueConstructor: () => getHTMLValueConstructor,
|
|
77
|
+
getHotkeyManagerConstructor: () => getHotkeyManagerConstructor,
|
|
78
|
+
getHoverPopoverConstructor: () => getHoverPopoverConstructor,
|
|
79
|
+
getIconValueConstructor: () => getIconValueConstructor,
|
|
80
|
+
getImageValueConstructor: () => getImageValueConstructor,
|
|
81
|
+
getImageViewConstructor: () => getImageViewConstructor,
|
|
34
82
|
getInternalPluginConstructor: () => getInternalPluginConstructor,
|
|
35
83
|
getInternalPluginsConstructor: () => getInternalPluginsConstructor,
|
|
84
|
+
getKeymapConstructor: () => getKeymapConstructor,
|
|
85
|
+
getLinkValueConstructor: () => getLinkValueConstructor,
|
|
86
|
+
getListValueConstructor: () => getListValueConstructor,
|
|
87
|
+
getLocalGraphViewConstructor: () => getLocalGraphViewConstructor,
|
|
88
|
+
getMarkdownPreviewRendererConstructor: () => getMarkdownPreviewRendererConstructor,
|
|
89
|
+
getMarkdownPreviewViewConstructor: () => getMarkdownPreviewViewConstructor,
|
|
90
|
+
getMarkdownRenderChildConstructor: () => getMarkdownRenderChildConstructor,
|
|
91
|
+
getMarkdownRendererConstructor: () => getMarkdownRendererConstructor,
|
|
92
|
+
getMarkdownViewConstructor: () => getMarkdownViewConstructor,
|
|
93
|
+
getMenuConstructor: () => getMenuConstructor,
|
|
94
|
+
getMenuItemConstructor: () => getMenuItemConstructor,
|
|
95
|
+
getMenuSeparatorConstructor: () => getMenuSeparatorConstructor,
|
|
96
|
+
getMetadataCacheConstructor: () => getMetadataCacheConstructor,
|
|
97
|
+
getMetadataTypeManagerConstructor: () => getMetadataTypeManagerConstructor,
|
|
98
|
+
getModalConstructor: () => getModalConstructor,
|
|
99
|
+
getMomentFormatComponentConstructor: () => getMomentFormatComponentConstructor,
|
|
100
|
+
getNotNullValueConstructor: () => getNotNullValueConstructor,
|
|
101
|
+
getNoticeConstructor: () => getNoticeConstructor,
|
|
102
|
+
getNullValueConstructor: () => getNullValueConstructor,
|
|
103
|
+
getNumberValueConstructor: () => getNumberValueConstructor,
|
|
104
|
+
getObjectValueConstructor: () => getObjectValueConstructor,
|
|
105
|
+
getObsidianDOMConstructor: () => getObsidianDOMConstructor,
|
|
106
|
+
getOutgoingLinkViewConstructor: () => getOutgoingLinkViewConstructor,
|
|
107
|
+
getOutlineViewConstructor: () => getOutlineViewConstructor,
|
|
108
|
+
getPdfViewConstructor: () => getPdfViewConstructor,
|
|
109
|
+
getPluginsConstructor: () => getPluginsConstructor,
|
|
110
|
+
getProgressBarComponentConstructor: () => getProgressBarComponentConstructor,
|
|
111
|
+
getQueryControllerConstructor: () => getQueryControllerConstructor,
|
|
112
|
+
getRecentFileTrackerConstructor: () => getRecentFileTrackerConstructor,
|
|
113
|
+
getRegExpValueConstructor: () => getRegExpValueConstructor,
|
|
114
|
+
getRelativeDateValueConstructor: () => getRelativeDateValueConstructor,
|
|
115
|
+
getReleaseNotesViewConstructor: () => getReleaseNotesViewConstructor,
|
|
116
|
+
getRenderContextConstructor: () => getRenderContextConstructor,
|
|
117
|
+
getScopeConstructor: () => getScopeConstructor,
|
|
118
|
+
getSearchComponentConstructor: () => getSearchComponentConstructor,
|
|
119
|
+
getSearchViewConstructor: () => getSearchViewConstructor,
|
|
120
|
+
getSecretComponentConstructor: () => getSecretComponentConstructor,
|
|
121
|
+
getSecretStorageConstructor: () => getSecretStorageConstructor,
|
|
122
|
+
getSettingConstructor: () => getSettingConstructor,
|
|
123
|
+
getSettingGroupConstructor: () => getSettingGroupConstructor,
|
|
124
|
+
getSettingTabConstructor: () => getSettingTabConstructor,
|
|
125
|
+
getShareReceiverConstructor: () => getShareReceiverConstructor,
|
|
126
|
+
getSliderComponentConstructor: () => getSliderComponentConstructor,
|
|
127
|
+
getStatusBarConstructor: () => getStatusBarConstructor,
|
|
128
|
+
getStringValueConstructor: () => getStringValueConstructor,
|
|
129
|
+
getSyncViewConstructor: () => getSyncViewConstructor,
|
|
130
|
+
getTAbstractFileConstructor: () => getTAbstractFileConstructor,
|
|
36
131
|
getTFileConstructor: () => getTFileConstructor,
|
|
37
132
|
getTFolderConstructor: () => getTFolderConstructor,
|
|
133
|
+
getTableViewConstructor: () => getTableViewConstructor,
|
|
134
|
+
getTagValueConstructor: () => getTagValueConstructor,
|
|
135
|
+
getTagViewConstructor: () => getTagViewConstructor,
|
|
136
|
+
getTasksConstructor: () => getTasksConstructor,
|
|
137
|
+
getTextAreaComponentConstructor: () => getTextAreaComponentConstructor,
|
|
138
|
+
getTextComponentConstructor: () => getTextComponentConstructor,
|
|
139
|
+
getToggleComponentConstructor: () => getToggleComponentConstructor,
|
|
140
|
+
getUrlValueConstructor: () => getUrlValueConstructor,
|
|
141
|
+
getValueComponentConstructor: () => getValueComponentConstructor,
|
|
142
|
+
getValueConstructor: () => getValueConstructor,
|
|
143
|
+
getVaultConstructor: () => getVaultConstructor,
|
|
144
|
+
getVideoViewConstructor: () => getVideoViewConstructor,
|
|
38
145
|
getViewConstructorByViewType: () => getViewConstructorByViewType,
|
|
146
|
+
getViewRegistryConstructor: () => getViewRegistryConstructor,
|
|
147
|
+
getWebviewerHistoryViewConstructor: () => getWebviewerHistoryViewConstructor,
|
|
148
|
+
getWebviewerViewConstructor: () => getWebviewerViewConstructor,
|
|
149
|
+
getWorkspaceConstructor: () => getWorkspaceConstructor,
|
|
150
|
+
getWorkspaceContainerConstructor: () => getWorkspaceContainerConstructor,
|
|
151
|
+
getWorkspaceFloatingConstructor: () => getWorkspaceFloatingConstructor,
|
|
152
|
+
getWorkspaceItemConstructor: () => getWorkspaceItemConstructor,
|
|
153
|
+
getWorkspaceLeafConstructor: () => getWorkspaceLeafConstructor,
|
|
154
|
+
getWorkspaceLeafHistoryConstructor: () => getWorkspaceLeafHistoryConstructor,
|
|
155
|
+
getWorkspaceMobileDrawerConstructor: () => getWorkspaceMobileDrawerConstructor,
|
|
156
|
+
getWorkspaceParentConstructor: () => getWorkspaceParentConstructor,
|
|
157
|
+
getWorkspaceRibbonConstructor: () => getWorkspaceRibbonConstructor,
|
|
158
|
+
getWorkspaceRootConstructor: () => getWorkspaceRootConstructor,
|
|
159
|
+
getWorkspaceSidedockConstructor: () => getWorkspaceSidedockConstructor,
|
|
160
|
+
getWorkspaceSplitConstructor: () => getWorkspaceSplitConstructor,
|
|
161
|
+
getWorkspaceTabsConstructor: () => getWorkspaceTabsConstructor,
|
|
162
|
+
getWorkspaceWindowConstructor: () => getWorkspaceWindowConstructor,
|
|
39
163
|
isEmbedCache: () => isEmbedCache,
|
|
40
164
|
isFrontmatterLinkCache: () => isFrontmatterLinkCache,
|
|
41
165
|
isLinkCache: () => isLinkCache,
|
|
@@ -47,9 +171,15 @@ __export(index_exports, {
|
|
|
47
171
|
});
|
|
48
172
|
module.exports = __toCommonJS(index_exports);
|
|
49
173
|
|
|
50
|
-
// src/obsidian/implementations/
|
|
174
|
+
// src/obsidian/implementations/classes/CustomArrayDictImpl.ts
|
|
51
175
|
var CustomArrayDictImpl = class {
|
|
176
|
+
/**
|
|
177
|
+
* @todo Documentation incomplete.
|
|
178
|
+
*/
|
|
52
179
|
data = /* @__PURE__ */ new Map();
|
|
180
|
+
/**
|
|
181
|
+
* @todo Documentation incomplete.
|
|
182
|
+
*/
|
|
53
183
|
add(key, value) {
|
|
54
184
|
let values = this.get(key);
|
|
55
185
|
if (!values) {
|
|
@@ -60,31 +190,27 @@ var CustomArrayDictImpl = class {
|
|
|
60
190
|
values.push(value);
|
|
61
191
|
}
|
|
62
192
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
values.remove(value);
|
|
69
|
-
if (values.length === 0) {
|
|
70
|
-
this.clear(key);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
get(key) {
|
|
74
|
-
return this.data.get(key) || null;
|
|
75
|
-
}
|
|
76
|
-
keys() {
|
|
77
|
-
return Array.from(this.data.keys());
|
|
78
|
-
}
|
|
193
|
+
/**
|
|
194
|
+
* @todo Documentation incomplete.
|
|
195
|
+
*/
|
|
79
196
|
clear(key) {
|
|
80
197
|
this.data.delete(key);
|
|
81
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* @todo Documentation incomplete.
|
|
201
|
+
*/
|
|
82
202
|
clearAll() {
|
|
83
203
|
this.data.clear();
|
|
84
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* @todo Documentation incomplete.
|
|
207
|
+
*/
|
|
85
208
|
contains(key, value) {
|
|
86
209
|
return !!this.get(key)?.contains(value);
|
|
87
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* @todo Documentation incomplete.
|
|
213
|
+
*/
|
|
88
214
|
count() {
|
|
89
215
|
let ans = 0;
|
|
90
216
|
for (const key of this.keys()) {
|
|
@@ -92,9 +218,34 @@ var CustomArrayDictImpl = class {
|
|
|
92
218
|
}
|
|
93
219
|
return ans;
|
|
94
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* @todo Documentation incomplete.
|
|
223
|
+
*/
|
|
224
|
+
get(key) {
|
|
225
|
+
return this.data.get(key) || null;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* @todo Documentation incomplete.
|
|
229
|
+
*/
|
|
230
|
+
keys() {
|
|
231
|
+
return Array.from(this.data.keys());
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* @todo Documentation incomplete.
|
|
235
|
+
*/
|
|
236
|
+
remove(key, value) {
|
|
237
|
+
const values = this.get(key);
|
|
238
|
+
if (!values) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
values.remove(value);
|
|
242
|
+
if (values.length === 0) {
|
|
243
|
+
this.clear(key);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
95
246
|
};
|
|
96
247
|
|
|
97
|
-
// src/obsidian/implementations/
|
|
248
|
+
// src/obsidian/implementations/constants/FileExtension.ts
|
|
98
249
|
var FileExtension = {
|
|
99
250
|
_3gp: "3gp",
|
|
100
251
|
avif: "avif",
|
|
@@ -122,7 +273,7 @@ var FileExtension = {
|
|
|
122
273
|
webp: "webp"
|
|
123
274
|
};
|
|
124
275
|
|
|
125
|
-
// src/obsidian/implementations/
|
|
276
|
+
// src/obsidian/implementations/constants/InternalPluginName.ts
|
|
126
277
|
var InternalPluginName = {
|
|
127
278
|
/**
|
|
128
279
|
* Plugin name in UI: Audio recorder.
|
|
@@ -250,7 +401,7 @@ var InternalPluginName = {
|
|
|
250
401
|
ZkPrefixer: "zk-prefixer"
|
|
251
402
|
};
|
|
252
403
|
|
|
253
|
-
// src/obsidian/implementations/
|
|
404
|
+
// src/obsidian/implementations/constants/ViewType.ts
|
|
254
405
|
var ViewType = {
|
|
255
406
|
AllProperties: "all-properties",
|
|
256
407
|
Audio: "audio",
|
|
@@ -278,13 +429,616 @@ var ViewType = {
|
|
|
278
429
|
WebviewerHistory: "webviewer-history"
|
|
279
430
|
};
|
|
280
431
|
|
|
281
|
-
// src/obsidian/implementations/
|
|
432
|
+
// src/obsidian/implementations/constructors/augmentations/getAbstractTextComponentConstructor.ts
|
|
282
433
|
var import_obsidian = require("obsidian");
|
|
434
|
+
function getAbstractTextComponentConstructor() {
|
|
435
|
+
return import_obsidian.AbstractTextComponent;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
// src/obsidian/implementations/constructors/augmentations/getAppConstructor.ts
|
|
439
|
+
var import_obsidian2 = require("obsidian");
|
|
283
440
|
function getAppConstructor() {
|
|
284
|
-
return
|
|
441
|
+
return import_obsidian2.App;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// src/obsidian/implementations/constructors/augmentations/getBaseComponentConstructor.ts
|
|
445
|
+
var import_obsidian3 = require("obsidian");
|
|
446
|
+
function getBaseComponentConstructor() {
|
|
447
|
+
return import_obsidian3.BaseComponent;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
// src/obsidian/implementations/constructors/augmentations/getBasesEntryConstructor.ts
|
|
451
|
+
var import_obsidian4 = require("obsidian");
|
|
452
|
+
function getBasesEntryConstructor() {
|
|
453
|
+
return import_obsidian4.BasesEntry;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// src/obsidian/implementations/constructors/augmentations/getBasesEntryGroupConstructor.ts
|
|
457
|
+
var import_obsidian5 = require("obsidian");
|
|
458
|
+
function getBasesEntryGroupConstructor() {
|
|
459
|
+
return import_obsidian5.BasesEntryGroup;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// src/obsidian/implementations/constructors/augmentations/getBasesQueryResultConstructor.ts
|
|
463
|
+
var import_obsidian6 = require("obsidian");
|
|
464
|
+
function getBasesQueryResultConstructor() {
|
|
465
|
+
return import_obsidian6.BasesQueryResult;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// src/obsidian/implementations/constructors/augmentations/getBasesViewConfigConstructor.ts
|
|
469
|
+
var import_obsidian7 = require("obsidian");
|
|
470
|
+
function getBasesViewConfigConstructor() {
|
|
471
|
+
return import_obsidian7.BasesViewConfig;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
// src/obsidian/implementations/constructors/augmentations/getBooleanValueConstructor.ts
|
|
475
|
+
var import_obsidian8 = require("obsidian");
|
|
476
|
+
function getBooleanValueConstructor() {
|
|
477
|
+
return import_obsidian8.BooleanValue;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// src/obsidian/implementations/constructors/augmentations/getButtonComponentConstructor.ts
|
|
481
|
+
var import_obsidian9 = require("obsidian");
|
|
482
|
+
function getButtonComponentConstructor() {
|
|
483
|
+
return import_obsidian9.ButtonComponent;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// src/obsidian/implementations/constructors/augmentations/getCapacitorAdapterConstructor.ts
|
|
487
|
+
var import_obsidian10 = require("obsidian");
|
|
488
|
+
function getCapacitorAdapterConstructor() {
|
|
489
|
+
return import_obsidian10.CapacitorAdapter;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// src/obsidian/implementations/constructors/augmentations/getColorComponentConstructor.ts
|
|
493
|
+
var import_obsidian11 = require("obsidian");
|
|
494
|
+
function getColorComponentConstructor() {
|
|
495
|
+
return import_obsidian11.ColorComponent;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
// src/obsidian/implementations/constructors/augmentations/getComponentConstructor.ts
|
|
499
|
+
var import_obsidian12 = require("obsidian");
|
|
500
|
+
function getComponentConstructor() {
|
|
501
|
+
return import_obsidian12.Component;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
// src/obsidian/implementations/constructors/augmentations/getDateValueConstructor.ts
|
|
505
|
+
var import_obsidian13 = require("obsidian");
|
|
506
|
+
function getDateValueConstructor() {
|
|
507
|
+
return import_obsidian13.DateValue;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
// src/obsidian/implementations/constructors/augmentations/getDropdownComponentConstructor.ts
|
|
511
|
+
var import_obsidian14 = require("obsidian");
|
|
512
|
+
function getDropdownComponentConstructor() {
|
|
513
|
+
return import_obsidian14.DropdownComponent;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
// src/obsidian/implementations/constructors/augmentations/getDurationValueConstructor.ts
|
|
517
|
+
var import_obsidian15 = require("obsidian");
|
|
518
|
+
function getDurationValueConstructor() {
|
|
519
|
+
return import_obsidian15.DurationValue;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// src/obsidian/implementations/constructors/augmentations/getEditableFileViewConstructor.ts
|
|
523
|
+
var import_obsidian16 = require("obsidian");
|
|
524
|
+
function getEditableFileViewConstructor() {
|
|
525
|
+
return import_obsidian16.EditableFileView;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// src/obsidian/implementations/constructors/augmentations/getEditorConstructor.ts
|
|
529
|
+
var import_obsidian17 = require("obsidian");
|
|
530
|
+
function getEditorConstructor() {
|
|
531
|
+
return import_obsidian17.Editor;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// src/obsidian/implementations/constructors/augmentations/getEventsConstructor.ts
|
|
535
|
+
var import_obsidian18 = require("obsidian");
|
|
536
|
+
function getEventsConstructor() {
|
|
537
|
+
return import_obsidian18.Events;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// src/obsidian/implementations/constructors/augmentations/getExtraButtonComponentConstructor.ts
|
|
541
|
+
var import_obsidian19 = require("obsidian");
|
|
542
|
+
function getExtraButtonComponentConstructor() {
|
|
543
|
+
return import_obsidian19.ExtraButtonComponent;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
// src/obsidian/implementations/constructors/augmentations/getFileManagerConstructor.ts
|
|
547
|
+
var import_obsidian20 = require("obsidian");
|
|
548
|
+
function getFileManagerConstructor() {
|
|
549
|
+
return import_obsidian20.FileManager;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// src/obsidian/implementations/constructors/augmentations/getFileSystemAdapterConstructor.ts
|
|
553
|
+
var import_obsidian21 = require("obsidian");
|
|
554
|
+
function getFileSystemAdapterConstructor() {
|
|
555
|
+
return import_obsidian21.FileSystemAdapter;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
// src/obsidian/implementations/constructors/augmentations/getFileValueConstructor.ts
|
|
559
|
+
var import_obsidian22 = require("obsidian");
|
|
560
|
+
function getFileValueConstructor() {
|
|
561
|
+
return import_obsidian22.FileValue;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
// src/obsidian/implementations/constructors/augmentations/getFuzzySuggestModalConstructor.ts
|
|
565
|
+
var import_obsidian23 = require("obsidian");
|
|
566
|
+
function getFuzzySuggestModalConstructor() {
|
|
567
|
+
return import_obsidian23.FuzzySuggestModal;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// src/obsidian/implementations/constructors/augmentations/getHoverPopoverConstructor.ts
|
|
571
|
+
var import_obsidian24 = require("obsidian");
|
|
572
|
+
function getHoverPopoverConstructor() {
|
|
573
|
+
return import_obsidian24.HoverPopover;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
// src/obsidian/implementations/constructors/augmentations/getHTMLValueConstructor.ts
|
|
577
|
+
var import_obsidian25 = require("obsidian");
|
|
578
|
+
function getHTMLValueConstructor() {
|
|
579
|
+
return import_obsidian25.HTMLValue;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
// src/obsidian/implementations/constructors/augmentations/getIconValueConstructor.ts
|
|
583
|
+
var import_obsidian26 = require("obsidian");
|
|
584
|
+
function getIconValueConstructor() {
|
|
585
|
+
return import_obsidian26.IconValue;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// src/obsidian/implementations/constructors/augmentations/getImageValueConstructor.ts
|
|
589
|
+
var import_obsidian27 = require("obsidian");
|
|
590
|
+
function getImageValueConstructor() {
|
|
591
|
+
return import_obsidian27.ImageValue;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// src/obsidian/implementations/constructors/augmentations/getKeymapConstructor.ts
|
|
595
|
+
var import_obsidian28 = require("obsidian");
|
|
596
|
+
function getKeymapConstructor() {
|
|
597
|
+
return import_obsidian28.Keymap;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
// src/obsidian/implementations/constructors/augmentations/getLinkValueConstructor.ts
|
|
601
|
+
var import_obsidian29 = require("obsidian");
|
|
602
|
+
function getLinkValueConstructor() {
|
|
603
|
+
return import_obsidian29.LinkValue;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
// src/obsidian/implementations/constructors/augmentations/getListValueConstructor.ts
|
|
607
|
+
var import_obsidian30 = require("obsidian");
|
|
608
|
+
function getListValueConstructor() {
|
|
609
|
+
return import_obsidian30.ListValue;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// src/obsidian/implementations/constructors/augmentations/getMarkdownPreviewRendererConstructor.ts
|
|
613
|
+
var import_obsidian31 = require("obsidian");
|
|
614
|
+
function getMarkdownPreviewRendererConstructor() {
|
|
615
|
+
return import_obsidian31.MarkdownPreviewRenderer;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
// src/obsidian/implementations/constructors/augmentations/getMarkdownPreviewViewConstructor.ts
|
|
619
|
+
var import_obsidian32 = require("obsidian");
|
|
620
|
+
function getMarkdownPreviewViewConstructor() {
|
|
621
|
+
return import_obsidian32.MarkdownPreviewView;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
// src/obsidian/implementations/constructors/augmentations/getMarkdownRenderChildConstructor.ts
|
|
625
|
+
var import_obsidian33 = require("obsidian");
|
|
626
|
+
function getMarkdownRenderChildConstructor() {
|
|
627
|
+
return import_obsidian33.MarkdownRenderChild;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
// src/obsidian/implementations/constructors/augmentations/getMarkdownRendererConstructor.ts
|
|
631
|
+
var import_obsidian34 = require("obsidian");
|
|
632
|
+
function getMarkdownRendererConstructor() {
|
|
633
|
+
return import_obsidian34.MarkdownRenderer;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
// src/obsidian/implementations/constructors/augmentations/getMarkdownViewConstructor.ts
|
|
637
|
+
var import_obsidian35 = require("obsidian");
|
|
638
|
+
function getMarkdownViewConstructor() {
|
|
639
|
+
return import_obsidian35.MarkdownView;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// src/obsidian/implementations/constructors/augmentations/getMenuConstructor.ts
|
|
643
|
+
var import_obsidian36 = require("obsidian");
|
|
644
|
+
function getMenuConstructor() {
|
|
645
|
+
return import_obsidian36.Menu;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
// src/obsidian/implementations/constructors/augmentations/getMenuItemConstructor.ts
|
|
649
|
+
var import_obsidian37 = require("obsidian");
|
|
650
|
+
function getMenuItemConstructor() {
|
|
651
|
+
return import_obsidian37.MenuItem;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
// src/obsidian/implementations/constructors/augmentations/getMenuSeparatorConstructor.ts
|
|
655
|
+
var import_obsidian38 = require("obsidian");
|
|
656
|
+
function getMenuSeparatorConstructor() {
|
|
657
|
+
return import_obsidian38.MenuSeparator;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
// src/obsidian/implementations/constructors/augmentations/getMetadataCacheConstructor.ts
|
|
661
|
+
var import_obsidian39 = require("obsidian");
|
|
662
|
+
function getMetadataCacheConstructor() {
|
|
663
|
+
return import_obsidian39.MetadataCache;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
// src/obsidian/implementations/constructors/augmentations/getModalConstructor.ts
|
|
667
|
+
var import_obsidian40 = require("obsidian");
|
|
668
|
+
function getModalConstructor() {
|
|
669
|
+
return import_obsidian40.Modal;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// src/obsidian/implementations/constructors/augmentations/getMomentFormatComponentConstructor.ts
|
|
673
|
+
var import_obsidian41 = require("obsidian");
|
|
674
|
+
function getMomentFormatComponentConstructor() {
|
|
675
|
+
return import_obsidian41.MomentFormatComponent;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
// src/obsidian/implementations/constructors/augmentations/getNoticeConstructor.ts
|
|
679
|
+
var import_obsidian42 = require("obsidian");
|
|
680
|
+
function getNoticeConstructor() {
|
|
681
|
+
return import_obsidian42.Notice;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
// src/obsidian/implementations/constructors/augmentations/getNotNullValueConstructor.ts
|
|
685
|
+
var import_obsidian43 = require("obsidian");
|
|
686
|
+
function getNotNullValueConstructor() {
|
|
687
|
+
return import_obsidian43.NotNullValue;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
// src/obsidian/implementations/constructors/augmentations/getNullValueConstructor.ts
|
|
691
|
+
var import_obsidian44 = require("obsidian");
|
|
692
|
+
function getNullValueConstructor() {
|
|
693
|
+
return import_obsidian44.NullValue;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
// src/obsidian/implementations/constructors/augmentations/getNumberValueConstructor.ts
|
|
697
|
+
var import_obsidian45 = require("obsidian");
|
|
698
|
+
function getNumberValueConstructor() {
|
|
699
|
+
return import_obsidian45.NumberValue;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
// src/obsidian/implementations/constructors/augmentations/getObjectValueConstructor.ts
|
|
703
|
+
var import_obsidian46 = require("obsidian");
|
|
704
|
+
function getObjectValueConstructor() {
|
|
705
|
+
return import_obsidian46.ObjectValue;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
// src/obsidian/implementations/constructors/augmentations/getProgressBarComponentConstructor.ts
|
|
709
|
+
var import_obsidian47 = require("obsidian");
|
|
710
|
+
function getProgressBarComponentConstructor() {
|
|
711
|
+
return import_obsidian47.ProgressBarComponent;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
// src/obsidian/implementations/constructors/augmentations/getQueryControllerConstructor.ts
|
|
715
|
+
var import_obsidian48 = require("obsidian");
|
|
716
|
+
function getQueryControllerConstructor() {
|
|
717
|
+
return import_obsidian48.QueryController;
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
// src/obsidian/implementations/constructors/augmentations/getRegExpValueConstructor.ts
|
|
721
|
+
var import_obsidian49 = require("obsidian");
|
|
722
|
+
function getRegExpValueConstructor() {
|
|
723
|
+
return import_obsidian49.RegExpValue;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
// src/obsidian/implementations/constructors/augmentations/getRelativeDateValueConstructor.ts
|
|
727
|
+
var import_obsidian50 = require("obsidian");
|
|
728
|
+
function getRelativeDateValueConstructor() {
|
|
729
|
+
return import_obsidian50.RelativeDateValue;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
// src/obsidian/implementations/constructors/augmentations/getRenderContextConstructor.ts
|
|
733
|
+
var import_obsidian51 = require("obsidian");
|
|
734
|
+
function getRenderContextConstructor() {
|
|
735
|
+
return import_obsidian51.RenderContext;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
// src/obsidian/implementations/constructors/augmentations/getScopeConstructor.ts
|
|
739
|
+
var import_obsidian52 = require("obsidian");
|
|
740
|
+
function getScopeConstructor() {
|
|
741
|
+
return import_obsidian52.Scope;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// src/obsidian/implementations/constructors/augmentations/getSearchComponentConstructor.ts
|
|
745
|
+
var import_obsidian53 = require("obsidian");
|
|
746
|
+
function getSearchComponentConstructor() {
|
|
747
|
+
return import_obsidian53.SearchComponent;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// src/obsidian/implementations/constructors/augmentations/getSecretComponentConstructor.ts
|
|
751
|
+
var import_obsidian54 = require("obsidian");
|
|
752
|
+
function getSecretComponentConstructor() {
|
|
753
|
+
return import_obsidian54.SecretComponent;
|
|
285
754
|
}
|
|
286
755
|
|
|
287
|
-
// src/obsidian/implementations/
|
|
756
|
+
// src/obsidian/implementations/constructors/augmentations/getSecretStorageConstructor.ts
|
|
757
|
+
var import_obsidian55 = require("obsidian");
|
|
758
|
+
function getSecretStorageConstructor() {
|
|
759
|
+
return import_obsidian55.SecretStorage;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
// src/obsidian/implementations/constructors/augmentations/getSettingConstructor.ts
|
|
763
|
+
var import_obsidian56 = require("obsidian");
|
|
764
|
+
function getSettingConstructor() {
|
|
765
|
+
return import_obsidian56.Setting;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
// src/obsidian/implementations/constructors/augmentations/getSettingGroupConstructor.ts
|
|
769
|
+
var import_obsidian57 = require("obsidian");
|
|
770
|
+
function getSettingGroupConstructor() {
|
|
771
|
+
return import_obsidian57.SettingGroup;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// src/obsidian/implementations/constructors/augmentations/getSettingTabConstructor.ts
|
|
775
|
+
var import_obsidian58 = require("obsidian");
|
|
776
|
+
function getSettingTabConstructor() {
|
|
777
|
+
return import_obsidian58.SettingTab;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
// src/obsidian/implementations/constructors/augmentations/getSliderComponentConstructor.ts
|
|
781
|
+
var import_obsidian59 = require("obsidian");
|
|
782
|
+
function getSliderComponentConstructor() {
|
|
783
|
+
return import_obsidian59.SliderComponent;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
// src/obsidian/implementations/constructors/augmentations/getStringValueConstructor.ts
|
|
787
|
+
var import_obsidian60 = require("obsidian");
|
|
788
|
+
function getStringValueConstructor() {
|
|
789
|
+
return import_obsidian60.StringValue;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
// src/obsidian/implementations/constructors/augmentations/getTAbstractFileConstructor.ts
|
|
793
|
+
var import_obsidian61 = require("obsidian");
|
|
794
|
+
function getTAbstractFileConstructor() {
|
|
795
|
+
return import_obsidian61.TAbstractFile;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
// src/obsidian/implementations/constructors/augmentations/getTagValueConstructor.ts
|
|
799
|
+
var import_obsidian62 = require("obsidian");
|
|
800
|
+
function getTagValueConstructor() {
|
|
801
|
+
return import_obsidian62.TagValue;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
// src/obsidian/implementations/constructors/augmentations/getTasksConstructor.ts
|
|
805
|
+
var import_obsidian63 = require("obsidian");
|
|
806
|
+
function getTasksConstructor() {
|
|
807
|
+
return import_obsidian63.Tasks;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
// src/obsidian/implementations/constructors/augmentations/getTextAreaComponentConstructor.ts
|
|
811
|
+
var import_obsidian64 = require("obsidian");
|
|
812
|
+
function getTextAreaComponentConstructor() {
|
|
813
|
+
return import_obsidian64.TextAreaComponent;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
// src/obsidian/implementations/constructors/augmentations/getTextComponentConstructor.ts
|
|
817
|
+
var import_obsidian65 = require("obsidian");
|
|
818
|
+
function getTextComponentConstructor() {
|
|
819
|
+
return import_obsidian65.TextComponent;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
// src/obsidian/implementations/constructors/augmentations/getTFileConstructor.ts
|
|
823
|
+
var import_obsidian66 = require("obsidian");
|
|
824
|
+
function getTFileConstructor() {
|
|
825
|
+
return import_obsidian66.TFile;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
// src/obsidian/implementations/constructors/augmentations/getTFolderConstructor.ts
|
|
829
|
+
var import_obsidian67 = require("obsidian");
|
|
830
|
+
function getTFolderConstructor() {
|
|
831
|
+
return import_obsidian67.TFolder;
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
// src/obsidian/implementations/constructors/augmentations/getToggleComponentConstructor.ts
|
|
835
|
+
var import_obsidian68 = require("obsidian");
|
|
836
|
+
function getToggleComponentConstructor() {
|
|
837
|
+
return import_obsidian68.ToggleComponent;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
// src/obsidian/implementations/constructors/augmentations/getUrlValueConstructor.ts
|
|
841
|
+
var import_obsidian69 = require("obsidian");
|
|
842
|
+
function getUrlValueConstructor() {
|
|
843
|
+
return import_obsidian69.UrlValue;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
// src/obsidian/implementations/constructors/augmentations/getValueComponentConstructor.ts
|
|
847
|
+
var import_obsidian70 = require("obsidian");
|
|
848
|
+
function getValueComponentConstructor() {
|
|
849
|
+
return import_obsidian70.ValueComponent;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
// src/obsidian/implementations/constructors/augmentations/getValueConstructor.ts
|
|
853
|
+
var import_obsidian71 = require("obsidian");
|
|
854
|
+
function getValueConstructor() {
|
|
855
|
+
return import_obsidian71.Value;
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
// src/obsidian/implementations/constructors/augmentations/getVaultConstructor.ts
|
|
859
|
+
var import_obsidian72 = require("obsidian");
|
|
860
|
+
function getVaultConstructor() {
|
|
861
|
+
return import_obsidian72.Vault;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceConstructor.ts
|
|
865
|
+
var import_obsidian73 = require("obsidian");
|
|
866
|
+
function getWorkspaceConstructor() {
|
|
867
|
+
return import_obsidian73.Workspace;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceContainerConstructor.ts
|
|
871
|
+
var import_obsidian74 = require("obsidian");
|
|
872
|
+
function getWorkspaceContainerConstructor() {
|
|
873
|
+
return import_obsidian74.WorkspaceContainer;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceFloatingConstructor.ts
|
|
877
|
+
var import_obsidian75 = require("obsidian");
|
|
878
|
+
function getWorkspaceFloatingConstructor() {
|
|
879
|
+
return import_obsidian75.WorkspaceFloating;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceItemConstructor.ts
|
|
883
|
+
var import_obsidian76 = require("obsidian");
|
|
884
|
+
function getWorkspaceItemConstructor() {
|
|
885
|
+
return import_obsidian76.WorkspaceItem;
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceLeafConstructor.ts
|
|
889
|
+
var import_obsidian77 = require("obsidian");
|
|
890
|
+
function getWorkspaceLeafConstructor() {
|
|
891
|
+
return import_obsidian77.WorkspaceLeaf;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceMobileDrawerConstructor.ts
|
|
895
|
+
var import_obsidian78 = require("obsidian");
|
|
896
|
+
function getWorkspaceMobileDrawerConstructor() {
|
|
897
|
+
return import_obsidian78.WorkspaceMobileDrawer;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceParentConstructor.ts
|
|
901
|
+
var import_obsidian79 = require("obsidian");
|
|
902
|
+
function getWorkspaceParentConstructor() {
|
|
903
|
+
return import_obsidian79.WorkspaceParent;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceRibbonConstructor.ts
|
|
907
|
+
var import_obsidian80 = require("obsidian");
|
|
908
|
+
function getWorkspaceRibbonConstructor() {
|
|
909
|
+
return import_obsidian80.WorkspaceRibbon;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceRootConstructor.ts
|
|
913
|
+
var import_obsidian81 = require("obsidian");
|
|
914
|
+
function getWorkspaceRootConstructor() {
|
|
915
|
+
return import_obsidian81.WorkspaceRoot;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceSidedockConstructor.ts
|
|
919
|
+
var import_obsidian82 = require("obsidian");
|
|
920
|
+
function getWorkspaceSidedockConstructor() {
|
|
921
|
+
return import_obsidian82.WorkspaceSidedock;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceSplitConstructor.ts
|
|
925
|
+
var import_obsidian83 = require("obsidian");
|
|
926
|
+
function getWorkspaceSplitConstructor() {
|
|
927
|
+
return import_obsidian83.WorkspaceSplit;
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceTabsConstructor.ts
|
|
931
|
+
var import_obsidian84 = require("obsidian");
|
|
932
|
+
function getWorkspaceTabsConstructor() {
|
|
933
|
+
return import_obsidian84.WorkspaceTabs;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
// src/obsidian/implementations/constructors/augmentations/getWorkspaceWindowConstructor.ts
|
|
937
|
+
var import_obsidian85 = require("obsidian");
|
|
938
|
+
function getWorkspaceWindowConstructor() {
|
|
939
|
+
return import_obsidian85.WorkspaceWindow;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
// src/obsidian/implementations/constructors/internals/getAppMenuBarManagerConstructor.ts
|
|
943
|
+
function getAppMenuBarManagerConstructor(app) {
|
|
944
|
+
return app.appMenuBarManager.constructor;
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
// src/obsidian/implementations/constructors/internals/getAppSettingConstructor.ts
|
|
948
|
+
function getAppSettingConstructor(app) {
|
|
949
|
+
return app.setting.constructor;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
// src/obsidian/implementations/constructors/internals/getCliConstructor.ts
|
|
953
|
+
function getCliConstructor(app) {
|
|
954
|
+
return app.cli.constructor;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
// src/obsidian/implementations/constructors/internals/getCommandsConstructor.ts
|
|
958
|
+
function getCommandsConstructor(app) {
|
|
959
|
+
return app.commands.constructor;
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
// src/obsidian/implementations/constructors/internals/getCustomCSSConstructor.ts
|
|
963
|
+
function getCustomCSSConstructor(app) {
|
|
964
|
+
return app.customCss.constructor;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
// src/obsidian/implementations/constructors/internals/getDragManagerConstructor.ts
|
|
968
|
+
function getDragManagerConstructor(app) {
|
|
969
|
+
return app.dragManager.constructor;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
// src/obsidian/implementations/constructors/internals/getEditorSuggestsConstructor.ts
|
|
973
|
+
function getEditorSuggestsConstructor(app) {
|
|
974
|
+
return app.workspace.editorSuggest.constructor;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
// src/obsidian/implementations/constructors/internals/getEmbedRegistryConstructor.ts
|
|
978
|
+
function getEmbedRegistryConstructor(app) {
|
|
979
|
+
return app.embedRegistry.constructor;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
// src/obsidian/implementations/constructors/internals/getFoldManagerConstructor.ts
|
|
983
|
+
function getFoldManagerConstructor(app) {
|
|
984
|
+
return app.foldManager.constructor;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
// src/obsidian/implementations/constructors/internals/getFrameDomConstructor.ts
|
|
988
|
+
function getFrameDomConstructor() {
|
|
989
|
+
return window.frameDom.constructor;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
// src/obsidian/implementations/constructors/internals/getHotkeyManagerConstructor.ts
|
|
993
|
+
function getHotkeyManagerConstructor(app) {
|
|
994
|
+
return app.hotkeyManager.constructor;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
// src/obsidian/implementations/constructors/internals/getMetadataTypeManagerConstructor.ts
|
|
998
|
+
function getMetadataTypeManagerConstructor(app) {
|
|
999
|
+
return app.metadataTypeManager.constructor;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
// src/obsidian/implementations/constructors/internals/getObsidianDOMConstructor.ts
|
|
1003
|
+
function getObsidianDOMConstructor(app) {
|
|
1004
|
+
return app.dom.constructor;
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
// src/obsidian/implementations/constructors/internals/getPluginsConstructor.ts
|
|
1008
|
+
function getPluginsConstructor(app) {
|
|
1009
|
+
return app.plugins.constructor;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
// src/obsidian/implementations/constructors/internals/getRecentFileTrackerConstructor.ts
|
|
1013
|
+
function getRecentFileTrackerConstructor(app) {
|
|
1014
|
+
return app.workspace.recentFileTracker.constructor;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
// src/obsidian/implementations/constructors/internals/getShareReceiverConstructor.ts
|
|
1018
|
+
function getShareReceiverConstructor(app) {
|
|
1019
|
+
return app.shareReceiver.constructor;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
// src/obsidian/implementations/constructors/internals/getStatusBarConstructor.ts
|
|
1023
|
+
function getStatusBarConstructor(app) {
|
|
1024
|
+
return app.statusBar.constructor;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
// src/obsidian/implementations/constructors/internals/getViewRegistryConstructor.ts
|
|
1028
|
+
function getViewRegistryConstructor(app) {
|
|
1029
|
+
return app.viewRegistry.constructor;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
// src/obsidian/implementations/constructors/internals/getWorkspaceLeafHistoryConstructor.ts
|
|
1033
|
+
function getWorkspaceLeafHistoryConstructor(app) {
|
|
1034
|
+
const leaf = app.workspace.getMostRecentLeaf();
|
|
1035
|
+
if (!leaf) {
|
|
1036
|
+
throw new Error("No workspace leaf available to extract WorkspaceLeafHistory constructor");
|
|
1037
|
+
}
|
|
1038
|
+
return leaf.history.constructor;
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
// src/obsidian/implementations/constructors/internals/internal-plugins/getInternalPluginConstructor.ts
|
|
288
1042
|
function getInternalPluginConstructor(app) {
|
|
289
1043
|
const anyPlugin = Object.values(app.internalPlugins.plugins)[0];
|
|
290
1044
|
if (!anyPlugin) {
|
|
@@ -293,24 +1047,12 @@ function getInternalPluginConstructor(app) {
|
|
|
293
1047
|
return anyPlugin.constructor;
|
|
294
1048
|
}
|
|
295
1049
|
|
|
296
|
-
// src/obsidian/implementations/
|
|
1050
|
+
// src/obsidian/implementations/constructors/internals/internal-plugins/getInternalPluginsConstructor.ts
|
|
297
1051
|
function getInternalPluginsConstructor(app) {
|
|
298
1052
|
return app.internalPlugins.constructor;
|
|
299
1053
|
}
|
|
300
1054
|
|
|
301
|
-
// src/obsidian/implementations/
|
|
302
|
-
var import_obsidian2 = require("obsidian");
|
|
303
|
-
function getTFileConstructor() {
|
|
304
|
-
return import_obsidian2.TFile;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
// src/obsidian/implementations/Constructors/getTFolderConstructor.ts
|
|
308
|
-
var import_obsidian3 = require("obsidian");
|
|
309
|
-
function getTFolderConstructor() {
|
|
310
|
-
return import_obsidian3.TFolder;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// src/obsidian/implementations/Constructors/getViewConstructorByViewType.ts
|
|
1055
|
+
// src/obsidian/implementations/constructors/internals/views/getViewConstructorByViewType.ts
|
|
314
1056
|
function getViewConstructorByViewType(app, viewType) {
|
|
315
1057
|
const leaf = app.workspace.createLeafInTabGroup();
|
|
316
1058
|
try {
|
|
@@ -325,16 +1067,131 @@ function getViewConstructorByViewType(app, viewType) {
|
|
|
325
1067
|
}
|
|
326
1068
|
}
|
|
327
1069
|
|
|
328
|
-
// src/obsidian/implementations/
|
|
329
|
-
|
|
1070
|
+
// src/obsidian/implementations/constructors/internals/views/getAllPropertiesViewConstructor.ts
|
|
1071
|
+
function getAllPropertiesViewConstructor(app) {
|
|
1072
|
+
return getViewConstructorByViewType(app, ViewType.AllProperties);
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
// src/obsidian/implementations/constructors/internals/views/getAudioViewConstructor.ts
|
|
1076
|
+
function getAudioViewConstructor(app) {
|
|
1077
|
+
return getViewConstructorByViewType(app, ViewType.Audio);
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
// src/obsidian/implementations/constructors/internals/views/getBacklinkViewConstructor.ts
|
|
1081
|
+
function getBacklinkViewConstructor(app) {
|
|
1082
|
+
return getViewConstructorByViewType(app, ViewType.Backlink);
|
|
1083
|
+
}
|
|
330
1084
|
|
|
331
|
-
// src/obsidian/implementations/
|
|
1085
|
+
// src/obsidian/implementations/constructors/internals/views/getBasesViewConstructor.ts
|
|
1086
|
+
function getBasesViewConstructor(app) {
|
|
1087
|
+
return getViewConstructorByViewType(app, ViewType.Bases);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
// src/obsidian/implementations/constructors/internals/views/getBookmarksViewConstructor.ts
|
|
1091
|
+
function getBookmarksViewConstructor(app) {
|
|
1092
|
+
return getViewConstructorByViewType(app, ViewType.Bookmarks);
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
// src/obsidian/implementations/constructors/internals/views/getCanvasViewConstructor.ts
|
|
1096
|
+
function getCanvasViewConstructor(app) {
|
|
1097
|
+
return getViewConstructorByViewType(app, ViewType.Canvas);
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
// src/obsidian/implementations/constructors/internals/views/getEmptyViewConstructor.ts
|
|
1101
|
+
function getEmptyViewConstructor(app) {
|
|
1102
|
+
return getViewConstructorByViewType(app, ViewType.Empty);
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
// src/obsidian/implementations/constructors/internals/views/getFileExplorerViewConstructor.ts
|
|
1106
|
+
function getFileExplorerViewConstructor(app) {
|
|
1107
|
+
return getViewConstructorByViewType(app, ViewType.FileExplorer);
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
// src/obsidian/implementations/constructors/internals/views/getFilePropertiesViewConstructor.ts
|
|
1111
|
+
function getFilePropertiesViewConstructor(app) {
|
|
1112
|
+
return getViewConstructorByViewType(app, ViewType.FileProperties);
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
// src/obsidian/implementations/constructors/internals/views/getGraphViewConstructor.ts
|
|
1116
|
+
function getGraphViewConstructor(app) {
|
|
1117
|
+
return getViewConstructorByViewType(app, ViewType.Graph);
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
// src/obsidian/implementations/constructors/internals/views/getImageViewConstructor.ts
|
|
1121
|
+
function getImageViewConstructor(app) {
|
|
1122
|
+
return getViewConstructorByViewType(app, ViewType.Image);
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
// src/obsidian/implementations/constructors/internals/views/getLocalGraphViewConstructor.ts
|
|
1126
|
+
function getLocalGraphViewConstructor(app) {
|
|
1127
|
+
return getViewConstructorByViewType(app, ViewType.LocalGraph);
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
// src/obsidian/implementations/constructors/internals/views/getOutgoingLinkViewConstructor.ts
|
|
1131
|
+
function getOutgoingLinkViewConstructor(app) {
|
|
1132
|
+
return getViewConstructorByViewType(app, ViewType.OutgoingLink);
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
// src/obsidian/implementations/constructors/internals/views/getOutlineViewConstructor.ts
|
|
1136
|
+
function getOutlineViewConstructor(app) {
|
|
1137
|
+
return getViewConstructorByViewType(app, ViewType.Outline);
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
// src/obsidian/implementations/constructors/internals/views/getPdfViewConstructor.ts
|
|
1141
|
+
function getPdfViewConstructor(app) {
|
|
1142
|
+
return getViewConstructorByViewType(app, ViewType.Pdf);
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
// src/obsidian/implementations/constructors/internals/views/getReleaseNotesViewConstructor.ts
|
|
1146
|
+
function getReleaseNotesViewConstructor(app) {
|
|
1147
|
+
return getViewConstructorByViewType(app, ViewType.ReleaseNotes);
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
// src/obsidian/implementations/constructors/internals/views/getSearchViewConstructor.ts
|
|
1151
|
+
function getSearchViewConstructor(app) {
|
|
1152
|
+
return getViewConstructorByViewType(app, ViewType.Search);
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
// src/obsidian/implementations/constructors/internals/views/getSyncViewConstructor.ts
|
|
1156
|
+
function getSyncViewConstructor(app) {
|
|
1157
|
+
return getViewConstructorByViewType(app, ViewType.Sync);
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
// src/obsidian/implementations/constructors/internals/views/getTableViewConstructor.ts
|
|
1161
|
+
function getTableViewConstructor(app) {
|
|
1162
|
+
return getViewConstructorByViewType(app, ViewType.Table);
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
// src/obsidian/implementations/constructors/internals/views/getTagViewConstructor.ts
|
|
1166
|
+
function getTagViewConstructor(app) {
|
|
1167
|
+
return getViewConstructorByViewType(app, ViewType.Tag);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
// src/obsidian/implementations/constructors/internals/views/getVideoViewConstructor.ts
|
|
1171
|
+
function getVideoViewConstructor(app) {
|
|
1172
|
+
return getViewConstructorByViewType(app, ViewType.Video);
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
// src/obsidian/implementations/constructors/internals/views/getWebviewerHistoryViewConstructor.ts
|
|
1176
|
+
function getWebviewerHistoryViewConstructor(app) {
|
|
1177
|
+
return getViewConstructorByViewType(app, ViewType.WebviewerHistory);
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
// src/obsidian/implementations/constructors/internals/views/getWebviewerViewConstructor.ts
|
|
1181
|
+
function getWebviewerViewConstructor(app) {
|
|
1182
|
+
return getViewConstructorByViewType(app, ViewType.Webviewer);
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
// src/obsidian/implementations/functions/createTFileInstance.ts
|
|
1186
|
+
var import_obsidian87 = require("obsidian");
|
|
1187
|
+
|
|
1188
|
+
// src/obsidian/implementations/utils/PathUtils.ts
|
|
332
1189
|
function parentFolderPath(path) {
|
|
333
1190
|
return path.replace(/\/?[^\/]*$/, "") || "/";
|
|
334
1191
|
}
|
|
335
1192
|
|
|
336
|
-
// src/obsidian/implementations/
|
|
337
|
-
var
|
|
1193
|
+
// src/obsidian/implementations/functions/createTFolderInstance.ts
|
|
1194
|
+
var import_obsidian86 = require("obsidian");
|
|
338
1195
|
function createTFolderInstance(app, path) {
|
|
339
1196
|
let folder = app.vault.getFolderByPath(path);
|
|
340
1197
|
if (folder) {
|
|
@@ -346,7 +1203,7 @@ function createTFolderInstance(app, path) {
|
|
|
346
1203
|
return folder;
|
|
347
1204
|
}
|
|
348
1205
|
|
|
349
|
-
// src/obsidian/implementations/
|
|
1206
|
+
// src/obsidian/implementations/functions/createTFileInstance.ts
|
|
350
1207
|
function createTFileInstance(app, path) {
|
|
351
1208
|
let file = app.vault.getFileByPath(path);
|
|
352
1209
|
if (file) {
|
|
@@ -358,41 +1215,41 @@ function createTFileInstance(app, path) {
|
|
|
358
1215
|
return file;
|
|
359
1216
|
}
|
|
360
1217
|
|
|
361
|
-
// src/obsidian/implementations/
|
|
362
|
-
var
|
|
1218
|
+
// src/obsidian/implementations/functions/loadMermaid.ts
|
|
1219
|
+
var import_obsidian88 = require("obsidian");
|
|
363
1220
|
async function loadMermaid() {
|
|
364
|
-
return await (0,
|
|
1221
|
+
return await (0, import_obsidian88.loadMermaid)();
|
|
365
1222
|
}
|
|
366
1223
|
|
|
367
|
-
// src/obsidian/implementations/
|
|
368
|
-
var
|
|
1224
|
+
// src/obsidian/implementations/functions/loadPdfJs.ts
|
|
1225
|
+
var import_obsidian89 = require("obsidian");
|
|
369
1226
|
async function loadPdfJs() {
|
|
370
|
-
return await (0,
|
|
1227
|
+
return await (0, import_obsidian89.loadPdfJs)();
|
|
371
1228
|
}
|
|
372
1229
|
|
|
373
|
-
// src/obsidian/implementations/
|
|
374
|
-
var
|
|
1230
|
+
// src/obsidian/implementations/functions/loadPrism.ts
|
|
1231
|
+
var import_obsidian90 = require("obsidian");
|
|
375
1232
|
async function loadPrism() {
|
|
376
|
-
return await (0,
|
|
1233
|
+
return await (0, import_obsidian90.loadPrism)();
|
|
377
1234
|
}
|
|
378
1235
|
|
|
379
|
-
// src/obsidian/implementations/
|
|
1236
|
+
// src/obsidian/implementations/type-guards/isReferenceCache.ts
|
|
380
1237
|
function isReferenceCache(reference) {
|
|
381
1238
|
return !!reference.position;
|
|
382
1239
|
}
|
|
383
1240
|
|
|
384
|
-
// src/obsidian/implementations/
|
|
1241
|
+
// src/obsidian/implementations/type-guards/isEmbedCache.ts
|
|
385
1242
|
function isEmbedCache(reference) {
|
|
386
1243
|
return isReferenceCache(reference) && reference.original[0] === "!";
|
|
387
1244
|
}
|
|
388
1245
|
|
|
389
|
-
// src/obsidian/implementations/
|
|
1246
|
+
// src/obsidian/implementations/type-guards/isFrontmatterLinkCache.ts
|
|
390
1247
|
function isFrontmatterLinkCache(reference) {
|
|
391
1248
|
return !!reference.key;
|
|
392
1249
|
}
|
|
393
1250
|
|
|
394
|
-
// src/obsidian/implementations/
|
|
1251
|
+
// src/obsidian/implementations/type-guards/isLinkCache.ts
|
|
395
1252
|
function isLinkCache(reference) {
|
|
396
1253
|
return isReferenceCache(reference) && reference.original[0] !== "!";
|
|
397
1254
|
}
|
|
398
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0YW50cy9WaWV3VHlwZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0cnVjdG9ycy9nZXRBcHBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0cnVjdG9ycy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2dldFRGaWxlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9Db25zdHJ1Y3RvcnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9GdW5jdGlvbnMvY3JlYXRlVEZpbGVJbnN0YW5jZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1V0aWxzL1BhdGhVdGlscy50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0Z1bmN0aW9ucy9jcmVhdGVURm9sZGVySW5zdGFuY2UudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9GdW5jdGlvbnMvbG9hZE1lcm1haWQudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9GdW5jdGlvbnMvbG9hZFBkZkpzLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvRnVuY3Rpb25zL2xvYWRQcmlzbS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1R5cGVHdWFyZHMvaXNSZWZlcmVuY2VDYWNoZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1R5cGVHdWFyZHMvaXNFbWJlZENhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvVHlwZUd1YXJkcy9pc0Zyb250bWF0dGVyTGlua0NhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvVHlwZUd1YXJkcy9pc0xpbmtDYWNoZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGZyb20gJy4vQ2xhc3Nlcy9DdXN0b21BcnJheURpY3RJbXBsLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RhbnRzL0ZpbGVFeHRlbnNpb24udHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdGFudHMvSW50ZXJuYWxQbHVnaW5OYW1lLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RydWN0b3JzL2dldEFwcENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RydWN0b3JzL2dldEludGVybmFsUGx1Z2luQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvZ2V0SW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvZ2V0VEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL0NvbnN0cnVjdG9ycy9nZXRURm9sZGVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL0Z1bmN0aW9ucy9jcmVhdGVURmlsZUluc3RhbmNlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vRnVuY3Rpb25zL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL0Z1bmN0aW9ucy9sb2FkTWVybWFpZC50cyc7XG5leHBvcnQgKiBmcm9tICcuL0Z1bmN0aW9ucy9sb2FkUGRmSnMudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9GdW5jdGlvbnMvbG9hZFByaXNtLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vVHlwZUd1YXJkcy9pc0VtYmVkQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9UeXBlR3VhcmRzL2lzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9UeXBlR3VhcmRzL2lzTGlua0NhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vVHlwZUd1YXJkcy9pc1JlZmVyZW5jZUNhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vVXRpbHMvUGF0aFV0aWxzLnRzJztcbmV4cG9ydCB0eXBlICogZnJvbSAnLi4vLi4vaW5kZXguZC50cyc7XG4iLCAiaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvQ29sbGVjdGlvbnMvQ3VzdG9tQXJyYXlEaWN0LmQudHMnO1xuXG4vKipcbiAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tQXJyYXlEaWN0SW1wbDxUPiBpbXBsZW1lbnRzIEN1c3RvbUFycmF5RGljdDxUPiB7XG4gICAgcHVibGljIGRhdGE6IE1hcDxzdHJpbmcsIFRbXT4gPSBuZXcgTWFwKCk7XG5cbiAgICBwdWJsaWMgYWRkKGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWVzID0gdGhpcy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldChrZXksIHZhbHVlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVzLnJlbW92ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBUW10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2V5KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5kYXRhLmtleXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb250YWlucyhrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5KT8uY29udGFpbnModmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgYW5zID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5rZXlzKCkpIHtcbiAgICAgICAgICAgIGFucyArPSB0aGlzLmdldChrZXkpPy5sZW5ndGggPz8gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbnM7XG4gICAgfVxufVxuIiwgIi8qKlxuICogQHRvZG8gRG9jdW1lbnRhdGlvbiBpbmNvbXBsZXRlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBjb25zdCBGaWxlRXh0ZW5zaW9uID0ge1xuICAgIF8zZ3A6ICczZ3AnLFxuICAgIGF2aWY6ICdhdmlmJyxcbiAgICBibXA6ICdibXAnLFxuICAgIGNhbnZhczogJ2NhbnZhcycsXG4gICAgZmxhYzogJ2ZsYWMnLFxuICAgIGdpZjogJ2dpZicsXG4gICAganBlZzogJ2pwZWcnLFxuICAgIGpwZzogJ2pwZycsXG4gICAgbTRhOiAnbTRhJyxcbiAgICBtZDogJ21kJyxcbiAgICBta3Y6ICdta3YnLFxuICAgIG1vdjogJ21vdicsXG4gICAgbXAzOiAnbXAzJyxcbiAgICBtcDQ6ICdtcDQnLFxuICAgIG9nYTogJ29nYScsXG4gICAgb2dnOiAnb2dnJyxcbiAgICBvZ3Y6ICdvZ3YnLFxuICAgIG9wdXM6ICdvcHVzJyxcbiAgICBwZGY6ICdwZGYnLFxuICAgIHBuZzogJ3BuZycsXG4gICAgc3ZnOiAnc3ZnJyxcbiAgICB3YXY6ICd3YXYnLFxuICAgIHdlYm06ICd3ZWJtJyxcbiAgICB3ZWJwOiAnd2VicCdcbn0gYXMgY29uc3Q7XG4iLCAiLyoqXG4gKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEludGVybmFsUGx1Z2luTmFtZSA9IHtcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQXVkaW8gcmVjb3JkZXIuXG4gICAgICovXG4gICAgQXVkaW9SZWNvcmRlcjogJ2F1ZGlvLXJlY29yZGVyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQmFja2xpbmtzLlxuICAgICAqL1xuICAgIEJhY2tsaW5rOiAnYmFja2xpbmsnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBCYXNlcy5cbiAgICAgKi9cbiAgICBCYXNlczogJ2Jhc2VzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQm9va21hcmtzLlxuICAgICAqL1xuICAgIEJvb2ttYXJrczogJ2Jvb2ttYXJrcycsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IENhbnZhcy5cbiAgICAgKi9cbiAgICBDYW52YXM6ICdjYW52YXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBDb21tYW5kIHBhbGV0dGUuXG4gICAgICovXG4gICAgQ29tbWFuZFBhbGV0dGU6ICdjb21tYW5kLXBhbGV0dGUnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBEYWlseSBub3Rlcy5cbiAgICAgKi9cbiAgICBEYWlseU5vdGVzOiAnZGFpbHktbm90ZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiAoaGlkZGVuKS5cbiAgICAgKi9cbiAgICBFZGl0b3JTdGF0dXM6ICdlZGl0b3Itc3RhdHVzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRmlsZXMuXG4gICAgICovXG4gICAgRmlsZUV4cGxvcmVyOiAnZmlsZS1leHBsb3JlcicsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZpbGUgcmVjb3ZlcnkuXG4gICAgICovXG4gICAgRmlsZVJlY292ZXJ5OiAnZmlsZS1yZWNvdmVyeScsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZvb3Rub3Rlcy5cbiAgICAgKi9cbiAgICBGb290bm90ZXM6ICdmb290bm90ZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBTZWFyY2guXG4gICAgICovXG4gICAgR2xvYmFsU2VhcmNoOiAnZ2xvYmFsLXNlYXJjaCcsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEdyYXBoIHZpZXcuXG4gICAgICovXG4gICAgR3JhcGg6ICdncmFwaCcsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZvcm1hdCBjb252ZXJ0ZXIuXG4gICAgICovXG4gICAgTWFya2Rvd25JbXBvcnRlcjogJ21hcmtkb3duLWltcG9ydGVyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogTm90ZSBjb21wb3Nlci5cbiAgICAgKi9cbiAgICBOb3RlQ29tcG9zZXI6ICdub3RlLWNvbXBvc2VyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogT3V0Z29pbmcgbGlua3MuXG4gICAgICovXG4gICAgT3V0Z29pbmdMaW5rOiAnb3V0Z29pbmctbGluaycsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IE91dGxpbmUuXG4gICAgICovXG4gICAgT3V0bGluZTogJ291dGxpbmUnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQYWdlIHByZXZpZXcuXG4gICAgICovXG4gICAgUGFnZVByZXZpZXc6ICdwYWdlLXByZXZpZXcnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQcm9wZXJ0aWVzIHZpZXcuXG4gICAgICovXG4gICAgUHJvcGVydGllczogJ3Byb3BlcnRpZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQdWJsaXNoLlxuICAgICAqL1xuICAgIFB1Ymxpc2g6ICdwdWJsaXNoJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUmFuZG9tIG5vdGUuXG4gICAgICovXG4gICAgUmFuZG9tTm90ZTogJ3JhbmRvbS1ub3RlJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU2xhc2ggY29tbWFuZHMuXG4gICAgICovXG4gICAgU2xhc2hDb21tYW5kOiAnc2xhc2gtY29tbWFuZCcsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFNsaWRlcy5cbiAgICAgKi9cbiAgICBTbGlkZXM6ICdzbGlkZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBRdWljayBTd2l0Y2hlci5cbiAgICAgKi9cbiAgICBTd2l0Y2hlcjogJ3N3aXRjaGVyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU3luYy5cbiAgICAgKi9cbiAgICBTeW5jOiAnc3luYycsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFRhZ3Mgdmlldy5cbiAgICAgKi9cbiAgICBUYWdQYW5lOiAndGFnLXBhbmUnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBUZW1wbGF0ZXMuXG4gICAgICovXG4gICAgVGVtcGxhdGVzOiAndGVtcGxhdGVzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogV2ViIHZpZXdlci5cbiAgICAgKi9cbiAgICBXZWJ2aWV3ZXI6ICd3ZWJ2aWV3ZXInLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBXb3JkIGNvdW50LlxuICAgICAqL1xuICAgIFdvcmRDb3VudDogJ3dvcmQtY291bnQnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBXb3Jrc3BhY2VzLlxuICAgICAqL1xuICAgIFdvcmtzcGFjZXM6ICd3b3Jrc3BhY2VzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogVW5pcXVlIG5vdGUgY3JlYXRvci5cbiAgICAgKi9cbiAgICBaa1ByZWZpeGVyOiAnemstcHJlZml4ZXInXG59IGFzIGNvbnN0O1xuIiwgImltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJy4vSW50ZXJuYWxQbHVnaW5OYW1lLnRzJztcblxuLyoqXG4gKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFZpZXdUeXBlID0ge1xuICAgIEFsbFByb3BlcnRpZXM6ICdhbGwtcHJvcGVydGllcycsXG4gICAgQXVkaW86ICdhdWRpbycsXG4gICAgQmFja2xpbms6IEludGVybmFsUGx1Z2luTmFtZS5CYWNrbGluayxcbiAgICBCYXNlczogSW50ZXJuYWxQbHVnaW5OYW1lLkJhc2VzLFxuICAgIEJvb2ttYXJrczogSW50ZXJuYWxQbHVnaW5OYW1lLkJvb2ttYXJrcyxcbiAgICBDYW52YXM6IEludGVybmFsUGx1Z2luTmFtZS5DYW52YXMsXG4gICAgRW1wdHk6ICdlbXB0eScsXG4gICAgRmlsZUV4cGxvcmVyOiBJbnRlcm5hbFBsdWdpbk5hbWUuRmlsZUV4cGxvcmVyLFxuICAgIEZpbGVQcm9wZXJ0aWVzOiAnZmlsZS1wcm9wZXJ0aWVzJyxcbiAgICBHcmFwaDogSW50ZXJuYWxQbHVnaW5OYW1lLkdyYXBoLFxuICAgIEltYWdlOiAnaW1hZ2UnLFxuICAgIExvY2FsR3JhcGg6ICdsb2NhbGdyYXBoJyxcbiAgICBNYXJrZG93bjogJ21hcmtkb3duJyxcbiAgICBPdXRnb2luZ0xpbms6IEludGVybmFsUGx1Z2luTmFtZS5PdXRnb2luZ0xpbmssXG4gICAgT3V0bGluZTogSW50ZXJuYWxQbHVnaW5OYW1lLk91dGxpbmUsXG4gICAgUGRmOiAncGRmJyxcbiAgICBSZWxlYXNlTm90ZXM6ICdyZWxlYXNlLW5vdGVzJyxcbiAgICBTZWFyY2g6ICdzZWFyY2gnLFxuICAgIFN5bmM6ICdzeW5jJyxcbiAgICBUYWJsZTogJ3RhYmxlJyxcbiAgICBUYWc6ICd0YWcnLFxuICAgIFZpZGVvOiAndmlkZW8nLFxuICAgIFdlYnZpZXdlcjogJ3dlYnZpZXdlcicsXG4gICAgV2Vidmlld2VySGlzdG9yeTogJ3dlYnZpZXdlci1oaXN0b3J5J1xufSBhcyBjb25zdDtcbiIsICJpbXBvcnQge1xuICAgIEFwcFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEFwcENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL0NvbnN0cnVjdG9ycy9BcHBDb25zdHJ1Y3Rvci50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBBcHAgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEFwcCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwQ29uc3RydWN0b3IoKTogQXBwQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiBBcHAgYXMgQXBwQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsUGx1Z2luQ29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvQ29uc3RydWN0b3JzL0ludGVybmFsUGx1Z2luQ29uc3RydWN0b3IudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+KGFwcDogQXBwKTogSW50ZXJuYWxQbHVnaW5Db25zdHJ1Y3RvcjxJbnN0YW5jZT4ge1xuICAgIGNvbnN0IGFueVBsdWdpbiA9IE9iamVjdC52YWx1ZXMoYXBwLmludGVybmFsUGx1Z2lucy5wbHVnaW5zKVswXTtcbiAgICBpZiAoIWFueVBsdWdpbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGludGVybmFsIHBsdWdpbiBmb3VuZCcpO1xuICAgIH1cbiAgICByZXR1cm4gYW55UGx1Z2luLmNvbnN0cnVjdG9yIGFzIEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2ludGVybmFscy9Db25zdHJ1Y3RvcnMvSW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEludGVybmFsUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IoYXBwOiBBcHApOiBJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uc3RydWN0b3IgYXMgSW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFRGaWxlQ29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvQ29uc3RydWN0b3JzL1RGaWxlQ29uc3RydWN0b3IudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRURmlsZUNvbnN0cnVjdG9yKCk6IFRGaWxlQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiBURmlsZSBhcyBURmlsZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gICAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFRGb2xkZXJDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2ludGVybmFscy9Db25zdHJ1Y3RvcnMvVEZvbGRlckNvbnN0cnVjdG9yLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRGb2xkZXJDb25zdHJ1Y3RvcigpOiBURm9sZGVyQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiBURm9sZGVyIGFzIFRGb2xkZXJDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgVmlld1R5cGVUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL1ZpZXdzL1ZpZXdUeXBlVHlwZS5kLnRzJztcbmltcG9ydCB0eXBlIHsgVmlld1R5cGVWaWV3Q29uc3RydWN0b3JNYXBwaW5nIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL1ZpZXdzL1ZpZXdUeXBlVmlld0NvbnN0cnVjdG9yTWFwcGluZy5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIHZpZXcgY29uc3RydWN0b3IgYnkgdmlldyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHBhcmFtIHZpZXdUeXBlIC0gVGhlIHZpZXcgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSB2aWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlPFRWaWV3VHlwZSBleHRlbmRzIFZpZXdUeXBlVHlwZT4oXG4gICAgYXBwOiBBcHAsXG4gICAgdmlld1R5cGU6IFRWaWV3VHlwZVxuKTogVmlld1R5cGVWaWV3Q29uc3RydWN0b3JNYXBwaW5nW1RWaWV3VHlwZV0ge1xuICAgIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmNyZWF0ZUxlYWZJblRhYkdyb3VwKCk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgdmlld0NyZWF0b3IgPSBhcHAudmlld1JlZ2lzdHJ5LmdldFZpZXdDcmVhdG9yQnlUeXBlKHZpZXdUeXBlKTtcbiAgICAgICAgaWYgKCF2aWV3Q3JlYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3IGNyZWF0b3Igbm90IGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmlldyA9IHZpZXdDcmVhdG9yKGxlYWYpO1xuICAgICAgICByZXR1cm4gdmlldy5jb25zdHJ1Y3RvciBhcyBWaWV3VHlwZVZpZXdDb25zdHJ1Y3Rvck1hcHBpbmdbVFZpZXdUeXBlXTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBsZWFmLmRldGFjaCgpO1xuICAgIH1cbn1cbiIsICJpbXBvcnQge1xuICAgIHR5cGUgQXBwLFxuICAgIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGdldFRGaWxlQ29uc3RydWN0b3IgfSBmcm9tICcuLi9Db25zdHJ1Y3RvcnMvZ2V0VEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5pbXBvcnQgeyBwYXJlbnRGb2xkZXJQYXRoIH0gZnJvbSAnLi4vVXRpbHMvUGF0aFV0aWxzLnRzJztcbmltcG9ydCB7IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZSB9IGZyb20gJy4vY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBwcm9wZXJseSBpbml0aWFsaXplcyB0aGUgaW5zdGFuY2Ugb2YgVEZpbGUgZXZlbiB0aGUgdW5kZXJseWluZyBmaWxlIGRvZXMgbm90IGV4aXN0LlxuICogVGhpcyBkb2Vzbid0IGNyZWF0ZSB0aGUgbWlzc2luZyBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogVEZpbGUge1xuICAgIGxldCBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgZmlsZSA9IG5ldyAoZ2V0VEZpbGVDb25zdHJ1Y3RvcigpKShhcHAudmF1bHQsIHBhdGgpO1xuICAgIGZpbGUucGFyZW50ID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG4gICAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZmlsZTtcbn1cbiIsICIvKipcbiAqIEdldCB0aGUgcGFyZW50IGZvbGRlciBwYXRoIG9mIGEgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IGZvbGRlciBwYXRoIG9mLlxuICogQHJldHVybnMgVGhlIHBhcmVudCBmb2xkZXIgcGF0aC5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyZW50Rm9sZGVyUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLz9bXlxcL10qJC8sICcnKSB8fCAnLyc7XG59XG4iLCAiaW1wb3J0IHtcbiAgICB0eXBlIEFwcCxcbiAgICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGdldFRGb2xkZXJDb25zdHJ1Y3RvciB9IGZyb20gJy4uL0NvbnN0cnVjdG9ycy9nZXRURm9sZGVyQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL1V0aWxzL1BhdGhVdGlscy50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGb2xkZXIgZXZlbiB0aGUgdW5kZXJseWluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuXG4gKiBUaGlzIGRvZXNuJ3QgY3JlYXRlIHRoZSBtaXNzaW5nIGZvbGRlciBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gICAgbGV0IGZvbGRlciA9IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aCk7XG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgICByZXR1cm4gZm9sZGVyO1xuICAgIH1cblxuICAgIGZvbGRlciA9IG5ldyAoZ2V0VEZvbGRlckNvbnN0cnVjdG9yKCkpKGFwcC52YXVsdCwgcGF0aCk7XG4gICAgZm9sZGVyLnBhcmVudCA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuICAgIGZvbGRlci5kZWxldGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZm9sZGVyO1xufVxuIiwgImltcG9ydCB0eXBlIHsgTWVybWFpZCB9IGZyb20gJ21lcm1haWQnIHdpdGggeyAncmVzb2x1dGlvbi1tb2RlJzogJ2ltcG9ydCcgfTtcbmltcG9ydCB7IGxvYWRNZXJtYWlkIGFzIGxvYWRNZXJtYWlkT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBNZXJtYWlkIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgbWVybWFpZCBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5tZXJtYWlkYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cubWVybWFpZGAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbWVybWFpZC5qcy5vcmcvIHwgT2ZmaWNpYWwgTWVybWFpZCBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTWVybWFpZCgpOiBQcm9taXNlPE1lcm1haWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IGxvYWRNZXJtYWlkT3JpZ2luYWwoKSkgYXMgTWVybWFpZDtcbn1cbiIsICJpbXBvcnQgeyBsb2FkUGRmSnMgYXMgbG9hZFBkZkpzT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgcGRmanNMaWIgfSBmcm9tICdwZGZqcy1kaXN0JztcblxuLyoqXG4gKiBMb2FkIFBERi5qcyBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0byB0aGUgZ2xvYmFsIHBkZmpzTGliIG9iamVjdC5cbiAqIENhbiBhbHNvIHVzZSBgd2luZG93LnBkZmpzTGliYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cucGRmanNMaWJgIG9iamVjdC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL21vemlsbGEuZ2l0aHViLmlvL3BkZi5qcy8gfCBPZmZpY2lhbCBQREYuanMgZG9jdW1lbnRhdGlvbn0uXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBkZkpzKCk6IFByb21pc2U8dHlwZW9mIHBkZmpzTGliPiB7XG4gICAgcmV0dXJuIChhd2FpdCBsb2FkUGRmSnNPcmlnaW5hbCgpKSBhcyB0eXBlb2YgcGRmanNMaWI7XG59XG4iLCAiaW1wb3J0IHsgbG9hZFByaXNtIGFzIGxvYWRQcmlzbU9yaWdpbmFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIFByaXNtIH0gZnJvbSAncHJpc21qcyc7XG5cbi8qKlxuICogTG9hZCBQcmlzbS5qcyBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0byB0aGUgZ2xvYmFsIFByaXNtIG9iamVjdC5cbiAqIENhbiBhbHNvIHVzZSBgd2luZG93LlByaXNtYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cuUHJpc21gIG9iamVjdC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3ByaXNtanMuY29tLyB8IE9mZmljaWFsIFByaXNtIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQcmlzbSgpOiBQcm9taXNlPHR5cGVvZiBQcmlzbT4ge1xuICAgIHJldHVybiAoYXdhaXQgbG9hZFByaXNtT3JpZ2luYWwoKSkgYXMgdHlwZW9mIFByaXNtO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBSZWZlcmVuY2UsXG4gICAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgUmVmZXJlbmNlQ2FjaGUge1xuICAgIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxSZWZlcmVuY2VDYWNoZT4pLnBvc2l0aW9uO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBFbWJlZENhY2hlLFxuICAgIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBpc1JlZmVyZW5jZUNhY2hlIH0gZnJvbSAnLi9pc1JlZmVyZW5jZUNhY2hlLnRzJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGFuIGVtYmVkIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGFuIGVtYmVkIGNhY2hlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VtYmVkQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgRW1iZWRDYWNoZSB7XG4gICAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gPT09ICchJztcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gICAgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gICAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIGZyb250bWF0dGVyIGxpbmsgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUge1xuICAgIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxGcm9udG1hdHRlckxpbmtDYWNoZT4pLmtleTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gICAgTGlua0NhY2hlLFxuICAgIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBpc1JlZmVyZW5jZUNhY2hlIH0gZnJvbSAnLi9pc1JlZmVyZW5jZUNhY2hlLnRzJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgbGluayBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIGxpbmsgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGlua0NhY2hlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIExpbmtDYWNoZSB7XG4gICAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gIT09ICchJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDUU8sSUFBTSxzQkFBTixNQUEyRDtBQUFBLEVBQ3ZELE9BQXlCLG9CQUFJLElBQUk7QUFBQSxFQUVqQyxJQUFJLEtBQWEsT0FBZ0I7QUFDcEMsUUFBSSxTQUFTLEtBQUssSUFBSSxHQUFHO0FBQ3pCLFFBQUksQ0FBQyxRQUFRO0FBQ1QsZUFBUyxDQUFDO0FBQ1YsV0FBSyxLQUFLLElBQUksS0FBSyxNQUFNO0FBQUEsSUFDN0I7QUFFQSxRQUFJLENBQUMsT0FBTyxTQUFTLEtBQUssR0FBRztBQUN6QixhQUFPLEtBQUssS0FBSztBQUFBLElBQ3JCO0FBQUEsRUFDSjtBQUFBLEVBRU8sT0FBTyxLQUFhLE9BQWdCO0FBQ3ZDLFVBQU0sU0FBUyxLQUFLLElBQUksR0FBRztBQUMzQixRQUFJLENBQUMsUUFBUTtBQUNUO0FBQUEsSUFDSjtBQUNBLFdBQU8sT0FBTyxLQUFLO0FBRW5CLFFBQUksT0FBTyxXQUFXLEdBQUc7QUFDckIsV0FBSyxNQUFNLEdBQUc7QUFBQSxJQUNsQjtBQUFBLEVBQ0o7QUFBQSxFQUVPLElBQUksS0FBeUI7QUFDaEMsV0FBTyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUs7QUFBQSxFQUNqQztBQUFBLEVBRU8sT0FBaUI7QUFDcEIsV0FBTyxNQUFNLEtBQUssS0FBSyxLQUFLLEtBQUssQ0FBQztBQUFBLEVBQ3RDO0FBQUEsRUFFTyxNQUFNLEtBQW1CO0FBQzVCLFNB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LE9BQU87QUFBQSxFQUNoQjtBQUNKOzs7QUM3QkEsSUFBQUMsbUJBR087OztBQ01BLFNBQVMsaUJBQWlCLE1BQXNCO0FBQ25ELFNBQU8sS0FBSyxRQUFRLGNBQWMsRUFBRSxLQUFLO0FBQzdDOzs7QUNYQSxJQUFBQyxtQkFHTztBQVdBLFNBQVMsc0JBQXNCLEtBQVUsTUFBdUI7QUFDbkUsTUFBSSxTQUFTLElBQUksTUFBTSxnQkFBZ0IsSUFBSTtBQUMzQyxNQUFJLFFBQVE7QUFDUixXQUFPO0FBQUEsRUFDWDtBQUVBLFdBQVMsS0FBSyxzQkFBc0IsR0FBRyxJQUFJLE9BQU8sSUFBSTtBQUN0RCxTQUFPLFNBQVMsc0JBQXNCLEtBQUssaUJBQWlCLElBQUksQ0FBQztBQUNqRSxTQUFPLFVBQVU7QUFDakIsU0FBTztBQUNYOzs7QUZUTyxTQUFTLG9CQUFvQixLQUFVLE1BQXFCO0FBQy9ELE1BQUksT0FBTyxJQUFJLE1BQU0sY0FBYyxJQUFJO0FBQ3ZDLE1BQUksTUFBTTtBQUNOLFdBQU87QUFBQSxFQUNYO0FBRUEsU0FBTyxLQUFLLG9CQUFvQixHQUFHLElBQUksT0FBTyxJQUFJO0FBQ2xELE9BQUssU0FBUyxzQkFBc0IsS0FBSyxpQkFBaUIsSUFBSSxDQUFDO0FBQy9ELE9BQUssVUFBVTtBQUNmLFNBQU87QUFDWDs7O0FHeEJBLElBQUFDLG1CQUFtRDtBQVluRCxlQUFzQixjQUFnQztBQUNsRCxTQUFRLFVBQU0saUJBQUFDLGFBQW9CO0FBQ3RDOzs7QUNmQSxJQUFBQyxtQkFBK0M7QUFhL0MsZUFBc0IsWUFBc0M7QUFDeEQsU0FBUSxVQUFNLGlCQUFBQyxXQUFrQjtBQUNwQzs7O0FDZkEsSUFBQUMsbUJBQStDO0FBYS9DLGVBQXNCLFlBQW1DO0FBQ3JELFNBQVEsVUFBTSxpQkFBQUMsV0FBa0I7QUFDcEM7OztBQ0RPLFNBQVMsaUJBQWlCLFdBQW1EO0FBQ2hGLFNBQU8sQ0FBQyxDQUFFLFVBQXNDO0FBQ3BEOzs7QUNETyxTQUFTLGFBQWEsV0FBK0M7QUFDeEUsU0FBTyxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQU07QUFDcEU7OztBQ0hPLFNBQVMsdUJBQXVCLFdBQXlEO0FBQzVGLFNBQU8sQ0FBQyxDQUFFLFVBQTRDO0FBQzFEOzs7QUNETyxTQUFTLFlBQVksV0FBOEM7QUFDdEUsU0FBTyxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQU07QUFDcEU7IiwKICAibmFtZXMiOiBbImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZE1lcm1haWRPcmlnaW5hbCIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZFBkZkpzT3JpZ2luYWwiLCAiaW1wb3J0X29ic2lkaWFuIiwgImxvYWRQcmlzbU9yaWdpbmFsIl0KfQo=
|
|
1255
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9WaWV3VHlwZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QXBwQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc0VudHJ5Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc0VudHJ5R3JvdXBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEJhc2VzUXVlcnlSZXN1bHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEJhc2VzVmlld0NvbmZpZ0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Qm9vbGVhblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCdXR0b25Db21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldENhcGFjaXRvckFkYXB0ZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldERhdGVWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RHJvcGRvd25Db21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldER1cmF0aW9uVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEVkaXRvckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RXZlbnRzQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RmlsZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVTeXN0ZW1BZGFwdGVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZ1enp5U3VnZ2VzdE1vZGFsQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRIb3ZlclBvcG92ZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEhUTUxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0SWNvblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRJbWFnZVZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRLZXltYXBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldExpbmtWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TGlzdFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3Vmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25WaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNZW51Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNZW51SXRlbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudVNlcGFyYXRvckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWV0YWRhdGFDYWNoZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TW9kYWxDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vbWVudEZvcm1hdENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Tm90aWNlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROb3ROdWxsVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TnVtYmVyVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE9iamVjdFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRQcm9ncmVzc0JhckNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UXVlcnlDb250cm9sbGVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UmVsYXRpdmVEYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbmRlckNvbnRleHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNjb3BlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWFyY2hDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNlY3JldENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2VjcmV0U3RvcmFnZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2V0dGluZ0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2V0dGluZ0dyb3VwQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nVGFiQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFN0cmluZ1ZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUYWdWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VGFza3NDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRleHRBcmVhQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURmlsZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VG9nZ2xlQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRVcmxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmFsdWVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRWYXVsdENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VDb250YWluZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUZsb2F0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VJdGVtQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VNb2JpbGVEcmF3ZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVBhcmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUmliYm9uQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VSb290Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VTaWRlZG9ja0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU3BsaXRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVRhYnNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVdpbmRvd0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBTZXR0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldENsaUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDb21tYW5kc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDdXN0b21DU1NDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RHJhZ01hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGb2xkTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGcmFtZURvbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0T2JzaWRpYW5ET01Db25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFN0YXR1c0JhckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBdWRpb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhc2VzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldENhbnZhc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RW1wdHlWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVFeHBsb3JlclZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RmlsZVByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEdyYXBoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRJbWFnZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0TG9jYWxHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRQZGZWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFJlbGVhc2VOb3Rlc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRTeW5jVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRUYWJsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFnVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWRlb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy91dGlscy9QYXRoVXRpbHMudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2xvYWRNZXJtYWlkLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2xvYWRQZGZKcy50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2Z1bmN0aW9ucy9sb2FkUHJpc20udHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy90eXBlLWd1YXJkcy9pc1JlZmVyZW5jZUNhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvdHlwZS1ndWFyZHMvaXNFbWJlZENhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvdHlwZS1ndWFyZHMvaXNGcm9udG1hdHRlckxpbmtDYWNoZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL3R5cGUtZ3VhcmRzL2lzTGlua0NhY2hlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL0N1c3RvbUFycmF5RGljdEltcGwudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvRmlsZUV4dGVuc2lvbi50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9JbnRlcm5hbFBsdWdpbk5hbWUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRBYnN0cmFjdFRleHRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFwcENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QmFzZUNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QmFzZXNFbnRyeUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QmFzZXNFbnRyeUdyb3VwQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc1F1ZXJ5UmVzdWx0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc1ZpZXdDb25maWdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEJvb2xlYW5WYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRDYXBhY2l0b3JBZGFwdGVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRDb2xvckNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Q29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXREYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldERyb3Bkb3duQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXREdXJhdGlvblZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFZGl0YWJsZUZpbGVWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFZGl0b3JDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEV2ZW50c0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RXh0cmFCdXR0b25Db21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGdXp6eVN1Z2dlc3RNb2RhbENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0SG92ZXJQb3BvdmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRIVE1MVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEljb25WYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0S2V5bWFwQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRMaW5rVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldExpc3RWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3UmVuZGVyZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duUmVuZGVyQ2hpbGRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duUmVuZGVyZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUl0ZW1Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vZGFsQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE5vdGljZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Tm90TnVsbFZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROdWxsVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE51bWJlclZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRPYmplY3RWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFF1ZXJ5Q29udHJvbGxlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UmVnRXhwVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRSZW5kZXJDb250ZXh0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTY29wZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWNyZXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNlY3JldFN0b3JhZ2VDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdHcm91cENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2V0dGluZ1RhYkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2xpZGVyQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTdHJpbmdWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEFic3RyYWN0RmlsZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VGFnVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRhc2tzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUZXh0QXJlYUNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGb2xkZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRvZ2dsZUNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VXJsVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFZhbHVlQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmF1bHRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTW9iaWxlRHJhd2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VUYWJzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0QXBwTWVudUJhck1hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0QXBwU2V0dGluZ0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDbGlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Q29tbWFuZHNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Q3VzdG9tQ1NTQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldERyYWdNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldEVkaXRvclN1Z2dlc3RzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldEVtYmVkUmVnaXN0cnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Rm9sZE1hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RnJhbWVEb21Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0SG90a2V5TWFuYWdlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRNZXRhZGF0YVR5cGVNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE9ic2lkaWFuRE9NQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFBsdWdpbnNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UmVjZW50RmlsZVRyYWNrZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0U2hhcmVSZWNlaXZlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTdGF0dXNCYXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Vmlld1JlZ2lzdHJ5Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFdvcmtzcGFjZUxlYWZIaXN0b3J5Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ2V0SW50ZXJuYWxQbHVnaW5Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QWxsUHJvcGVydGllc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QXVkaW9WaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhY2tsaW5rVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCYXNlc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0Qm9va21hcmtzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRDYW52YXNWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEVtcHR5Vmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRGaWxlRXhwbG9yZXJWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0SW1hZ2VWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldExvY2FsR3JhcGhWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldE91dGdvaW5nTGlua1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0bGluZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0UGRmVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRSZWxlYXNlTm90ZXNWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFNlYXJjaFZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U3luY1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFibGVWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFRhZ1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VmlkZW9WaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFdlYnZpZXdlckhpc3RvcnlWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFdlYnZpZXdlclZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy9jcmVhdGVURmlsZUluc3RhbmNlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy9sb2FkTWVybWFpZC50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy9sb2FkUGRmSnMudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvbG9hZFByaXNtLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMvaXNFbWJlZENhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMvaXNGcm9udG1hdHRlckxpbmtDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzTGlua0NhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMvaXNSZWZlcmVuY2VDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL1BhdGhVdGlscy50cyc7XG5leHBvcnQgdHlwZSAqIGZyb20gJy4uLy4uL2luZGV4LmQudHMnO1xuIiwgImltcG9ydCB0eXBlIHsgQ3VzdG9tQXJyYXlEaWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb25zL0N1c3RvbUFycmF5RGljdC5kLmQudHMnO1xuXG4vKipcbiAqIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgc3RyaW5nIGtleXMgdG8gYXJyYXlzIG9mIHVuaXF1ZSB2YWx1ZXMsIGltcGxlbWVudGluZyB7QGxpbmsgQ3VzdG9tQXJyYXlEaWN0fS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tQXJyYXlEaWN0SW1wbDxUPiBpbXBsZW1lbnRzIEN1c3RvbUFycmF5RGljdDxUPiB7XG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgVFtdPiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogQHRvZG8gRG9jdW1lbnRhdGlvbiBpbmNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGFkZChrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5nZXQoa2V5KTtcbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgdmFsdWVzID0gW107XG4gICAgICB0aGlzLmRhdGEuc2V0KGtleSwgdmFsdWVzKTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gRG9jdW1lbnRhdGlvbiBpbmNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhLmRlbGV0ZShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgY29udGFpbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5KT8uY29udGFpbnModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgIGxldCBhbnMgPSAwO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMua2V5cygpKSB7XG4gICAgICBhbnMgKz0gdGhpcy5nZXQoa2V5KT8ubGVuZ3RoID8/IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogVFtdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2V5KSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmRhdGEua2V5cygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YWx1ZXMucmVtb3ZlKHZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhcihrZXkpO1xuICAgIH1cbiAgfVxufVxuIiwgIi8qKlxuICogQ29uc3RhbnQgbWFwcGluZyBvZiBmaWxlIGV4dGVuc2lvbiBpZGVudGlmaWVycyByZWNvZ25pemVkIGFuZCBzdXBwb3J0ZWQgYnkgT2JzaWRpYW4uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEZpbGVFeHRlbnNpb24gPSB7XG4gIF8zZ3A6ICczZ3AnLFxuICBhdmlmOiAnYXZpZicsXG4gIGJtcDogJ2JtcCcsXG4gIGNhbnZhczogJ2NhbnZhcycsXG4gIGZsYWM6ICdmbGFjJyxcbiAgZ2lmOiAnZ2lmJyxcbiAganBlZzogJ2pwZWcnLFxuICBqcGc6ICdqcGcnLFxuICBtNGE6ICdtNGEnLFxuICBtZDogJ21kJyxcbiAgbWt2OiAnbWt2JyxcbiAgbW92OiAnbW92JyxcbiAgbXAzOiAnbXAzJyxcbiAgbXA0OiAnbXA0JyxcbiAgb2dhOiAnb2dhJyxcbiAgb2dnOiAnb2dnJyxcbiAgb2d2OiAnb2d2JyxcbiAgb3B1czogJ29wdXMnLFxuICBwZGY6ICdwZGYnLFxuICBwbmc6ICdwbmcnLFxuICBzdmc6ICdzdmcnLFxuICB3YXY6ICd3YXYnLFxuICB3ZWJtOiAnd2VibScsXG4gIHdlYnA6ICd3ZWJwJ1xufSBhcyBjb25zdDtcbiIsICIvKipcbiAqIENvbnN0YW50IG1hcHBpbmcgb2YgaW50ZXJuYWwgKGNvcmUpIHBsdWdpbiBuYW1lIGlkZW50aWZpZXJzIGJ1bmRsZWQgd2l0aCBPYnNpZGlhbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY29uc3QgSW50ZXJuYWxQbHVnaW5OYW1lID0ge1xuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEF1ZGlvIHJlY29yZGVyLlxuICAgKi9cbiAgQXVkaW9SZWNvcmRlcjogJ2F1ZGlvLXJlY29yZGVyJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBCYWNrbGlua3MuXG4gICAqL1xuICBCYWNrbGluazogJ2JhY2tsaW5rJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBCYXNlcy5cbiAgICovXG4gIEJhc2VzOiAnYmFzZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEJvb2ttYXJrcy5cbiAgICovXG4gIEJvb2ttYXJrczogJ2Jvb2ttYXJrcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQ2FudmFzLlxuICAgKi9cbiAgQ2FudmFzOiAnY2FudmFzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBDb21tYW5kIHBhbGV0dGUuXG4gICAqL1xuICBDb21tYW5kUGFsZXR0ZTogJ2NvbW1hbmQtcGFsZXR0ZScsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRGFpbHkgbm90ZXMuXG4gICAqL1xuICBEYWlseU5vdGVzOiAnZGFpbHktbm90ZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IChoaWRkZW4pLlxuICAgKi9cbiAgRWRpdG9yU3RhdHVzOiAnZWRpdG9yLXN0YXR1cycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRmlsZXMuXG4gICAqL1xuICBGaWxlRXhwbG9yZXI6ICdmaWxlLWV4cGxvcmVyJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGaWxlIHJlY292ZXJ5LlxuICAgKi9cbiAgRmlsZVJlY292ZXJ5OiAnZmlsZS1yZWNvdmVyeScsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRm9vdG5vdGVzLlxuICAgKi9cbiAgRm9vdG5vdGVzOiAnZm9vdG5vdGVzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBTZWFyY2guXG4gICAqL1xuICBHbG9iYWxTZWFyY2g6ICdnbG9iYWwtc2VhcmNoJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBHcmFwaCB2aWV3LlxuICAgKi9cbiAgR3JhcGg6ICdncmFwaCcsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRm9ybWF0IGNvbnZlcnRlci5cbiAgICovXG4gIE1hcmtkb3duSW1wb3J0ZXI6ICdtYXJrZG93bi1pbXBvcnRlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogTm90ZSBjb21wb3Nlci5cbiAgICovXG4gIE5vdGVDb21wb3NlcjogJ25vdGUtY29tcG9zZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IE91dGdvaW5nIGxpbmtzLlxuICAgKi9cbiAgT3V0Z29pbmdMaW5rOiAnb3V0Z29pbmctbGluaycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogT3V0bGluZS5cbiAgICovXG4gIE91dGxpbmU6ICdvdXRsaW5lJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQYWdlIHByZXZpZXcuXG4gICAqL1xuICBQYWdlUHJldmlldzogJ3BhZ2UtcHJldmlldycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUHJvcGVydGllcyB2aWV3LlxuICAgKi9cbiAgUHJvcGVydGllczogJ3Byb3BlcnRpZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFB1Ymxpc2guXG4gICAqL1xuICBQdWJsaXNoOiAncHVibGlzaCcsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUmFuZG9tIG5vdGUuXG4gICAqL1xuICBSYW5kb21Ob3RlOiAncmFuZG9tLW5vdGUnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFNsYXNoIGNvbW1hbmRzLlxuICAgKi9cbiAgU2xhc2hDb21tYW5kOiAnc2xhc2gtY29tbWFuZCcsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU2xpZGVzLlxuICAgKi9cbiAgU2xpZGVzOiAnc2xpZGVzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBRdWljayBTd2l0Y2hlci5cbiAgICovXG4gIFN3aXRjaGVyOiAnc3dpdGNoZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFN5bmMuXG4gICAqL1xuICBTeW5jOiAnc3luYycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogVGFncyB2aWV3LlxuICAgKi9cbiAgVGFnUGFuZTogJ3RhZy1wYW5lJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBUZW1wbGF0ZXMuXG4gICAqL1xuICBUZW1wbGF0ZXM6ICd0ZW1wbGF0ZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFdlYiB2aWV3ZXIuXG4gICAqL1xuICBXZWJ2aWV3ZXI6ICd3ZWJ2aWV3ZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFdvcmQgY291bnQuXG4gICAqL1xuICBXb3JkQ291bnQ6ICd3b3JkLWNvdW50JyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBXb3Jrc3BhY2VzLlxuICAgKi9cbiAgV29ya3NwYWNlczogJ3dvcmtzcGFjZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFVuaXF1ZSBub3RlIGNyZWF0b3IuXG4gICAqL1xuICBaa1ByZWZpeGVyOiAnemstcHJlZml4ZXInXG59IGFzIGNvbnN0O1xuIiwgImltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJy4vSW50ZXJuYWxQbHVnaW5OYW1lLnRzJztcblxuLyoqXG4gKiBDb25zdGFudCBtYXBwaW5nIG9mIHZpZXcgdHlwZSBpZGVudGlmaWVycyB1c2VkIHRvIG9wZW4gYW5kIG1hbmFnZSBkaWZmZXJlbnQgbGVhZiB2aWV3cyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY29uc3QgVmlld1R5cGUgPSB7XG4gIEFsbFByb3BlcnRpZXM6ICdhbGwtcHJvcGVydGllcycsXG4gIEF1ZGlvOiAnYXVkaW8nLFxuICBCYWNrbGluazogSW50ZXJuYWxQbHVnaW5OYW1lLkJhY2tsaW5rLFxuICBCYXNlczogSW50ZXJuYWxQbHVnaW5OYW1lLkJhc2VzLFxuICBCb29rbWFya3M6IEludGVybmFsUGx1Z2luTmFtZS5Cb29rbWFya3MsXG4gIENhbnZhczogSW50ZXJuYWxQbHVnaW5OYW1lLkNhbnZhcyxcbiAgRW1wdHk6ICdlbXB0eScsXG4gIEZpbGVFeHBsb3JlcjogSW50ZXJuYWxQbHVnaW5OYW1lLkZpbGVFeHBsb3JlcixcbiAgRmlsZVByb3BlcnRpZXM6ICdmaWxlLXByb3BlcnRpZXMnLFxuICBHcmFwaDogSW50ZXJuYWxQbHVnaW5OYW1lLkdyYXBoLFxuICBJbWFnZTogJ2ltYWdlJyxcbiAgTG9jYWxHcmFwaDogJ2xvY2FsZ3JhcGgnLFxuICBNYXJrZG93bjogJ21hcmtkb3duJyxcbiAgT3V0Z29pbmdMaW5rOiBJbnRlcm5hbFBsdWdpbk5hbWUuT3V0Z29pbmdMaW5rLFxuICBPdXRsaW5lOiBJbnRlcm5hbFBsdWdpbk5hbWUuT3V0bGluZSxcbiAgUGRmOiAncGRmJyxcbiAgUmVsZWFzZU5vdGVzOiAncmVsZWFzZS1ub3RlcycsXG4gIFNlYXJjaDogJ3NlYXJjaCcsXG4gIFN5bmM6ICdzeW5jJyxcbiAgVGFibGU6ICd0YWJsZScsXG4gIFRhZzogJ3RhZycsXG4gIFZpZGVvOiAndmlkZW8nLFxuICBXZWJ2aWV3ZXI6ICd3ZWJ2aWV3ZXInLFxuICBXZWJ2aWV3ZXJIaXN0b3J5OiAnd2Vidmlld2VyLWhpc3RvcnknXG59IGFzIGNvbnN0O1xuIiwgImltcG9ydCB7XG4gIEFic3RyYWN0VGV4dENvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFxuICBBYnN0cmFjdFRleHRDb21wb25lbnQ8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4+O1xuXG4vKipcbiAqIEdldCB0aGUgQWJzdHJhY3RUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBBYnN0cmFjdFRleHRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEFic3RyYWN0VGV4dENvbXBvbmVudCBhcyBBYnN0cmFjdFRleHRDb21wb25lbnRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBBcHBcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBBcHBDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHA+O1xuXG4vKipcbiAqIEdldCB0aGUgQXBwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBBcHAgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcENvbnN0cnVjdG9yKCk6IEFwcENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEFwcCBhcyBBcHBDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBCYXNlQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VDb21wb25lbnQ+IHtcbiAgcmV0dXJuIEJhc2VDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzRW50cnlcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBCYXNlc0VudHJ5Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeT47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc0VudHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlc0VudHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlc0VudHJ5Q29uc3RydWN0b3IoKTogQmFzZXNFbnRyeUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEJhc2VzRW50cnkgYXMgQmFzZXNFbnRyeUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzRW50cnlHcm91cFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VzRW50cnlHcm91cD47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc0VudHJ5R3JvdXAgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzRW50cnlHcm91cCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNFbnRyeUdyb3VwQ29uc3RydWN0b3IoKTogQmFzZXNFbnRyeUdyb3VwQ29uc3RydWN0b3Ige1xuICByZXR1cm4gQmFzZXNFbnRyeUdyb3VwIGFzIEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzUXVlcnlSZXN1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBCYXNlc1F1ZXJ5UmVzdWx0Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNRdWVyeVJlc3VsdD47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1F1ZXJ5UmVzdWx0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlc1F1ZXJ5UmVzdWx0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlc1F1ZXJ5UmVzdWx0Q29uc3RydWN0b3IoKTogQmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEJhc2VzUXVlcnlSZXN1bHQgYXMgQmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzVmlld0NvbmZpZ1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJhc2VzVmlld0NvbmZpZ0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VzVmlld0NvbmZpZz47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1ZpZXdDb25maWcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzVmlld0NvbmZpZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IoKTogQmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3Ige1xuICByZXR1cm4gQmFzZXNWaWV3Q29uZmlnIGFzIEJhc2VzVmlld0NvbmZpZ0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJvb2xlYW5WYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJvb2xlYW5WYWx1ZT47XG5cbi8qKlxuICogR2V0IHRoZSBCb29sZWFuVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJvb2xlYW5WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9vbGVhblZhbHVlQ29uc3RydWN0b3IoKTogQm9vbGVhblZhbHVlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gQm9vbGVhblZhbHVlIGFzIEJvb2xlYW5WYWx1ZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJ1dHRvbkNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJ1dHRvbkNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBCdXR0b25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IoKTogQnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gQnV0dG9uQ29tcG9uZW50IGFzIEJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIENhcGFjaXRvckFkYXB0ZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBDYXBhY2l0b3JBZGFwdGVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8Q2FwYWNpdG9yQWRhcHRlcj47XG5cbi8qKlxuICogR2V0IHRoZSBDYXBhY2l0b3JBZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBDYXBhY2l0b3JBZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXBhY2l0b3JBZGFwdGVyQ29uc3RydWN0b3IoKTogQ2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIENhcGFjaXRvckFkYXB0ZXIgYXMgQ2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIENvbG9yQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgQ29sb3JDb21wb25lbnRDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxDb2xvckNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBDb2xvckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQ29sb3JDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IoKTogQ29sb3JDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBDb2xvckNvbXBvbmVudCBhcyBDb2xvckNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIENvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDb21wb25lbnQ+IHtcbiAgcmV0dXJuIENvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8Q29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQge1xuICBEYXRlVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBEYXRlVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxEYXRlVmFsdWU+O1xuXG4vKipcbiAqIEdldCB0aGUgRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBEYXRlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVWYWx1ZUNvbnN0cnVjdG9yKCk6IERhdGVWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIERhdGVWYWx1ZSBhcyBEYXRlVmFsdWVDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBEcm9wZG93bkNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIERyb3Bkb3duQ29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RHJvcGRvd25Db21wb25lbnQ+O1xuXG4vKipcbiAqIEdldCB0aGUgRHJvcGRvd25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIERyb3Bkb3duQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yKCk6IERyb3Bkb3duQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gRHJvcGRvd25Db21wb25lbnQgYXMgRHJvcGRvd25Db21wb25lbnRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBEdXJhdGlvblZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgRHVyYXRpb25WYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPER1cmF0aW9uVmFsdWU+O1xuXG4vKipcbiAqIEdldCB0aGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVyYXRpb25WYWx1ZUNvbnN0cnVjdG9yKCk6IER1cmF0aW9uVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBEdXJhdGlvblZhbHVlIGFzIER1cmF0aW9uVmFsdWVDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBFZGl0YWJsZUZpbGVWaWV3XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgRWRpdGFibGVGaWxlVmlld0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEVkaXRhYmxlRmlsZVZpZXc+O1xuXG4vKipcbiAqIEdldCB0aGUgRWRpdGFibGVGaWxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRWRpdGFibGVGaWxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdGFibGVGaWxlVmlld0NvbnN0cnVjdG9yKCk6IEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBFZGl0YWJsZUZpbGVWaWV3IGFzIEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBFZGl0b3Jcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBFZGl0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3I+O1xuXG4vKipcbiAqIEdldCB0aGUgRWRpdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFZGl0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRvckNvbnN0cnVjdG9yKCk6IEVkaXRvckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEVkaXRvciBhcyBFZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBFdmVudHNcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEV2ZW50cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRXZlbnRzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudHNDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RXZlbnRzPiB7XG4gIHJldHVybiBFdmVudHMgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEV2ZW50cz47XG59XG4iLCAiaW1wb3J0IHtcbiAgRXh0cmFCdXR0b25Db21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEV4dHJhQnV0dG9uQ29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIEV4dHJhQnV0dG9uQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFeHRyYUJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0cmFCdXR0b25Db21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEV4dHJhQnV0dG9uQ29tcG9uZW50IGFzIEV4dHJhQnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRmlsZU1hbmFnZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBGaWxlTWFuYWdlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVNYW5hZ2VyPjtcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGaWxlTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU1hbmFnZXJDb25zdHJ1Y3RvcigpOiBGaWxlTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEZpbGVNYW5hZ2VyIGFzIEZpbGVNYW5hZ2VyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRmlsZVN5c3RlbUFkYXB0ZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVTeXN0ZW1BZGFwdGVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVTeXN0ZW1BZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGaWxlU3lzdGVtQWRhcHRlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVN5c3RlbUFkYXB0ZXJDb25zdHJ1Y3RvcigpOiBGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEZpbGVTeXN0ZW1BZGFwdGVyIGFzIEZpbGVTeXN0ZW1BZGFwdGVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRmlsZVZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgRmlsZVZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RmlsZVZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRmlsZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlVmFsdWVDb25zdHJ1Y3RvcigpOiBGaWxlVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBGaWxlVmFsdWUgYXMgRmlsZVZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRnV6enlTdWdnZXN0TW9kYWxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBGdXp6eVN1Z2dlc3RNb2RhbENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEZ1enp5U3VnZ2VzdE1vZGFsPHVua25vd24+PjtcblxuLyoqXG4gKiBHZXQgdGhlIEZ1enp5U3VnZ2VzdE1vZGFsIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGdXp6eVN1Z2dlc3RNb2RhbCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnV6enlTdWdnZXN0TW9kYWxDb25zdHJ1Y3RvcigpOiBGdXp6eVN1Z2dlc3RNb2RhbENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEZ1enp5U3VnZ2VzdE1vZGFsIGFzIEZ1enp5U3VnZ2VzdE1vZGFsQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSG92ZXJQb3BvdmVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgSG92ZXJQb3BvdmVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SG92ZXJQb3BvdmVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIEhvdmVyUG9wb3ZlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSG92ZXJQb3BvdmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3ZlclBvcG92ZXJDb25zdHJ1Y3RvcigpOiBIb3ZlclBvcG92ZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBIb3ZlclBvcG92ZXIgYXMgSG92ZXJQb3BvdmVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSFRNTFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgSFRNTFZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SFRNTFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEhUTUxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSFRNTFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MVmFsdWVDb25zdHJ1Y3RvcigpOiBIVE1MVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBIVE1MVmFsdWUgYXMgSFRNTFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSWNvblZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgSWNvblZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SWNvblZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEljb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSWNvblZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uVmFsdWVDb25zdHJ1Y3RvcigpOiBJY29uVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBJY29uVmFsdWUgYXMgSWNvblZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSW1hZ2VWYWx1ZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEltYWdlVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEltYWdlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEltYWdlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlVmFsdWVDb25zdHJ1Y3RvcigpOiBJbWFnZVZhbHVlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gSW1hZ2VWYWx1ZSBhcyBJbWFnZVZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgS2V5bWFwXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgS2V5bWFwQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8S2V5bWFwPjtcblxuLyoqXG4gKiBHZXQgdGhlIEtleW1hcCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgS2V5bWFwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXltYXBDb25zdHJ1Y3RvcigpOiBLZXltYXBDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBLZXltYXAgYXMgS2V5bWFwQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTGlua1ZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTGlua1ZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TGlua1ZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIExpbmtWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTGlua1ZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rVmFsdWVDb25zdHJ1Y3RvcigpOiBMaW5rVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBMaW5rVmFsdWUgYXMgTGlua1ZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTGlzdFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTGlzdFZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TGlzdFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIExpc3RWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTGlzdFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaXN0VmFsdWVDb25zdHJ1Y3RvcigpOiBMaXN0VmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBMaXN0VmFsdWUgYXMgTGlzdFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUHJldmlld1JlbmRlcmVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93blByZXZpZXdSZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25QcmV2aWV3UmVuZGVyZXJDb25zdHJ1Y3RvcigpOiBNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGFzIE1hcmtkb3duUHJldmlld1JlbmRlcmVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWFya2Rvd25QcmV2aWV3Vmlld1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blByZXZpZXdWaWV3PjtcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3RvcigpOiBNYXJrZG93blByZXZpZXdWaWV3Q29uc3RydWN0b3Ige1xuICByZXR1cm4gTWFya2Rvd25QcmV2aWV3VmlldyBhcyB1bmtub3duIGFzIE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBNYXJrZG93blJlbmRlckNoaWxkXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUmVuZGVyQ2hpbGQ+O1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yKCk6IE1hcmtkb3duUmVuZGVyQ2hpbGRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlckNoaWxkIGFzIE1hcmtkb3duUmVuZGVyQ2hpbGRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBNYXJrZG93blJlbmRlcmVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUmVuZGVyZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yKCk6IE1hcmtkb3duUmVuZGVyZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlcmVyIGFzIHVua25vd24gYXMgTWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIE1hcmtkb3duVmlld1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1hcmtkb3duVmlld0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duVmlldz47XG5cbi8qKlxuICogR2V0IHRoZSBNYXJrZG93blZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25WaWV3Q29uc3RydWN0b3IoKTogTWFya2Rvd25WaWV3Q29uc3RydWN0b3Ige1xuICByZXR1cm4gTWFya2Rvd25WaWV3IGFzIE1hcmtkb3duVmlld0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIE1lbnVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBNZW51Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TWVudT47XG5cbi8qKlxuICogR2V0IHRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51Q29uc3RydWN0b3IoKTogTWVudUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE1lbnUgYXMgTWVudUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIE1lbnVJdGVtXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTWVudUl0ZW1Db25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZW51SXRlbT47XG5cbi8qKlxuICogR2V0IHRoZSBNZW51SXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWVudUl0ZW0gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbnVJdGVtQ29uc3RydWN0b3IoKTogTWVudUl0ZW1Db25zdHJ1Y3RvciB7XG4gIHJldHVybiBNZW51SXRlbSBhcyB1bmtub3duIGFzIE1lbnVJdGVtQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWVudVNlcGFyYXRvclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZW51U2VwYXJhdG9yPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1lbnVTZXBhcmF0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1lbnVTZXBhcmF0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3RvcigpOiBNZW51U2VwYXJhdG9yQ29uc3RydWN0b3Ige1xuICByZXR1cm4gTWVudVNlcGFyYXRvciBhcyBNZW51U2VwYXJhdG9yQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWV0YWRhdGFDYWNoZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZXRhZGF0YUNhY2hlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1ldGFkYXRhQ2FjaGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1ldGFkYXRhQ2FjaGUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3RvcigpOiBNZXRhZGF0YUNhY2hlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gTWV0YWRhdGFDYWNoZSBhcyBNZXRhZGF0YUNhY2hlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTW9kYWxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBNb2RhbENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1vZGFsPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1vZGFsIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNb2RhbCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kYWxDb25zdHJ1Y3RvcigpOiBNb2RhbENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE1vZGFsIGFzIE1vZGFsQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTW9tZW50Rm9ybWF0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTW9tZW50Rm9ybWF0Q29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TW9tZW50Rm9ybWF0Q29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIE1vbWVudEZvcm1hdENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTW9tZW50Rm9ybWF0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBNb21lbnRGb3JtYXRDb21wb25lbnQgYXMgTW9tZW50Rm9ybWF0Q29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTm90aWNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTm90aWNlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8Tm90aWNlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE5vdGljZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTm90aWNlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RpY2VDb25zdHJ1Y3RvcigpOiBOb3RpY2VDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBOb3RpY2UgYXMgTm90aWNlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTm90TnVsbFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBOb3ROdWxsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE5vdE51bGxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90TnVsbFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT4ge1xuICByZXR1cm4gTm90TnVsbFZhbHVlIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHtcbiAgTnVsbFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTnVsbFZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TnVsbFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE51bGxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTnVsbFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdWxsVmFsdWVDb25zdHJ1Y3RvcigpOiBOdWxsVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBOdWxsVmFsdWUgYXMgTnVsbFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTnVtYmVyVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBOdW1iZXJWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE51bWJlclZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE51bWJlclZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBOdW1iZXJWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyVmFsdWVDb25zdHJ1Y3RvcigpOiBOdW1iZXJWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE51bWJlclZhbHVlIGFzIE51bWJlclZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgT2JqZWN0VmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBPYmplY3RWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE9iamVjdFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE9iamVjdFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBPYmplY3RWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0VmFsdWVDb25zdHJ1Y3RvcigpOiBPYmplY3RWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE9iamVjdFZhbHVlIGFzIE9iamVjdFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUHJvZ3Jlc3NCYXJDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBQcm9ncmVzc0JhckNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFByb2dyZXNzQmFyQ29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIFByb2dyZXNzQmFyQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBQcm9ncmVzc0JhckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBQcm9ncmVzc0JhckNvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFByb2dyZXNzQmFyQ29tcG9uZW50IGFzIFByb2dyZXNzQmFyQ29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUXVlcnlDb250cm9sbGVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgUXVlcnlDb250cm9sbGVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8UXVlcnlDb250cm9sbGVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIFF1ZXJ5Q29udHJvbGxlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgUXVlcnlDb250cm9sbGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3RvcigpOiBRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBRdWVyeUNvbnRyb2xsZXIgYXMgUXVlcnlDb250cm9sbGVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUmVnRXhwVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFJlZ0V4cFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFJlZ0V4cFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZWdFeHBWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVnRXhwVmFsdWVDb25zdHJ1Y3RvcigpOiBSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFJlZ0V4cFZhbHVlIGFzIFJlZ0V4cFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUmVsYXRpdmVEYXRlVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBSZWxhdGl2ZURhdGVWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFJlbGF0aXZlRGF0ZVZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFJlbGF0aXZlRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZWxhdGl2ZURhdGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpdmVEYXRlVmFsdWVDb25zdHJ1Y3RvcigpOiBSZWxhdGl2ZURhdGVWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFJlbGF0aXZlRGF0ZVZhbHVlIGFzIFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUmVuZGVyQ29udGV4dFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFJlbmRlckNvbnRleHRDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxSZW5kZXJDb250ZXh0PjtcblxuLyoqXG4gKiBHZXQgdGhlIFJlbmRlckNvbnRleHQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFJlbmRlckNvbnRleHQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbmRlckNvbnRleHRDb25zdHJ1Y3RvcigpOiBSZW5kZXJDb250ZXh0Q29uc3RydWN0b3Ige1xuICByZXR1cm4gUmVuZGVyQ29udGV4dCBhcyBSZW5kZXJDb250ZXh0Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2NvcGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBTY29wZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFNjb3BlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNjb3BlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBTY29wZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NvcGVDb25zdHJ1Y3RvcigpOiBTY29wZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFNjb3BlIGFzIFNjb3BlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2VhcmNoQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2VhcmNoQ29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIFNlYXJjaENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2VhcmNoQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWFyY2hDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBTZWFyY2hDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTZWFyY2hDb21wb25lbnQgYXMgU2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2VjcmV0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU2VjcmV0Q29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2VjcmV0Q29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIFNlY3JldENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2VjcmV0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWNyZXRDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBTZWNyZXRDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTZWNyZXRDb21wb25lbnQgYXMgU2VjcmV0Q29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2VjcmV0U3RvcmFnZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFNlY3JldFN0b3JhZ2VDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRTdG9yYWdlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNlY3JldFN0b3JhZ2UgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNlY3JldFN0b3JhZ2UgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3JldFN0b3JhZ2VDb25zdHJ1Y3RvcigpOiBTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gU2VjcmV0U3RvcmFnZSBhcyBTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2V0dGluZ1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFNldHRpbmdDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdDb25zdHJ1Y3RvcigpOiBTZXR0aW5nQ29uc3RydWN0b3Ige1xuICByZXR1cm4gU2V0dGluZyBhcyBTZXR0aW5nQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2V0dGluZ0dyb3VwXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU2V0dGluZ0dyb3VwQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2V0dGluZ0dyb3VwPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNldHRpbmdHcm91cCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2V0dGluZ0dyb3VwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nR3JvdXBDb25zdHJ1Y3RvcigpOiBTZXR0aW5nR3JvdXBDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTZXR0aW5nR3JvdXAgYXMgU2V0dGluZ0dyb3VwQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2V0dGluZ1RhYlxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2V0dGluZ1RhYiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2V0dGluZ1RhYiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ1RhYkNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nVGFiPiB7XG4gIHJldHVybiBTZXR0aW5nVGFiIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFNldHRpbmdUYWI+O1xufVxuIiwgImltcG9ydCB7XG4gIFNsaWRlckNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFNsaWRlckNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFNsaWRlckNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBTbGlkZXJDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNsaWRlckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2xpZGVyQ29tcG9uZW50Q29uc3RydWN0b3IoKTogU2xpZGVyQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gU2xpZGVyQ29tcG9uZW50IGFzIFNsaWRlckNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFN0cmluZ1ZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU3RyaW5nVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxTdHJpbmdWYWx1ZT47XG5cbi8qKlxuICogR2V0IHRoZSBTdHJpbmdWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU3RyaW5nVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlQ29uc3RydWN0b3IoKTogU3RyaW5nVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTdHJpbmdWYWx1ZSBhcyBTdHJpbmdWYWx1ZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8VEFic3RyYWN0RmlsZT47XG5cbi8qKlxuICogR2V0IHRoZSBUQWJzdHJhY3RGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUQWJzdHJhY3RGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3IoKTogVEFic3RyYWN0RmlsZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRBYnN0cmFjdEZpbGUgYXMgdW5rbm93biBhcyBUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgVGFnVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBUYWdWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFRhZ1ZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFRhZ1ZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUYWdWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnVmFsdWVDb25zdHJ1Y3RvcigpOiBUYWdWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRhZ1ZhbHVlIGFzIFRhZ1ZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgVGFza3Ncbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvckJhc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0NvbnN0cnVjdG9yQmFzZS5kLnRzJztcblxudHlwZSBUYXNrc0NvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JCYXNlPFtdLCBUYXNrcz47XG5cbi8qKlxuICogR2V0IHRoZSBUYXNrcyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVGFza3MgY29uc3RydWN0b3IuXG4gKiBAcmVtYXJrIENvbnN0cnVjdG9yIGlzIGBudWxsYC4gU2VlIHtAbGluayBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYXBpLWJ1Zy10YXNrcy1jbGFzcy85ODk5M30uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhc2tzQ29uc3RydWN0b3IoKTogVGFza3NDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBUYXNrcyBhcyBUYXNrc0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRleHRBcmVhQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgVGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxUZXh0QXJlYUNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0QXJlYUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVGV4dEFyZWFDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcmVhQ29tcG9uZW50Q29uc3RydWN0b3IoKTogVGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBUZXh0QXJlYUNvbXBvbmVudCBhcyBUZXh0QXJlYUNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8VGV4dENvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogVGV4dENvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRleHRDb21wb25lbnQgYXMgVGV4dENvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgVEZpbGVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxURmlsZT47XG5cbi8qKlxuICogR2V0IHRoZSBURmlsZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRGaWxlQ29uc3RydWN0b3IoKTogVEZpbGVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBURmlsZSBhcyBURmlsZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBURm9sZGVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8VEZvbGRlcj47XG5cbi8qKlxuICogR2V0IHRoZSBURm9sZGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBURm9sZGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRURm9sZGVyQ29uc3RydWN0b3IoKTogVEZvbGRlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRGb2xkZXIgYXMgVEZvbGRlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRvZ2dsZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFRvZ2dsZUNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFRvZ2dsZUNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBUb2dnbGVDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRvZ2dsZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9nZ2xlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogVG9nZ2xlQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gVG9nZ2xlQ29tcG9uZW50IGFzIFRvZ2dsZUNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFVybFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgVXJsVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxVcmxWYWx1ZT47XG5cbi8qKlxuICogR2V0IHRoZSBVcmxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVXJsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVybFZhbHVlQ29uc3RydWN0b3IoKTogVXJsVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBVcmxWYWx1ZSBhcyBVcmxWYWx1ZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFZhbHVlQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWVDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlQ29tcG9uZW50PHVua25vd24+PiB7XG4gIHJldHVybiBWYWx1ZUNvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VmFsdWVDb21wb25lbnQ8dW5rbm93bj4+O1xufVxuIiwgImltcG9ydCB7XG4gIFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlPiB7XG4gIHJldHVybiBWYWx1ZSBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHtcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBWYXVsdENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFZhdWx0PjtcblxuLyoqXG4gKiBHZXQgdGhlIFZhdWx0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBWYXVsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmF1bHRDb25zdHJ1Y3RvcigpOiBWYXVsdENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFZhdWx0IGFzIFZhdWx0Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VDb25zdHJ1Y3RvcigpOiBXb3Jrc3BhY2VDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBXb3Jrc3BhY2UgYXMgV29ya3NwYWNlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlQ29udGFpbmVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VDb250YWluZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZUNvbnRhaW5lciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUNvbnRhaW5lcj4ge1xuICByZXR1cm4gV29ya3NwYWNlQ29udGFpbmVyIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUNvbnRhaW5lcj47XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlRmxvYXRpbmdcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUZsb2F0aW5nPjtcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZUZsb2F0aW5nIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VGbG9hdGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlRmxvYXRpbmdDb25zdHJ1Y3RvcigpOiBXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZUZsb2F0aW5nIGFzIFdvcmtzcGFjZUZsb2F0aW5nQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlSXRlbVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VJdGVtPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VJdGVtIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUl0ZW0+O1xufVxuIiwgImltcG9ydCB7XG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTGVhZj47XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IoKTogV29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZUxlYWYgYXMgV29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFdvcmtzcGFjZU1vYmlsZURyYXdlclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlTW9iaWxlRHJhd2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VNb2JpbGVEcmF3ZXIgY29uc3RydWN0b3IuXG4gKiBAcmVtYXJrIENvbnN0cnVjdG9yIGlzIGBudWxsYC4gU2VlIHtAbGluayBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYXBpLWJ1Zy10YXNrcy1jbGFzcy85ODk5M30uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZU1vYmlsZURyYXdlckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VNb2JpbGVEcmF3ZXI+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZU1vYmlsZURyYXdlciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTW9iaWxlRHJhd2VyPjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VQYXJlbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZVBhcmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlUGFyZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUGFyZW50PiB7XG4gIHJldHVybiBXb3Jrc3BhY2VQYXJlbnQgYXMgdW5rbm93biBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUGFyZW50Pjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VSaWJib25cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VSaWJib25Db25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VSaWJib24+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlUmliYm9uIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VSaWJib24gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZVJpYmJvbiBhcyBXb3Jrc3BhY2VSaWJib25Db25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VSb290XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlUm9vdENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVJvb3Q+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlUm9vdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlUm9vdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVJvb3RDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBXb3Jrc3BhY2VSb290IGFzIFdvcmtzcGFjZVJvb3RDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VTaWRlZG9ja1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFdvcmtzcGFjZVNpZGVkb2NrQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlU2lkZWRvY2s+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlU2lkZWRvY2sgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVNpZGVkb2NrIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTaWRlZG9ja0NvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVNpZGVkb2NrQ29uc3RydWN0b3Ige1xuICByZXR1cm4gV29ya3NwYWNlU2lkZWRvY2sgYXMgV29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VTcGxpdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlU3BsaXQ+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlU3BsaXQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVNwbGl0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTcGxpdENvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3Ige1xuICByZXR1cm4gV29ya3NwYWNlU3BsaXQgYXMgV29ya3NwYWNlU3BsaXRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VUYWJzXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlVGFic0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVRhYnM+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGFic0NvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVRhYnNDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBXb3Jrc3BhY2VUYWJzIGFzIFdvcmtzcGFjZVRhYnNDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VXaW5kb3dcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VXaW5kb3c+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlV2luZG93IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VXaW5kb3cgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVdpbmRvd0NvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVdpbmRvd0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZVdpbmRvdyBhcyBXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQXBwTWVudUJhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvQXBwTWVudUJhck1hbmFnZXIuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEFwcE1lbnVCYXJNYW5hZ2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8QXBwTWVudUJhck1hbmFnZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgQXBwTWVudUJhck1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQXBwTWVudUJhck1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcE1lbnVCYXJNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5hcHBNZW51QmFyTWFuYWdlci5jb25zdHJ1Y3RvciBhcyBBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBBcHBTZXR0aW5nIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL0FwcFNldHRpbmcuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEFwcFNldHRpbmdDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBTZXR0aW5nPjtcblxuLyoqXG4gKiBHZXQgdGhlIEFwcFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQXBwU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ0NvbnN0cnVjdG9yKGFwcDogQXBwKTogQXBwU2V0dGluZ0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5zZXR0aW5nLmNvbnN0cnVjdG9yIGFzIEFwcFNldHRpbmdDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ2xpIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NsaS9DbGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIENsaUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPENsaT47XG5cbi8qKlxuICogR2V0IHRoZSBDbGkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ2xpIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGlDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IENsaUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5jbGkuY29uc3RydWN0b3IgYXMgQ2xpQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbW1hbmRzL0NvbW1hbmRzLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBDb21tYW5kc0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPENvbW1hbmRzPjtcblxuLyoqXG4gKiBHZXQgdGhlIENvbW1hbmRzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIENvbW1hbmRzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kc0NvbnN0cnVjdG9yKGFwcDogQXBwKTogQ29tbWFuZHNDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuY29tbWFuZHMuY29uc3RydWN0b3IgYXMgQ29tbWFuZHNDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbUNTUyB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jdXN0b20tY3NzL0N1c3RvbUNTUy5kLnRzJztcblxudHlwZSBDdXN0b21DU1NDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxDdXN0b21DU1M+O1xuXG4vKipcbiAqIEdldCB0aGUgQ3VzdG9tQ1NTIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEN1c3RvbUNTUyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VzdG9tQ1NTQ29uc3RydWN0b3IoYXBwOiBBcHApOiBDdXN0b21DU1NDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuY3VzdG9tQ3NzLmNvbnN0cnVjdG9yIGFzIEN1c3RvbUNTU0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRHJhZ01hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvZHJhZy1tYW5hZ2VyL0RyYWdNYW5hZ2VyLmQudHMnO1xuXG50eXBlIERyYWdNYW5hZ2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RHJhZ01hbmFnZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgRHJhZ01hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgRHJhZ01hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERyYWdNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBEcmFnTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5kcmFnTWFuYWdlci5jb25zdHJ1Y3RvciBhcyBEcmFnTWFuYWdlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRWRpdG9yU3VnZ2VzdHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRWRpdG9yU3VnZ2VzdHMuZC50cyc7XG5cbnR5cGUgRWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3JTdWdnZXN0cz47XG5cbi8qKlxuICogR2V0IHRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEVkaXRvclN1Z2dlc3RzQ29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LmNvbnN0cnVjdG9yIGFzIEVkaXRvclN1Z2dlc3RzQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBFbWJlZFJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2VtYmVkLXJlZ2lzdHJ5L0VtYmVkUmVnaXN0cnkuZC50cyc7XG5cbnR5cGUgRW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEVtYmVkUmVnaXN0cnk+O1xuXG4vKipcbiAqIEdldCB0aGUgRW1iZWRSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBFbWJlZFJlZ2lzdHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWJlZFJlZ2lzdHJ5Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFbWJlZFJlZ2lzdHJ5Q29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLmVtYmVkUmVnaXN0cnkuY29uc3RydWN0b3IgYXMgRW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRm9sZE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRm9sZE1hbmFnZXIuZC50cyc7XG5cbnR5cGUgRm9sZE1hbmFnZXJDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxGb2xkTWFuYWdlcj47XG5cbi8qKlxuICogR2V0IHRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZE1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEZvbGRNYW5hZ2VyQ29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLmZvbGRNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIEZvbGRNYW5hZ2VyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRnJhbWVEb20gfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRnJhbWVEb20uZC50cyc7XG5cbnR5cGUgRnJhbWVEb21Db25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxGcmFtZURvbT47XG5cbi8qKlxuICogR2V0IHRoZSBGcmFtZURvbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnJhbWVEb20gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYW1lRG9tQ29uc3RydWN0b3IoKTogRnJhbWVEb21Db25zdHJ1Y3RvciB7XG4gIHJldHVybiB3aW5kb3cuZnJhbWVEb20uY29uc3RydWN0b3IgYXMgRnJhbWVEb21Db25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEhvdGtleU1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvaG90a2V5LW1hbmFnZXIvSG90a2V5TWFuYWdlci5kLnRzJztcblxudHlwZSBIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SG90a2V5TWFuYWdlcj47XG5cbi8qKlxuICogR2V0IHRoZSBIb3RrZXlNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEhvdGtleU1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvdGtleU1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEhvdGtleU1hbmFnZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuaG90a2V5TWFuYWdlci5jb25zdHJ1Y3RvciBhcyBIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YVR5cGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL21ldGFkYXRhLXR5cGUtbWFuYWdlci9NZXRhZGF0YVR5cGVNYW5hZ2VyLmQudHMnO1xuXG50eXBlIE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZXRhZGF0YVR5cGVNYW5hZ2VyPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1ldGFkYXRhVHlwZU1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgTWV0YWRhdGFUeXBlTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YWRhdGFUeXBlTWFuYWdlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogTWV0YWRhdGFUeXBlTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YVR5cGVNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuRE9NIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL09ic2lkaWFuRE9NLmQudHMnO1xuXG50eXBlIE9ic2lkaWFuRE9NQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8T2JzaWRpYW5ET00+O1xuXG4vKipcbiAqIEdldCB0aGUgT2JzaWRpYW5ET00gY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgT2JzaWRpYW5ET00gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9ic2lkaWFuRE9NQ29uc3RydWN0b3IoYXBwOiBBcHApOiBPYnNpZGlhbkRPTUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5kb20uY29uc3RydWN0b3IgYXMgT2JzaWRpYW5ET01Db25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbnMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvcGx1Z2lucy9QbHVnaW5zLmQudHMnO1xuXG50eXBlIFBsdWdpbnNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxQbHVnaW5zPjtcblxuLyoqXG4gKiBHZXQgdGhlIFBsdWdpbnMgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luc0NvbnN0cnVjdG9yKGFwcDogQXBwKTogUGx1Z2luc0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5wbHVnaW5zLmNvbnN0cnVjdG9yIGFzIFBsdWdpbnNDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFJlY2VudEZpbGVUcmFja2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL1JlY2VudEZpbGVUcmFja2VyLmQudHMnO1xuXG50eXBlIFJlY2VudEZpbGVUcmFja2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8UmVjZW50RmlsZVRyYWNrZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgUmVjZW50RmlsZVRyYWNrZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgUmVjZW50RmlsZVRyYWNrZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY2VudEZpbGVUcmFja2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC53b3Jrc3BhY2UucmVjZW50RmlsZVRyYWNrZXIuY29uc3RydWN0b3IgYXMgUmVjZW50RmlsZVRyYWNrZXJDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJlUmVjZWl2ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvU2hhcmVSZWNlaXZlci5kLnRzJztcblxudHlwZSBTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2hhcmVSZWNlaXZlcj47XG5cbi8qKlxuICogR2V0IHRoZSBTaGFyZVJlY2VpdmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIFNoYXJlUmVjZWl2ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXJlUmVjZWl2ZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IFNoYXJlUmVjZWl2ZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuc2hhcmVSZWNlaXZlci5jb25zdHJ1Y3RvciBhcyBTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTdGF0dXNCYXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvU3RhdHVzQmFyLmQudHMnO1xuXG50eXBlIFN0YXR1c0JhckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFN0YXR1c0Jhcj47XG5cbi8qKlxuICogR2V0IHRoZSBTdGF0dXNCYXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgU3RhdHVzQmFyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNCYXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IFN0YXR1c0JhckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5zdGF0dXNCYXIuY29uc3RydWN0b3IgYXMgU3RhdHVzQmFyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWV3UmVnaXN0cnkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvdmlldy1yZWdpc3RyeS9WaWV3UmVnaXN0cnkuZC50cyc7XG5cbnR5cGUgVmlld1JlZ2lzdHJ5Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1JlZ2lzdHJ5PjtcblxuLyoqXG4gKiBHZXQgdGhlIFZpZXdSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBWaWV3UmVnaXN0cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdSZWdpc3RyeUNvbnN0cnVjdG9yKGFwcDogQXBwKTogVmlld1JlZ2lzdHJ5Q29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLnZpZXdSZWdpc3RyeS5jb25zdHJ1Y3RvciBhcyBWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZUxlYWZIaXN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL3dvcmtzcGFjZS1sZWFmLWhpc3RvcnkvV29ya3NwYWNlTGVhZkhpc3RvcnkuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VMZWFmSGlzdG9yeT47XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VMZWFmSGlzdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VMZWFmSGlzdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IFdvcmtzcGFjZUxlYWZIaXN0b3J5Q29uc3RydWN0b3Ige1xuICBjb25zdCBsZWFmID0gYXBwLndvcmtzcGFjZS5nZXRNb3N0UmVjZW50TGVhZigpO1xuICBpZiAoIWxlYWYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHdvcmtzcGFjZSBsZWFmIGF2YWlsYWJsZSB0byBleHRyYWN0IFdvcmtzcGFjZUxlYWZIaXN0b3J5IGNvbnN0cnVjdG9yJyk7XG4gIH1cbiAgcmV0dXJuIGxlYWYuaGlzdG9yeS5jb25zdHJ1Y3RvciBhcyBXb3Jrc3BhY2VMZWFmSGlzdG9yeUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW4gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9JbnRlcm5hbFBsdWdpbi5kLnRzJztcblxudHlwZSBJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yPEluc3RhbmNlPiA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbnRlcm5hbFBsdWdpbjxJbnN0YW5jZT4+O1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+KGFwcDogQXBwKTogSW50ZXJuYWxQbHVnaW5Db25zdHJ1Y3RvcjxJbnN0YW5jZT4ge1xuICBjb25zdCBhbnlQbHVnaW4gPSBPYmplY3QudmFsdWVzKGFwcC5pbnRlcm5hbFBsdWdpbnMucGx1Z2lucylbMF07XG4gIGlmICghYW55UGx1Z2luKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBpbnRlcm5hbCBwbHVnaW4gZm91bmQnKTtcbiAgfVxuICByZXR1cm4gYW55UGx1Z2luLmNvbnN0cnVjdG9yIGFzIEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW5zIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvSW50ZXJuYWxQbHVnaW5zLmQudHMnO1xuXG50eXBlIEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEludGVybmFsUGx1Z2lucz47XG5cbi8qKlxuICogR2V0IHRoZSBJbnRlcm5hbFBsdWdpbnMgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgSW50ZXJuYWxQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uc3RydWN0b3IgYXMgSW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWV3VHlwZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVUeXBlLmQuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFZpZXdUeXBlVmlld01hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVWaWV3TWFwcGluZy5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIHZpZXcgY29uc3RydWN0b3IgYnkgdmlldyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHBhcmFtIHZpZXdUeXBlIC0gVGhlIHZpZXcgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSB2aWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlPFRWaWV3VHlwZSBleHRlbmRzIFZpZXdUeXBlVHlwZT4oXG4gIGFwcDogQXBwLFxuICB2aWV3VHlwZTogVFZpZXdUeXBlXG4pOiBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1R5cGVWaWV3TWFwcGluZ1tUVmlld1R5cGVdPiB7XG4gIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmNyZWF0ZUxlYWZJblRhYkdyb3VwKCk7XG4gIHRyeSB7XG4gICAgY29uc3Qgdmlld0NyZWF0b3IgPSBhcHAudmlld1JlZ2lzdHJ5LmdldFZpZXdDcmVhdG9yQnlUeXBlKHZpZXdUeXBlKTtcbiAgICBpZiAoIXZpZXdDcmVhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY3JlYXRvciBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgdmlldyA9IHZpZXdDcmVhdG9yKGxlYWYpO1xuICAgIHJldHVybiB2aWV3LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWaWV3VHlwZVZpZXdNYXBwaW5nW1RWaWV3VHlwZV0+O1xuICB9IGZpbmFsbHkge1xuICAgIGxlYWYuZGV0YWNoKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEFsbFByb3BlcnRpZXNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvcHJvcGVydGllcy9BbGxQcm9wZXJ0aWVzVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQWxsUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgQWxsUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QWxsUHJvcGVydGllc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5BbGxQcm9wZXJ0aWVzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEF1ZGlvVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9BdWRpb1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEF1ZGlvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBBdWRpb1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF1ZGlvVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEF1ZGlvVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkF1ZGlvKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEJhY2tsaW5rVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2JhY2tsaW5rL0JhY2tsaW5rVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFja2xpbmtWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEJhY2tsaW5rVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFja2xpbmtWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQmFja2xpbmspO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgQmFzZXNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYmFzZXMvQmFzZXNWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgQmFzZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlc1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5CYXNlcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCb29rbWFya3NWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYm9va21hcmtzL0Jvb2ttYXJrc1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJvb2ttYXJrc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgQm9va21hcmtzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9va21hcmtzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEJvb2ttYXJrc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5Cb29rbWFya3MpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgQ2FudmFzVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2NhbnZhcy9DYW52YXNWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDYW52YXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIENhbnZhc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhbnZhc1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDYW52YXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQ2FudmFzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEVtcHR5VmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9FbXB0eVZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEVtcHR5VmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBFbXB0eVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVtcHR5Vmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEVtcHR5Vmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkVtcHR5KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeHBsb3JlclZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9maWxlLWV4cGxvcmVyL0ZpbGVFeHBsb3JlclZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVFeHBsb3JlclZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgRmlsZUV4cGxvcmVyVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUV4cGxvcmVyVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVFeHBsb3JlclZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5GaWxlRXhwbG9yZXIpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRmlsZVByb3BlcnRpZXNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvcHJvcGVydGllcy9GaWxlUHJvcGVydGllc1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVQcm9wZXJ0aWVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBGaWxlUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVQcm9wZXJ0aWVzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkZpbGVQcm9wZXJ0aWVzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBoVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dyYXBoL0dyYXBoVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgR3JhcGhWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEdyYXBoVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R3JhcGhWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8R3JhcGhWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuR3JhcGgpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXdzL0ltYWdlVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW1hZ2VWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEltYWdlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8SW1hZ2VWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuSW1hZ2UpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgTG9jYWxHcmFwaFZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9ncmFwaC9Mb2NhbEdyYXBoVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsR3JhcGhWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8TG9jYWxHcmFwaFZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5Mb2NhbEdyYXBoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IE91dGdvaW5nTGlua1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9vdXRnb2luZy1saW5rL091dGdvaW5nTGlua1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE91dGdvaW5nTGlua1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgT3V0Z29pbmdMaW5rVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPE91dGdvaW5nTGlua1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5PdXRnb2luZ0xpbmspO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgT3V0bGluZVZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9vdXRsaW5lL091dGxpbmVWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBPdXRsaW5lVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBPdXRsaW5lVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0bGluZVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxPdXRsaW5lVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLk91dGxpbmUpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgUGRmVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9QZGZWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBQZGZWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFBkZlZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBkZlZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxQZGZWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuUGRmKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFJlbGVhc2VOb3Rlc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvUmVsZWFzZU5vdGVzVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgUmVsZWFzZU5vdGVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBSZWxlYXNlTm90ZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxlYXNlTm90ZXNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8UmVsZWFzZU5vdGVzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlJlbGVhc2VOb3Rlcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTZWFyY2hWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ2xvYmFsLXNlYXJjaC9TZWFyY2hWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZWFyY2hWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFNlYXJjaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlYXJjaFZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWFyY2hWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuU2VhcmNoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFN5bmNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvc3luYy9TeW5jVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN5bmNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8U3luY1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5TeW5jKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFRhYmxlVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2Jhc2VzL1RhYmxlVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVGFibGVWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFRhYmxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8VGFibGVWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuVGFibGUpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVGFnVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9UYWdWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBUYWdWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFRhZ1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZ1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxUYWdWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuVGFnKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFZpZGVvVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9WaWRlb1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFZpZGVvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBWaWRlb1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZGVvVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFZpZGVvVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlZpZGVvKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFdlYnZpZXdlckhpc3RvcnlWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvd2Vidmlld2VyL1dlYnZpZXdlckhpc3RvcnlWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXZWJ2aWV3ZXJIaXN0b3J5VmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBXZWJ2aWV3ZXJIaXN0b3J5VmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXZWJ2aWV3ZXJIaXN0b3J5Vmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLldlYnZpZXdlckhpc3RvcnkpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgV2Vidmlld2VyVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3dlYnZpZXdlci9XZWJ2aWV3ZXJWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXZWJ2aWV3ZXJWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFdlYnZpZXdlclZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYnZpZXdlclZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXZWJ2aWV3ZXJWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuV2Vidmlld2VyKTtcbn1cbiIsICJpbXBvcnQge1xuICB0eXBlIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgZ2V0VEZpbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4uL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGaWxlQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL3V0aWxzL1BhdGhVdGlscy50cyc7XG5pbXBvcnQgeyBjcmVhdGVURm9sZGVySW5zdGFuY2UgfSBmcm9tICcuL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGaWxlIGV2ZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAqIFRoaXMgZG9lc24ndCBjcmVhdGUgdGhlIG1pc3NpbmcgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFRGaWxlIHtcbiAgbGV0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGZpbGUgPSBuZXcgKGdldFRGaWxlQ29uc3RydWN0b3IoKSkoYXBwLnZhdWx0LCBwYXRoKTtcbiAgZmlsZS5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgcmV0dXJuIGZpbGU7XG59XG4iLCAiLyoqXG4gKiBHZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZiBhIGdpdmVuIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZi5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgZm9sZGVyIHBhdGguXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcmVudEZvbGRlclBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwvP1teXFwvXSokLywgJycpIHx8ICcvJztcbn1cbiIsICJpbXBvcnQge1xuICB0eXBlIEFwcCxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBnZXRURm9sZGVyQ29uc3RydWN0b3IgfSBmcm9tICcuLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURm9sZGVyQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL3V0aWxzL1BhdGhVdGlscy50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGb2xkZXIgZXZlbiB0aGUgdW5kZXJseWluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuXG4gKiBUaGlzIGRvZXNuJ3QgY3JlYXRlIHRoZSBtaXNzaW5nIGZvbGRlciBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gIGxldCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKHBhdGgpO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuXG4gIGZvbGRlciA9IG5ldyAoZ2V0VEZvbGRlckNvbnN0cnVjdG9yKCkpKGFwcC52YXVsdCwgcGF0aCk7XG4gIGZvbGRlci5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgZm9sZGVyLmRlbGV0ZWQgPSB0cnVlO1xuICByZXR1cm4gZm9sZGVyO1xufVxuIiwgImltcG9ydCB0eXBlIHsgTWVybWFpZCB9IGZyb20gJ21lcm1haWQnIHdpdGggeyAncmVzb2x1dGlvbi1tb2RlJzogJ2ltcG9ydCcgfTtcbmltcG9ydCB7IGxvYWRNZXJtYWlkIGFzIGxvYWRNZXJtYWlkT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBNZXJtYWlkIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgbWVybWFpZCBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5tZXJtYWlkYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cubWVybWFpZGAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbWVybWFpZC5qcy5vcmcvIHwgT2ZmaWNpYWwgTWVybWFpZCBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTWVybWFpZCgpOiBQcm9taXNlPE1lcm1haWQ+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkTWVybWFpZE9yaWdpbmFsKCkpIGFzIE1lcm1haWQ7XG59XG4iLCAiaW1wb3J0IHsgbG9hZFBkZkpzIGFzIGxvYWRQZGZKc09yaWdpbmFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIHBkZmpzTGliIH0gZnJvbSAncGRmanMtZGlzdCc7XG5cbi8qKlxuICogTG9hZCBQREYuanMgYW5kIHJldHVybiBhIHByb21pc2UgdG8gdGhlIGdsb2JhbCBwZGZqc0xpYiBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5wZGZqc0xpYmAgYWZ0ZXIgdGhpcyBwcm9taXNlIHJlc29sdmVzIHRvIGdldCB0aGUgc2FtZSByZWZlcmVuY2UuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGdsb2JhbCBgd2luZG93LnBkZmpzTGliYCBvYmplY3QuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9tb3ppbGxhLmdpdGh1Yi5pby9wZGYuanMvIHwgT2ZmaWNpYWwgUERGLmpzIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQZGZKcygpOiBQcm9taXNlPHR5cGVvZiBwZGZqc0xpYj4ge1xuICByZXR1cm4gKGF3YWl0IGxvYWRQZGZKc09yaWdpbmFsKCkpIGFzIHR5cGVvZiBwZGZqc0xpYjtcbn1cbiIsICJpbXBvcnQgeyBsb2FkUHJpc20gYXMgbG9hZFByaXNtT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgUHJpc20gfSBmcm9tICdwcmlzbWpzJztcblxuLyoqXG4gKiBMb2FkIFByaXNtLmpzIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgUHJpc20gb2JqZWN0LlxuICogQ2FuIGFsc28gdXNlIGB3aW5kb3cuUHJpc21gIGFmdGVyIHRoaXMgcHJvbWlzZSByZXNvbHZlcyB0byBnZXQgdGhlIHNhbWUgcmVmZXJlbmNlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBnbG9iYWwgYHdpbmRvdy5QcmlzbWAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vcHJpc21qcy5jb20vIHwgT2ZmaWNpYWwgUHJpc20gZG9jdW1lbnRhdGlvbn0uXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFByaXNtKCk6IFByb21pc2U8dHlwZW9mIFByaXNtPiB7XG4gIHJldHVybiAoYXdhaXQgbG9hZFByaXNtT3JpZ2luYWwoKSkgYXMgdHlwZW9mIFByaXNtO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5jZSBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5jZSBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBSZWZlcmVuY2VDYWNoZSB7XG4gIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxSZWZlcmVuY2VDYWNoZT4pLnBvc2l0aW9uO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgRW1iZWRDYWNoZSxcbiAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYW4gZW1iZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYW4gZW1iZWQgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1iZWRDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBFbWJlZENhY2hlIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gPT09ICchJztcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckxpbmtDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxGcm9udG1hdHRlckxpbmtDYWNoZT4pLmtleTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIExpbmtDYWNoZSxcbiAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSBsaW5rIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgbGluayBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgTGlua0NhY2hlIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gIT09ICchJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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SUFBSTtBQUN2QyxNQUFJLE1BQU07QUFDUixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sS0FBSyxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sSUFBSTtBQUNsRCxPQUFLLFNBQVMsc0JBQXNCLEtBQUssaUJBQWlCLElBQUksQ0FBQztBQUMvRCxPQUFLLFVBQVU7QUFDZixTQUFPO0FBQ1Q7OztBR3hCQSxJQUFBQyxvQkFBbUQ7QUFZbkQsZUFBc0IsY0FBZ0M7QUFDcEQsU0FBUSxVQUFNLGtCQUFBQyxhQUFvQjtBQUNwQzs7O0FDZkEsSUFBQUMsb0JBQStDO0FBYS9DLGVBQXNCLFlBQXNDO0FBQzFELFNBQVEsVUFBTSxrQkFBQUMsV0FBa0I7QUFDbEM7OztBQ2ZBLElBQUFDLG9CQUErQztBQWEvQyxlQUFzQixZQUFtQztBQUN2RCxTQUFRLFVBQU0sa0JBQUFDLFdBQWtCO0FBQ2xDOzs7QUNETyxTQUFTLGlCQUFpQixXQUFtRDtBQUNsRixTQUFPLENBQUMsQ0FBRSxVQUFzQztBQUNsRDs7O0FDRE8sU0FBUyxhQUFhLFdBQStDO0FBQzFFLFNBQU8saUJBQWlCLFNBQVMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFNO0FBQ2xFOzs7QUNITyxTQUFTLHVCQUF1QixXQUF5RDtBQUM5RixTQUFPLENBQUMsQ0FBRSxVQUE0QztBQUN4RDs7O0FDRE8sU0FBUyxZQUFZLFdBQThDO0FBQ3hFLFNBQU8saUJBQWlCLFNBQVMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFNO0FBQ2xFOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkTWVybWFpZE9yaWdpbmFsIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkUGRmSnNPcmlnaW5hbCIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZFByaXNtT3JpZ2luYWwiXQp9Cg==
|