@eo-sdk/client 11.0.0-rc.1 → 11.0.0-rc.10
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/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts +2 -23
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +28 -5
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +31 -21
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +7 -0
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +2 -0
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts +1 -0
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +7 -0
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +9 -4
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +2 -2
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts +8 -4
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +6 -4
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts +18 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts +10 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -2
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts +24 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts +34 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts.map +1 -0
- package/app/eo-client/eo-client.module.d.ts +29 -24
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-client/login/login.component.d.ts +3 -1
- package/app/eo-client/login/login.component.d.ts.map +1 -1
- package/app/eo-client/process-state/process-state.component.d.ts +3 -5
- package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +2 -0
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +5 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/signature-action.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +3 -4
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +1 -0
- package/app/eo-framework/form-elements/string/string.component.d.ts.map +1 -1
- package/app/eo-framework/frame/frame.component.d.ts +2 -1
- package/app/eo-framework/frame/frame.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/codesystem-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -8
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +1 -1
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +15 -1
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +9 -3
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +2 -0
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +3 -2
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +2 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
- package/app/eo-framework/util/services/utilities.service.d.ts +195 -0
- package/app/eo-framework/util/services/utilities.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts +1 -5
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/plugins.service.d.ts +6 -0
- package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
- package/assets/_default/config/main.json +1 -1
- package/assets/_default/i18n/de.json +37 -5
- package/assets/_default/i18n/en.json +41 -9
- package/assets/_default/svg/ic_noImage.svg +1 -0
- package/assets/_default/svg/ic_photo_library.svg +1 -0
- package/assets/_default/svg/ic_task.svg +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +19 -69
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +183 -86
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +109 -34
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +21 -13
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +7 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +73 -59
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +7 -8
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +16 -10
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +3 -4
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +15 -9
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +16 -10
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +26 -10
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +35 -35
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +54 -0
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +24 -0
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +4 -7
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +74 -0
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +103 -0
- package/esm2022/app/eo-client/eo-client.module.mjs +22 -6
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +4 -4
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +25 -11
- package/esm2022/app/eo-client/login/login.component.mjs +14 -11
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +5 -5
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +3 -3
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +6 -6
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +12 -17
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +6 -6
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +1 -1
- package/esm2022/app/eo-client/settings/settings.component.mjs +9 -3
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +4 -5
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +23 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +2 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +12 -4
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +25 -22
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +8 -5
- package/esm2022/app/eo-framework/frame/frame.component.mjs +3 -2
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +7 -2
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +1 -14
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +6 -33
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -19
- package/esm2022/app/eo-framework/grid/filters/filesize-filter.component.mjs +2 -2
- package/esm2022/app/eo-framework/grid/grid.component.mjs +11 -12
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +4 -2
- package/esm2022/app/eo-framework/media/media.component.mjs +68 -19
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +53 -15
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +18 -27
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +2 -2
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +11 -7
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +6 -1
- package/esm2022/app/eo-framework/process/history/process-history.component.mjs +2 -2
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +1 -1
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +20 -6
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +13 -9
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +6 -3
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +4 -1
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +20 -27
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +44 -2
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +2 -2
- package/fesm2022/eo-sdk-client.mjs +1323 -767
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/misc/scripts/exclude-core-ng-package.js +11 -0
- package/misc/scripts/prebuild-about-state.js +2 -3
- package/package.json +6 -6
- package/proxy.config.json +15 -0
|
@@ -64,6 +64,9 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
64
64
|
const isDifferent = this.item?.id !== v?.id;
|
|
65
65
|
this.item = v;
|
|
66
66
|
this.onHasError();
|
|
67
|
+
if (this.item?.id) {
|
|
68
|
+
this.fetchAtiveProcessData(this.item?.id);
|
|
69
|
+
}
|
|
67
70
|
// prepare indexdata preview
|
|
68
71
|
this.onIndexDataSaved(null, this.item);
|
|
69
72
|
this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
|
|
@@ -101,7 +104,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
101
104
|
return this.item ? this.item.typeName : 'none';
|
|
102
105
|
}
|
|
103
106
|
// undockWinActive = false;
|
|
104
|
-
constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, translate) {
|
|
107
|
+
constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, bpmService, translate) {
|
|
105
108
|
this.router = router;
|
|
106
109
|
this.route = route;
|
|
107
110
|
this.system = system;
|
|
@@ -115,19 +118,23 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
115
118
|
this.uploadRegistry = uploadRegistry;
|
|
116
119
|
this.eventService = eventService;
|
|
117
120
|
this.configService = configService;
|
|
121
|
+
this.bpmService = bpmService;
|
|
118
122
|
this.translate = translate;
|
|
119
123
|
// generate unique id to pass to upload registry
|
|
120
124
|
this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
|
|
121
125
|
this.hasError = false;
|
|
122
126
|
this.nodmsobject = false;
|
|
123
127
|
this.showLoader = false;
|
|
128
|
+
this.processTooltip = '';
|
|
124
129
|
this.panelOrder = { 'master': ['summary', 'indexdata', 'history', 'links', 'signature'], 'slave': ['preview'] };
|
|
125
130
|
this.agentIsConnected$ = this.agentService.isConnected$;
|
|
126
131
|
this.split = false;
|
|
127
132
|
this.enableCompare = false;
|
|
128
133
|
this.recyclebinTabs = false;
|
|
134
|
+
this.versionComponentTabs = false;
|
|
129
135
|
this.enableDiff = true;
|
|
130
136
|
this.enableSync = true;
|
|
137
|
+
this.tabs = [];
|
|
131
138
|
this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
|
|
132
139
|
this.preventClickThrough = false;
|
|
133
140
|
// shortcut actions
|
|
@@ -292,6 +299,24 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
292
299
|
});
|
|
293
300
|
}
|
|
294
301
|
}
|
|
302
|
+
fetchAtiveProcessData(objectId) {
|
|
303
|
+
this.bpmService.getProcessData(objectId).subscribe((res) => {
|
|
304
|
+
let content = {
|
|
305
|
+
modelname: res.map(item => item.modelname),
|
|
306
|
+
starttime: res.map(item => new LocaleDatePipe(this.translate).transform(item.starttime, '')),
|
|
307
|
+
endtime: res.map(item => new LocaleDatePipe(this.translate).transform(item.endtime, ''))
|
|
308
|
+
};
|
|
309
|
+
this.processTooltip = '\n';
|
|
310
|
+
for (let i = 0; i < content.modelname.length; i++) {
|
|
311
|
+
if (content.endtime[i]) {
|
|
312
|
+
this.processTooltip += content.modelname[i] + ' | ' + content.starttime[i] + ' - ' + content.endtime[i] + '\n';
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
this.processTooltip += content.modelname[i] + ' | ' + content.starttime[i] + '\n';
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
295
320
|
onCompareTabChange(event) {
|
|
296
321
|
if (this.enableSync) {
|
|
297
322
|
this.tabContainers.forEach(t => {
|
|
@@ -332,18 +357,29 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
332
357
|
const _primary = this.panelOrder.master || [];
|
|
333
358
|
const _secondary = this.panelOrder.slave || [];
|
|
334
359
|
const plugins = this.plugins?.map(p => p.id) || [];
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
360
|
+
this.tabs = [..._primary, ..._secondary, ...plugins].filter(t => !block.includes(t));
|
|
361
|
+
if (this.versionComponentTabs) {
|
|
362
|
+
this.tabs = this.tabs.filter(tab => ["summary", "indexdata", "preview"].includes(tab));
|
|
363
|
+
}
|
|
364
|
+
const diff = this.tabs.filter(t => !primary?.includes(t) && !secondary?.includes(t));
|
|
365
|
+
const _pTabs = [..._primary, ...plugins.filter(p => !_primary.includes(p))];
|
|
366
|
+
const pTabs = primary ? [...primary, ...diff] : _pTabs;
|
|
338
367
|
const sTabs = secondary || _secondary;
|
|
339
|
-
const
|
|
368
|
+
const p = pTabs.filter(t => this.tabs.includes(t));
|
|
369
|
+
const s = sTabs.filter(t => this.tabs.includes(t));
|
|
340
370
|
// reset primary tabs order if no secondary tabs are available
|
|
341
|
-
|
|
342
|
-
const p = sTabs.length ? pTabs.filter(t => tabs.includes(t)) : tabs;
|
|
371
|
+
!s.length && p.sort((a, b) => this.tabs.indexOf(a) - this.tabs.indexOf(b));
|
|
343
372
|
this.splitTabConfig = {
|
|
344
373
|
primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
|
|
345
|
-
secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' }
|
|
374
|
+
secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
|
|
375
|
+
split: cachedOrder?.split
|
|
346
376
|
};
|
|
377
|
+
// force save of layout settings to include plugin tabs
|
|
378
|
+
this.onLayoutSettingsChanged(this.splitTabConfig);
|
|
379
|
+
}
|
|
380
|
+
// custom event handler for layout settings to make sure plugin tabs are saved
|
|
381
|
+
onLayoutSettingsChanged(event) {
|
|
382
|
+
this.cacheLayout && localStorage.setItem(this.cacheLayout, JSON.stringify(event));
|
|
347
383
|
}
|
|
348
384
|
ngOnInit() {
|
|
349
385
|
this.capabilities = this.capabilityService.getCapabilities();
|
|
@@ -352,7 +388,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
352
388
|
this.eventService
|
|
353
389
|
.on(EnaioEvent.DMS_OBJECT_UPDATED)
|
|
354
390
|
.pipe(untilDestroyed(this))
|
|
355
|
-
.subscribe(event => {
|
|
391
|
+
.subscribe((event) => {
|
|
356
392
|
if (event.data && this.item && this.item.id === event.data.id) {
|
|
357
393
|
this.dmsObject = this.dmsService.createLocalCopyOfDMSObject(event.data);
|
|
358
394
|
if (this.preview) {
|
|
@@ -363,7 +399,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
363
399
|
this.eventService
|
|
364
400
|
.on(EnaioEvent.INBOX_ITEM_CONFIRMED)
|
|
365
401
|
.pipe(untilDestroyed(this))
|
|
366
|
-
.subscribe(event => {
|
|
402
|
+
.subscribe((event) => {
|
|
367
403
|
if (this.item && this.item.id === event.data.target.id) {
|
|
368
404
|
this.dmsParams = null;
|
|
369
405
|
}
|
|
@@ -374,8 +410,8 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
374
410
|
ngOnDestroy() {
|
|
375
411
|
this.uploadRegistry.unregister(this.uploadTarget.id);
|
|
376
412
|
}
|
|
377
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.SystemService }, { token: i3.EmptyStateService }, { token: i4.AgentService }, { token: i2.BackendService }, { token: i2.DmsService }, { token: i5.SelectionService }, { token: i6.ActionService }, { token: i2.CapabilitiesService }, { token: i2.UploadRegistryService }, { token: i2.EventService }, { token: i2.Config }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
378
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { plugins: "plugins", reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "eoSplitTabs", first: true, predicate: SplitTabsComponent, descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess'\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data.yuvsigstatus === 'canceled'\n || item.data.yuvsigstatus === 'revised' || item.data.yuvsigstatus === 'error' || item.data.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i18.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i21.PluginComponent, selector: "eo-plugin", inputs: ["type", "id", "parent"] }, { kind: "component", type: i22.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i23.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i24.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i25.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i26.LocaleDatePipe, name: "localeDate" }] }); }
|
|
413
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.SystemService }, { token: i3.EmptyStateService }, { token: i4.AgentService }, { token: i2.BackendService }, { token: i2.DmsService }, { token: i5.SelectionService }, { token: i6.ActionService }, { token: i2.CapabilitiesService }, { token: i2.UploadRegistryService }, { token: i2.EventService }, { token: i2.Config }, { token: i2.BpmService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
414
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { plugins: "plugins", reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", versionComponentTabs: "versionComponentTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "eoSplitTabs", first: true, predicate: SplitTabsComponent, descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess'\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data.yuvsigstatus === 'canceled'\n || item.data.yuvsigstatus === 'revised' || item.data.yuvsigstatus === 'error' || item.data.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "isChangesTab", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i18.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i21.PluginComponent, selector: "eo-plugin", inputs: ["type", "id", "parent"] }, { kind: "component", type: i22.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i23.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i24.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i25.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i26.LocaleDatePipe, name: "localeDate" }] }); }
|
|
379
415
|
};
|
|
380
416
|
ObjectDetailsComponent = __decorate([
|
|
381
417
|
UntilDestroy()
|
|
@@ -383,8 +419,8 @@ ObjectDetailsComponent = __decorate([
|
|
|
383
419
|
export { ObjectDetailsComponent };
|
|
384
420
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
|
|
385
421
|
type: Component,
|
|
386
|
-
args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess'\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data.yuvsigstatus === 'canceled'\n || item.data.yuvsigstatus === 'revised' || item.data.yuvsigstatus === 'error' || item.data.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
|
|
387
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SystemService }, { type: i3.EmptyStateService }, { type: i4.AgentService }, { type: i2.BackendService }, { type: i2.DmsService }, { type: i5.SelectionService }, { type: i6.ActionService }, { type: i2.CapabilitiesService }, { type: i2.UploadRegistryService }, { type: i2.EventService }, { type: i2.Config }, { type: i2.TranslateService }], propDecorators: { preview: [{
|
|
422
|
+
args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess'\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data.yuvsigstatus === 'canceled'\n || item.data.yuvsigstatus === 'revised' || item.data.yuvsigstatus === 'error' || item.data.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
|
|
423
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SystemService }, { type: i3.EmptyStateService }, { type: i4.AgentService }, { type: i2.BackendService }, { type: i2.DmsService }, { type: i5.SelectionService }, { type: i6.ActionService }, { type: i2.CapabilitiesService }, { type: i2.UploadRegistryService }, { type: i2.EventService }, { type: i2.Config }, { type: i2.BpmService }, { type: i2.TranslateService }], propDecorators: { preview: [{
|
|
388
424
|
type: ViewChild,
|
|
389
425
|
args: ['viewer']
|
|
390
426
|
}], eoSplitTabs: [{
|
|
@@ -406,6 +442,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
406
442
|
type: Input
|
|
407
443
|
}], recyclebinTabs: [{
|
|
408
444
|
type: Input
|
|
445
|
+
}], versionComponentTabs: [{
|
|
446
|
+
type: Input
|
|
409
447
|
}], enableDiff: [{
|
|
410
448
|
type: Input
|
|
411
449
|
}], enableSync: [{
|
|
@@ -436,4 +474,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
436
474
|
type: HostBinding,
|
|
437
475
|
args: ['attr.data-type']
|
|
438
476
|
}] } });
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQVNMLFVBQVUsRUFFVixnQkFBZ0IsRUFJaEIsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUduRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFHOUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQTBCLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTbkYsSUFBTSxzQkFBc0IsR0FBNUIsTUFBTSxzQkFBc0I7SUEwQmpDLElBQWEsU0FBUyxDQUFDLEtBQWM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQVlELElBQ0ksVUFBVSxDQUFDLENBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLFNBQVMsQ0FBQyxNQUFpQjtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQWMsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUMsRUFDQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQ0ksVUFBVSxDQUFDLE1BQWlCO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEdBQWMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQ0ksU0FBUyxDQUFDLENBQVk7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNwRSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQztnQkFDeEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQztnQkFDeEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHO3NCQUM3RCxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7c0JBQ2pFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsQ0FBWTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBd0NELElBQW1DLFFBQVE7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFFRCwyQkFBMkI7SUFFM0IsWUFBb0IsTUFBYyxFQUN4QixLQUFxQixFQUNyQixNQUFxQixFQUNyQixLQUF3QixFQUN4QixZQUEwQixFQUMxQixPQUF1QixFQUN2QixVQUFzQixFQUN0QixTQUEyQixFQUMzQixhQUE0QixFQUM1QixpQkFBc0MsRUFDdEMsY0FBcUMsRUFDckMsWUFBMEIsRUFDMUIsYUFBcUIsRUFDckIsU0FBMkI7UUFiakIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQUN0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUEvSnJDLGdEQUFnRDtRQUN4QyxpQkFBWSxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFJM0UsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVBQVUsR0FBRyxFQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDO1FBRXpHLHNCQUFpQixHQUF3QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUV4RSxVQUFLLEdBQVksS0FBSyxDQUFDO1FBUWQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBS25CLGdCQUFXLEdBQWUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFDLENBQUM7UUF5RXBGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1QixtQkFBbUI7UUFDbkIsY0FBUyxHQUE0QjtZQUNuQyxFQUFFLEVBQUUsbUJBQW1CO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQztZQUNyRSxRQUFRLEVBQUUsc0NBQXNDO1lBQ2hELE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUM7b0JBQ2hFLE9BQU8sRUFBRSxrQ0FBa0M7b0JBQzNDLFFBQVEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztvQkFDekMsZUFBZSxFQUFFLEdBQUcsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNwRCxDQUFDO29CQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ2IsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxpQ0FBaUM7b0JBQzFDLFFBQVEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztvQkFDekMsZUFBZSxFQUFFLEdBQUcsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNyQixDQUFDO29CQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ2IsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUdPLG1CQUFjLEdBQWlCLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDaEQsZUFBVSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBdUJ4RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUVwRixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFrQixFQUFFLEVBQUU7WUFDakgsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBQyxXQUFXLEVBQUUsRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztZQUM5RixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVM7UUFDNUIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkUsQ0FBQztJQUVPLGFBQWE7UUFFbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTO3FCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztxQkFDNUIsVUFBVTtxQkFDVixJQUFJLENBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLENBQ2xCO3FCQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFO29CQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUM7b0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsT0FBTztZQUNULENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsU0FBUztxQkFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7cUJBQzVCLE1BQU07cUJBQ04sSUFBSSxDQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FDckI7cUJBQ0EsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFjLEVBQUUsRUFBRTt3QkFDckYsMkVBQTJFO3dCQUMzRSxzRkFBc0Y7d0JBQ3RGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNoRSxDQUFDO3dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO3dCQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDMUIsQ0FBQyxFQUNDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVDLENBQUMsQ0FBQyxDQUNILENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFFUCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNuQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsSUFBZSxFQUFFLFFBQWM7UUFDN0QsTUFBTSxFQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBRXJHLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQzthQUNwQyxJQUFJLENBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1QsSUFBSSxnQkFBZ0IsR0FBRztnQkFDckIsSUFBSTtnQkFDSixJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUk7YUFDdkIsQ0FBQztZQUNGLElBQUksVUFBVSxHQUFlO2dCQUMzQixFQUFFO2dCQUNGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHO2dCQUNyRCxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRztnQkFDeEQsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN6RCxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ2pFLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQztnQkFDckIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDbkYsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDN0UsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNoRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ2xGLENBQUM7WUFDRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFTyxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUNELHFCQUFxQjtRQUNyQixPQUFPLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQU07UUFDbkIsTUFBTSxXQUFXLEdBQXFCLEVBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxFQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztpQkFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7b0JBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDcEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7b0JBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQzVCLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3JCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkYsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFJO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLGtCQUFrQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLDZCQUE2QixDQUFDLElBQWU7UUFDbkQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RSxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUNuTixNQUFNLDJCQUEyQixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4TixNQUFNLDhCQUE4QixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzTixJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDckYsQ0FBQzthQUNJLElBQUksMkJBQTJCLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUMvRSxDQUFDO2FBQ0ksSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25GLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRW5ELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQUcsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUV0QyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLDhEQUE4RDtRQUM5RCxpREFBaUQ7UUFDakQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBFLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQztZQUNqSCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFDO1NBQ3hILENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsWUFBWTthQUNkLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUM7YUFDakMsSUFBSSxDQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FDckI7YUFDQSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsWUFBWTthQUNkLEVBQUUsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7YUFDbkMsSUFBSSxDQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FDckI7YUFDQSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQWxhVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyb0JBRnRCLENBQUMscUJBQXFCLENBQUMsMkpBS3ZCLGtCQUFrQixtRUFDZixJQUFJLGdEQzdEcEIsaTNUQStLQTs7QUR0SGEsc0JBQXNCO0lBUGxDLFlBQVksRUFBRTtHQU9GLHNCQUFzQixDQW1hbEM7OzJGQW5hWSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUMscUJBQXFCLENBQUM7cWNBSWIsT0FBTztzQkFBM0IsU0FBUzt1QkFBQyxRQUFRO2dCQUNZLFdBQVc7c0JBQXpDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNULGFBQWE7c0JBQWhDLFlBQVk7dUJBQUMsSUFBSTtnQkFFVCxPQUFPO3NCQUFmLEtBQUs7Z0JBa0IwQixXQUFXO3NCQUExQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFFakIsU0FBUztzQkFBckIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFPRixVQUFVO3NCQURiLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBWVgsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBU1osU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBb0NULFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQXlDTCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFNEIsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIEJhc2VQYXJhbXMsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc1BhcmFtcyxcbiAgRG1zU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25Nb2RlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gIFVwbG9hZFRhcmdldCxcbiAgVXRpbHMsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcbmltcG9ydCB7U2VsZWN0aW9uQ29uZmlnLCBTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtBY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbi1zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Q29udGVudFByZXZpZXdTZXJ2aWNlfSBmcm9tICcuLi9tZWRpYS9jb250ZW50LXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQge01lZGlhQ29tcG9uZW50fSBmcm9tICcuLi9tZWRpYS9tZWRpYS5jb21wb25lbnQnO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7U2hvcnRjdXR9IGZyb20gJy4uL3Nob3J0Y3V0cy9zaG9ydGN1dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtJbmRleERhdGF9IGZyb20gJy4uL3VpL2luZGV4ZGF0YS1zdW1tYXJ5L2luZGV4ZGF0YS1zdW1tYXJ5LmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYnN9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7U3BsaXRUYWJzQ29tcG9uZW50LCBTcGxpdFRhYnNMYXlvdXRTZXR0aW5nc30gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL3NwbGl0LXRhYnMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3REZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdlcicpIHByZXZpZXc6IE1lZGlhQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFNwbGl0VGFic0NvbXBvbmVudCkgZW9TcGxpdFRhYnM6IFNwbGl0VGFic0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZHJlbihUYWJzKSB0YWJDb250YWluZXJzOiBRdWVyeUxpc3Q8VGFicz47XG5cbiAgQElucHV0KCkgcGx1Z2luczogYW55W107XG5cbiAgLy8gZ2VuZXJhdGUgdW5pcXVlIGlkIHRvIHBhc3MgdG8gdXBsb2FkIHJlZ2lzdHJ5XG4gIHByaXZhdGUgdXBsb2FkVGFyZ2V0ID0gbmV3IFVwbG9hZFRhcmdldChVdGlscy51dWlkKCksIFVwbG9hZFRhcmdldC5PQkpFQ1QpO1xuICBpdGVtOiBEbXNPYmplY3Q7XG4gIGluZGV4RGF0YVByZXZpZXc6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczogQmFzZVBhcmFtcztcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgbG9ja1Rvb2x0aXA6IHN0cmluZztcbiAgbm9kbXNvYmplY3QgPSBmYWxzZTtcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuXG4gIHBhbmVsT3JkZXIgPSB7J21hc3Rlcic6IFsnc3VtbWFyeScsICdpbmRleGRhdGEnLCAnaGlzdG9yeScsICdsaW5rcycsICdzaWduYXR1cmUnXSwgJ3NsYXZlJzogWydwcmV2aWV3J119O1xuXG4gIGFnZW50SXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkO1xuICBzdWJzY3JpcHRpb25JY29uVG9vbHRpcDogc3RyaW5nO1xuICBzcGxpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBzcGxpdFRhYkNvbmZpZzogU3BsaXRUYWJzTGF5b3V0U2V0dGluZ3M7XG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVmZXJlbmNlJykgaXNSZWZlcmVuY2U6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2V0IHJlZmVyZW5jZShpc1JlZjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNSZWZlcmVuY2UgPSBpc1JlZjtcbiAgfVxuICBASW5wdXQoKSBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVuYWJsZUNvbXBhcmUgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVjeWNsZWJpblRhYnMgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlRGlmZiA9IHRydWU7XG4gIEBJbnB1dCgpIGVuYWJsZVN5bmMgPSB0cnVlO1xuICBASW5wdXQoKSBjYWNoZUxheW91dDogYW55O1xuICBpdGVtMjogRG1zT2JqZWN0O1xuICBpbmRleERhdGFQcmV2aWV3MjogSW5kZXhEYXRhO1xuICBiYXNlcGFyYW1zMjogQmFzZVBhcmFtcztcbiAgcHJpdmF0ZSBfZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG5cbiAgQElucHV0KClcbiAgc2V0IGVtcHR5U3RhdGUoZTogRW1wdHlTdGF0ZSkge1xuICAgIHRoaXMuX2VtcHR5U3RhdGUgPSBlIHx8IEVtcHR5U3RhdGVTZXJ2aWNlLmRlZmF1bHRFbXB0eVN0YXRlKCk7XG4gIH1cblxuICBnZXQgZW1wdHlTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW1wdHlTdGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zJylcbiAgc2V0IGRtc1BhcmFtcyhwYXJhbXM6IERtc1BhcmFtcykge1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXM7XG4gICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICB9LFxuICAgICAgVXRpbHMudGhyb3coKCkgPT4gdGhpcy5vbkhhc0Vycm9yKHRydWUsIHRydWUsIGZhbHNlKSlcbiAgICApO1xuICB9XG5cbiAgQElucHV0KCdwYXJhbXMyJylcbiAgc2V0IGRtc1BhcmFtczIocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICB0aGlzLmxvYWREbXNPYmplY3QocGFyYW1zKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5kbXNPYmplY3QyID0gcmVzO1xuICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4gdGhpcy5vbkhhc0Vycm9yKHRydWUsIHRydWUsIGZhbHNlKSkpO1xuICB9XG5cbiAgQElucHV0KCdpdGVtJylcbiAgc2V0IGRtc09iamVjdCh2OiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCBpc0RpZmZlcmVudCA9IHRoaXMuaXRlbT8uaWQgIT09IHY/LmlkO1xuICAgIHRoaXMuaXRlbSA9IHY7XG4gICAgdGhpcy5vbkhhc0Vycm9yKCk7XG4gICAgLy8gcHJlcGFyZSBpbmRleGRhdGEgcHJldmlld1xuICAgIHRoaXMub25JbmRleERhdGFTYXZlZChudWxsLCB0aGlzLml0ZW0pO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX0xPQURFRCwgdGhpcy5pdGVtKTtcblxuICAgIGlmICh0aGlzLml0ZW0pIHtcbiAgICAgIGlmIChpc0RpZmZlcmVudCAmJiB0aGlzLml0ZW0uaXNBY3RpdmVWZXJzaW9uICYmICF0aGlzLmVuYWJsZUNvbXBhcmUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRUYXJnZXQucmVmZXJlbmNlT2JqZWN0ID0gdGhpcy5pdGVtO1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5vblVwbG9hZFN1Y2Nlc3MgPSAoKSA9PiB0aGlzLmRtc1BhcmFtcyA9IHtpZDogdi5pZCwgdHlwZTogdi50eXBlTmFtZX07XG4gICAgICAgIHRoaXMudXBsb2FkUmVnaXN0cnkucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS51bnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0LmlkKTtcbiAgICAgICAgdGhpcy51cGxvYWRUYXJnZXQucmVmZXJlbmNlT2JqZWN0ID0gdGhpcy5pdGVtO1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5vblVwbG9hZFN1Y2Nlc3MgPSAoKSA9PiB0aGlzLmRtc1BhcmFtcyA9IHtpZDogdi5pZCwgdHlwZTogdi50eXBlTmFtZX07XG4gICAgICAgIHRoaXMudXBsb2FkUmVnaXN0cnkucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pdGVtLmxvY2spIHtcbiAgICAgICAgdGhpcy5sb2NrVG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5sb2NrJykgKyAnICdcbiAgICAgICAgICArIChuZXcgTG9jYWxlRGF0ZVBpcGUodGhpcy50cmFuc2xhdGUpLnRyYW5zZm9ybSh0aGlzLml0ZW0ubG9jay5vbikpXG4gICAgICAgICAgKyAnLCAnICsgdGhpcy5pdGVtLmxvY2suYnkubGFiZWwgKyAnICgnICsgdGhpcy5pdGVtLmxvY2suYnkubmFtZSArICcpJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbXB0eVN0YXRlID0gdGhpcy5lbXB0eS5nZXRFbXB0eVN0YXRlKDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLml0ZW0/LnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbkljb25Ub29sdGlwID0gdGhpcy5jcmVhdGVTdWJzY3JpcHRpb25JY29uVG9vbHRpcCh0aGlzLml0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnaXRlbTInKVxuICBzZXQgZG1zT2JqZWN0Mih2OiBEbXNPYmplY3QpIHtcbiAgICB0aGlzLml0ZW0yID0gdjtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtMik7XG4gIH1cblxuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgcHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuXG4gIC8vIHNob3J0Y3V0IGFjdGlvbnNcbiAgc2hvcnRjdXRzOiBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCA9IHtcbiAgICBpZDogJ2VvLm9iamVjdC1kZXRhaWxzJyxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyksXG4gICAgbGFiZWxLZXk6ICdlby5zaG9ydGN1dHMuZW8tb2JqZWN0LWRldGFpbHMudGl0bGUnLFxuICAgIGFjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmFjdGlvbi5vcGVuLmNvbnRleHQnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5hY3Rpb24ub3Blbi5jb250ZXh0JyxcbiAgICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnTycsIGZhbHNlLCBmYWxzZSksXG4gICAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk9iamVjdCh0aGlzLml0ZW0uaWQsIHRoaXMuaXRlbS50eXBlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyksXG4gICAgICAgIG5hbWVLZXk6ICdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyxcbiAgICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnQScsIGZhbHNlLCBmYWxzZSksXG4gICAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0FjdGlvbnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcbiAgQElucHV0KCkgcGFyc2VEbXNQYXJhbXM6IChkYXRhKSA9PiB7fSA9IHRoaXMuZ2V0RG1zUGFyYW1zO1xuICBAT3V0cHV0KCkgaGFzQ29udGVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlTmFtZSA6ICdub25lJztcbiAgfVxuXG4gIC8vIHVuZG9ja1dpbkFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbXB0eTogRW1wdHlTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXR5U2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIHVwbG9hZFJlZ2lzdHJ5OiBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZyxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuXG4gICAgdGhpcy5wYW5lbE9yZGVyID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldFJhdygnb2JqZWN0RGV0YWlsc1RhYnMnKSB8fCB0aGlzLnBhbmVsT3JkZXI7XG5cbiAgICB0aGlzLmFnZW50U2VydmljZS5zZXRBZ2VudFN0YXR1cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb25uZWN0YWdlbnQnXSkuc3Vic2NyaWJlKChoYXNTdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtxdWVyeVBhcmFtczoge2Nvbm5lY3RhZ2VudDogbnVsbH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG1zUGFyYW1zKGRhdGE6IGFueSk6IERtc1BhcmFtcyB7XG4gICAgcmV0dXJuIGRhdGEgPyB7Li4uZGF0YSwgdHlwZTogZGF0YS50eXBlTmFtZSB8fCBkYXRhLnR5cGV9IDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29udGVudCgpIHtcblxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5lbmFibGVDb21wYXJlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgICAuc2VsZWN0aW9uJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICAgICAgICB0aHJvdHRsZVRpbWUoNTAwKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRtc1BhcmFtcyA9IHRoaXMucGFyc2VEbXNQYXJhbXMocmVzWzBdKSBhcyBEbXNQYXJhbXM7XG4gICAgICAgICAgICB0aGlzLmRtc1BhcmFtczIgPSB0aGlzLnBhcnNlRG1zUGFyYW1zKHJlc1sxXSkgYXMgRG1zUGFyYW1zO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pXG4gICAgICAgICAgLmZvY3VzJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZERtc09iamVjdCh0aGlzLnBhcnNlRG1zUGFyYW1zKHJlcykgYXMgRG1zUGFyYW1zKS5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIHJlZnJlc2hpbmcgb2JqZWN0IGRldGFpbHMgbWF5IHJlc3VsdCBpbiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIG9iamVjdFxuICAgICAgICAgICAgICAvLyBzbyB3ZSdsbCB1c2UgdGhpcyB0cmlnZ2VyIHRvIGFsc28gZW1pdHQgdGhvc2UgY2hhbmdlcyB0byBvdGhlciBsaXN0ZW5pbmcgY29tcG9uZW50c1xuICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtICYmIHJlcyAmJiAodGhpcy5pdGVtLmlkID09PSByZXMuaWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRCwgcmVzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHJlcztcbiAgICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBVdGlscy50aHJvdygoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnVucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQuaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uSGFzRXJyb3IodHJ1ZSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hDb250ZW50KCkge1xuICAgIGlmICghdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoKSB7XG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSB0cnVlO1xuICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gZmFsc2U7XG4gICAgfSwgNTAwMCk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVJbmRleERhdGFQcmV2aWV3KGl0ZW06IERtc09iamVjdCwgZm9ybURhdGE/OiBhbnkpIHtcbiAgICBjb25zdCB7aWQsIGRhdGEsIHR5cGUsIGNyZWF0ZWQsIG1vZGlmaWVkLCBjb250ZW50LCBjb250ZW50RmlsZU5hbWUsIGNvbnRlbnRGaWxlU2l6ZSwgdmVyc2lvbn0gPSBpdGVtO1xuXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtXG4gICAgICAuZ2V0T2JqZWN0VHlwZUZvcm0odHlwZS5uYW1lLCAnRURJVCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGZvcm0gPT4ge1xuICAgICAgICAgIGxldCBpbmRleERhdGFQcmV2aWV3ID0ge1xuICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgIGRhdGE6IGZvcm1EYXRhIHx8IGRhdGFcbiAgICAgICAgICB9O1xuICAgICAgICAgIGxldCBiYXNlcGFyYW1zOiBCYXNlUGFyYW1zID0ge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLm5hbWUsXG4gICAgICAgICAgICBjcmVhdGVkT246IG5ldyBEYXRlKGNyZWF0ZWQub24pLFxuICAgICAgICAgICAgbW9kaWZpZWRPbjogbmV3IERhdGUobW9kaWZpZWQub24pLFxuICAgICAgICAgICAgY3JlYXRlZEJ5OiBgJHtjcmVhdGVkLmJ5LnRpdGxlfSAoJHtjcmVhdGVkLmJ5Lm5hbWV9KWAsXG4gICAgICAgICAgICBtb2RpZmllZEJ5OiBgJHttb2RpZmllZC5ieS50aXRsZX0gKCR7bW9kaWZpZWQuYnkubmFtZX0pYCxcbiAgICAgICAgICAgIGNvbnRlbnRGaWxlTmFtZTogY29udGVudEZpbGVOYW1lID8gY29udGVudEZpbGVOYW1lIDogbnVsbCxcbiAgICAgICAgICAgIGNvbnRlbnRGaWxlU2l6ZTogY29udGVudEZpbGVTaXplID8gTnVtYmVyKGNvbnRlbnRGaWxlU2l6ZSkgOiBudWxsLFxuICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCAwLFxuICAgICAgICAgICAgbWltZUdyb3VwOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0ubWltZWdyb3VwIDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgICBkaWdlc3Q6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5kaWdlc3QgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIGNvbnRlbnRJZDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmlkIDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgICBtaW1lVHlwZTogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLm1pbWV0eXBlIDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4ge2luZGV4RGF0YVByZXZpZXcsIGJhc2VwYXJhbXN9O1xuICAgICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIG9uSGFzRXJyb3IoaGFzRXJyb3IgPSBmYWxzZSwgbm9kbXNvYmplY3QgPSBmYWxzZSwgc2hvd0xvYWRlciA9IGZhbHNlKSB7XG4gICAgdGhpcy5oYXNFcnJvciA9IGhhc0Vycm9yO1xuICAgIHRoaXMubm9kbXNvYmplY3QgPSBub2Rtc29iamVjdDtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSBzaG93TG9hZGVyO1xuICAgIHRoaXMuaGFzQ29udGVudC5lbWl0KCFoYXNFcnJvcik7XG4gIH1cblxuICBsb2FkRG1zT2JqZWN0KHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUNvbXBhcmUgJiYgcGFyYW1zKSB7XG4gICAgICBkZWxldGUgcGFyYW1zLnZlcnNpb247XG4gICAgfVxuICAgIC8vIGNoZWNrIGZvciB2YWxpZCBpZFxuICAgIHJldHVybiBwYXJhbXM/LmlkPy5sZW5ndGggPT09IDMyID8gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtcykgOiBvZihudWxsKTtcbiAgfVxuXG4gIGRvd25sb2FkT3JpZ2luYWxDb250ZW50KCkge1xuICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoW3RoaXMuaXRlbV0pO1xuICB9XG5cbiAgc2hvd0FjdGlvbnMoKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFt0aGlzLml0ZW0sIHRoaXMuaXRlbTJdLmZpbHRlcih2ID0+IHYpO1xuICAgIHRoaXMuYWN0aW9uU2VydmljZS5zaG93QWN0aW9ucyhhY3Rpb25zLCAnRE1TX09CSkVDVCcpO1xuICB9XG5cbiAgb3Blbk9iamVjdChpZCwgX3R5cGU/KSB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsndHlwZSc6IF90eXBlfX07XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGlkXSwgcXVlcnlQYXJhbXMpO1xuICB9XG5cbiAgLy8gZXhlY3V0ZWQgd2hlbiB0aGUgZG1zIG9iamVjdCBjaGFuZ2VkIGR1ZSB0byBzYXZpbmcgaXRzIGluZGV4ZGF0YVxuICBvbkluZGV4RGF0YVNhdmVkKGZvcm1EYXRhLCBpdGVtKSB7XG4gICAgaWYgKCF0aGlzLml0ZW0pIHtcbiAgICAgIHRoaXMuaW5kZXhEYXRhUHJldmlldyA9IG51bGw7XG4gICAgICB0aGlzLmJhc2VwYXJhbXMgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXRlbTIpIHtcbiAgICAgIHRoaXMuaW5kZXhEYXRhUHJldmlldzIgPSBudWxsO1xuICAgICAgdGhpcy5iYXNlcGFyYW1zMiA9IG51bGw7XG4gICAgfVxuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLnByZXBhcmVJbmRleERhdGFQcmV2aWV3KGl0ZW0sIGZvcm1EYXRhKVxuICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIGlmIChpdGVtID09PSB0aGlzLml0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhEYXRhUHJldmlldyA9IGRhdGEuaW5kZXhEYXRhUHJldmlldztcbiAgICAgICAgICAgIHRoaXMuYmFzZXBhcmFtcyA9IGRhdGEuYmFzZXBhcmFtcztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3MiA9IGRhdGEuaW5kZXhEYXRhUHJldmlldztcbiAgICAgICAgICAgIHRoaXMuYmFzZXBhcmFtczIgPSBkYXRhLmJhc2VwYXJhbXM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNvbXBhcmVUYWJDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5lbmFibGVTeW5jKSB7XG4gICAgICB0aGlzLnRhYkNvbnRhaW5lcnMuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQuc2VsZWN0ZWRUYWIgIT09IGV2ZW50KSB7XG4gICAgICAgICAgdC5zZWxlY3RCeUlkKGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldCByZWZlcmVuY2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLml0ZW0uY29udGV4dEZvbGRlciA/IHRoaXMuaXRlbS5jb250ZXh0Rm9sZGVyLnRpdGxlIDogdGhpcy5pdGVtLnRpdGxlO1xuICB9XG5cbiAgaXNKb3VybmFsT2JqZWN0KGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS50eXBlLnN1cGVydHlwZXMuZmluZChzVCA9PiBzVCA9PT0gJ3N5c2pvdXJuYWxvYmplY3QnKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3Vic2NyaXB0aW9uSWNvblRvb2x0aXAoaXRlbTogRG1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgdG9vbHRpcCA9ICcnO1xuICAgIGNvbnN0IG1vZGVzID0gdGhpcy5pdGVtLnN1YnNjcmlwdGlvbnMubWFwKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24ubW9kZSk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcyA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKSB8fCAobW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpO1xuICAgIGlmIChzdWJzY3JpYmVkVG9BbGxDaGFuZ2VzKSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LnN1YnNjcmlwdGlvbi5pY29uLnRvb2x0aXAuYWxsQ2hhbmdlcycpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdWJzY3JpYmVkVG9NZXRhQ2hhbmdlc09ubHkpIHtcbiAgICAgIHRvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3Quc3Vic2NyaXB0aW9uLmljb24udG9vbHRpcC5tZXRhJyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmNvbnRlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2FwYWJpbGl0aWVzKCkge1xuICAgIGNvbnN0IGJsb2NrID0gdGhpcy5jYXBhYmlsaXRpZXMgJiYgIXRoaXMuY2FwYWJpbGl0aWVzLnNpZ25pbmcgPyBbJ3NpZ25hdHVyZSddIDogW107XG4gICAgY29uc3QgY2FjaGVkT3JkZXIgPSB0aGlzLmNhY2hlTGF5b3V0ICYmIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dCkpO1xuICAgIGNvbnN0IHByaW1hcnkgPSBjYWNoZWRPcmRlcj8ucHJpbWFyeT8udGFicztcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBjYWNoZWRPcmRlcj8uc2Vjb25kYXJ5Py50YWJzO1xuICAgIGNvbnN0IF9wcmltYXJ5ID0gdGhpcy5wYW5lbE9yZGVyLm1hc3RlciB8fCBbXTtcbiAgICBjb25zdCBfc2Vjb25kYXJ5ID0gdGhpcy5wYW5lbE9yZGVyLnNsYXZlIHx8IFtdO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnM/Lm1hcChwID0+IHAuaWQpIHx8IFtdO1xuXG4gICAgY29uc3QgdGFicyA9IFsuLi5fcHJpbWFyeSwgLi4uX3NlY29uZGFyeSwgLi4ucGx1Z2luc10uZmlsdGVyKHQgPT4gIWJsb2NrLmluY2x1ZGVzKHQpKTtcbiAgICBjb25zdCBkaWZmID0gdGFicy5maWx0ZXIodCA9PiAhcHJpbWFyeT8uaW5jbHVkZXModCkgJiYgIXNlY29uZGFyeT8uaW5jbHVkZXModCkpO1xuXG4gICAgY29uc3QgcFRhYnMgPSBwcmltYXJ5ID8gWy4uLnByaW1hcnksIC4uLmRpZmZdIDogWy4uLl9wcmltYXJ5LCAuLi5wbHVnaW5zXTtcbiAgICBjb25zdCBzVGFicyA9IHNlY29uZGFyeSB8fCBfc2Vjb25kYXJ5O1xuXG4gICAgY29uc3QgcyA9IHNUYWJzLmZpbHRlcih0ID0+IHRhYnMuaW5jbHVkZXModCkpO1xuICAgIC8vIHJlc2V0IHByaW1hcnkgdGFicyBvcmRlciBpZiBubyBzZWNvbmRhcnkgdGFicyBhcmUgYXZhaWxhYmxlXG4gICAgLy8gY29uc3QgcCA9IHBUYWJzLmZpbHRlcih0ID0+IHRhYnMuaW5jbHVkZXModCkpO1xuICAgIGNvbnN0IHAgPSBzVGFicy5sZW5ndGggPyBwVGFicy5maWx0ZXIodCA9PiB0YWJzLmluY2x1ZGVzKHQpKSA6IHRhYnM7XG5cbiAgICB0aGlzLnNwbGl0VGFiQ29uZmlnID0ge1xuICAgICAgcHJpbWFyeTogeyB0YWJzOiBwLCBhY3RpdmU6IHAuaW5jbHVkZXMoY2FjaGVkT3JkZXI/LnByaW1hcnk/LmFjdGl2ZSkgPyBjYWNoZWRPcmRlcj8ucHJpbWFyeT8uYWN0aXZlIDogcFswXSB8fCAnJ30sXG4gICAgICBzZWNvbmRhcnk6IHsgdGFiczogcywgYWN0aXZlOiBzLmluY2x1ZGVzKGNhY2hlZE9yZGVyPy5zZWNvbmRhcnk/LmFjdGl2ZSkgPyBjYWNoZWRPcmRlcj8uc2Vjb25kYXJ5Py5hY3RpdmUgOiBzWzBdIHx8ICcnfVxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgdGhpcy5zZXR1cENhcGFiaWxpdGllcygpO1xuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5pZCA9PT0gZXZlbnQuZGF0YS50YXJnZXQuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc1BhcmFtcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51cGxvYWRSZWdpc3RyeS51bnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0LmlkKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxvYWRlci1vdmVybGF5X19tYXNrXCIgKm5nSWY9XCJzaG93TG9hZGVyXCI+XG4gIDxlby1sb2FkaW5nLXNwaW5uZXIgY2xhc3M9XCJvYmplY3QtZGV0YWlsX19sb2FkZXJcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0gJiYgIWhhc0Vycm9yOyBlbHNlIG5vSXRlbVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJlby1oZWFkIGVvLWhlYWQtdGFic1wiIFtlb1Nob3J0Y3V0c109XCJzaG9ydGN1dHNcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiZW8taGVhZGVyXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW29iamVjdFR5cGVdPVwiaXRlbS50eXBlXCIgW2ljb25UaXRsZV09XCJpdGVtLnR5cGUubGFiZWxcIj48L2VvLWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3tpdGVtLnRpdGxlfX08L2gyPlxuICAgICAgICA8aDMgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj57e2l0ZW0uZGVzY3JpcHRpb259fTwvaDM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVmZXJlbmNlOyBlbHNlIHRwbEhlYWRSZWZlcmVuY2VcIj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHJlZnJlc2gtYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGUtcmVmcmVzaCc6IHByZXZlbnRDbGlja1Rocm91Z2h9XCIgKGNsaWNrKT1cInJlZnJlc2hDb250ZW50KClcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBzeW5jLXRhYi1idG5cIiAqbmdJZj1cImVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlbmFibGVkJzogZW5hYmxlU3luY31cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19saW5rLnN2ZydcIlxuICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby52ZXJzaW9ucy5kZXRhaWwuZ2x1ZS50b29sdGlwJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJlbmFibGVTeW5jID0gIWVuYWJsZVN5bmNcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZmF2b3JpdGUtaWNvbiBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiAhcmVjeWNsZWJpblRhYnMgJiYgY2FwYWJpbGl0aWVzLmZhdm9yaXRlcyAmJiAhaXNKb3VybmFsT2JqZWN0KGl0ZW0pXCI+XG4gICAgICAgICAgICA8L2VvLWZhdm9yaXRlLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBvYy1idXR0b25cIiAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmIGl0ZW0uY29udGVudD8uaWRcIiAoY2xpY2spPVwiZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZWRpdC1pY29uIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBpdGVtLmNvbnRlbnQ/LmlkICYmIGl0ZW0ucmlnaHRzLmVkaXQgJiYgKGFnZW50SXNDb25uZWN0ZWQkIHwgYXN5bmMpXG4gICAgICAgICAgICAgICYmICFpdGVtLmlzRmluYWxpemVkICYmIGl0ZW0uZGF0YS55dXZzaWdzdGF0dXMgIT09ICdzaWduZWQnICYmIGl0ZW0uZGF0YS55dXZzaWdzdGF0dXMgIT09ICdpbnByb2Nlc3MnXCI+XG4gICAgICAgICAgICA8L2VvLWVkaXQtaWNvbj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGFtLWJ1dHRvblwiICpuZ0lmPVwiIXJlY3ljbGViaW5UYWJzXCIgKGNsaWNrKT1cInNob3dBY3Rpb25zKClcIlxuICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbW9yZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0cGxIZWFkUmVmZXJlbmNlPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJidXR0b24gcmVmZXJlbmNlIHByaW1hcnlcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdlby5vYmplY3QucmVmZXJlbmNlLnRvb2x0aXAnIHwgdHJhbnNsYXRlOnt0aXRsZTpyZWZlcmVuY2VUaXRsZX0pXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvb2JqZWN0JywgaXRlbS5pZF1cIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwie3R5cGU6IGl0ZW0udHlwZU5hbWV9XCI+e3snZW8ub2JqZWN0LnJlZmVyZW5jZS5vcGVuJ3x0cmFuc2xhdGV9fTwvYT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItc3RhdHVzLWljb25zXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJjb250ZW50LWxpbmtcIiBbdGl0bGVdPVwiJ2VvLm9iamVjdC5jb250ZW50bGluay50b29sdGlwJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiaXRlbS5jb250ZW50Py5saW5rZWRcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiJy9vYmplY3QvJyArIGl0ZW0uY29udGVudC5pZFwiIFtxdWVyeVBhcmFtc109XCJ7dHlwZTogaXRlbS5jb250ZW50LnR5cGV9XCI+XG4gICAgICAgICAgICA8c3Bhbj57eydlby5vYmplY3QuY29udGVudGxpbmsnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic3Vic2NyaXB0aW9uLWljb25cIiAqbmdJZj1cIml0ZW0uc3Vic2NyaXB0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc3Vic2NyaXB0aW9uLnN2ZydcIiBbaWNvblRpdGxlXT1cInN1YnNjcmlwdGlvbkljb25Ub29sdGlwXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwicmVzdWJtaXNzaW9uLWljb25cIiAqbmdJZj1cIml0ZW0ucmVzdWJtaXNzaW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVzdWJtaXNzaW9uLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnJlc3VibWlzc2lvbi50b29sdGlwJyB8IHRyYW5zbGF0ZToge2R1ZTogaXRlbS5yZXN1Ym1pc3Npb25zWzBdLmR1ZSB8IGxvY2FsZURhdGUsIGluZm86IGl0ZW0ucmVzdWJtaXNzaW9uc1swXS5pbmZvfVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNoYXJlZC1pY29uXCIgKm5nSWY9XCJpdGVtLmFkZGl0aW9uYWx2aXNpYmlsaXR5Lmxlbmd0aCAmJiAhcmVjeWNsZWJpblRhYnNcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2hhcmUuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2hhcmVkLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwibG9ja1wiIFtuZ0NsYXNzXT1cInsnbXlMb2NrJzogaXRlbS5sb2NrLmJ5Lm1lfVwiICpuZ0lmPVwiaXRlbS5sb2NrXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2xvY2suc3ZnJ1wiIFtpY29uVGl0bGVdPVwibG9ja1Rvb2x0aXBcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJmaW5hbGl6ZWQtaWNvblwiICpuZ0lmPVwiaXRlbS5pc0ZpbmFsaXplZFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ZpbmFsaXplZC5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5maW5hbGl6ZWQudG9vbHRpcCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBpbnByb2Nlc3NcIiAqbmdJZj1cIml0ZW0uZGF0YS55dXZzaWdzdGF0dXMgPT09ICdpbnByb2Nlc3MnXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpZ25hdHVyZS5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5pbnByb2Nlc3MnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gc2lnbmVkXCIgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnc2lnbmVkJ1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaWduYXR1cmUuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2lnbmF0dXJlLnRvb2x0aXAuc2lnbmVkJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNpZ25lZC1pY29uIHN0b3BwZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnY2FuY2VsZWQnXG4gICAgICAgICAgICAgICAgICAgIHx8IGl0ZW0uZGF0YS55dXZzaWdzdGF0dXMgPT09ICdyZXZpc2VkJyB8fCBpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnZXJyb3InIHx8IGl0ZW0uZGF0YS55dXZzaWdzdGF0dXMgPT09ICdleHBpcmVkJ1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaWduYXR1cmUuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2lnbmF0dXJlLnRvb2x0aXAuc3RvcHBlZCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuXG4gICAgPHl2Yy1zcGxpdC10YWJzIFtsYXlvdXRTZXR0aW5nc0lEXT1cImNhY2hlTGF5b3V0XCIgW2NvbmZpZ109XCJzcGxpdFRhYkNvbmZpZ1wiICpuZ0lmPVwiIWl0ZW0yOyBlbHNlIHRwbENvbXBhcmVcIj5cbiAgICAgIDwhLS0gc3VtbWFyeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLWluZGV4ZGF0YS1zdW1tYXJ5IFtpbmRleGRhdGFdPVwiaW5kZXhEYXRhUHJldmlld1wiIFtiYXNlcGFyYW1zXT1cImJhc2VwYXJhbXNcIiBbZG1zT2JqZWN0XT1cIml0ZW1cIlxuICAgICAgICAgIFtlbmFibGVWZXJzaW9uc109XCIhZW5hYmxlQ29tcGFyZVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBtZXRhZGF0YSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2luZGV4ZGF0YScsIGxhYmVsOiAnZW8ub2JqZWN0LmluZGV4ZGF0YS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1vYmplY3QtZm9ybS1lZGl0IFtkbXNPYmplY3RdPVwiaXRlbVwiIChpbmRleERhdGFTYXZlZCk9XCJvbkluZGV4RGF0YVNhdmVkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgIFtmb3JtRGlzYWJsZWRdPVwiZW5hYmxlQ29tcGFyZSB8fCBpc1JlZmVyZW5jZVwiPjwvZW8tb2JqZWN0LWZvcm0tZWRpdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIHByZXZpZXcgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdwcmV2aWV3JywgbGFiZWw6ICdlby5vYmplY3QuY29udGVudC50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1tZWRpYSBbdXNlVmVyc2lvbl09XCJpdGVtLmlkID09PSBpdGVtLmNvbnRlbnQ/LmlkXCIgW3NlYXJjaFRlcm1dPVwic2VhcmNoVGVybVwiIFtkbXNPYmplY3RdPVwiaXRlbVwiXG4gICAgICAgICAgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gaGlzdG9yeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2hpc3RvcnknLCBsYWJlbDogJ2VvLm9iamVjdC5oaXN0b3J5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1oaXN0b3J5IFtwYXJhbXNdPVwie2lkOiBpdGVtLmlkLCB0eXBlOiBpdGVtLnR5cGU/LnFuYW1lfVwiPlxuICAgICAgICA8L2VvLW9iamVjdC1oaXN0b3J5PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gbGlua3MgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdsaW5rcycsIGxhYmVsOiAnZW8ub2JqZWN0LmxpbmtzLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1saW5rcyBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLW9iamVjdC1saW5rcz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIHNpZ25hdHVyZSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3NpZ25hdHVyZScsIGxhYmVsOiAnZW8ub2JqZWN0LnNpZ25hdHVyZS10YWIudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tc2lnbmF0dXJlLXRhYiBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLXNpZ25hdHVyZS10YWI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIHBsdWdpbiB0YWJzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBwIG9mIHBsdWdpbnNcIiBbeXZjVGFiXT1cIntpZDogcC5pZCwgbGFiZWw6IHAuaWQgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1wbHVnaW4gW2lkXT1cInAuaWRcIiBbcGFyZW50XT1cInRoaXNcIj48L2VvLXBsdWdpbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L3l2Yy1zcGxpdC10YWJzPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0cGxDb21wYXJlPlxuICAgICAgPHl2Yy1zcGxpdC12aWV3PlxuICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjUwXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY21wLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXAtaW5mb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVyc2lvblwiPnt7J2VvLnZlcnNpb25zLmRldGFpbHMubGFiZWwnIHwgdHJhbnNsYXRlfX08c3Bhbj57e2l0ZW0udmVyc2lvbn19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsVGFiczsgY29udGV4dDoge2l0ZW0sIGJhc2VwYXJhbXMsIGluZGV4ZGF0YTogaW5kZXhEYXRhUHJldmlldywgc2VhcmNoVGVybX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjUwXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY21wLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXAtaW5mb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVyc2lvblwiPnt7J2VvLnZlcnNpb25zLmRldGFpbHMubGFiZWwnIHwgdHJhbnNsYXRlfX08c3Bhbj57e2l0ZW0yLnZlcnNpb259fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFRhYnM7IGNvbnRleHQ6IHtpdGVtOiBpdGVtMiwgYmFzZXBhcmFtczogYmFzZXBhcmFtczIsIGluZGV4ZGF0YTogaW5kZXhEYXRhUHJldmlldzIsIHNlYXJjaFRlcm0sIGRpZmY6IHtiYXNlcGFyYW1zLCBiYXNlcGFyYW1zMiwgaW5kZXhkYXRhOiBpbmRleERhdGFQcmV2aWV3LCBpbmRleGRhdGEyOiBpbmRleERhdGFQcmV2aWV3Mn19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdHBsVGFicyBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaW5kZXhkYXRhPVwiaW5kZXhkYXRhXCIgbGV0LWJhc2VwYXJhbXM9XCJiYXNlcGFyYW1zXCJcbiAgICAgIGxldC1zZWFyY2hUZXJtPVwic2VhcmNoVGVybVwiIGxldC1kaWZmPVwiZGlmZlwiPlxuICAgICAgPHl2Yy10YWJzICh0YWJDaGFuZ2UpPVwib25Db21wYXJlVGFiQ2hhbmdlKCRldmVudClcIiBsYXlvdXRTZXR0aW5nc0lEPVwie3snZW8ub2JqZWN0LmRldGFpbHMuY29tcGFyZS50YWJzJyArIChkaWZmID8gJy4wJyA6ICcuMScpfX1cIj5cbiAgICAgICAgPCEtLSBzdW1tYXJ5IC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdzdW1tYXJ5JywgbGFiZWw6ICdlby5vYmplY3Quc3VtbWFyeS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgPGVvLWluZGV4ZGF0YS1zdW1tYXJ5IFtpbmRleGRhdGFdPVwiaW5kZXhkYXRhXCIgW2Jhc2VwYXJhbXNdPVwiYmFzZXBhcmFtc1wiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwhLS0gcHJldmlldyAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAncHJldmlldycsIGxhYmVsOiAnZW8ub2JqZWN0LmNvbnRlbnQudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgIDxlby1tZWRpYSBbdXNlVmVyc2lvbl09XCJ0cnVlXCIgW3NlYXJjaFRlcm1dPVwic2VhcmNoVGVybVwiIFtkbXNPYmplY3RdPVwiaXRlbVwiICN2aWV3ZXI+PC9lby1tZWRpYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBjaGFuZ2VzIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJkaWZmXCJcbiAgICAgICAgICBbeXZjVGFiXT1cIntpZDogJ2NoYW5nZXMnLCBsYWJlbDogJ2VvLm9iamVjdC5jaGFuZ2VzLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2RpZmZdPVwiZGlmZlwiIFtlbmFibGVWZXJzaW9uc109XCJmYWxzZVwiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cblxuICAgICAgPC95dmMtdGFicz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbm9JdGVtPlxuICA8c3BhbiBjbGFzcz1cIm5vdC1mb3VuZFwiICpuZ0lmPVwibm9kbXNvYmplY3RcIiB0cmFuc2xhdGU+ZW8uYnBtLm5vZG1zb2JqZWN0PC9zcGFuPlxuICA8ZW8tZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFzaG93TG9hZGVyXCJcbiAgICBbZW1wdHlTdGF0ZV09XCJ7aWNvbjogZW1wdHlTdGF0ZS5pY29uLCB0ZXh0OiBlbXB0eVN0YXRlLnRleHQsIGNsYXNzTmFtZTogZW1wdHlTdGF0ZS5jbGFzc05hbWV9XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmVycm9yXCI+PC9uZy1jb250ZW50PlxuICA8L2VvLWVycm9yLW1lc3NhZ2U+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQVVMLFVBQVUsRUFFVixnQkFBZ0IsRUFJaEIsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUduRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFHOUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQTBCLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTbkYsSUFB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RixVQUFVO3NCQURiLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBWVgsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBU1osU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBdUNULFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQXlDTCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFNEIsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIEJhc2VQYXJhbXMsXG4gIEJwbVNlcnZpY2UsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc1BhcmFtcyxcbiAgRG1zU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25Nb2RlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gIFVwbG9hZFRhcmdldCxcbiAgVXRpbHMsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcbmltcG9ydCB7U2VsZWN0aW9uQ29uZmlnLCBTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtBY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbi1zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Q29udGVudFByZXZpZXdTZXJ2aWNlfSBmcm9tICcuLi9tZWRpYS9jb250ZW50LXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQge01lZGlhQ29tcG9uZW50fSBmcm9tICcuLi9tZWRpYS9tZWRpYS5jb21wb25lbnQnO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7U2hvcnRjdXR9IGZyb20gJy4uL3Nob3J0Y3V0cy9zaG9ydGN1dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtJbmRleERhdGF9IGZyb20gJy4uL3VpL2luZGV4ZGF0YS1zdW1tYXJ5L2luZGV4ZGF0YS1zdW1tYXJ5LmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYnN9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7U3BsaXRUYWJzQ29tcG9uZW50LCBTcGxpdFRhYnNMYXlvdXRTZXR0aW5nc30gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL3NwbGl0LXRhYnMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3REZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdlcicpIHByZXZpZXc6IE1lZGlhQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFNwbGl0VGFic0NvbXBvbmVudCkgZW9TcGxpdFRhYnM6IFNwbGl0VGFic0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZHJlbihUYWJzKSB0YWJDb250YWluZXJzOiBRdWVyeUxpc3Q8VGFicz47XG5cbiAgQElucHV0KCkgcGx1Z2luczogYW55W107XG5cbiAgLy8gZ2VuZXJhdGUgdW5pcXVlIGlkIHRvIHBhc3MgdG8gdXBsb2FkIHJlZ2lzdHJ5XG4gIHByaXZhdGUgdXBsb2FkVGFyZ2V0ID0gbmV3IFVwbG9hZFRhcmdldChVdGlscy51dWlkKCksIFVwbG9hZFRhcmdldC5PQkpFQ1QpO1xuICBpdGVtOiBEbXNPYmplY3Q7XG4gIGluZGV4RGF0YVByZXZpZXc6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczogQmFzZVBhcmFtcztcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgbG9ja1Rvb2x0aXA6IHN0cmluZztcbiAgbm9kbXNvYmplY3QgPSBmYWxzZTtcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuICBwcm9jZXNzVG9vbHRpcCA9ICcnO1xuICBwYW5lbE9yZGVyID0geydtYXN0ZXInOiBbJ3N1bW1hcnknLCAnaW5kZXhkYXRhJywgJ2hpc3RvcnknLCAnbGlua3MnLCAnc2lnbmF0dXJlJ10sICdzbGF2ZSc6IFsncHJldmlldyddfTtcblxuICBhZ2VudElzQ29ubmVjdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkJDtcbiAgc3Vic2NyaXB0aW9uSWNvblRvb2x0aXA6IHN0cmluZztcbiAgc3BsaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3BsaXRUYWJDb25maWc6IFNwbGl0VGFic0xheW91dFNldHRpbmdzO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlZmVyZW5jZScpIGlzUmVmZXJlbmNlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCByZWZlcmVuY2UoaXNSZWY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVmZXJlbmNlID0gaXNSZWY7XG4gIH1cbiAgQElucHV0KCkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVDb21wYXJlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY3ljbGViaW5UYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZlcnNpb25Db21wb25lbnRUYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZURpZmYgPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVTeW5jID0gdHJ1ZTtcbiAgQElucHV0KCkgY2FjaGVMYXlvdXQ6IGFueTtcbiAgaXRlbTI6IERtc09iamVjdDtcbiAgdGFicyA9IFtdXG4gIGluZGV4RGF0YVByZXZpZXcyOiBJbmRleERhdGE7XG4gIGJhc2VwYXJhbXMyOiBCYXNlUGFyYW1zO1xuICBwcml2YXRlIF9lbXB0eVN0YXRlOiBFbXB0eVN0YXRlID0ge2ljb246ICdpY19uby1maWxlLnN2ZycsIHRleHQ6ICcnLCBjbGFzc05hbWU6ICcnfTtcblxuICBASW5wdXQoKVxuICBzZXQgZW1wdHlTdGF0ZShlOiBFbXB0eVN0YXRlKSB7XG4gICAgdGhpcy5fZW1wdHlTdGF0ZSA9IGUgfHwgRW1wdHlTdGF0ZVNlcnZpY2UuZGVmYXVsdEVtcHR5U3RhdGUoKTtcbiAgfVxuXG4gIGdldCBlbXB0eVN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9lbXB0eVN0YXRlO1xuICB9XG5cbiAgQElucHV0KCdwYXJhbXMnKVxuICBzZXQgZG1zUGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWREbXNPYmplY3QocGFyYW1zKS5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRtc09iamVjdCA9IHJlcztcbiAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgIH0sXG4gICAgICBVdGlscy50aHJvdygoKSA9PiB0aGlzLm9uSGFzRXJyb3IodHJ1ZSwgdHJ1ZSwgZmFsc2UpKVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoJ3BhcmFtczInKVxuICBzZXQgZG1zUGFyYW1zMihwYXJhbXM6IERtc1BhcmFtcykge1xuICAgIHRoaXMubG9hZERtc09iamVjdChwYXJhbXMpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgICB0aGlzLmRtc09iamVjdDIgPSByZXM7XG4gICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB0aGlzLm9uSGFzRXJyb3IodHJ1ZSwgdHJ1ZSwgZmFsc2UpKSk7XG4gIH1cblxuICBASW5wdXQoJ2l0ZW0nKVxuICBzZXQgZG1zT2JqZWN0KHY6IERtc09iamVjdCkge1xuICAgIGNvbnN0IGlzRGlmZmVyZW50ID0gdGhpcy5pdGVtPy5pZCAhPT0gdj8uaWQ7XG4gICAgdGhpcy5pdGVtID0gdjtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICBpZiAodGhpcy5pdGVtPy5pZCkge1xuICAgICAgdGhpcy5mZXRjaEF0aXZlUHJvY2Vzc0RhdGEodGhpcy5pdGVtPy5pZCk7XG4gICAgfVxuICAgIC8vIHByZXBhcmUgaW5kZXhkYXRhIHByZXZpZXdcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9MT0FERUQsIHRoaXMuaXRlbSk7XG5cbiAgICBpZiAodGhpcy5pdGVtKSB7XG4gICAgICBpZiAoaXNEaWZmZXJlbnQgJiYgdGhpcy5pdGVtLmlzQWN0aXZlVmVyc2lvbiAmJiAhdGhpcy5lbmFibGVDb21wYXJlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0LnJlZmVyZW5jZU9iamVjdCA9IHRoaXMuaXRlbTtcbiAgICAgICAgdGhpcy51cGxvYWRUYXJnZXQub25VcGxvYWRTdWNjZXNzID0gKCkgPT4gdGhpcy5kbXNQYXJhbXMgPSB7aWQ6IHYuaWQsIHR5cGU6IHYudHlwZU5hbWV9O1xuICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0LnJlZmVyZW5jZU9iamVjdCA9IHRoaXMuaXRlbTtcbiAgICAgICAgdGhpcy51cGxvYWRUYXJnZXQub25VcGxvYWRTdWNjZXNzID0gKCkgPT4gdGhpcy5kbXNQYXJhbXMgPSB7aWQ6IHYuaWQsIHR5cGU6IHYudHlwZU5hbWV9O1xuICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXRlbS5sb2NrKSB7XG4gICAgICAgIHRoaXMubG9ja1Rvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QubG9jaycpICsgJyAnXG4gICAgICAgICAgKyAobmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0odGhpcy5pdGVtLmxvY2sub24pKVxuICAgICAgICAgICsgJywgJyArIHRoaXMuaXRlbS5sb2NrLmJ5LmxhYmVsICsgJyAoJyArIHRoaXMuaXRlbS5sb2NrLmJ5Lm5hbWUgKyAnKSc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZSgwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pdGVtPy5zdWJzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25JY29uVG9vbHRpcCA9IHRoaXMuY3JlYXRlU3Vic2NyaXB0aW9uSWNvblRvb2x0aXAodGhpcy5pdGVtKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2l0ZW0yJylcbiAgc2V0IGRtc09iamVjdDIodjogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5pdGVtMiA9IHY7XG4gICAgdGhpcy5vbkhhc0Vycm9yKCk7XG4gICAgdGhpcy5vbkluZGV4RGF0YVNhdmVkKG51bGwsIHRoaXMuaXRlbTIpO1xuICB9XG5cbiAgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXRpZXM7XG4gIHByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5vYmplY3QtZGV0YWlscycsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScpLFxuICAgIGxhYmVsS2V5OiAnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyxcbiAgICBhY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5hY3Rpb24ub3Blbi5jb250ZXh0JyksXG4gICAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuYWN0aW9uLm9wZW4uY29udGV4dCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ08nLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5PYmplY3QodGhpcy5pdGVtLmlkLCB0aGlzLml0ZW0udHlwZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScpLFxuICAgICAgICBuYW1lS2V5OiAnZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0EnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dBY3Rpb25zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XG4gIEBJbnB1dCgpIHBhcnNlRG1zUGFyYW1zOiAoZGF0YSkgPT4ge30gPSB0aGlzLmdldERtc1BhcmFtcztcbiAgQE91dHB1dCgpIGhhc0NvbnRlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW0gPyB0aGlzLml0ZW0udHlwZU5hbWUgOiAnbm9uZSc7XG4gIH1cblxuICAvLyB1bmRvY2tXaW5BY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGRtc1NlcnZpY2U6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0eVNlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRSZWdpc3RyeTogVXBsb2FkUmVnaXN0cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWcsXG4gICAgcHJpdmF0ZSBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnBhbmVsT3JkZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdvYmplY3REZXRhaWxzVGFicycpIHx8IHRoaXMucGFuZWxPcmRlcjtcblxuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNldEFnZW50U3RhdHVzKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2Nvbm5lY3RhZ2VudCddKS5zdWJzY3JpYmUoKGhhc1N0YXR1czogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKGhhc1N0YXR1cykge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge3F1ZXJ5UGFyYW1zOiB7Y29ubmVjdGFnZW50OiBudWxsfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREbXNQYXJhbXMoZGF0YTogYW55KTogRG1zUGFyYW1zIHtcbiAgICByZXR1cm4gZGF0YSA/IHsuLi5kYXRhLCB0eXBlOiBkYXRhLnR5cGVOYW1lIHx8IGRhdGEudHlwZX0gOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCkge1xuXG4gICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmVuYWJsZUNvbXBhcmUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAgIC5zZWxlY3Rpb24kXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKSxcbiAgICAgICAgICAgIHRocm90dGxlVGltZSg1MDApXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG1zUGFyYW1zID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMF0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICAgIHRoaXMuZG1zUGFyYW1zMiA9IHRoaXMucGFyc2VEbXNQYXJhbXMocmVzWzFdKSBhcyBEbXNQYXJhbXM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgICAuZm9jdXMkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkRG1zT2JqZWN0KHRoaXMucGFyc2VEbXNQYXJhbXMocmVzKSBhcyBEbXNQYXJhbXMpLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgLy8gcmVmcmVzaGluZyBvYmplY3QgZGV0YWlscyBtYXkgcmVzdWx0IGluIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0XG4gICAgICAgICAgICAgIC8vIHNvIHdlJ2xsIHVzZSB0aGlzIHRyaWdnZXIgdG8gYWxzbyBlbWl0dCB0aG9zZSBjaGFuZ2VzIHRvIG90aGVyIGxpc3RlbmluZyBjb21wb25lbnRzXG4gICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0gJiYgcmVzICYmICh0aGlzLml0ZW0uaWQgPT09IHJlcy5pZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCByZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuZG1zT2JqZWN0ID0gcmVzO1xuICAgICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFV0aWxzLnRocm93KChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaENvbnRlbnQoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDbGlja1Rocm91Z2gpIHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IHRydWU7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcbiAgICB9LCA1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbTogRG1zT2JqZWN0LCBmb3JtRGF0YT86IGFueSkge1xuICAgIGNvbnN0IHtpZCwgZGF0YSwgdHlwZSwgY3JlYXRlZCwgbW9kaWZpZWQsIGNvbnRlbnQsIGNvbnRlbnRGaWxlTmFtZSwgY29udGVudEZpbGVTaXplLCB2ZXJzaW9ufSA9IGl0ZW07XG5cbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1cbiAgICAgIC5nZXRPYmplY3RUeXBlRm9ybSh0eXBlLm5hbWUsICdFRElUJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZm9ybSA9PiB7XG4gICAgICAgICAgbGV0IGluZGV4RGF0YVByZXZpZXcgPSB7XG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgZGF0YTogZm9ybURhdGEgfHwgZGF0YVxuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IGJhc2VwYXJhbXM6IEJhc2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUubmFtZSxcbiAgICAgICAgICAgIGNyZWF0ZWRPbjogbmV3IERhdGUoY3JlYXRlZC5vbiksXG4gICAgICAgICAgICBtb2RpZmllZE9uOiBuZXcgRGF0ZShtb2RpZmllZC5vbiksXG4gICAgICAgICAgICBjcmVhdGVkQnk6IGAke2NyZWF0ZWQuYnkudGl0bGV9ICgke2NyZWF0ZWQuYnkubmFtZX0pYCxcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6IGAke21vZGlmaWVkLmJ5LnRpdGxlfSAoJHttb2RpZmllZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgY29udGVudEZpbGVOYW1lOiBjb250ZW50RmlsZU5hbWUgPyBjb250ZW50RmlsZU5hbWUgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudEZpbGVTaXplOiBjb250ZW50RmlsZVNpemUgPyBOdW1iZXIoY29udGVudEZpbGVTaXplKSA6IG51bGwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IDAsXG4gICAgICAgICAgICBtaW1lR3JvdXA6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1lZ3JvdXAgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIGRpZ2VzdDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLmRpZ2VzdCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudElkOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuaWQgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0ubWltZXR5cGUgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7aW5kZXhEYXRhUHJldmlldywgYmFzZXBhcmFtc307XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgb25IYXNFcnJvcihoYXNFcnJvciA9IGZhbHNlLCBub2Rtc29iamVjdCA9IGZhbHNlLCBzaG93TG9hZGVyID0gZmFsc2UpIHtcbiAgICB0aGlzLmhhc0Vycm9yID0gaGFzRXJyb3I7XG4gICAgdGhpcy5ub2Rtc29iamVjdCA9IG5vZG1zb2JqZWN0O1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHNob3dMb2FkZXI7XG4gICAgdGhpcy5oYXNDb250ZW50LmVtaXQoIWhhc0Vycm9yKTtcbiAgfVxuXG4gIGxvYWREbXNPYmplY3QocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlQ29tcGFyZSAmJiBwYXJhbXMpIHtcbiAgICAgIGRlbGV0ZSBwYXJhbXMudmVyc2lvbjtcbiAgICB9XG4gICAgLy8gY2hlY2sgZm9yIHZhbGlkIGlkXG4gICAgcmV0dXJuIHBhcmFtcz8uaWQ/Lmxlbmd0aCA9PT0gMzIgPyB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0QnlQYXJhbXMocGFyYW1zKSA6IG9mKG51bGwpO1xuICB9XG5cbiAgZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKSB7XG4gICAgdGhpcy5iYWNrZW5kLmRvd25sb2FkQ29udGVudChbdGhpcy5pdGVtXSk7XG4gIH1cblxuICBzaG93QWN0aW9ucygpIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW3RoaXMuaXRlbSwgdGhpcy5pdGVtMl0uZmlsdGVyKHYgPT4gdik7XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKGFjdGlvbnMsICdETVNfT0JKRUNUJyk7XG4gIH1cblxuICBvcGVuT2JqZWN0KGlkLCBfdHlwZT8pIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeyd0eXBlJzogX3R5cGV9fTtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvLyBleGVjdXRlZCB3aGVuIHRoZSBkbXMgb2JqZWN0IGNoYW5nZWQgZHVlIHRvIHNhdmluZyBpdHMgaW5kZXhkYXRhXG4gIG9uSW5kZXhEYXRhU2F2ZWQoZm9ybURhdGEsIGl0ZW0pIHtcbiAgICBpZiAoIXRoaXMuaXRlbSkge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5pdGVtMikge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3MiA9IG51bGw7XG4gICAgICB0aGlzLmJhc2VwYXJhbXMyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbSwgZm9ybURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zMiA9IGRhdGEuYmFzZXBhcmFtcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZldGNoQXRpdmVQcm9jZXNzRGF0YShvYmplY3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5icG1TZXJ2aWNlLmdldFByb2Nlc3NEYXRhKG9iamVjdElkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgbGV0IGNvbnRlbnQgPSB7XG4gICAgICAgIG1vZGVsbmFtZTogcmVzLm1hcChpdGVtID0+IGl0ZW0ubW9kZWxuYW1lKSxcbiAgICAgICAgc3RhcnR0aW1lOiByZXMubWFwKGl0ZW0gPT4gbmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0oaXRlbS5zdGFydHRpbWUsICcnKSksXG4gICAgICAgIGVuZHRpbWU6IHJlcy5tYXAoaXRlbSA9PiBuZXcgTG9jYWxlRGF0ZVBpcGUodGhpcy50cmFuc2xhdGUpLnRyYW5zZm9ybShpdGVtLmVuZHRpbWUsICcnKSlcbiAgICAgIH07XG4gICAgICB0aGlzLnByb2Nlc3NUb29sdGlwID0gJ1xcbic7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnQubW9kZWxuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb250ZW50LmVuZHRpbWVbaV0pIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NUb29sdGlwICs9IGNvbnRlbnQubW9kZWxuYW1lW2ldICsgJyB8ICcgKyBjb250ZW50LnN0YXJ0dGltZVtpXSArICcgLSAnICsgY29udGVudC5lbmR0aW1lW2ldICsgJ1xcbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzVG9vbHRpcCArPSBjb250ZW50Lm1vZGVsbmFtZVtpXSArICcgfCAnICsgY29udGVudC5zdGFydHRpbWVbaV0gKyAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Db21wYXJlVGFiQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlU3luYykge1xuICAgICAgdGhpcy50YWJDb250YWluZXJzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0LnNlbGVjdGVkVGFiICE9PSBldmVudCkge1xuICAgICAgICAgIHQuc2VsZWN0QnlJZChldmVudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXQgcmVmZXJlbmNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtLmNvbnRleHRGb2xkZXIgPyB0aGlzLml0ZW0uY29udGV4dEZvbGRlci50aXRsZSA6IHRoaXMuaXRlbS50aXRsZTtcbiAgfVxuXG4gIGlzSm91cm5hbE9iamVjdChpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0udHlwZS5zdXBlcnR5cGVzLmZpbmQoc1QgPT4gc1QgPT09ICdzeXNqb3VybmFsb2JqZWN0Jyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1YnNjcmlwdGlvbkljb25Ub29sdGlwKGl0ZW06IERtc09iamVjdCk6IHN0cmluZyB7XG4gICAgbGV0IHRvb2x0aXAgPSAnJztcbiAgICBjb25zdCBtb2RlcyA9IHRoaXMuaXRlbS5zdWJzY3JpcHRpb25zLm1hcChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLm1vZGUpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb0FsbENoYW5nZXMgPSBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLkRNU19PQkpFQ1RfQ0hBTkdFRCkgfHwgKG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQpICYmIG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9NZXRhQ2hhbmdlc09ubHkgPSBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9Db250ZW50Q2hhbmdlc09ubHkgPSBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKTtcbiAgICBpZiAoc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcykge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmFsbENoYW5nZXMnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3Vic2NyaWJlZFRvTWV0YUNoYW5nZXNPbmx5KSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LnN1YnNjcmlwdGlvbi5pY29uLnRvb2x0aXAubWV0YScpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdWJzY3JpYmVkVG9Db250ZW50Q2hhbmdlc09ubHkpIHtcbiAgICAgIHRvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3Quc3Vic2NyaXB0aW9uLmljb24udG9vbHRpcC5jb250ZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiB0b29sdGlwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENhcGFiaWxpdGllcygpIHtcbiAgICBjb25zdCBibG9jayA9IHRoaXMuY2FwYWJpbGl0aWVzICYmICF0aGlzLmNhcGFiaWxpdGllcy5zaWduaW5nID8gWydzaWduYXR1cmUnXSA6IFtdO1xuICAgIGNvbnN0IGNhY2hlZE9yZGVyID0gdGhpcy5jYWNoZUxheW91dCAmJiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXQpKTtcbiAgICBjb25zdCBwcmltYXJ5ID0gY2FjaGVkT3JkZXI/LnByaW1hcnk/LnRhYnM7XG4gICAgY29uc3Qgc2Vjb25kYXJ5ID0gY2FjaGVkT3JkZXI/LnNlY29uZGFyeT8udGFicztcbiAgICBjb25zdCBfcHJpbWFyeSA9IHRoaXMucGFuZWxPcmRlci5tYXN0ZXIgfHwgW107XG4gICAgY29uc3QgX3NlY29uZGFyeSA9IHRoaXMucGFuZWxPcmRlci5zbGF2ZSB8fCBbXTtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zPy5tYXAocCA9PiBwLmlkKSB8fCBbXTtcblxuXG4gICAgdGhpcy50YWJzID0gWy4uLl9wcmltYXJ5LCAuLi5fc2Vjb25kYXJ5LCAuLi5wbHVnaW5zXS5maWx0ZXIodCA9PiAhYmxvY2suaW5jbHVkZXModCkpO1xuXG4gICAgaWYgKHRoaXMudmVyc2lvbkNvbXBvbmVudFRhYnMpIHtcbiAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IFtcInN1bW1hcnlcIiwgXCJpbmRleGRhdGFcIiwgXCJwcmV2aWV3XCJdLmluY2x1ZGVzKHRhYikpO1xuICAgIH1cblxuICAgIGNvbnN0IGRpZmYgPSB0aGlzLnRhYnMuZmlsdGVyKHQgPT4gIXByaW1hcnk/LmluY2x1ZGVzKHQpICYmICFzZWNvbmRhcnk/LmluY2x1ZGVzKHQpKTtcbiAgICBjb25zdCBfcFRhYnMgPSBbLi4uX3ByaW1hcnksIC4uLnBsdWdpbnMuZmlsdGVyKHAgPT4gIV9wcmltYXJ5LmluY2x1ZGVzKHApKV07XG4gICAgY29uc3QgcFRhYnMgPSBwcmltYXJ5ID8gWy4uLnByaW1hcnksIC4uLmRpZmZdIDogX3BUYWJzO1xuICAgIGNvbnN0IHNUYWJzID0gc2Vjb25kYXJ5IHx8IF9zZWNvbmRhcnk7XG5cbiAgICBjb25zdCBwID0gcFRhYnMuZmlsdGVyKHQgPT4gdGhpcy50YWJzLmluY2x1ZGVzKHQpKTtcbiAgICBjb25zdCBzID0gc1RhYnMuZmlsdGVyKHQgPT4gdGhpcy50YWJzLmluY2x1ZGVzKHQpKTtcbiAgICAvLyByZXNldCBwcmltYXJ5IHRhYnMgb3JkZXIgaWYgbm8gc2Vjb25kYXJ5IHRhYnMgYXJlIGF2YWlsYWJsZVxuICAgICFzLmxlbmd0aCAmJiBwLnNvcnQoKGEsIGIpID0+IHRoaXMudGFicy5pbmRleE9mKGEpIC0gdGhpcy50YWJzLmluZGV4T2YoYikpO1xuXG4gICAgdGhpcy5zcGxpdFRhYkNvbmZpZyA9IHtcbiAgICAgIHByaW1hcnk6IHsgdGFiczogcCwgYWN0aXZlOiBwLmluY2x1ZGVzKGNhY2hlZE9yZGVyPy5wcmltYXJ5Py5hY3RpdmUpID8gY2FjaGVkT3JkZXI/LnByaW1hcnk/LmFjdGl2ZSA6IHBbMF0gfHwgJyd9LFxuICAgICAgc2Vjb25kYXJ5OiB7IHRhYnM6IHMsIGFjdGl2ZTogcy5pbmNsdWRlcyhjYWNoZWRPcmRlcj8uc2Vjb25kYXJ5Py5hY3RpdmUpID8gY2FjaGVkT3JkZXI/LnNlY29uZGFyeT8uYWN0aXZlIDogc1swXSB8fCAnJ30sXG4gICAgICBzcGxpdDogY2FjaGVkT3JkZXI/LnNwbGl0XG4gICAgfTtcblxuICAgIC8vIGZvcmNlIHNhdmUgb2YgbGF5b3V0IHNldHRpbmdzIHRvIGluY2x1ZGUgcGx1Z2luIHRhYnNcbiAgICB0aGlzLm9uTGF5b3V0U2V0dGluZ3NDaGFuZ2VkKHRoaXMuc3BsaXRUYWJDb25maWcpO1xuICB9XG5cbiAgLy8gY3VzdG9tIGV2ZW50IGhhbmRsZXIgZm9yIGxheW91dCBzZXR0aW5ncyB0byBtYWtlIHN1cmUgcGx1Z2luIHRhYnMgYXJlIHNhdmVkXG4gIG9uTGF5b3V0U2V0dGluZ3NDaGFuZ2VkKGV2ZW50OiBTcGxpdFRhYnNMYXlvdXRTZXR0aW5ncykge1xuICAgIHRoaXMuY2FjaGVMYXlvdXQgJiYgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5jYWNoZUxheW91dCwgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXR5U2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLnNldHVwQ2FwYWJpbGl0aWVzKCk7XG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEudGFyZ2V0LmlkKSB7XG4gICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwib2JqZWN0LWRldGFpbF9fbG9hZGVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICYmICFoYXNFcnJvcjsgZWxzZSBub0l0ZW1cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZCBlby1oZWFkLXRhYnNcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtvYmplY3RUeXBlXT1cIml0ZW0udHlwZVwiIFtpY29uVGl0bGVdPVwiaXRlbS50eXBlLmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlZmVyZW5jZTsgZWxzZSB0cGxIZWFkUmVmZXJlbmNlXCI+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiICpuZ0lmPVwiIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlLXJlZnJlc2gnOiBwcmV2ZW50Q2xpY2tUaHJvdWdofVwiIChjbGljayk9XCJyZWZyZXNoQ29udGVudCgpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gc3luYy10YWItYnRuXCIgKm5nSWY9XCJlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFic1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZW5hYmxlZCc6IGVuYWJsZVN5bmN9XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbGluay5zdmcnXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8udmVyc2lvbnMuZGV0YWlsLmdsdWUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZW5hYmxlU3luYyA9ICFlbmFibGVTeW5jXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWZhdm9yaXRlLWljb24gW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzICYmIGNhcGFiaWxpdGllcy5mYXZvcml0ZXMgJiYgIWlzSm91cm5hbE9iamVjdChpdGVtKVwiPlxuICAgICAgICAgICAgPC9lby1mYXZvcml0ZS1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gb2MtYnV0dG9uXCIgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiBpdGVtLmNvbnRlbnQ/LmlkXCIgKGNsaWNrKT1cImRvd25sb2FkT3JpZ2luYWxDb250ZW50KClcIlxuICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY29udGVudC1kb3dubG9hZC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWVkaXQtaWNvbiBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiAhcmVjeWNsZWJpblRhYnMgJiYgaXRlbS5jb250ZW50Py5pZCAmJiBpdGVtLnJpZ2h0cy5lZGl0ICYmIChhZ2VudElzQ29ubmVjdGVkJCB8IGFzeW5jKVxuICAgICAgICAgICAgICAmJiAhaXRlbS5pc0ZpbmFsaXplZCAmJiBpdGVtLmRhdGEueXV2c2lnc3RhdHVzICE9PSAnc2lnbmVkJyAmJiBpdGVtLmRhdGEueXV2c2lnc3RhdHVzICE9PSAnaW5wcm9jZXNzJ1wiPlxuICAgICAgICAgICAgPC9lby1lZGl0LWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBhbS1idXR0b25cIiAqbmdJZj1cIiFyZWN5Y2xlYmluVGFic1wiIChjbGljayk9XCJzaG93QWN0aW9ucygpXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX21vcmUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdHBsSGVhZFJlZmVyZW5jZT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIHJlZmVyZW5jZSBwcmltYXJ5XCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIignZW8ub2JqZWN0LnJlZmVyZW5jZS50b29sdGlwJyB8IHRyYW5zbGF0ZTp7dGl0bGU6cmVmZXJlbmNlVGl0bGV9KVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL29iamVjdCcsIGl0ZW0uaWRdXCJcbiAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiBpdGVtLnR5cGVOYW1lfVwiPnt7J2VvLm9iamVjdC5yZWZlcmVuY2Uub3Blbid8dHJhbnNsYXRlfX08L2E+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXN0YXR1cy1pY29uc1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiY29udGVudC1saW5rXCIgW3RpdGxlXT1cIidlby5vYmplY3QuY29udGVudGxpbmsudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAqbmdJZj1cIml0ZW0uY29udGVudD8ubGlua2VkXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIicvb2JqZWN0LycgKyBpdGVtLmNvbnRlbnQuaWRcIiBbcXVlcnlQYXJhbXNdPVwie3R5cGU6IGl0ZW0uY29udGVudC50eXBlfVwiPlxuICAgICAgICAgICAgPHNwYW4+e3snZW8ub2JqZWN0LmNvbnRlbnRsaW5rJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInN1YnNjcmlwdGlvbi1pY29uXCIgKm5nSWY9XCJpdGVtLnN1YnNjcmlwdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3N1YnNjcmlwdGlvbi5zdmcnXCIgW2ljb25UaXRsZV09XCJzdWJzY3JpcHRpb25JY29uVG9vbHRpcFwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInJlc3VibWlzc2lvbi1pY29uXCIgKm5nSWY9XCJpdGVtLnJlc3VibWlzc2lvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3Jlc3VibWlzc2lvbi5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5yZXN1Ym1pc3Npb24udG9vbHRpcCcgfCB0cmFuc2xhdGU6IHtkdWU6IGl0ZW0ucmVzdWJtaXNzaW9uc1swXS5kdWUgfCBsb2NhbGVEYXRlLCBpbmZvOiBpdGVtLnJlc3VibWlzc2lvbnNbMF0uaW5mb31cIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaGFyZWQtaWNvblwiICpuZ0lmPVwiaXRlbS5hZGRpdGlvbmFsdmlzaWJpbGl0eS5sZW5ndGggJiYgIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NoYXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNoYXJlZC50b29sdGlwJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImxvY2tcIiBbbmdDbGFzc109XCJ7J215TG9jayc6IGl0ZW0ubG9jay5ieS5tZX1cIiAqbmdJZj1cIml0ZW0ubG9ja1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19sb2NrLnN2ZydcIiBbaWNvblRpdGxlXT1cImxvY2tUb29sdGlwXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiZmluYWxpemVkLWljb25cIiAqbmdJZj1cIml0ZW0uaXNGaW5hbGl6ZWRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maW5hbGl6ZWQuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QuZmluYWxpemVkLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gaW5wcm9jZXNzXCIgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnaW5wcm9jZXNzJ1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaWduYXR1cmUuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2lnbmF0dXJlLnRvb2x0aXAuaW5wcm9jZXNzJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNpZ25lZC1pY29uIHNpZ25lZFwiICpuZ0lmPVwiaXRlbS5kYXRhLnl1dnNpZ3N0YXR1cyA9PT0gJ3NpZ25lZCdcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLnNpZ25lZCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBzdG9wcGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5kYXRhLnl1dnNpZ3N0YXR1cyA9PT0gJ2NhbmNlbGVkJ1xuICAgICAgICAgICAgICAgICAgICB8fCBpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAncmV2aXNlZCcgfHwgaXRlbS5kYXRhLnl1dnNpZ3N0YXR1cyA9PT0gJ2Vycm9yJyB8fCBpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnZXhwaXJlZCdcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLnN0b3BwZWQnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgQGlmIChpdGVtLnByb2Nlc3Njb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJyZXN1Ym1pc3Npb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYnBtLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5wcm9jZXNzY291bnQudG9vbHRpcCcgfCB0cmFuc2xhdGUgOiB7cHJvY2Vzc2NvdW50OiBpdGVtPy5wcm9jZXNzY291bnQsIHRleHQ6IHByb2Nlc3NUb29sdGlwfVwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG5cbiAgICA8eXZjLXNwbGl0LXRhYnMgW2xheW91dFNldHRpbmdzSURdPVwiY2FjaGVMYXlvdXRcIiBbY29uZmlnXT1cInNwbGl0VGFiQ29uZmlnXCIgKm5nSWY9XCIhaXRlbTI7IGVsc2UgdHBsQ29tcGFyZVwiPlxuICAgICAgPCEtLSBzdW1tYXJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc3VtbWFyeScsIGxhYmVsOiAnZW8ub2JqZWN0LnN1bW1hcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleERhdGFQcmV2aWV3XCIgW2Jhc2VwYXJhbXNdPVwiYmFzZXBhcmFtc1wiIFtkbXNPYmplY3RdPVwiaXRlbVwiXG4gICAgICAgICAgW2VuYWJsZVZlcnNpb25zXT1cIiFlbmFibGVDb21wYXJlXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIG1ldGFkYXRhIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaW5kZXhkYXRhJywgbGFiZWw6ICdlby5vYmplY3QuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1mb3JtLWVkaXQgW2Rtc09iamVjdF09XCJpdGVtXCIgKGluZGV4RGF0YVNhdmVkKT1cIm9uSW5kZXhEYXRhU2F2ZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlIHx8IGlzUmVmZXJlbmNlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gcHJldmlldyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3ByZXZpZXcnLCBsYWJlbDogJ2VvLm9iamVjdC5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW1lZGlhIFt1c2VWZXJzaW9uXT1cIml0ZW0uaWQgPT09IGl0ZW0uY29udGVudD8uaWRcIiBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCIgW2Rtc09iamVjdF09XCJpdGVtXCJcbiAgICAgICAgICAjdmlld2VyPjwvZW8tbWVkaWE+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBoaXN0b3J5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ub2JqZWN0Lmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWhpc3RvcnkgW3BhcmFtc109XCJ7aWQ6IGl0ZW0uaWQsIHR5cGU6IGl0ZW0udHlwZT8ucW5hbWV9XCI+XG4gICAgICAgIDwvZW8tb2JqZWN0LWhpc3Rvcnk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBsaW5rcyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2xpbmtzJywgbGFiZWw6ICdlby5vYmplY3QubGlua3MudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWxpbmtzIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tb2JqZWN0LWxpbmtzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gc2lnbmF0dXJlIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc2lnbmF0dXJlJywgbGFiZWw6ICdlby5vYmplY3Quc2lnbmF0dXJlLXRhYi50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1zaWduYXR1cmUtdGFiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tc2lnbmF0dXJlLXRhYj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gcGx1Z2luIHRhYnMgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IHAgb2YgcGx1Z2luc1wiIFt5dmNUYWJdPVwie2lkOiBwLmlkLCBsYWJlbDogcC5pZCB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLXBsdWdpbiBbaWRdPVwicC5pZFwiIFtwYXJlbnRdPVwidGhpc1wiPjwvZW8tcGx1Z2luPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwveXZjLXNwbGl0LXRhYnM+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RwbENvbXBhcmU+XG4gICAgICA8eXZjLXNwbGl0LXZpZXc+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXAtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNtcC1pbmZvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJzaW9uXCI+e3snZW8udmVyc2lvbnMuZGV0YWlscy5sYWJlbCcgfCB0cmFuc2xhdGV9fTxzcGFuPnt7aXRlbS52ZXJzaW9ufX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxUYWJzOyBjb250ZXh0OiB7aXRlbSwgYmFzZXBhcmFtcywgaW5kZXhkYXRhOiBpbmRleERhdGFQcmV2aWV3LCBzZWFyY2hUZXJtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXAtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNtcC1pbmZvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJzaW9uXCI+e3snZW8udmVyc2lvbnMuZGV0YWlscy5sYWJlbCcgfCB0cmFuc2xhdGV9fTxzcGFuPnt7aXRlbTIudmVyc2lvbn19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsVGFiczsgY29udGV4dDoge2l0ZW06IGl0ZW0yLCBiYXNlcGFyYW1zOiBiYXNlcGFyYW1zMiwgaW5kZXhkYXRhOiBpbmRleERhdGFQcmV2aWV3Miwgc2VhcmNoVGVybSwgZGlmZjoge2Jhc2VwYXJhbXMsIGJhc2VwYXJhbXMyLCBpbmRleGRhdGE6IGluZGV4RGF0YVByZXZpZXcsIGluZGV4ZGF0YTI6IGluZGV4RGF0YVByZXZpZXcyfX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC95dmMtc3BsaXQtdmlldz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0cGxUYWJzIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleGRhdGE9XCJpbmRleGRhdGFcIiBsZXQtYmFzZXBhcmFtcz1cImJhc2VwYXJhbXNcIlxuICAgICAgbGV0LXNlYXJjaFRlcm09XCJzZWFyY2hUZXJtXCIgbGV0LWRpZmY9XCJkaWZmXCI+XG4gICAgICA8eXZjLXRhYnMgKHRhYkNoYW5nZSk9XCJvbkNvbXBhcmVUYWJDaGFuZ2UoJGV2ZW50KVwiIGxheW91dFNldHRpbmdzSUQ9XCJ7eydlby5vYmplY3QuZGV0YWlscy5jb21wYXJlLnRhYnMnICsgKGRpZmYgPyAnLjAnIDogJy4xJyl9fVwiPlxuICAgICAgICA8IS0tIHN1bW1hcnkgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleGRhdGFcIiBbYmFzZXBhcmFtc109XCJiYXNlcGFyYW1zXCIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBwcmV2aWV3IC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdwcmV2aWV3JywgbGFiZWw6ICdlby5vYmplY3QuY29udGVudC50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgPGVvLW1lZGlhIFt1c2VWZXJzaW9uXT1cInRydWVcIiBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCIgW2Rtc09iamVjdF09XCJpdGVtXCIgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIGNoYW5nZXMgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImRpZmZcIlxuICAgICAgICAgIFt5dmNUYWJdPVwie2lkOiAnY2hhbmdlcycsIGxhYmVsOiAnZW8ub2JqZWN0LmNoYW5nZXMudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbZGlmZl09XCJkaWZmXCIgW2VuYWJsZVZlcnNpb25zXT1cImZhbHNlXCIgW2lzQ2hhbmdlc1RhYl09XCJ2ZXJzaW9uQ29tcG9uZW50VGFic1wiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cblxuICAgICAgPC95dmMtdGFicz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbm9JdGVtPlxuICA8c3BhbiBjbGFzcz1cIm5vdC1mb3VuZFwiICpuZ0lmPVwibm9kbXNvYmplY3RcIiB0cmFuc2xhdGU+ZW8uYnBtLm5vZG1zb2JqZWN0PC9zcGFuPlxuICA8ZW8tZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFzaG93TG9hZGVyXCJcbiAgICBbZW1wdHlTdGF0ZV09XCJ7aWNvbjogZW1wdHlTdGF0ZS5pY29uLCB0ZXh0OiBlbXB0eVN0YXRlLnRleHQsIGNsYXNzTmFtZTogZW1wdHlTdGF0ZS5jbGFzc05hbWV9XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmVycm9yXCI+PC9uZy1jb250ZW50PlxuICA8L2VvLWVycm9yLW1lc3NhZ2U+XG48L25nLXRlbXBsYXRlPlxuIl19
|