@smartbit4all/ng-client 4.0.3 → 4.0.5
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/esm2022/lib/component-factory-service/component-factory-service.module.mjs +5 -5
- package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +4 -4
- package/esm2022/lib/session/api/api/session.service.mjs +4 -4
- package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +4 -4
- package/esm2022/lib/session/smart-error-catching.interceptor.mjs +4 -4
- package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +4 -4
- package/esm2022/lib/session/smart-session.module.mjs +5 -5
- package/esm2022/lib/session/smart-session.service.mjs +4 -4
- package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +4 -4
- package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +4 -4
- package/esm2022/lib/shared/shared.module.mjs +5 -5
- package/esm2022/lib/shared/smart-tooltip.directive.mjs +4 -4
- package/esm2022/lib/shared/smarttable.date-pipe.mjs +10 -10
- package/esm2022/lib/smart-client/smart-authentication.service.mjs +4 -4
- package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +4 -4
- package/esm2022/lib/smart-client/smart.component.mjs +4 -4
- package/esm2022/lib/smart-client/smart.service.mjs +4 -4
- package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +4 -4
- package/esm2022/lib/smart-component-layout/api/api.module.mjs +5 -5
- package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +4 -4
- package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +5 -5
- package/esm2022/lib/smart-dialog/smartdialog.component.mjs +4 -4
- package/esm2022/lib/smart-dialog/smartdialog.module.mjs +5 -5
- package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +4 -4
- package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +5 -5
- package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +4 -4
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +4 -4
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +4 -4
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +4 -4
- package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +4 -4
- package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +4 -4
- package/esm2022/lib/smart-filter/smart-filter.module.mjs +5 -5
- package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +4 -4
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +4 -4
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +4 -4
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +4 -4
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +5 -5
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +4 -4
- package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +4 -4
- package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +4 -4
- package/esm2022/lib/smart-form/api/api/default.service.mjs +4 -4
- package/esm2022/lib/smart-form/api/api.module.mjs +5 -5
- package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +4 -4
- package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +4 -4
- package/esm2022/lib/smart-form/services/smartform.service.mjs +4 -4
- package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +4 -4
- package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +4 -4
- package/esm2022/lib/smart-form/smartform.component.mjs +4 -4
- package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +4 -4
- package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +4 -4
- package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +4 -4
- package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +4 -4
- package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +4 -4
- package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +5 -5
- package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +4 -4
- package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +4 -4
- package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +4 -4
- package/esm2022/lib/smart-grid/smart-grid.component.mjs +4 -4
- package/esm2022/lib/smart-grid/smart-grid.module.mjs +5 -5
- package/esm2022/lib/smart-grid/smart-grid.service.mjs +4 -4
- package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +4 -4
- package/esm2022/lib/smart-icon/smart-icon.module.mjs +5 -5
- package/esm2022/lib/smart-icon/smart-icon.service.mjs +4 -4
- package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +4 -4
- package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +5 -5
- package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +4 -4
- package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +5 -5
- package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +4 -4
- package/esm2022/lib/smart-ng-client.module.mjs +5 -5
- package/esm2022/lib/smart-ng-client.service.mjs +4 -4
- package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +4 -4
- package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +5 -5
- package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +4 -4
- package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +4 -4
- package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +4 -4
- package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +4 -4
- package/esm2022/lib/smart-table/components/loading/loading.component.mjs +4 -4
- package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +6 -6
- package/esm2022/lib/smart-table/smarttable.component.mjs +4 -4
- package/esm2022/lib/smart-table/smarttable.module.mjs +5 -5
- package/esm2022/lib/smart-table/smarttable.service.mjs +4 -4
- package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +4 -4
- package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +4 -4
- package/esm2022/lib/smart-table/tables/table.mjs +4 -4
- package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +4 -4
- package/esm2022/lib/smart-tree/smarttree.component.mjs +4 -4
- package/esm2022/lib/smart-tree/smarttree.module.mjs +5 -5
- package/esm2022/lib/smart-tree/smarttree.service.mjs +4 -4
- package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +4 -4
- package/esm2022/lib/view-context/api/api/view.service.mjs +4 -4
- package/esm2022/lib/view-context/api/api.module.mjs +5 -5
- package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +4 -4
- package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +4 -4
- package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +4 -4
- package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +4 -4
- package/esm2022/lib/view-context/smart-view-context.module.mjs +5 -5
- package/esm2022/lib/view-context/smart-view-context.service.mjs +7 -7
- package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +4 -4
- package/esm2022/lib/view-context/value-api/api/value.service.mjs +4 -4
- package/esm2022/lib/view-context/value-api/api.module.mjs +5 -5
- package/fesm2022/smartbit4all-ng-client.mjs +362 -362
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-table/directives/mat-context-menu-trigger-for.directive.d.ts +2 -2
- package/package.json +8 -8
- package/smartbit4all-ng-client-4.0.5.tgz +0 -0
- package/smartbit4all-ng-client-4.0.3.tgz +0 -0
|
@@ -494,10 +494,10 @@ export class Table {
|
|
|
494
494
|
}
|
|
495
495
|
return undefined;
|
|
496
496
|
}
|
|
497
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
497
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Table, deps: [{ token: i1.ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
498
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: Table, selector: "ng-component", inputs: { smartTable: "smartTable" }, viewQueries: [{ propertyName: "myTableChild", first: true, predicate: ["myTable"], descendants: true }, { propertyName: "triggers", predicate: MatMenuTrigger, descendants: true }, { propertyName: "vcRef", predicate: ["expandedArea"], descendants: true, read: ViewContainerRef }, { propertyName: "defaultActionMenuComponents", predicate: DefaultActionsPopupComponent, descendants: true }], ngImport: i0, template: '', isInline: true }); }
|
|
499
499
|
}
|
|
500
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Table, decorators: [{
|
|
501
501
|
type: Component,
|
|
502
502
|
args: [{
|
|
503
503
|
template: '',
|
|
@@ -517,4 +517,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
517
517
|
}], smartTable: [{
|
|
518
518
|
type: Input
|
|
519
519
|
}] } });
|
|
520
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7O0FBSXJGLE1BQU0sT0FBTyxLQUFLO0lBdUJoQixZQUFzQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQXRCakQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWWhELGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDNUMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3JELHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTNDLDJCQUFzQixHQUFHLENBQUMsVUFBZSxFQUFF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QUFZO3VCQUFDLDRCQUE0QjtnQkFHcEIsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUVYLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcclxuaW1wb3J0IHsgSW1hZ2VSZXNvdXJjZSwgVWlBY3Rpb24sIFVpQWN0aW9uVG9vbHRpcCB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1zdHlsZS11dGlsaXR5JztcclxuaW1wb3J0IHsgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydFRhYmxlLFxyXG4gIFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXHJcbiAgU21hcnRUYWJsZUhlYWRlcixcclxuICBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLFxyXG4gIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24sXHJcbiAgU21hcnRUYWJsZU9yZGVyLFxyXG4gIFNtYXJ0VGFibGVUeXBlLFxyXG59IGZyb20gJy4uL3NtYXJ0dGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydE9iamVjdFV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1vYmplY3QtdXRpbGl0eSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXJzITogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICB2Y1JlZj86IFZpZXdDb250YWluZXJSZWZbXTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KVxyXG4gIGRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlUYWJsZScpIG15VGFibGVDaGlsZCE6IE1hdFRhYmxlPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPGFueT47XHJcbiAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGU7XHJcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBoaWdobGlnaHRlZFJvd3M6IGFueVtdID0gW107XHJcbiAgc29ydEV2ZW50OiBTdWJqZWN0PFNtYXJ0VGFibGVIZWFkZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XHJcblxyXG4gIGVsZW1lbnQ/OiBhbnk7XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmNUcmFuc2xhdGlvblJlc3VsdCA9ICh0cmFuc2xhdG9yOiBhbnksIHBhcmFtOiBzdHJpbmcpID0+IHRyYW5zbGF0b3IocGFyYW0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Sb3dDbGljayhlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5JTkhFUklURUQpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLm9uUm93Q2xpY2soZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVCkge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcclxuICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU21hcnRUYWJsZShzbWFydFRhYmxlOiBTbWFydFRhYmxlPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUYWJsZSA9IHNtYXJ0VGFibGU7XHJcbiAgICB0aGlzLnJlbmRlclJvd3MoKTtcclxuICB9XHJcblxyXG4gIHJlbmRlclJvd3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15VGFibGVDaGlsZC5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucyAmJiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHR5cGUoKTogdHlwZW9mIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zb3J0RXZlbnQubmV4dChoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tQnV0dG9uQ2xpY2tlZChcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBidXR0b246IFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgICBlbGVtZW50OiBhbnksXHJcbiAgICBidG4/OiBhbnksXHJcbiAgICBjbG9zZT86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGJ0bj8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChidXR0b24udHlwZSA9PT0gU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSAmJiBidG4gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghYnV0dG9uLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQnV0dG9uIHdpdGggbmFtZSAke2J1dHRvbi5sYWJlbCB8fCBidXR0b24uaWNvbn0gZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIWApO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbi5hcmdzLCBlbGVtZW50LCBidG4pO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcclxuICAgICAgICAobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiBtYXRNZW51VHJpZ2dlci5tZW51T3BlblxyXG4gICAgICApO1xyXG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgbWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1NvcnRhYmxlVGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuc29ydGFibGU7XHJcbiAgICBpZiAoaXNTb3J0YWJsZVRhYmxlKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgIHJldHVybiB0YWJsZUhlYWRlci5vcmRlciA9PT0gU21hcnRUYWJsZU9yZGVyLkFTQ1xyXG4gICAgICAgID8gdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uQXNjID8/ICdrZXlib2FyZF9hcnJvd19kb3duJ1xyXG4gICAgICAgIDogdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaGFzU29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxyXG4gICAgKTtcclxuICAgIHJldHVybiB0YWJsZUhlYWRlcj8ub3JkZXJOdW1iZXIgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZ2V0U29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiBgZmlsdGVyXyR7dGFibGVIZWFkZXIub3JkZXJOdW1iZXJ9YDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFRvb2xUaXAoZWxlbWVudDogYW55LCBoZWFkZXJJbmRleDogbnVtYmVyKTogVWlBY3Rpb25Ub29sdGlwIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdG9vbFRpcENvbHVtbiA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcz8udG9vbFRpcENvbHVtbjtcclxuICAgIHJldHVybiB0b29sVGlwQ29sdW1uID8gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCB0b29sVGlwQ29sdW1uKSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldEljb24odmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMgPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xyXG5cclxuICAgIGxldCBpY29uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyIDwgdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaWNvbjtcclxuICB9XHJcblxyXG4gIGdldENvbG9yKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBoZWFkZXJJbmRleDogbnVtYmVyKTogVGhlbWVQYWxldHRlIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucztcclxuXHJcbiAgICBsZXQgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgPiB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbigpOiB0eXBlb2YgU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbiB7XHJcbiAgICByZXR1cm4gU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KFxyXG4gICAgICAgIC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubWFwKChyb3c6IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShyb3csIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSEpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24odHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cclxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXJvdykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgJHtcclxuICAgICAgcm93LnBvc2l0aW9uICsgMVxyXG4gICAgfWA7XHJcbiAgfVxyXG5cclxuICBpc0hpZ2hsaWdodGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5KSB7XHJcbiAgICAgIGlmIChyb3dbJ2RhdGEnXVt0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0UHJvcGVydHldKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluY2x1ZGVzKHJvdyk7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dDbGFzc2VzKHJvdzogYW55KSB7XHJcbiAgICBsZXQgY2xhc3Nlc1RvQWRkOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGNsYXNzZXNUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcclxuICAgIGNsYXNzZXNUb0FkZC5wdXNoKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpID8gdGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodENsYXNzISA6ICd1bnNlbGVjdGVkJyk7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhvdmVyKSB7XHJcbiAgICAgIGNsYXNzZXNUb0FkZC5wdXNoKCdzbWFydFRhYmxlUm93SG92ZXInKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsYXNzZXNUb1JlbW92ZS5wdXNoKCdzbWFydFRhYmxlUm93SG92ZXInKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQocm93KSkge1xyXG4gICAgICBjbGFzc2VzVG9BZGQucHVzaCgnc2VsZWN0ZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsYXNzZXNUb1JlbW92ZS5wdXNoKCdzZWxlY3RlZCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3Nlcyhyb3cuc3R5bGUsIGNsYXNzZXNUb0FkZCwgY2xhc3Nlc1RvUmVtb3ZlKTtcclxuICB9XHJcblxyXG4gIGdldFJvd1N0eWxlcyhyb3c6IGFueSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKHJvdy5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5DbGFzc2VzKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3NlcyhoZWFkZXIuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uU3R5bGVzKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKGhlYWRlci5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvQ2FtZWxDYXNlKGNzczogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjc3MucmVwbGFjZSgvLShbYS16XSkvZywgZnVuY3Rpb24gKGcpIHtcclxuICAgICAgcmV0dXJuIGdbMV0udG9VcHBlckNhc2UoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluZGV4T2Yocm93LCAwKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmV4cGFuZGFibGUgJiYgIXRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgIHRoaXMub25Ub2dnbGUocm93KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljaykge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljayhyb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvblJvd0RvdWJsZUNsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodE9uUm93Q2xpY2spIHtcclxuICAgICAgaWYgKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5kZXhPZihyb3csIDApO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayhyb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25Ub2dnbGUoZWxlbWVudDogYW55LCBldmVudD86IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUucm93RXhwYW5kZXIpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdTbWFydFRhYmxlUm93RXhwYW5kZXIgbm90IGZvdW5kIS4gUGxlYXNlIHByb3ZpZGUgYSBTbWFydFRhYmxlUm93RXhwYW5kZXIgaW1wbGVtZW50YXRpb24uJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9sZEluZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50ID09PSB0aGlzLmV4cGFuZGVkRWxlbWVudFxyXG4gICAgKTtcclxuICAgIGlmIChvbGRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgbGV0IHJlZiA9IHRoaXMudmNSZWYhLmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gb2xkSW5kZXgpO1xyXG4gICAgICByZWZbMF0uY2xlYXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gdGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IGVsZW1lbnQgPyBudWxsIDogZWxlbWVudDtcclxuXHJcbiAgICBsZXQgbmV3SW5kZXggPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQgPT09IHRoaXMuZXhwYW5kZWRFbGVtZW50XHJcbiAgICApO1xyXG5cclxuICAgIGxldCByb3dEYXRhUmVzcG9uc2U7XHJcblxyXG4gICAgaWYgKG5ld0luZGV4ICE9PSAtMSkge1xyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLmFzeW5jT25FeHBhbmQpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICAgIHRoaXMudmNSZWY/LmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdISxcclxuICAgICAgICAgIExvYWRpbmdDb21wb25lbnQsXHJcbiAgICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PigpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcm93RGF0YVJlc3BvbnNlID0gYXdhaXQgdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyPy5leHBhbmRBc3luYyhuZXdJbmRleCk7XHJcblxyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLnZjUmVmIS5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSE7XHJcbiAgICAgICAgcmVmLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIHRoaXMudmNSZWY/LmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdISxcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZXhwYW5kZWRDb21wb25lbnQsXHJcbiAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1sncm93RGF0YScsIHJvd0RhdGFSZXNwb25zZV1dKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5lbGVtZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0aW9uKGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93cyAmJlxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3RlZC5sZW5ndGggPT09IHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbj8udG9nZ2xlKGVsZW1lbnQpO1xyXG4gICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQubmV4dCgpO1xyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25TZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd01lbnVCdXR0b24oZWxlbWVudDogYW55LCBidXR0b246IFNtYXJ0VGFibGVCdXR0b24pOiBib29sZWFuIHtcclxuICAgIGlmIChidXR0b24ubWVudUl0ZW1CdXR0b25zKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwgYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSEpLmxlbmd0aDtcclxuICAgICAgICByZXR1cm4gbGVuZ3RoID4gMDtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIFNtYXJ0T2JqZWN0VXRpbGl0eS5nZXRWYWx1ZUJ5UGF0aChlbGVtZW50LCBoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0J1dHRvbihidXR0b246IFNtYXJ0VGFibGVCdXR0b24sIGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGJ1dHRvbi5zaG93QnV0dG9uSWYpIHtcclxuICAgICAgcmV0dXJuIGJ1dHRvbi5zaG93QnV0dG9uSWYoZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5zZWxlY3RhYmxlUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoXHJcbiAgICAgICAgZWxlbWVudCxcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0YWJsZVByb3BlcnR5TmFtZVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gc2VsZWN0YWJsZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGFibGUgPT09IG51bGwgPyBmYWxzZSA6ICFzZWxlY3RhYmxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKSA/PyBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luYWxQcm9wZXJ0eShoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGgoJ2RhdGEuJykpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlci5zdWJzdHJpbmcoJ2RhdGEuJy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhlYWRlcjtcclxuICB9XHJcblxyXG4gIGlzSW1hZ2VSZXNvdXJjZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWVsZW1lbnQuaWNvbnMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHByb3BlcnR5ID0gdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcik7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZWxlbWVudC5pY29ucykuc29tZSgoa2V5KSA9PiBrZXkgPT09IHByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VJY29ucyhlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogSW1hZ2VSZXNvdXJjZVtdIHtcclxuICAgIGlmIChlbGVtZW50Py5pY29ucykge1xyXG4gICAgICBsZXQgaWNvbkNvZGVzID0gZWxlbWVudD8uaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildO1xyXG4gICAgICByZXR1cm4gaWNvbkNvZGVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUljb24oZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gZWxlbWVudC5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV0uaWRlbnRpZmllcjtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VDb2xvcihlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5jb2xvciA/PyAncHJpbWFyeSc7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlU3R5bGUocmVzb3VyY2U6IEltYWdlUmVzb3VyY2UpOiBhbnkge1xyXG4gICAgcmV0dXJuIHJlc291cmNlLnN0eWxlID8gcmVzb3VyY2Uuc3R5bGUgOiB7fTtcclxuICB9XHJcblxyXG4gIG9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZXZlbnQ6IGFueSwgcm93OiBhbnkpIHtcclxuICAgIGxldCBhY3Rpb25Db2Rlc0Zyb21Sb3cgPSByb3c/LmFjdGlvbnM/Lm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4gYWN0aW9uLmNvZGUpO1xyXG4gICAgaWYgKCFhY3Rpb25Db2Rlc0Zyb21Sb3cpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbHRlcmVkQWN0aW9ucyA9IHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucz8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+XHJcbiAgICAgIGFjdGlvbkNvZGVzRnJvbVJvdy5pbmNsdWRlcyhhY3Rpb24uY29kZSEpXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChmaWx0ZXJlZEFjdGlvbnMgJiYgZmlsdGVyZWRBY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGZpbHRlcmVkQWN0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKHJvdyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbk1lbnVDb21wb25lbnRzXHJcbiAgICAgICAgLnRvQXJyYXkoKVxyXG4gICAgICAgIC5maW5kKChjb21wOiBEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KSA9PiBjb21wLnJvdy5pZCA9PT0gcm93LmlkKVxyXG4gICAgICAgID8ub3BlbkRlZmF1bHRBY3Rpb25zTWVudShldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0QWN0aW9uc0ZvclJvdyhlbGVtZW50OiBhbnkpOiBNYXA8U21hcnRUYWJsZUJ1dHRvbiwgVWlBY3Rpb24+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmIChlbGVtZW50Py5hY3Rpb25zKSB7XHJcbiAgICAgIGNvbnN0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IG5ldyBNYXA8c3RyaW5nLCBVaUFjdGlvbj4oXHJcbiAgICAgICAgZWxlbWVudD8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBbYWN0aW9uLmNvZGUsIGFjdGlvbl0pXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBuZXcgTWFwPFNtYXJ0VGFibGVCdXR0b24sIFVpQWN0aW9uPihcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnNcclxuICAgICAgICAgID8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+IGFjdGlvbkNvZGVzRnJvbVJvdy5oYXMoYWN0aW9uLmNvZGUhKSlcclxuICAgICAgICAgIC5tYXAoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT4gW2FjdGlvbiwgYWN0aW9uQ29kZXNGcm9tUm93LmdldChhY3Rpb24uY29kZSEpIV0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7O0FBSXJGLE1BQU0sT0FBTyxLQUFLO0lBdUJoQixZQUFzQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQXRCakQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWWhELGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDNUMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3JELHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTNDLDJCQUFzQixHQUFHLENBQUMsVUFBZSxFQUFF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QUFZO3VCQUFDLDRCQUE0QjtnQkFHcEIsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUVYLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcclxuaW1wb3J0IHsgSW1hZ2VSZXNvdXJjZSwgVWlBY3Rpb24sIFVpQWN0aW9uVG9vbHRpcCB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1zdHlsZS11dGlsaXR5JztcclxuaW1wb3J0IHsgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydFRhYmxlLFxyXG4gIFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXHJcbiAgU21hcnRUYWJsZUhlYWRlcixcclxuICBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLFxyXG4gIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24sXHJcbiAgU21hcnRUYWJsZU9yZGVyLFxyXG4gIFNtYXJ0VGFibGVUeXBlLFxyXG59IGZyb20gJy4uL3NtYXJ0dGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydE9iamVjdFV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1vYmplY3QtdXRpbGl0eSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXJzITogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICB2Y1JlZj86IFZpZXdDb250YWluZXJSZWZbXTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KVxyXG4gIGRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlUYWJsZScpIG15VGFibGVDaGlsZCE6IE1hdFRhYmxlPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPGFueT47XHJcbiAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGU7XHJcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBoaWdobGlnaHRlZFJvd3M6IGFueVtdID0gW107XHJcbiAgc29ydEV2ZW50OiBTdWJqZWN0PFNtYXJ0VGFibGVIZWFkZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XHJcblxyXG4gIGVsZW1lbnQ/OiBhbnk7XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmNUcmFuc2xhdGlvblJlc3VsdCA9ICh0cmFuc2xhdG9yOiBhbnksIHBhcmFtOiBzdHJpbmcpID0+IHRyYW5zbGF0b3IocGFyYW0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25Sb3dDbGljayhlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5JTkhFUklURUQpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgICB0aGlzLm9uUm93Q2xpY2soZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVCkge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcclxuICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU21hcnRUYWJsZShzbWFydFRhYmxlOiBTbWFydFRhYmxlPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUYWJsZSA9IHNtYXJ0VGFibGU7XHJcbiAgICB0aGlzLnJlbmRlclJvd3MoKTtcclxuICB9XHJcblxyXG4gIHJlbmRlclJvd3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15VGFibGVDaGlsZC5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucyAmJiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHR5cGUoKTogdHlwZW9mIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zb3J0RXZlbnQubmV4dChoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tQnV0dG9uQ2xpY2tlZChcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBidXR0b246IFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgICBlbGVtZW50OiBhbnksXHJcbiAgICBidG4/OiBhbnksXHJcbiAgICBjbG9zZT86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGJ0bj8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChidXR0b24udHlwZSA9PT0gU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSAmJiBidG4gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghYnV0dG9uLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQnV0dG9uIHdpdGggbmFtZSAke2J1dHRvbi5sYWJlbCB8fCBidXR0b24uaWNvbn0gZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIWApO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbi5hcmdzLCBlbGVtZW50LCBidG4pO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcclxuICAgICAgICAobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiBtYXRNZW51VHJpZ2dlci5tZW51T3BlblxyXG4gICAgICApO1xyXG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgbWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1NvcnRhYmxlVGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuc29ydGFibGU7XHJcbiAgICBpZiAoaXNTb3J0YWJsZVRhYmxlKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgIHJldHVybiB0YWJsZUhlYWRlci5vcmRlciA9PT0gU21hcnRUYWJsZU9yZGVyLkFTQ1xyXG4gICAgICAgID8gdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uQXNjID8/ICdrZXlib2FyZF9hcnJvd19kb3duJ1xyXG4gICAgICAgIDogdGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaGFzU29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxyXG4gICAgKTtcclxuICAgIHJldHVybiB0YWJsZUhlYWRlcj8ub3JkZXJOdW1iZXIgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZ2V0U29ydE51bUljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiBgZmlsdGVyXyR7dGFibGVIZWFkZXIub3JkZXJOdW1iZXJ9YDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFRvb2xUaXAoZWxlbWVudDogYW55LCBoZWFkZXJJbmRleDogbnVtYmVyKTogVWlBY3Rpb25Ub29sdGlwIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdG9vbFRpcENvbHVtbiA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcz8udG9vbFRpcENvbHVtbjtcclxuICAgIHJldHVybiB0b29sVGlwQ29sdW1uID8gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCB0b29sVGlwQ29sdW1uKSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldEljb24odmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMgPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xyXG5cclxuICAgIGxldCBpY29uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyIDwgdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaWNvbjtcclxuICB9XHJcblxyXG4gIGdldENvbG9yKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBoZWFkZXJJbmRleDogbnVtYmVyKTogVGhlbWVQYWxldHRlIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucztcclxuXHJcbiAgICBsZXQgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb25zIVtpXTtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgPiB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sb3IgPSBjdXN0b21UYWJsZUhlYWRlckljb24uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbigpOiB0eXBlb2YgU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbiB7XHJcbiAgICByZXR1cm4gU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KFxyXG4gICAgICAgIC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubWFwKChyb3c6IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShyb3csIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSEpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24odHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cclxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXJvdykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgJHtcclxuICAgICAgcm93LnBvc2l0aW9uICsgMVxyXG4gICAgfWA7XHJcbiAgfVxyXG5cclxuICBpc0hpZ2hsaWdodGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5KSB7XHJcbiAgICAgIGlmIChyb3dbJ2RhdGEnXVt0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0UHJvcGVydHldKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluY2x1ZGVzKHJvdyk7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dDbGFzc2VzKHJvdzogYW55KSB7XHJcbiAgICBsZXQgY2xhc3Nlc1RvQWRkOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGNsYXNzZXNUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcclxuICAgIGNsYXNzZXNUb0FkZC5wdXNoKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpID8gdGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodENsYXNzISA6ICd1bnNlbGVjdGVkJyk7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhvdmVyKSB7XHJcbiAgICAgIGNsYXNzZXNUb0FkZC5wdXNoKCdzbWFydFRhYmxlUm93SG92ZXInKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsYXNzZXNUb1JlbW92ZS5wdXNoKCdzbWFydFRhYmxlUm93SG92ZXInKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQocm93KSkge1xyXG4gICAgICBjbGFzc2VzVG9BZGQucHVzaCgnc2VsZWN0ZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsYXNzZXNUb1JlbW92ZS5wdXNoKCdzZWxlY3RlZCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3Nlcyhyb3cuc3R5bGUsIGNsYXNzZXNUb0FkZCwgY2xhc3Nlc1RvUmVtb3ZlKTtcclxuICB9XHJcblxyXG4gIGdldFJvd1N0eWxlcyhyb3c6IGFueSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKHJvdy5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5DbGFzc2VzKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3NlcyhoZWFkZXIuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uU3R5bGVzKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKGhlYWRlci5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvQ2FtZWxDYXNlKGNzczogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjc3MucmVwbGFjZSgvLShbYS16XSkvZywgZnVuY3Rpb24gKGcpIHtcclxuICAgICAgcmV0dXJuIGdbMV0udG9VcHBlckNhc2UoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluZGV4T2Yocm93LCAwKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmV4cGFuZGFibGUgJiYgIXRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgIHRoaXMub25Ub2dnbGUocm93KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljaykge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljayhyb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvblJvd0RvdWJsZUNsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodE9uUm93Q2xpY2spIHtcclxuICAgICAgaWYgKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5kZXhPZihyb3csIDApO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayhyb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25Ub2dnbGUoZWxlbWVudDogYW55LCBldmVudD86IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUucm93RXhwYW5kZXIpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdTbWFydFRhYmxlUm93RXhwYW5kZXIgbm90IGZvdW5kIS4gUGxlYXNlIHByb3ZpZGUgYSBTbWFydFRhYmxlUm93RXhwYW5kZXIgaW1wbGVtZW50YXRpb24uJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9sZEluZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50ID09PSB0aGlzLmV4cGFuZGVkRWxlbWVudFxyXG4gICAgKTtcclxuICAgIGlmIChvbGRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgbGV0IHJlZiA9IHRoaXMudmNSZWYhLmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gb2xkSW5kZXgpO1xyXG4gICAgICByZWZbMF0uY2xlYXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gdGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IGVsZW1lbnQgPyBudWxsIDogZWxlbWVudDtcclxuXHJcbiAgICBsZXQgbmV3SW5kZXggPSB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQgPT09IHRoaXMuZXhwYW5kZWRFbGVtZW50XHJcbiAgICApO1xyXG5cclxuICAgIGxldCByb3dEYXRhUmVzcG9uc2U7XHJcblxyXG4gICAgaWYgKG5ld0luZGV4ICE9PSAtMSkge1xyXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLmFzeW5jT25FeHBhbmQpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICAgIHRoaXMudmNSZWY/LmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdISxcclxuICAgICAgICAgIExvYWRpbmdDb21wb25lbnQsXHJcbiAgICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PigpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcm93RGF0YVJlc3BvbnNlID0gYXdhaXQgdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyPy5leHBhbmRBc3luYyhuZXdJbmRleCk7XHJcblxyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLnZjUmVmIS5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSE7XHJcbiAgICAgICAgcmVmLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIHRoaXMudmNSZWY/LmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdISxcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZXhwYW5kZWRDb21wb25lbnQsXHJcbiAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1sncm93RGF0YScsIHJvd0RhdGFSZXNwb25zZV1dKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5lbGVtZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0aW9uKGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93cyAmJlxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3RlZC5sZW5ndGggPT09IHRoaXMuc21hcnRUYWJsZS5tYXhOdW1PZlNlbGVjdGFibGVSb3dzXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbj8udG9nZ2xlKGVsZW1lbnQpO1xyXG4gICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQubmV4dCgpO1xyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25TZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd01lbnVCdXR0b24oZWxlbWVudDogYW55LCBidXR0b246IFNtYXJ0VGFibGVCdXR0b24pOiBib29sZWFuIHtcclxuICAgIGlmIChidXR0b24ubWVudUl0ZW1CdXR0b25zKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwgYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSEpLmxlbmd0aDtcclxuICAgICAgICByZXR1cm4gbGVuZ3RoID4gMDtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIFNtYXJ0T2JqZWN0VXRpbGl0eS5nZXRWYWx1ZUJ5UGF0aChlbGVtZW50LCBoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0J1dHRvbihidXR0b246IFNtYXJ0VGFibGVCdXR0b24sIGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGJ1dHRvbi5zaG93QnV0dG9uSWYpIHtcclxuICAgICAgcmV0dXJuIGJ1dHRvbi5zaG93QnV0dG9uSWYoZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5zZWxlY3RhYmxlUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoXHJcbiAgICAgICAgZWxlbWVudCxcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0YWJsZVByb3BlcnR5TmFtZVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gc2VsZWN0YWJsZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGFibGUgPT09IG51bGwgPyBmYWxzZSA6ICFzZWxlY3RhYmxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKSA/PyBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luYWxQcm9wZXJ0eShoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGgoJ2RhdGEuJykpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlci5zdWJzdHJpbmcoJ2RhdGEuJy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhlYWRlcjtcclxuICB9XHJcblxyXG4gIGlzSW1hZ2VSZXNvdXJjZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWVsZW1lbnQuaWNvbnMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHByb3BlcnR5ID0gdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcik7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZWxlbWVudC5pY29ucykuc29tZSgoa2V5KSA9PiBrZXkgPT09IHByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VJY29ucyhlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogSW1hZ2VSZXNvdXJjZVtdIHtcclxuICAgIGlmIChlbGVtZW50Py5pY29ucykge1xyXG4gICAgICBsZXQgaWNvbkNvZGVzID0gZWxlbWVudD8uaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildO1xyXG4gICAgICByZXR1cm4gaWNvbkNvZGVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUljb24oZWxlbWVudDogYW55LCBoZWFkZXI6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gZWxlbWVudC5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV0uaWRlbnRpZmllcjtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VDb2xvcihlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5jb2xvciA/PyAncHJpbWFyeSc7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlU3R5bGUocmVzb3VyY2U6IEltYWdlUmVzb3VyY2UpOiBhbnkge1xyXG4gICAgcmV0dXJuIHJlc291cmNlLnN0eWxlID8gcmVzb3VyY2Uuc3R5bGUgOiB7fTtcclxuICB9XHJcblxyXG4gIG9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZXZlbnQ6IGFueSwgcm93OiBhbnkpIHtcclxuICAgIGxldCBhY3Rpb25Db2Rlc0Zyb21Sb3cgPSByb3c/LmFjdGlvbnM/Lm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4gYWN0aW9uLmNvZGUpO1xyXG4gICAgaWYgKCFhY3Rpb25Db2Rlc0Zyb21Sb3cpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbHRlcmVkQWN0aW9ucyA9IHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucz8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+XHJcbiAgICAgIGFjdGlvbkNvZGVzRnJvbVJvdy5pbmNsdWRlcyhhY3Rpb24uY29kZSEpXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChmaWx0ZXJlZEFjdGlvbnMgJiYgZmlsdGVyZWRBY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGZpbHRlcmVkQWN0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKHJvdyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbk1lbnVDb21wb25lbnRzXHJcbiAgICAgICAgLnRvQXJyYXkoKVxyXG4gICAgICAgIC5maW5kKChjb21wOiBEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KSA9PiBjb21wLnJvdy5pZCA9PT0gcm93LmlkKVxyXG4gICAgICAgID8ub3BlbkRlZmF1bHRBY3Rpb25zTWVudShldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0QWN0aW9uc0ZvclJvdyhlbGVtZW50OiBhbnkpOiBNYXA8U21hcnRUYWJsZUJ1dHRvbiwgVWlBY3Rpb24+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmIChlbGVtZW50Py5hY3Rpb25zKSB7XHJcbiAgICAgIGNvbnN0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IG5ldyBNYXA8c3RyaW5nLCBVaUFjdGlvbj4oXHJcbiAgICAgICAgZWxlbWVudD8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBbYWN0aW9uLmNvZGUsIGFjdGlvbl0pXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBuZXcgTWFwPFNtYXJ0VGFibGVCdXR0b24sIFVpQWN0aW9uPihcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnNcclxuICAgICAgICAgID8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+IGFjdGlvbkNvZGVzRnJvbVJvdy5oYXMoYWN0aW9uLmNvZGUhKSlcclxuICAgICAgICAgIC5tYXAoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT4gW2FjdGlvbiwgYWN0aW9uQ29kZXNGcm9tUm93LmdldChhY3Rpb24uY29kZSEpIV0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -267,10 +267,10 @@ export class SmarttreeGenericService extends SmarttreeService {
|
|
|
267
267
|
handleSpecificDemandsAsynchronously(uiAction, uiActionRequest) {
|
|
268
268
|
throw new Error('Method not implemented.');
|
|
269
269
|
}
|
|
270
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
271
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
270
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttreeGenericService, deps: [{ token: i0.Injector }, { token: 'pageName' }, { token: 'treeId' }, { token: 'treeMenuIcon' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
271
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttreeGenericService, providedIn: 'root' }); }
|
|
272
272
|
}
|
|
273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttreeGenericService, decorators: [{
|
|
274
274
|
type: Injectable,
|
|
275
275
|
args: [{
|
|
276
276
|
providedIn: 'root',
|
|
@@ -285,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
285
285
|
type: Inject,
|
|
286
286
|
args: ['treeMenuIcon']
|
|
287
287
|
}] }] });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBSXZCLHlCQUF5QixFQUd6QixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVXhDLE1BQU0sT0FBTyx1QkFDWCxTQUFRLGdCQUFpQztJQWlCekMsWUFDRSxNQUFnQixFQUNjLFFBQWdCLEVBQ2xCLE1BQWMsRUFDVixZQUFxQjtRQUVyRCxLQUFLLEVBQUUsQ0FBQztRQUpzQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDVixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQWxCdkQseUJBQXlCO1FBQ3pCLFdBQU0sR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuRCx3QkFBbUIsR0FBb0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWtCL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMs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Q0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUN2RSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQsbUNBQW1DLENBQ2pDLFFBQWtCLEVBQ2xCLGVBQWdDO1FBRWhDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDOzhHQTdVVSx1QkFBdUIsMENBb0J4QixVQUFVLGFBQ1YsUUFBUSxhQUNSLGNBQWM7a0hBdEJiLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXHJcbiAgVWlBY3Rpb24sXHJcbiAgVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcclxuICBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxyXG4gIFVpQWN0aW9uTW9kZWwsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFVpQWN0aW9uU2VydmljZSxcclxuICBVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2UsXHJcbiAgVXNlVWlBY3Rpb24sXHJcbn0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3Byb2plY3RzJztcclxuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUtYXBpL2FwaS90cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydFRyZWVOb2RlLCBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZSB9IGZyb20gJy4vc21hcnR0cmVlLm1vZGVsJztcclxuaW1wb3J0IHsgU21hcnR0cmVlU2VydmljZSB9IGZyb20gJy4vc21hcnR0cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJ2Zhc3QtZXF1YWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnR0cmVlQ29uZmlndXJhdGlvbiB7XHJcbiAgdHJlZWlkOiBzdHJpbmc7XHJcbiAgcGFnZU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlXHJcbiAgZXh0ZW5kcyBTbWFydHRyZWVTZXJ2aWNlPFNtYXJ0VHJlZU5vZGVbXT5cclxuICBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uXHJcbntcclxuICAvLyBVc2VVaUFjdGlvbiBwcm9wZXJ0aWVzXHJcbiAgc3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICByZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdWlBY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgc2VsZWN0ZWROb2RlPzogU21hcnRUcmVlTm9kZTtcclxuXHJcbiAgcHJvdGVjdGVkIHZpZXdDb250ZXh0ITogU21hcnRWaWV3Q29udGV4dFNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlITogVHJlZVNlcnZpY2U7XHJcblxyXG4gIHByaXZhdGUgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSE6IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XHJcbiAgcHJpdmF0ZSB1aUFjdGlvblNlcnZpY2UhOiBVaUFjdGlvblNlcnZpY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW5qZWN0OiBJbmplY3RvcixcclxuICAgIEBJbmplY3QoJ3BhZ2VOYW1lJykgcHJvdGVjdGVkIHBhZ2VOYW1lOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KCd0cmVlSWQnKSBwcm90ZWN0ZWQgdHJlZUlkOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KCd0cmVlTWVudUljb24nKSBwcml2YXRlIHRyZWVNZW51SWNvbj86IHN0cmluZ1xyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMudHJlZU1lbnVJY29uKSB7XHJcbiAgICAgIHRoaXMudHJlZU1lbnVJY29uID0gaW5qZWN0LmdldCgndHJlZU1lbnVJY29uJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbmZpZ3VyZVRyZWUoe1xyXG4gICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgdHJlZWlkOiB0aGlzLnRyZWVJZCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQgPSBpbmplY3QuZ2V0KFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlKTtcclxuICAgIHRoaXMuc2VydmljZSA9IGluamVjdC5nZXQoVHJlZVNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMudWlBY3Rpb25TZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdFVpQWN0aW9uTW9kZWxzKHVpQWN0aW9uczogVWlBY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy51aUFjdGlvbk1vZGVscyA9IHVpQWN0aW9ucy5tYXAoKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcclxuICAgICAgICB1aUFjdGlvbixcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlVHJlZShjb25maWd1cmF0aW9uOiBTbWFydHRyZWVDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyZWVJZCA9IGNvbmZpZ3VyYXRpb24udHJlZWlkO1xyXG4gICAgdGhpcy5wYWdlTmFtZSA9IGNvbmZpZ3VyYXRpb24ucGFnZU5hbWU7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMudmlld0NvbnRleHQuaGFzVmlld0NvbnRleHRVdWlkKCkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5kb3dubG9hZFRyZWUoKS50aGVuKChyb290Tm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICAgIGlmICghZGVlcEVxdWFsKHRoaXMudHJlZUZyb21CYWNrZW5kLCByb290Tm9kZXMpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVGcm9tQmFja2VuZCA9IHJvb3ROb2RlcztcclxuICAgICAgICAgIHRoaXMuc3luY1RyZWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBhc3luYyBkb3dubG9hZFRyZWUoKTogUHJvbWlzZTxTbWFydFRyZWVOb2RlW10+IHtcclxuICAgIGxldCB1dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcclxuICAgIGNvbnN0IHJvb3ROb2RlcyA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0Um9vdE5vZGVzMih1dWlkLCB0aGlzLnRyZWVJZCEpLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gICAgY29uc3QgdWlBY3Rpb25zID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5nZXRNYWluQWN0aW9uczIodXVpZCwgdGhpcy50cmVlSWQhKS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodWlBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0VWlBY3Rpb25Nb2RlbHModWlBY3Rpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXJvb3ROb2Rlcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jvb3ROb2RlcyBhcmUgdW5kZWZpbmVkIScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvb3ROb2RlcztcclxuICB9XHJcbiAgb3ZlcnJpZGUgYXN5bmMgZG93bmxvYWRDaGlsZHJlbihwYXJlbnROb2RlOiBTbWFydFRyZWVOb2RlKTogUHJvbWlzZTxTbWFydFRyZWVOb2RlW10+IHtcclxuICAgIGxldCB1dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5nZXRDaGlsZHJlbk5vZGVzMih1dWlkLCB0aGlzLnRyZWVJZCEsIHBhcmVudE5vZGUuaWRlbnRpZmllciEpLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgd2l0aCBpZGVudGlmaWVyICR7cGFyZW50Tm9kZS5pZGVudGlmaWVyfSBkb2VzIG5vdCBoYXZlIGNoaWxkcmVuLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjaGlsZHJlbjtcclxuICB9XHJcbiAgb3ZlcnJpZGUgYXN5bmMgb25UcmVlTm9kZU9wZW4odHJlZU5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB2aWV3VXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lISk7XHJcblxyXG4gICAgaWYgKHRyZWVOb2RlPy5leHBhbmRlZCkge1xyXG4gICAgICBsZXQgdGVtcFRyZWVOb2RlID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNvbGxhcHNlTm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGUuaWRlbnRpZmllciEpLnRvUHJvbWlzZSgpXHJcbiAgICAgICk7XHJcbiAgICAgIHRyZWVOb2RlID0gdGVtcFRyZWVOb2RlITtcclxuICAgIH0gZWxzZSBpZiAoIXRyZWVOb2RlPy5leHBhbmRlZCkge1xyXG4gICAgICBsZXQgdGVtcFRyZWVOb2RlID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmV4cGFuZE5vZGUyKHZpZXdVdWlkLCB0aGlzLnRyZWVJZCEsIHRyZWVOb2RlPy5pZGVudGlmaWVyISkudG9Qcm9taXNlKClcclxuICAgICAgKTtcclxuICAgICAgdHJlZU5vZGUgPSB0ZW1wVHJlZU5vZGUhO1xyXG4gICAgfVxyXG4gICAgbGV0IG5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZSh0cmVlTm9kZT8uaWRlbnRpZmllciEsIHRoaXMudHJlZUZyb21CYWNrZW5kISk7XHJcblxyXG4gICAgbm9kZSEuZXhwYW5kZWQgPSB0cmVlTm9kZT8uZXhwYW5kZWQ7XHJcbiAgICBub2RlIS5jaGlsZHJlbk5vZGVzID0gdHJlZU5vZGU/LmNoaWxkcmVuTm9kZXM7XHJcbiAgICB0aGlzLnN5bmNUcmVlKCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG9uVHJlZU5vZGVDbGljayh0cmVlTm9kZTogU21hcnRUcmVlTm9kZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RGb2xkZXIodHJlZU5vZGUuaWRlbnRpZmllciEsIHRyZWVOb2RlKTtcclxuICB9XHJcbiAgYXN5bmMgc2VsZWN0Rm9sZGVyKGZvbGRlclVyaTogc3RyaW5nLCB0cmVlTm9kZT86IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB2aWV3VXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lISk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZWRUcmVlTm9kZSA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2Uuc2VsZWN0Tm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGUhLmlkZW50aWZpZXIhKS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSB1cGRhdGVkVHJlZU5vZGU7XHJcbiAgICBsZXQgbm9kZSA9IHRoaXMuZGVlcFNlYXJjaFRyZWVOb2RlKHVwZGF0ZWRUcmVlTm9kZT8uaWRlbnRpZmllciEsIHRoaXMudHJlZUZyb21CYWNrZW5kISk7XHJcbiAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1RyZWUgbm9kZSBkb2VzIG5vdCBleGlzdCcpO1xyXG4gICAgfVxyXG4gICAgbm9kZS5leHBhbmRlZCA9IHVwZGF0ZWRUcmVlTm9kZT8uZXhwYW5kZWQhO1xyXG4gICAgbm9kZS5jaGlsZHJlbk5vZGVzID0gdXBkYXRlZFRyZWVOb2RlPy5jaGlsZHJlbk5vZGVzITtcclxuICAgIG5vZGUuc2VsZWN0ZWQgPSB1cGRhdGVkVHJlZU5vZGU/LnNlbGVjdGVkITtcclxuICAgIHRyZWVOb2RlID0gdXBkYXRlZFRyZWVOb2RlO1xyXG4gICAgdGhpcy5zeW5jVHJlZSgpO1xyXG4gICAgLy90aGlzLnZpZXdDb250ZXh0LmdldEFuZFN5bmNWaWV3Q29udGV4dCh0aGlzLnZpZXdDb250ZXh0LmdldFZpZXdDb250ZXh0VXVpZCgpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVRyZWVPblRoZUZseSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgc3luY1RyZWUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy50cmVlRnJvbUJhY2tlbmQgPT09IG51bGwgfHwgdGhpcy50cmVlRnJvbUJhY2tlbmQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAvL3Rocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gdHJlZUZyb21CYWNrZW5kIGF2YWlsYWJsZSEnKTtcclxuICAgICAgY29uc29sZS53YXJuKCdUaGVyZSBpcyBubyB0cmVlRnJvbUJhY2tlbmQgYXZhaWxhYmxlIGluIHN5bmNUcmVlIScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmNhY2hlQWN0aW9uRGVzY2lwdG9ycyh0aGlzLmdldEFsbE5vZGVzKHRoaXMudHJlZUZyb21CYWNrZW5kISkpO1xyXG5cclxuICAgIGlmICghdGhpcy5zbWFydFRyZWVNb2RlbCkge1xyXG4gICAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsID0ge1xyXG4gICAgICAgIHJvb3ROb2RlczogW10sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNtYXJ0VHJlZU5vZGVzOiBTbWFydFRyZWVOb2RlW10gPSB0aGlzLmNyZWF0ZUJ1dHRvbnNGb3JUcmVlTm9kZXModGhpcy50cmVlRnJvbUJhY2tlbmQpO1xyXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsID0ge1xyXG4gICAgICByb290Tm9kZXM6IFtdLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc21hcnRUcmVlTW9kZWxDaGFuZ2VkLm5leHQodGhpcy5zbWFydFRyZWVNb2RlbCk7XHJcblxyXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbC5yb290Tm9kZXMgPSBzbWFydFRyZWVOb2RlcztcclxuXHJcbiAgICB0aGlzLmZpbmRTZWxlY3RlZCh0aGlzLnNtYXJ0VHJlZU1vZGVsLnJvb3ROb2Rlcyk7XHJcblxyXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbENoYW5nZWQubmV4dCh0aGlzLnNtYXJ0VHJlZU1vZGVsKTtcclxuICB9XHJcblxyXG4gIGRlZXBTZWFyY2hUcmVlTm9kZShpZGVudGlmaWVyOiBzdHJpbmcsIG5vZGVzOiBTbWFydFRyZWVOb2RlW10pOiBTbWFydFRyZWVOb2RlIHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCB0cmVlTm9kZTogU21hcnRUcmVlTm9kZSB8IHVuZGVmaW5lZDtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBub2Rlcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2luZGV4XTtcclxuXHJcbiAgICAgIGlmIChub2RlLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcclxuICAgICAgICB0cmVlTm9kZSA9IG5vZGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJlZU5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZShpZGVudGlmaWVyLCBub2RlLmNoaWxkcmVuTm9kZXMpO1xyXG4gICAgICAgIGlmICh0cmVlTm9kZSkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJlZU5vZGU7XHJcbiAgfVxyXG5cclxuICBmaW5kU2VsZWN0ZWQobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgcmV0dXJuIG5vZGVzLmZvckVhY2goKG5vZGU6IFNtYXJ0VHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKG5vZGUuc2VsZWN0ZWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFNlbGVjdGVkKG5vZGUuY2hpbGRyZW5Ob2Rlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQnV0dG9uc0ZvclRyZWVOb2Rlcyhub2RlczogU21hcnRUcmVlTm9kZVtdKTogU21hcnRUcmVlTm9kZVtdIHtcclxuICAgIGxldCBpY29uID0gdGhpcy50cmVlTWVudUljb24gPz8gJ21vcmVfdmVydCc7XHJcblxyXG4gICAgbm9kZXMubWFwKChub2RlOiBTbWFydFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIG5vZGUuYnV0dG9uID0gbm9kZS5hY3Rpb25zPy5sZW5ndGhcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgdHlwZTogU21hcnRUcmVlTm9kZUJ1dHRvblR5cGUuTUVOVSxcclxuICAgICAgICAgICAgaWNvbjogaWNvbixcclxuICAgICAgICAgICAgbWVudUl0ZW1CdXR0b25zOiBub2RlLmFjdGlvbnMubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk5PUk1BTCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsQnlBY3Rpb24oYWN0aW9uKSxcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0aGlzLmRvQWN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBhcmdzOiBbYWN0aW9uLCBub2RlLmlkZW50aWZpZXJdLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICBub2RlLmljb24gPSAnRm9sZGVycyc7XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuTm9kZXMpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTm9kZXMgPSB0aGlzLmNyZWF0ZUJ1dHRvbnNGb3JUcmVlTm9kZXMobm9kZS5jaGlsZHJlbk5vZGVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkb0FjdGlvbihhcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHVpQWN0aW9uOiBVaUFjdGlvbiA9IGFyZ3NbMF07XHJcbiAgICBsZXQgbm9kZVV1aWQ6IHN0cmluZyA9IGFyZ3NbMV07XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uLnBhcmFtcykge1xyXG4gICAgICB1aUFjdGlvbi5wYXJhbXNbJ25vZGVVdWlkJ10gPSBub2RlVXVpZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgICBub2RlVXVpZDogbm9kZVV1aWQsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwgPSB7XHJcbiAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICB9O1xyXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHVpQWN0aW9uTW9kZWw7XHJcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZS5leGVjdXRlKHVpQWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBbGxOb2Rlcyhub2RlczogU21hcnRUcmVlTm9kZVtdKTogU21hcnRUcmVlTm9kZVtdIHtcclxuICAgIHJldHVybiBub2Rlcy5mbGF0TWFwKChuKSA9PiBbbiwgLi4udGhpcy5nZXRBbGxOb2RlcyhuLmNoaWxkcmVuTm9kZXMpXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgY2FjaGVBY3Rpb25EZXNjaXB0b3JzKG5vZGVzOiBTbWFydFRyZWVOb2RlW10pIHtcclxuICAgIGxldCBuZXdVaUFjdGlvbnMgPSBuZXcgU2V0PFVpQWN0aW9uPigpO1xyXG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBub2RlLmFjdGlvbnNcclxuICAgICAgICA/LmZpbHRlcigodWlBY3Rpb246IFVpQWN0aW9uKSA9PiAhdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLmdldCh1aUFjdGlvbi5jb2RlISkpXHJcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4gbmV3VWlBY3Rpb25zLmFkZChhY3Rpb24pKTtcclxuICAgIH0pO1xyXG4gICAgZm9yIChsZXQgYWN0aW9uIG9mIG5ld1VpQWN0aW9ucykge1xyXG4gICAgICBpZiAoIXRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQoYWN0aW9uLmNvZGUhKSkge1xyXG4gICAgICAgIGxldCBkZXNjcmlwdG9yID0gYXdhaXQgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLmdldEFjdGlvbkRlc2NyaXB0b3IoYWN0aW9uKTtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuc2V0KGFjdGlvbi5jb2RlISwgZGVzY3JpcHRvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0TGFiZWxCeUFjdGlvbihhY3Rpb246IFVpQWN0aW9uKTogc3RyaW5nIHtcclxuICAgIGxldCBkZXNjID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLmdldChhY3Rpb24uY29kZSEpO1xyXG4gICAgcmV0dXJuIGRlc2MhLnRpdGxlO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBVc2VVaUFjdGlvblxyXG4gIGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zIHtcclxuICAgIGlmICh1aUFjdGlvbi5wYXJhbXMgJiYgdWlBY3Rpb24ucGFyYW1zWydub2RlVXVpZCddKSB7XHJcbiAgICAgIGxldCBub2RlVXVpZCA9IHVpQWN0aW9uLnBhcmFtcyFbJ25vZGVVdWlkJ107XHJcblxyXG4gICAgICBsZXQgbm9kZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKHVpQWN0aW9uLmNvZGUgPT09ICdSRU5BTUUnKSB7XHJcbiAgICAgICAgbm9kZU5hbWUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZShub2RlVXVpZCwgdGhpcy50cmVlRnJvbUJhY2tlbmQhKT8uY2FwdGlvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmb3JUZXh0QXJlYTogJycsXHJcbiAgICAgICAgZm9yVGV4dEZpZWxkOiBub2RlTmFtZSA/IG5vZGVOYW1lIDogJycsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZm9yVGV4dEFyZWE6ICcnLFxyXG4gICAgICBmb3JUZXh0RmllbGQ6ICcnLFxyXG4gICAgfTtcclxuICB9XHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICBhc3luYyBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh1aUFjdGlvblJlcXVlc3QucGFyYW1zWydub2RlVXVpZCddKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybU5vZGVVaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybU1haW5VaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvL2F3YWl0IHRoaXMudmlld0NvbnRleHQuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XHJcblxyXG4gICAgdGhpcy5zeW5jVHJlZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGVyZm9ybU5vZGVVaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IG5vZGVJZCA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ25vZGVVdWlkJ107XHJcbiAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snbm9kZVV1aWQnXTtcclxuXHJcbiAgICBsZXQgdmlld1V1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSk7XHJcblxyXG4gICAgdGhpcy50cmVlRnJvbUJhY2tlbmQgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlcmZvcm1BY3Rpb24yKHZpZXdVdWlkLCB0aGlzLnRyZWVJZCEsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgYXN5bmMgcGVyZm9ybU1haW5VaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IHZpZXdVdWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUpO1xyXG5cclxuICAgIHRoaXMudHJlZUZyb21CYWNrZW5kID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5wZXJmb3JtTWFpbkFjdGlvbjIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uXHJcbn1cclxuIl19
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBSXZCLHlCQUF5QixFQUd6QixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVXhDLE1BQU0sT0FBTyx1QkFDWCxTQUFRLGdCQUFpQztJQWlCekMsWUFDRSxNQUFnQixFQUNjLFFBQWdCLEVBQ2xCLE1BQWMsRUFDVixZQUFxQjtRQUVyRCxLQUFLLEVBQUUsQ0FBQztRQUpzQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDVixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQWxCdkQseUJBQXlCO1FBQ3pCLFdBQU0sR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuRCx3QkFBbUIsR0FBb0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWtCL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMs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Q0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUN2RSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQsbUNBQW1DLENBQ2pDLFFBQWtCLEVBQ2xCLGVBQWdDO1FBRWhDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDOytHQTdVVSx1QkFBdUIsMENBb0J4QixVQUFVLGFBQ1YsUUFBUSxhQUNSLGNBQWM7bUhBdEJiLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXHJcbiAgVWlBY3Rpb24sXHJcbiAgVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcclxuICBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxyXG4gIFVpQWN0aW9uTW9kZWwsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFVpQWN0aW9uU2VydmljZSxcclxuICBVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2UsXHJcbiAgVXNlVWlBY3Rpb24sXHJcbn0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3Byb2plY3RzJztcclxuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUtYXBpL2FwaS90cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydFRyZWVOb2RlLCBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZSB9IGZyb20gJy4vc21hcnR0cmVlLm1vZGVsJztcclxuaW1wb3J0IHsgU21hcnR0cmVlU2VydmljZSB9IGZyb20gJy4vc21hcnR0cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJ2Zhc3QtZXF1YWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnR0cmVlQ29uZmlndXJhdGlvbiB7XHJcbiAgdHJlZWlkOiBzdHJpbmc7XHJcbiAgcGFnZU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlXHJcbiAgZXh0ZW5kcyBTbWFydHRyZWVTZXJ2aWNlPFNtYXJ0VHJlZU5vZGVbXT5cclxuICBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uXHJcbntcclxuICAvLyBVc2VVaUFjdGlvbiBwcm9wZXJ0aWVzXHJcbiAgc3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICByZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdWlBY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgc2VsZWN0ZWROb2RlPzogU21hcnRUcmVlTm9kZTtcclxuXHJcbiAgcHJvdGVjdGVkIHZpZXdDb250ZXh0ITogU21hcnRWaWV3Q29udGV4dFNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlITogVHJlZVNlcnZpY2U7XHJcblxyXG4gIHByaXZhdGUgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSE6IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XHJcbiAgcHJpdmF0ZSB1aUFjdGlvblNlcnZpY2UhOiBVaUFjdGlvblNlcnZpY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW5qZWN0OiBJbmplY3RvcixcclxuICAgIEBJbmplY3QoJ3BhZ2VOYW1lJykgcHJvdGVjdGVkIHBhZ2VOYW1lOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KCd0cmVlSWQnKSBwcm90ZWN0ZWQgdHJlZUlkOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KCd0cmVlTWVudUljb24nKSBwcml2YXRlIHRyZWVNZW51SWNvbj86IHN0cmluZ1xyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMudHJlZU1lbnVJY29uKSB7XHJcbiAgICAgIHRoaXMudHJlZU1lbnVJY29uID0gaW5qZWN0LmdldCgndHJlZU1lbnVJY29uJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbmZpZ3VyZVRyZWUoe1xyXG4gICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcclxuICAgICAgdHJlZWlkOiB0aGlzLnRyZWVJZCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQgPSBpbmplY3QuZ2V0KFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlKTtcclxuICAgIHRoaXMuc2VydmljZSA9IGluamVjdC5nZXQoVHJlZVNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMudWlBY3Rpb25TZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdFVpQWN0aW9uTW9kZWxzKHVpQWN0aW9uczogVWlBY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy51aUFjdGlvbk1vZGVscyA9IHVpQWN0aW9ucy5tYXAoKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcclxuICAgICAgICB1aUFjdGlvbixcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlVHJlZShjb25maWd1cmF0aW9uOiBTbWFydHRyZWVDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyZWVJZCA9IGNvbmZpZ3VyYXRpb24udHJlZWlkO1xyXG4gICAgdGhpcy5wYWdlTmFtZSA9IGNvbmZpZ3VyYXRpb24ucGFnZU5hbWU7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMudmlld0NvbnRleHQuaGFzVmlld0NvbnRleHRVdWlkKCkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5kb3dubG9hZFRyZWUoKS50aGVuKChyb290Tm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICAgIGlmICghZGVlcEVxdWFsKHRoaXMudHJlZUZyb21CYWNrZW5kLCByb290Tm9kZXMpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVGcm9tQmFja2VuZCA9IHJvb3ROb2RlcztcclxuICAgICAgICAgIHRoaXMuc3luY1RyZWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBhc3luYyBkb3dubG9hZFRyZWUoKTogUHJvbWlzZTxTbWFydFRyZWVOb2RlW10+IHtcclxuICAgIGxldCB1dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcclxuICAgIGNvbnN0IHJvb3ROb2RlcyA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0Um9vdE5vZGVzMih1dWlkLCB0aGlzLnRyZWVJZCEpLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gICAgY29uc3QgdWlBY3Rpb25zID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5nZXRNYWluQWN0aW9uczIodXVpZCwgdGhpcy50cmVlSWQhKS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodWlBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0VWlBY3Rpb25Nb2RlbHModWlBY3Rpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXJvb3ROb2Rlcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jvb3ROb2RlcyBhcmUgdW5kZWZpbmVkIScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvb3ROb2RlcztcclxuICB9XHJcbiAgb3ZlcnJpZGUgYXN5bmMgZG93bmxvYWRDaGlsZHJlbihwYXJlbnROb2RlOiBTbWFydFRyZWVOb2RlKTogUHJvbWlzZTxTbWFydFRyZWVOb2RlW10+IHtcclxuICAgIGxldCB1dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5nZXRDaGlsZHJlbk5vZGVzMih1dWlkLCB0aGlzLnRyZWVJZCEsIHBhcmVudE5vZGUuaWRlbnRpZmllciEpLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgd2l0aCBpZGVudGlmaWVyICR7cGFyZW50Tm9kZS5pZGVudGlmaWVyfSBkb2VzIG5vdCBoYXZlIGNoaWxkcmVuLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjaGlsZHJlbjtcclxuICB9XHJcbiAgb3ZlcnJpZGUgYXN5bmMgb25UcmVlTm9kZU9wZW4odHJlZU5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB2aWV3VXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lISk7XHJcblxyXG4gICAgaWYgKHRyZWVOb2RlPy5leHBhbmRlZCkge1xyXG4gICAgICBsZXQgdGVtcFRyZWVOb2RlID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNvbGxhcHNlTm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGUuaWRlbnRpZmllciEpLnRvUHJvbWlzZSgpXHJcbiAgICAgICk7XHJcbiAgICAgIHRyZWVOb2RlID0gdGVtcFRyZWVOb2RlITtcclxuICAgIH0gZWxzZSBpZiAoIXRyZWVOb2RlPy5leHBhbmRlZCkge1xyXG4gICAgICBsZXQgdGVtcFRyZWVOb2RlID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmV4cGFuZE5vZGUyKHZpZXdVdWlkLCB0aGlzLnRyZWVJZCEsIHRyZWVOb2RlPy5pZGVudGlmaWVyISkudG9Qcm9taXNlKClcclxuICAgICAgKTtcclxuICAgICAgdHJlZU5vZGUgPSB0ZW1wVHJlZU5vZGUhO1xyXG4gICAgfVxyXG4gICAgbGV0IG5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZSh0cmVlTm9kZT8uaWRlbnRpZmllciEsIHRoaXMudHJlZUZyb21CYWNrZW5kISk7XHJcblxyXG4gICAgbm9kZSEuZXhwYW5kZWQgPSB0cmVlTm9kZT8uZXhwYW5kZWQ7XHJcbiAgICBub2RlIS5jaGlsZHJlbk5vZGVzID0gdHJlZU5vZGU/LmNoaWxkcmVuTm9kZXM7XHJcbiAgICB0aGlzLnN5bmNUcmVlKCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG9uVHJlZU5vZGVDbGljayh0cmVlTm9kZTogU21hcnRUcmVlTm9kZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RGb2xkZXIodHJlZU5vZGUuaWRlbnRpZmllciEsIHRyZWVOb2RlKTtcclxuICB9XHJcbiAgYXN5bmMgc2VsZWN0Rm9sZGVyKGZvbGRlclVyaTogc3RyaW5nLCB0cmVlTm9kZT86IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB2aWV3VXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lISk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZWRUcmVlTm9kZSA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2Uuc2VsZWN0Tm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGUhLmlkZW50aWZpZXIhKS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSB1cGRhdGVkVHJlZU5vZGU7XHJcbiAgICBsZXQgbm9kZSA9IHRoaXMuZGVlcFNlYXJjaFRyZWVOb2RlKHVwZGF0ZWRUcmVlTm9kZT8uaWRlbnRpZmllciEsIHRoaXMudHJlZUZyb21CYWNrZW5kISk7XHJcbiAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1RyZWUgbm9kZSBkb2VzIG5vdCBleGlzdCcpO1xyXG4gICAgfVxyXG4gICAgbm9kZS5leHBhbmRlZCA9IHVwZGF0ZWRUcmVlTm9kZT8uZXhwYW5kZWQhO1xyXG4gICAgbm9kZS5jaGlsZHJlbk5vZGVzID0gdXBkYXRlZFRyZWVOb2RlPy5jaGlsZHJlbk5vZGVzITtcclxuICAgIG5vZGUuc2VsZWN0ZWQgPSB1cGRhdGVkVHJlZU5vZGU/LnNlbGVjdGVkITtcclxuICAgIHRyZWVOb2RlID0gdXBkYXRlZFRyZWVOb2RlO1xyXG4gICAgdGhpcy5zeW5jVHJlZSgpO1xyXG4gICAgLy90aGlzLnZpZXdDb250ZXh0LmdldEFuZFN5bmNWaWV3Q29udGV4dCh0aGlzLnZpZXdDb250ZXh0LmdldFZpZXdDb250ZXh0VXVpZCgpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVRyZWVPblRoZUZseSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgc3luY1RyZWUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy50cmVlRnJvbUJhY2tlbmQgPT09IG51bGwgfHwgdGhpcy50cmVlRnJvbUJhY2tlbmQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAvL3Rocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gdHJlZUZyb21CYWNrZW5kIGF2YWlsYWJsZSEnKTtcclxuICAgICAgY29uc29sZS53YXJuKCdUaGVyZSBpcyBubyB0cmVlRnJvbUJhY2tlbmQgYXZhaWxhYmxlIGluIHN5bmNUcmVlIScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmNhY2hlQWN0aW9uRGVzY2lwdG9ycyh0aGlzLmdldEFsbE5vZGVzKHRoaXMudHJlZUZyb21CYWNrZW5kISkpO1xyXG5cclxuICAgIGlmICghdGhpcy5zbWFydFRyZWVNb2RlbCkge1xyXG4gICAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsID0ge1xyXG4gICAgICAgIHJvb3ROb2RlczogW10sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNtYXJ0VHJlZU5vZGVzOiBTbWFydFRyZWVOb2RlW10gPSB0aGlzLmNyZWF0ZUJ1dHRvbnNGb3JUcmVlTm9kZXModGhpcy50cmVlRnJvbUJhY2tlbmQpO1xyXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsID0ge1xyXG4gICAgICByb290Tm9kZXM6IFtdLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc21hcnRUcmVlTW9kZWxDaGFuZ2VkLm5leHQodGhpcy5zbWFydFRyZWVNb2RlbCk7XHJcblxyXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbC5yb290Tm9kZXMgPSBzbWFydFRyZWVOb2RlcztcclxuXHJcbiAgICB0aGlzLmZpbmRTZWxlY3RlZCh0aGlzLnNtYXJ0VHJlZU1vZGVsLnJvb3ROb2Rlcyk7XHJcblxyXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbENoYW5nZWQubmV4dCh0aGlzLnNtYXJ0VHJlZU1vZGVsKTtcclxuICB9XHJcblxyXG4gIGRlZXBTZWFyY2hUcmVlTm9kZShpZGVudGlmaWVyOiBzdHJpbmcsIG5vZGVzOiBTbWFydFRyZWVOb2RlW10pOiBTbWFydFRyZWVOb2RlIHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCB0cmVlTm9kZTogU21hcnRUcmVlTm9kZSB8IHVuZGVmaW5lZDtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBub2Rlcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2luZGV4XTtcclxuXHJcbiAgICAgIGlmIChub2RlLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcclxuICAgICAgICB0cmVlTm9kZSA9IG5vZGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJlZU5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZShpZGVudGlmaWVyLCBub2RlLmNoaWxkcmVuTm9kZXMpO1xyXG4gICAgICAgIGlmICh0cmVlTm9kZSkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJlZU5vZGU7XHJcbiAgfVxyXG5cclxuICBmaW5kU2VsZWN0ZWQobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgcmV0dXJuIG5vZGVzLmZvckVhY2goKG5vZGU6IFNtYXJ0VHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKG5vZGUuc2VsZWN0ZWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFNlbGVjdGVkKG5vZGUuY2hpbGRyZW5Ob2Rlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQnV0dG9uc0ZvclRyZWVOb2Rlcyhub2RlczogU21hcnRUcmVlTm9kZVtdKTogU21hcnRUcmVlTm9kZVtdIHtcclxuICAgIGxldCBpY29uID0gdGhpcy50cmVlTWVudUljb24gPz8gJ21vcmVfdmVydCc7XHJcblxyXG4gICAgbm9kZXMubWFwKChub2RlOiBTbWFydFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIG5vZGUuYnV0dG9uID0gbm9kZS5hY3Rpb25zPy5sZW5ndGhcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgdHlwZTogU21hcnRUcmVlTm9kZUJ1dHRvblR5cGUuTUVOVSxcclxuICAgICAgICAgICAgaWNvbjogaWNvbixcclxuICAgICAgICAgICAgbWVudUl0ZW1CdXR0b25zOiBub2RlLmFjdGlvbnMubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk5PUk1BTCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsQnlBY3Rpb24oYWN0aW9uKSxcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0aGlzLmRvQWN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBhcmdzOiBbYWN0aW9uLCBub2RlLmlkZW50aWZpZXJdLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICBub2RlLmljb24gPSAnRm9sZGVycyc7XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuTm9kZXMpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTm9kZXMgPSB0aGlzLmNyZWF0ZUJ1dHRvbnNGb3JUcmVlTm9kZXMobm9kZS5jaGlsZHJlbk5vZGVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkb0FjdGlvbihhcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHVpQWN0aW9uOiBVaUFjdGlvbiA9IGFyZ3NbMF07XHJcbiAgICBsZXQgbm9kZVV1aWQ6IHN0cmluZyA9IGFyZ3NbMV07XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uLnBhcmFtcykge1xyXG4gICAgICB1aUFjdGlvbi5wYXJhbXNbJ25vZGVVdWlkJ10gPSBub2RlVXVpZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgICBub2RlVXVpZDogbm9kZVV1aWQsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwgPSB7XHJcbiAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICB9O1xyXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHVpQWN0aW9uTW9kZWw7XHJcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZS5leGVjdXRlKHVpQWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBbGxOb2Rlcyhub2RlczogU21hcnRUcmVlTm9kZVtdKTogU21hcnRUcmVlTm9kZVtdIHtcclxuICAgIHJldHVybiBub2Rlcy5mbGF0TWFwKChuKSA9PiBbbiwgLi4udGhpcy5nZXRBbGxOb2RlcyhuLmNoaWxkcmVuTm9kZXMpXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgY2FjaGVBY3Rpb25EZXNjaXB0b3JzKG5vZGVzOiBTbWFydFRyZWVOb2RlW10pIHtcclxuICAgIGxldCBuZXdVaUFjdGlvbnMgPSBuZXcgU2V0PFVpQWN0aW9uPigpO1xyXG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBub2RlLmFjdGlvbnNcclxuICAgICAgICA/LmZpbHRlcigodWlBY3Rpb246IFVpQWN0aW9uKSA9PiAhdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLmdldCh1aUFjdGlvbi5jb2RlISkpXHJcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4gbmV3VWlBY3Rpb25zLmFkZChhY3Rpb24pKTtcclxuICAgIH0pO1xyXG4gICAgZm9yIChsZXQgYWN0aW9uIG9mIG5ld1VpQWN0aW9ucykge1xyXG4gICAgICBpZiAoIXRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQoYWN0aW9uLmNvZGUhKSkge1xyXG4gICAgICAgIGxldCBkZXNjcmlwdG9yID0gYXdhaXQgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLmdldEFjdGlvbkRlc2NyaXB0b3IoYWN0aW9uKTtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuc2V0KGFjdGlvbi5jb2RlISwgZGVzY3JpcHRvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0TGFiZWxCeUFjdGlvbihhY3Rpb246IFVpQWN0aW9uKTogc3RyaW5nIHtcclxuICAgIGxldCBkZXNjID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLmdldChhY3Rpb24uY29kZSEpO1xyXG4gICAgcmV0dXJuIGRlc2MhLnRpdGxlO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBVc2VVaUFjdGlvblxyXG4gIGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zIHtcclxuICAgIGlmICh1aUFjdGlvbi5wYXJhbXMgJiYgdWlBY3Rpb24ucGFyYW1zWydub2RlVXVpZCddKSB7XHJcbiAgICAgIGxldCBub2RlVXVpZCA9IHVpQWN0aW9uLnBhcmFtcyFbJ25vZGVVdWlkJ107XHJcblxyXG4gICAgICBsZXQgbm9kZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKHVpQWN0aW9uLmNvZGUgPT09ICdSRU5BTUUnKSB7XHJcbiAgICAgICAgbm9kZU5hbWUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZShub2RlVXVpZCwgdGhpcy50cmVlRnJvbUJhY2tlbmQhKT8uY2FwdGlvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmb3JUZXh0QXJlYTogJycsXHJcbiAgICAgICAgZm9yVGV4dEZpZWxkOiBub2RlTmFtZSA/IG5vZGVOYW1lIDogJycsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZm9yVGV4dEFyZWE6ICcnLFxyXG4gICAgICBmb3JUZXh0RmllbGQ6ICcnLFxyXG4gICAgfTtcclxuICB9XHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICBhc3luYyBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh1aUFjdGlvblJlcXVlc3QucGFyYW1zWydub2RlVXVpZCddKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybU5vZGVVaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybU1haW5VaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvL2F3YWl0IHRoaXMudmlld0NvbnRleHQuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XHJcblxyXG4gICAgdGhpcy5zeW5jVHJlZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGVyZm9ybU5vZGVVaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IG5vZGVJZCA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ25vZGVVdWlkJ107XHJcbiAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snbm9kZVV1aWQnXTtcclxuXHJcbiAgICBsZXQgdmlld1V1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSk7XHJcblxyXG4gICAgdGhpcy50cmVlRnJvbUJhY2tlbmQgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlcmZvcm1BY3Rpb24yKHZpZXdVdWlkLCB0aGlzLnRyZWVJZCEsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgYXN5bmMgcGVyZm9ybU1haW5VaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IHZpZXdVdWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUpO1xyXG5cclxuICAgIHRoaXMudHJlZUZyb21CYWNrZW5kID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5wZXJmb3JtTWFpbkFjdGlvbjIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uXHJcbn1cclxuIl19
|