@hmcts/rpx-xui-common-lib 1.7.21 → 1.7.23-EUI-2065
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/bundles/hmcts-rpx-xui-common-lib.umd.js +40 -122
- package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
- package/esm2015/hmcts-rpx-xui-common-lib.js +25 -27
- package/esm2015/lib/components/generic-filter/generic-filter.component.js +2 -2
- package/esm2015/lib/components/selected-case/selected-case.component.js +5 -2
- package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +9 -3
- package/esm2015/lib/components/share-case/share-case.component.js +10 -3
- package/esm2015/lib/exui-common-lib.module.js +1 -5
- package/esm2015/lib/models/filter.model.js +2 -2
- package/esm2015/lib/models/person.model.js +3 -1
- package/esm5/hmcts-rpx-xui-common-lib.js +25 -27
- package/esm5/lib/components/generic-filter/generic-filter.component.js +2 -2
- package/esm5/lib/components/selected-case/selected-case.component.js +5 -2
- package/esm5/lib/components/selected-case-list/selected-case-list.component.js +9 -3
- package/esm5/lib/components/share-case/share-case.component.js +10 -3
- package/esm5/lib/exui-common-lib.module.js +1 -5
- package/esm5/lib/models/filter.model.js +2 -2
- package/esm5/lib/models/person.model.js +3 -1
- package/fesm2015/hmcts-rpx-xui-common-lib.js +17 -86
- package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
- package/fesm5/hmcts-rpx-xui-common-lib.js +17 -97
- package/fesm5/hmcts-rpx-xui-common-lib.js.map +1 -1
- package/hmcts-rpx-xui-common-lib.d.ts +24 -26
- package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
- package/lib/components/selected-case/selected-case.component.d.ts +1 -0
- package/lib/components/selected-case-list/selected-case-list.component.d.ts +1 -0
- package/lib/components/share-case/share-case.component.d.ts +2 -0
- package/lib/models/filter.model.d.ts +2 -2
- package/lib/models/person.model.d.ts +2 -0
- package/package.json +1 -1
- package/esm2015/lib/components/find-service/find-service.component.js +0 -59
- package/esm2015/lib/components/search-service/search-service.component.js +0 -60
- package/esm5/lib/components/find-service/find-service.component.js +0 -64
- package/esm5/lib/components/search-service/search-service.component.js +0 -68
- package/lib/components/find-service/find-service.component.d.ts +0 -14
- package/lib/components/search-service/search-service.component.d.ts +0 -13
|
@@ -790,7 +790,7 @@ var GenericFilterComponent = /** @class */ (function () {
|
|
|
790
790
|
GenericFilterComponent.decorators = [
|
|
791
791
|
{ type: Component, args: [{
|
|
792
792
|
selector: 'xuilib-generic-filter',
|
|
793
|
-
template: "<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break govuk-section-break--visible elevated-break\">\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && (form.get(field.name).errors?.minLength || form.get(field.name).errors?.maxLength)}\">\n <h3 *ngIf=\"field.title\" class=\"govuk-heading-s\">{{field.title}}</h3>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMinSelectedError && submitted && form.get(field.name).errors?.minLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.minSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.maxSelectedError}}\n </span>\n <div class=\"govuk-body\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.
|
|
793
|
+
template: "<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break govuk-section-break--visible elevated-break\">\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && (form.get(field.name).errors?.minLength || form.get(field.name).errors?.maxLength)}\">\n <h3 *ngIf=\"field.title\" class=\"govuk-heading-s\">{{field.title}}</h3>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMinSelectedError && submitted && form.get(field.name).errors?.minLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.minSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.maxSelectedError}}\n </span>\n <div class=\"govuk-body\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.enableAddLocationButton\"\n [disabled]=\"disabled(field, form)\"\n [disableInputField]=\"field.disable\"\n [selectedLocations]=\"form.get(field.name)?.value\"\n [submitted]=\"submitted\"\n [services]=\"form.get(field.findLocationField)?.value\"\n [field]=\"field\"\n ></xuilib-find-location>\n </ng-container>\n </div>\n </div>\n </div>\n <hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\"/>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <button\n class=\"govuk-button govuk-!-margin-right-1 govuk-!-margin-bottom-0\"\n type=\"submit\"\n id=\"applyFilter\"\n [disabled]=\"config.enableDisabledButton && form.invalid\"\n >{{config.applyButtonText || 'Apply'}}</button>\n <button *ngIf=\"config.showCancelFilterButton\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\"\n type=\"button\"\n id=\"cancelFilter\"\n (click)=\"cancelFilter()\">{{ config.cancelButtonText || 'Cancel'}}</button>\n </div>\n </div>\n</form>\n",
|
|
794
794
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
795
795
|
encapsulation: ViewEncapsulation.None,
|
|
796
796
|
styles: [".contain-classes .elevated-break{position:relative;top:-10px}.contain-classes .xui-generic-filter .select-all{margin-bottom:10px}.contain-classes .xui-generic-filter .govuk-checkboxes{display:flex;flex-wrap:wrap}.contain-classes .xui-generic-filter .govuk-checkboxes>div{flex-grow:1;flex-shrink:0}"]
|
|
@@ -836,4 +836,4 @@ if (false) {
|
|
|
836
836
|
*/
|
|
837
837
|
GenericFilterComponent.prototype.fb;
|
|
838
838
|
}
|
|
839
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2dlbmVyaWMtZmlsdGVyL2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFrQixTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RjtJQVlFLGdDQUE2QixhQUE0QixFQUFtQixFQUFlO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQWE7UUFIcEYsY0FBUyxHQUFHLEtBQUssQ0FBQztJQUl6QixDQUFDO0lBS0Qsc0JBQVcsMENBQU07Ozs7UUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQzs7Ozs7UUFFRCxVQUNrQixLQUFtQjtZQUNuQyxJQUFJLENBQUMsT0FBTyx3QkFDUCxLQUFLLElBQ1IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRzs7OztnQkFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLHNCQUM3QixLQUFLLElBQ1IsdUJBQXVCLEVBQUUsS0FBSyxFQUM5Qix1QkFBdUIsRUFBRSxLQUFLLElBQzlCLEVBSmdDLENBSWhDLEVBQUMsR0FDSixDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFL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QWdCLEVBQUMsQ0FBQyxDQUFDO2lCQUNoRTthQUNGOzs7Ozs7Ozs7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7Z0JBeFlGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxrcVBBQTRDO29CQUU1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2lCQUN0Qzs7OztnQkFUTyxhQUFhO2dCQUhlLFdBQVc7Ozt5QkE0QjVDLEtBQUs7MkJBb0JMLEtBQUs7O0lBK1ZSLDZCQUFDO0NBQUEsQUF6WUQsSUF5WUM7U0FsWVksc0JBQXNCOzs7SUFDakMsc0NBQXVCOztJQUN2QiwyQ0FBeUI7O0lBQ3pCLHlDQUE2Qjs7Ozs7SUFNN0IseUNBQThCOzs7OztJQW9COUIsMkNBQWtDOzs7OztJQXhCdEIsK0NBQTZDOzs7OztJQUFFLG9DQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyQ29uZmlnLCBGaWx0ZXJFcnJvciwgRmlsdGVyRmllbGRDb25maWcsIEZpbHRlclNldHRpbmd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0ZpbHRlclNlcnZpY2V9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZmlsdGVyL2ZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7Z2V0VmFsdWVzLCBtYXhTZWxlY3RlZFZhbGlkYXRvciwgbWluU2VsZWN0ZWRWYWxpZGF0b3J9IGZyb20gJy4vZ2VuZXJpYy1maWx0ZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZ2VuZXJpYy1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9jb25maWc6IEZpbHRlckNvbmZpZztcblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGaWx0ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogRmlsdGVyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4udmFsdWUsXG4gICAgICBmaWVsZHM6IHZhbHVlLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGRpc3BsYXlNaW5TZWxlY3RlZEVycm9yOiBmYWxzZSxcbiAgICAgICAgZGlzcGxheU1heFNlbGVjdGVkRXJyb3I6IGZhbHNlLFxuICAgICAgfSkpXG4gICAgfTtcbiAgICB0aGlzLl9jb25maWcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NldHRpbmdzPzogRmlsdGVyU2V0dGluZztcblxuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IEZpbHRlclNldHRpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2V0dGluZ3ModmFsdWU6IEZpbHRlclNldHRpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmdldFNldHRpbmdzKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5maWVsZHMpIHtcbiAgICAgIHRoaXMubWVyZ2VEZWZhdWx0RmllbGRzKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFkZEZvcm1WYWxpZGF0b3JzKGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IFZhbGlkYXRvcnMge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgICBpZiAoZmllbGQgJiYgZmllbGQubWluU2VsZWN0ZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChtaW5TZWxlY3RlZFZhbGlkYXRvcihmaWVsZC5taW5TZWxlY3RlZCkpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZCAmJiBmaWVsZC5tYXhTZWxlY3RlZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKG1heFNlbGVjdGVkVmFsaWRhdG9yKGZpZWxkLm1heFNlbGVjdGVkKSk7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXR0aW5ncykge1xuICAgICAgdGhpcy5nZXRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLm1lcmdlRGVmYXVsdEZpZWxkcyh0aGlzLnNldHRpbmdzKTtcbiAgICB0aGlzLmJ1aWxkRm9ybSh0aGlzLmNvbmZpZywgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5mb3JtU3ViID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybVN1Yikge1xuICAgICAgdGhpcy5mb3JtU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhpZGRlbihmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQuc2hvd0NvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZpZWxkLnNob3dDb25kaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoZmllbGQubmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gZmllbGQuc2hvd0NvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgaWYgKGZvcm0udmFsdWUgJiYgZm9ybS52YWx1ZVtuYW1lXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLXBlcnNvbicpIHtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLXBlcnNvbicpIHtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQuZW5hYmxlQ29uZGl0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmaWVsZC5lbmFibGVDb25kaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoZmllbGQubmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gZmllbGQuZW5hYmxlQ29uZGl0aW9uLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAoZm9ybS52YWx1ZSAmJiBmb3JtLnZhbHVlW25hbWVdID09PSB2YWx1ZSkge1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtcGVyc29uJykge1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZmluZC1sb2NhdGlvbiBpcyBzcGVjaWFsIGNhc2Ugd2hlcmUgbmVlZCB0byByZXNldCB0ZXh0Ym94IChieSBleGlzdGluZyBkaXNhYmxpbmcgZnVuY3Rpb25hbGl0eSlcbiAgICAvLyBmaWVsZC5kaXNhYmxlIHJlZmVycmVkIHRvIGNvbXBvbmVudCBpdHNlbGZcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtbG9jYXRpb24nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gTm90ZTogZmllbGQuZGlzYWJsZSBkZWNpZGVzIHdoZXRoZXIgdG8gYWN0dWFsbHkgZGlzYWJsZSBvciBub3RcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZSA/IGZpZWxkLmRpc2FibGUgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICBmb3JtLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBpZiAoZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5fc2V0dGluZ3MgPSB7XG4gICAgICAgIGlkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgICAgZmllbGRzOiB0aGlzLmdldFNlbGVjdGVkVmFsdWVzKGZvcm0udmFsdWUsIHRoaXMuY29uZmlnKVxuICAgICAgfTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5naXZlbkVycm9ycy5uZXh0KG51bGwpO1xuICAgICAgY29uc3Qgc2V0dGluZ3MgPSB7Li4udGhpcy5zZXR0aW5ncywgcmVzZXQ6IGZhbHNlfTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5wZXJzaXN0KHNldHRpbmdzLCB0aGlzLmNvbmZpZy5wZXJzaXN0ZW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdEZvcm1FcnJvcnMoZm9ybSk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2hlbiBkb21haW4gY2hhbmdlcyBlbnN1cmUgdGhhdCBwZXJzb24gZmllbGQgaXMgcmVzZXRcbiAgcHVibGljIGZpZWxkQ2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIC8vIFRPRE8gLSBEbyBzaW1pbGFyIHdpdGgganVyaXNkaWN0aW9uL3NlcnZpY2UgZm9yIGNhc2V3b3JrZXJzIGJ5IHNlcnZpY2VzXG4gICAgaWYgKGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzICYmIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCByZXNldEZpZWxkIG9mIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzKSB7XG4gICAgICAgIHRoaXMucmVzZXRGaWVsZChyZXNldEZpZWxkLCBmb3JtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyB3aGVuIHVzZXIgZW50ZXJzIGlucHV0IGNoYW5nZSByYWRpbyBidXR0b25cbiAgcHVibGljIGlucHV0Q2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoZmllbGQucmFkaW9TZWxlY3Rpb25DaGFuZ2UgJiYgdHlwZW9mIGZpZWxkLnJhZGlvU2VsZWN0aW9uQ2hhbmdlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLmVuYWJsZUNvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgdGhpcy5mb3JtLmdldChuYW1lKS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuYnVpbGRGb3JtKHRoaXMuY29uZmlnLCB0aGlzLnNldHRpbmdzLCB0cnVlKTtcbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuY2FuY2VsU2V0dGluZykge1xuICAgICAgdGhpcy5fc2V0dGluZ3MuZmllbGRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcykpO1xuICAgIH1cbiAgICBjb25zdCBzZXR0aW5ncyA9IHsuLi50aGlzLnNldHRpbmdzLCByZXNldDogdHJ1ZX07XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnBlcnNpc3Qoc2V0dGluZ3MsIHRoaXMuY29uZmlnLnBlcnNpc3RlbmNlKTtcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZ2l2ZW5FcnJvcnMubmV4dChudWxsKTtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBlcnNvbkNvbnRyb2xzKHZhbHVlczogYW55LCBmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBsZXQga2V5cztcbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSkudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzID0gT2JqZWN0LmtleXModmFsdWVzKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSkgJiYgdGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKS5nZXQoa2V5KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlcyAmJiB2YWx1ZXNba2V5XSA/IHZhbHVlc1trZXldIDogbnVsbDtcbiAgICAgICAgdGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKS5nZXQoa2V5KS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VsZWN0QWxsKGV2ZW50OiBhbnksIGZvcm06IEZvcm1Hcm91cCwgaXRlbTogeyBrZXk6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgc2VsZWN0QWxsPzogdHJ1ZSB9LCBmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcbiAgICBjb25zdCBmb3JtQXJyYXk6IEZvcm1BcnJheSA9IGZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBpZiAoIWl0ZW0uc2VsZWN0QWxsKSB7XG4gICAgICBjb25zdCBhbGxDaGVja2VkID0gZm9ybUFycmF5LmNvbnRyb2xzLmV2ZXJ5KChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IGNvbnRyb2wudmFsdWUpO1xuICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSBudWxsO1xuICAgICAgY29uc3QgaGFzU2VsZWN0QWxsT3B0aW9uID0gZmllbGQub3B0aW9ucy5maW5kKChvcHRpb24sIGkpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0QWxsJykpIHtcbiAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgICAgY29uc3QgaXNBbGxDaGVja2VkRXhjbHVkaW5nVGhlU2VsZWN0QWxsT3B0aW9uID0gZm9ybUFycmF5LmNvbnRyb2xzLmZpbHRlcigoX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaTogbnVtYmVyKSA9PiBpICE9PSBpbmRleClcbiAgICAgICAgLmV2ZXJ5KChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IGNvbnRyb2wudmFsdWUpO1xuXG4gICAgICBpZiAoIWFsbENoZWNrZWQgJiYgaGFzU2VsZWN0QWxsT3B0aW9uICYmICFpc0NoZWNrZWQpIHtcbiAgICAgICAgZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XG4gICAgICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGhhc1NlbGVjdEFsbE9wdGlvbiAmJiAhYWxsQ2hlY2tlZCAmJiBpc0NoZWNrZWQgJiYgaXNBbGxDaGVja2VkRXhjbHVkaW5nVGhlU2VsZWN0QWxsT3B0aW9uKSB7XG4gICAgICAgIGZvcm1BcnJheS5jb250cm9sc1tpbmRleF0ucGF0Y2hWYWx1ZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmllbGQuY2hhbmdlUmVzZXRGaWVsZHMgJiYgZmllbGQuY2hhbmdlUmVzZXRGaWVsZHMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlc2V0RmllbGQgb2YgZmllbGQuY2hhbmdlUmVzZXRGaWVsZHMpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpZWxkKHJlc2V0RmllbGQsIGZvcm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaWVsZChyZXNldEZpZWxkOiBzdHJpbmcsIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChyZXNldEZpZWxkKTtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55W10gfSA9IHRoaXMuY29uZmlnLmNhbmNlbFNldHRpbmcuZmllbGRzLmZpbmQoKGYpID0+IGYubmFtZSA9PT0gcmVzZXRGaWVsZCk7XG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb250cm9sLnJlbW92ZUF0KGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbnRyb2wudmFsdWUpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICB0aGlzLnJlc2V0RmllbGQoa2V5LCBjb250cm9sKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLnZhbHVlICYmIGRlZmF1bHRWYWx1ZS52YWx1ZS5sZW5ndGggPyBkZWZhdWx0VmFsdWUudmFsdWVbMF0gOiBudWxsO1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZURlZmF1bHRGaWVsZHMoZmlsdGVyOiBGaWx0ZXJTZXR0aW5nKTogdm9pZCB7XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgZmlsdGVyLmZpZWxkcyA9IHRoaXMuZmlsdGVyU2VydmljZS5nZXQodGhpcy5jb25maWcuaWQpID8gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmNvbmZpZy5pZCkuZmllbGRzIDogZmlsdGVyLmZpZWxkcztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgIHRoaXMuX3NldHRpbmdzID0ge1xuICAgICAgICBpZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIGZpZWxkczogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcykpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0KHRoaXMuY29uZmlnLmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtKGNvbmZpZzogRmlsdGVyQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZywgcmVzZXQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZmluZFBlcnNvbkNvbnRyb2wgPSB0aGlzLmZvcm0gPyB0aGlzLmZvcm0uZ2V0KCdmaW5kUGVyc29uQ29udHJvbCcpIDogbnVsbDtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBpZiAoZmluZFBlcnNvbkNvbnRyb2wpIHtcbiAgICAgIC8vIGluIG9yZGVyIHRvIG1haW50YWluIGZpbmQgcGVyc29uIGNvbXBvbmVudCwgY29udHJvbCBuZWVkcyB0byBiZSBrZXB0XG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCBmaW5kUGVyc29uQ29udHJvbCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgY29uZmlnLmZpZWxkcykge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgfHwgZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94LWxhcmdlJykge1xuICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmJ1aWxkQ2hlY2tCb3hGb3JtQXJyYXkoZmllbGQsIHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUFycmF5KTtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtbG9jYXRpb24nKSB7XG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYnVpbGRGaW5kTG9jYXRpb25Gb3JtQXJyYXkoZmllbGQsIHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUFycmF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICAgICAgaWYgKGZpZWxkLm1pblNlbGVjdGVkICYmIGZpZWxkLm1pblNlbGVjdGVkID4gMCkge1xuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBudWxsO1xuICAgICAgICBpZiAocmVzZXQgJiYgY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgICAgICBjb25zdCBjYW5jZWxGaWVsZCA9IGNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNhbmNlbEZpZWxkICYmIGNhbmNlbEZpZWxkLnZhbHVlID8gY2FuY2VsRmllbGQudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfSBlbHNlIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBsYXN0U2F2ZWRWYWx1ZSA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGxhc3RTYXZlZFZhbHVlICYmIGxhc3RTYXZlZFZhbHVlID8gbGFzdFNhdmVkVmFsdWUudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBmaWVsZCBpcyBmaW5kLXBlcnNvbiBidWlsZCBhIGZvcm0gZ3JvdXA7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ2VtYWlsJykgPyBkZWZhdWx0VmFsdWUuZW1haWwgOiAnJywgdmFsaWRhdG9ycyksXG4gICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgICAgICBrbm93bkFzOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGZvcm1Hcm91cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUsIHZhbGlkYXRvcnMpO1xuICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgZmllbGQgdXBkYXRlcyBmaW5kIHBlcnNvbiBjb21wb25lbnQgc2V0IHRoZSBpbml0aWFsIGRvbWFpblxuICAgICAgICBpZiAoZmllbGQuZmluZFBlcnNvbkZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5maWVsZENoYW5nZWQoZmllbGQsIHRoaXMuZm9ybSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2hlY2tCb3hGb3JtQXJyYXkoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZyk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEdlbmVyaWNGaWx0ZXJDb21wb25lbnQuYWRkRm9ybVZhbGlkYXRvcnMoZmllbGQpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIHZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWVzO1xuICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5maWVsZHMpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5maWVsZHMuZmluZCgoZikgPT4gZi5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgZmllbGQub3B0aW9ucykge1xuICAgICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIGlmIChkZWZhdWx0VmFsdWVzICYmIEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlcy52YWx1ZSkpIHtcbiAgICAgICAgY2hlY2tlZCA9ICEhZGVmYXVsdFZhbHVlcy52YWx1ZS5maW5kKCh2YWx1ZSkgPT4gdmFsdWUgPT09IG9wdGlvbi5rZXkpO1xuICAgICAgfVxuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKGNoZWNrZWQpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1BcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaW5kTG9jYXRpb25Gb3JtQXJyYXkoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZyk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEdlbmVyaWNGaWx0ZXJDb21wb25lbnQuYWRkRm9ybVZhbGlkYXRvcnMoZmllbGQpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIHZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueVtdIH07XG4gICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmZpZWxkcykge1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMgJiYgZGVmYXVsdFZhbHVlcy52YWx1ZSAmJiBkZWZhdWx0VmFsdWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChjb25zdCBkZWZhdWx0VmFsdWUgb2YgZGVmYXVsdFZhbHVlcy52YWx1ZSkge1xuICAgICAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFZhbHVlcyhmb3JtVmFsdWVzOiBhbnksIGNvbmZpZzogRmlsdGVyQ29uZmlnKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybVZhbHVlcykubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1WYWx1ZXNbbmFtZV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gY29uZmlnLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLWxvY2F0aW9uJykge1xuICAgICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlcywgbmFtZX07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHt2YWx1ZTogZ2V0VmFsdWVzKGZpZWxkLm9wdGlvbnMsIHZhbHVlcyksIG5hbWV9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge3ZhbHVlOiBbdmFsdWVzXSwgbmFtZX07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtRXJyb3JzKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yczogRmlsdGVyRXJyb3JbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5jb25maWcuZmllbGRzKSB7XG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSBmb3JtLmdldChmaWVsZC5uYW1lKTtcbiAgICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmVycm9ycyAmJiBmb3JtR3JvdXAuZXJyb3JzLm1pbkxlbmd0aCkge1xuICAgICAgICBlcnJvcnMucHVzaCh7bmFtZTogZmllbGQubmFtZSwgZXJyb3I6IGZpZWxkLm1pblNlbGVjdGVkRXJyb3J9KTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmVycm9ycyAmJiBmb3JtR3JvdXAuZXJyb3JzLm1heExlbmd0aCkge1xuICAgICAgICBlcnJvcnMucHVzaCh7bmFtZTogZmllbGQubmFtZSwgZXJyb3I6IGZpZWxkLm1pblNlbGVjdGVkRXJyb3J9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5naXZlbkVycm9ycy5uZXh0KGVycm9ycyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
839
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2dlbmVyaWMtZmlsdGVyL2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFrQixTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RjtJQVlFLGdDQUE2QixhQUE0QixFQUFtQixFQUFlO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQWE7UUFIcEYsY0FBUyxHQUFHLEtBQUssQ0FBQztJQUl6QixDQUFDO0lBS0Qsc0JBQVcsMENBQU07Ozs7UUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQzs7Ozs7UUFFRCxVQUNrQixLQUFtQjtZQUNuQyxJQUFJLENBQUMsT0FBTyx3QkFDUCxLQUFLLElBQ1IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRzs7OztnQkFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLHNCQUM3QixLQUFLLElBQ1IsdUJBQXVCLEVBQUUsS0FBSyxFQUM5Qix1QkFBdUIsRUFBRSxLQUFLLElBQzlCLEVBSmdDLENBSWhDLEVBQUMsR0FDSixDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFL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QWdCLEVBQUMsQ0FBQyxDQUFDO2lCQUNoRTthQUNGOzs7Ozs7Ozs7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7Z0JBeFlGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyx5N05BQTRDO29CQUU1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2lCQUN0Qzs7OztnQkFUTyxhQUFhO2dCQUhlLFdBQVc7Ozt5QkE0QjVDLEtBQUs7MkJBb0JMLEtBQUs7O0lBK1ZSLDZCQUFDO0NBQUEsQUF6WUQsSUF5WUM7U0FsWVksc0JBQXNCOzs7SUFDakMsc0NBQXVCOztJQUN2QiwyQ0FBeUI7O0lBQ3pCLHlDQUE2Qjs7Ozs7SUFNN0IseUNBQThCOzs7OztJQW9COUIsMkNBQWtDOzs7OztJQXhCdEIsK0NBQTZDOzs7OztJQUFFLG9DQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyQ29uZmlnLCBGaWx0ZXJFcnJvciwgRmlsdGVyRmllbGRDb25maWcsIEZpbHRlclNldHRpbmd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0ZpbHRlclNlcnZpY2V9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZmlsdGVyL2ZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7Z2V0VmFsdWVzLCBtYXhTZWxlY3RlZFZhbGlkYXRvciwgbWluU2VsZWN0ZWRWYWxpZGF0b3J9IGZyb20gJy4vZ2VuZXJpYy1maWx0ZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZ2VuZXJpYy1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9jb25maWc6IEZpbHRlckNvbmZpZztcblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGaWx0ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogRmlsdGVyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4udmFsdWUsXG4gICAgICBmaWVsZHM6IHZhbHVlLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGRpc3BsYXlNaW5TZWxlY3RlZEVycm9yOiBmYWxzZSxcbiAgICAgICAgZGlzcGxheU1heFNlbGVjdGVkRXJyb3I6IGZhbHNlLFxuICAgICAgfSkpXG4gICAgfTtcbiAgICB0aGlzLl9jb25maWcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NldHRpbmdzPzogRmlsdGVyU2V0dGluZztcblxuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IEZpbHRlclNldHRpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2V0dGluZ3ModmFsdWU6IEZpbHRlclNldHRpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmdldFNldHRpbmdzKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5maWVsZHMpIHtcbiAgICAgIHRoaXMubWVyZ2VEZWZhdWx0RmllbGRzKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFkZEZvcm1WYWxpZGF0b3JzKGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IFZhbGlkYXRvcnMge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgICBpZiAoZmllbGQgJiYgZmllbGQubWluU2VsZWN0ZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChtaW5TZWxlY3RlZFZhbGlkYXRvcihmaWVsZC5taW5TZWxlY3RlZCkpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZCAmJiBmaWVsZC5tYXhTZWxlY3RlZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKG1heFNlbGVjdGVkVmFsaWRhdG9yKGZpZWxkLm1heFNlbGVjdGVkKSk7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXR0aW5ncykge1xuICAgICAgdGhpcy5nZXRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLm1lcmdlRGVmYXVsdEZpZWxkcyh0aGlzLnNldHRpbmdzKTtcbiAgICB0aGlzLmJ1aWxkRm9ybSh0aGlzLmNvbmZpZywgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5mb3JtU3ViID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybVN1Yikge1xuICAgICAgdGhpcy5mb3JtU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhpZGRlbihmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQuc2hvd0NvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZpZWxkLnNob3dDb25kaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoZmllbGQubmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gZmllbGQuc2hvd0NvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgaWYgKGZvcm0udmFsdWUgJiYgZm9ybS52YWx1ZVtuYW1lXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLXBlcnNvbicpIHtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLXBlcnNvbicpIHtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQuZW5hYmxlQ29uZGl0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmaWVsZC5lbmFibGVDb25kaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoZmllbGQubmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gZmllbGQuZW5hYmxlQ29uZGl0aW9uLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAoZm9ybS52YWx1ZSAmJiBmb3JtLnZhbHVlW25hbWVdID09PSB2YWx1ZSkge1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtcGVyc29uJykge1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZmluZC1sb2NhdGlvbiBpcyBzcGVjaWFsIGNhc2Ugd2hlcmUgbmVlZCB0byByZXNldCB0ZXh0Ym94IChieSBleGlzdGluZyBkaXNhYmxpbmcgZnVuY3Rpb25hbGl0eSlcbiAgICAvLyBmaWVsZC5kaXNhYmxlIHJlZmVycmVkIHRvIGNvbXBvbmVudCBpdHNlbGZcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtbG9jYXRpb24nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gTm90ZTogZmllbGQuZGlzYWJsZSBkZWNpZGVzIHdoZXRoZXIgdG8gYWN0dWFsbHkgZGlzYWJsZSBvciBub3RcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZSA/IGZpZWxkLmRpc2FibGUgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICBmb3JtLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBpZiAoZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5fc2V0dGluZ3MgPSB7XG4gICAgICAgIGlkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgICAgZmllbGRzOiB0aGlzLmdldFNlbGVjdGVkVmFsdWVzKGZvcm0udmFsdWUsIHRoaXMuY29uZmlnKVxuICAgICAgfTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5naXZlbkVycm9ycy5uZXh0KG51bGwpO1xuICAgICAgY29uc3Qgc2V0dGluZ3MgPSB7Li4udGhpcy5zZXR0aW5ncywgcmVzZXQ6IGZhbHNlfTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5wZXJzaXN0KHNldHRpbmdzLCB0aGlzLmNvbmZpZy5wZXJzaXN0ZW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdEZvcm1FcnJvcnMoZm9ybSk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2hlbiBkb21haW4gY2hhbmdlcyBlbnN1cmUgdGhhdCBwZXJzb24gZmllbGQgaXMgcmVzZXRcbiAgcHVibGljIGZpZWxkQ2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIC8vIFRPRE8gLSBEbyBzaW1pbGFyIHdpdGgganVyaXNkaWN0aW9uL3NlcnZpY2UgZm9yIGNhc2V3b3JrZXJzIGJ5IHNlcnZpY2VzXG4gICAgaWYgKGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzICYmIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCByZXNldEZpZWxkIG9mIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzKSB7XG4gICAgICAgIHRoaXMucmVzZXRGaWVsZChyZXNldEZpZWxkLCBmb3JtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyB3aGVuIHVzZXIgZW50ZXJzIGlucHV0IGNoYW5nZSByYWRpbyBidXR0b25cbiAgcHVibGljIGlucHV0Q2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoZmllbGQucmFkaW9TZWxlY3Rpb25DaGFuZ2UgJiYgdHlwZW9mIGZpZWxkLnJhZGlvU2VsZWN0aW9uQ2hhbmdlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLmVuYWJsZUNvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgdGhpcy5mb3JtLmdldChuYW1lKS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuYnVpbGRGb3JtKHRoaXMuY29uZmlnLCB0aGlzLnNldHRpbmdzLCB0cnVlKTtcbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuY2FuY2VsU2V0dGluZykge1xuICAgICAgdGhpcy5fc2V0dGluZ3MuZmllbGRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcykpO1xuICAgIH1cbiAgICBjb25zdCBzZXR0aW5ncyA9IHsuLi50aGlzLnNldHRpbmdzLCByZXNldDogdHJ1ZX07XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnBlcnNpc3Qoc2V0dGluZ3MsIHRoaXMuY29uZmlnLnBlcnNpc3RlbmNlKTtcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZ2l2ZW5FcnJvcnMubmV4dChudWxsKTtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBlcnNvbkNvbnRyb2xzKHZhbHVlczogYW55LCBmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBsZXQga2V5cztcbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSkudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzID0gT2JqZWN0LmtleXModmFsdWVzKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSkgJiYgdGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKS5nZXQoa2V5KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlcyAmJiB2YWx1ZXNba2V5XSA/IHZhbHVlc1trZXldIDogbnVsbDtcbiAgICAgICAgdGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKS5nZXQoa2V5KS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VsZWN0QWxsKGV2ZW50OiBhbnksIGZvcm06IEZvcm1Hcm91cCwgaXRlbTogeyBrZXk6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgc2VsZWN0QWxsPzogdHJ1ZSB9LCBmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcbiAgICBjb25zdCBmb3JtQXJyYXk6IEZvcm1BcnJheSA9IGZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBpZiAoIWl0ZW0uc2VsZWN0QWxsKSB7XG4gICAgICBjb25zdCBhbGxDaGVja2VkID0gZm9ybUFycmF5LmNvbnRyb2xzLmV2ZXJ5KChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IGNvbnRyb2wudmFsdWUpO1xuICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSBudWxsO1xuICAgICAgY29uc3QgaGFzU2VsZWN0QWxsT3B0aW9uID0gZmllbGQub3B0aW9ucy5maW5kKChvcHRpb24sIGkpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0QWxsJykpIHtcbiAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgICAgY29uc3QgaXNBbGxDaGVja2VkRXhjbHVkaW5nVGhlU2VsZWN0QWxsT3B0aW9uID0gZm9ybUFycmF5LmNvbnRyb2xzLmZpbHRlcigoX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaTogbnVtYmVyKSA9PiBpICE9PSBpbmRleClcbiAgICAgICAgLmV2ZXJ5KChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IGNvbnRyb2wudmFsdWUpO1xuXG4gICAgICBpZiAoIWFsbENoZWNrZWQgJiYgaGFzU2VsZWN0QWxsT3B0aW9uICYmICFpc0NoZWNrZWQpIHtcbiAgICAgICAgZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XG4gICAgICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGhhc1NlbGVjdEFsbE9wdGlvbiAmJiAhYWxsQ2hlY2tlZCAmJiBpc0NoZWNrZWQgJiYgaXNBbGxDaGVja2VkRXhjbHVkaW5nVGhlU2VsZWN0QWxsT3B0aW9uKSB7XG4gICAgICAgIGZvcm1BcnJheS5jb250cm9sc1tpbmRleF0ucGF0Y2hWYWx1ZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmllbGQuY2hhbmdlUmVzZXRGaWVsZHMgJiYgZmllbGQuY2hhbmdlUmVzZXRGaWVsZHMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlc2V0RmllbGQgb2YgZmllbGQuY2hhbmdlUmVzZXRGaWVsZHMpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpZWxkKHJlc2V0RmllbGQsIGZvcm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaWVsZChyZXNldEZpZWxkOiBzdHJpbmcsIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChyZXNldEZpZWxkKTtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55W10gfSA9IHRoaXMuY29uZmlnLmNhbmNlbFNldHRpbmcuZmllbGRzLmZpbmQoKGYpID0+IGYubmFtZSA9PT0gcmVzZXRGaWVsZCk7XG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb250cm9sLnJlbW92ZUF0KGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbnRyb2wudmFsdWUpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICB0aGlzLnJlc2V0RmllbGQoa2V5LCBjb250cm9sKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLnZhbHVlICYmIGRlZmF1bHRWYWx1ZS52YWx1ZS5sZW5ndGggPyBkZWZhdWx0VmFsdWUudmFsdWVbMF0gOiBudWxsO1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZURlZmF1bHRGaWVsZHMoZmlsdGVyOiBGaWx0ZXJTZXR0aW5nKTogdm9pZCB7XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgZmlsdGVyLmZpZWxkcyA9IHRoaXMuZmlsdGVyU2VydmljZS5nZXQodGhpcy5jb25maWcuaWQpID8gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmNvbmZpZy5pZCkuZmllbGRzIDogZmlsdGVyLmZpZWxkcztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgIHRoaXMuX3NldHRpbmdzID0ge1xuICAgICAgICBpZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIGZpZWxkczogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcykpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0KHRoaXMuY29uZmlnLmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtKGNvbmZpZzogRmlsdGVyQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZywgcmVzZXQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZmluZFBlcnNvbkNvbnRyb2wgPSB0aGlzLmZvcm0gPyB0aGlzLmZvcm0uZ2V0KCdmaW5kUGVyc29uQ29udHJvbCcpIDogbnVsbDtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBpZiAoZmluZFBlcnNvbkNvbnRyb2wpIHtcbiAgICAgIC8vIGluIG9yZGVyIHRvIG1haW50YWluIGZpbmQgcGVyc29uIGNvbXBvbmVudCwgY29udHJvbCBuZWVkcyB0byBiZSBrZXB0XG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCBmaW5kUGVyc29uQ29udHJvbCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgY29uZmlnLmZpZWxkcykge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgfHwgZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94LWxhcmdlJykge1xuICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmJ1aWxkQ2hlY2tCb3hGb3JtQXJyYXkoZmllbGQsIHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUFycmF5KTtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtbG9jYXRpb24nKSB7XG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYnVpbGRGaW5kTG9jYXRpb25Gb3JtQXJyYXkoZmllbGQsIHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUFycmF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICAgICAgaWYgKGZpZWxkLm1pblNlbGVjdGVkICYmIGZpZWxkLm1pblNlbGVjdGVkID4gMCkge1xuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBudWxsO1xuICAgICAgICBpZiAocmVzZXQgJiYgY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgICAgICBjb25zdCBjYW5jZWxGaWVsZCA9IGNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNhbmNlbEZpZWxkICYmIGNhbmNlbEZpZWxkLnZhbHVlID8gY2FuY2VsRmllbGQudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfSBlbHNlIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBsYXN0U2F2ZWRWYWx1ZSA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGxhc3RTYXZlZFZhbHVlICYmIGxhc3RTYXZlZFZhbHVlID8gbGFzdFNhdmVkVmFsdWUudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBmaWVsZCBpcyBmaW5kLXBlcnNvbiBidWlsZCBhIGZvcm0gZ3JvdXA7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ2VtYWlsJykgPyBkZWZhdWx0VmFsdWUuZW1haWwgOiAnJywgdmFsaWRhdG9ycyksXG4gICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgICAgICBrbm93bkFzOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGZvcm1Hcm91cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUsIHZhbGlkYXRvcnMpO1xuICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgZmllbGQgdXBkYXRlcyBmaW5kIHBlcnNvbiBjb21wb25lbnQgc2V0IHRoZSBpbml0aWFsIGRvbWFpblxuICAgICAgICBpZiAoZmllbGQuZmluZFBlcnNvbkZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5maWVsZENoYW5nZWQoZmllbGQsIHRoaXMuZm9ybSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2hlY2tCb3hGb3JtQXJyYXkoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZyk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEdlbmVyaWNGaWx0ZXJDb21wb25lbnQuYWRkRm9ybVZhbGlkYXRvcnMoZmllbGQpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIHZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWVzO1xuICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5maWVsZHMpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5maWVsZHMuZmluZCgoZikgPT4gZi5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgZmllbGQub3B0aW9ucykge1xuICAgICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIGlmIChkZWZhdWx0VmFsdWVzICYmIEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlcy52YWx1ZSkpIHtcbiAgICAgICAgY2hlY2tlZCA9ICEhZGVmYXVsdFZhbHVlcy52YWx1ZS5maW5kKCh2YWx1ZSkgPT4gdmFsdWUgPT09IG9wdGlvbi5rZXkpO1xuICAgICAgfVxuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKGNoZWNrZWQpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1BcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaW5kTG9jYXRpb25Gb3JtQXJyYXkoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZyk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEdlbmVyaWNGaWx0ZXJDb21wb25lbnQuYWRkRm9ybVZhbGlkYXRvcnMoZmllbGQpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIHZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueVtdIH07XG4gICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmZpZWxkcykge1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMgJiYgZGVmYXVsdFZhbHVlcy52YWx1ZSAmJiBkZWZhdWx0VmFsdWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChjb25zdCBkZWZhdWx0VmFsdWUgb2YgZGVmYXVsdFZhbHVlcy52YWx1ZSkge1xuICAgICAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFZhbHVlcyhmb3JtVmFsdWVzOiBhbnksIGNvbmZpZzogRmlsdGVyQ29uZmlnKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybVZhbHVlcykubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1WYWx1ZXNbbmFtZV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gY29uZmlnLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLWxvY2F0aW9uJykge1xuICAgICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlcywgbmFtZX07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHt2YWx1ZTogZ2V0VmFsdWVzKGZpZWxkLm9wdGlvbnMsIHZhbHVlcyksIG5hbWV9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge3ZhbHVlOiBbdmFsdWVzXSwgbmFtZX07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtRXJyb3JzKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yczogRmlsdGVyRXJyb3JbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5jb25maWcuZmllbGRzKSB7XG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSBmb3JtLmdldChmaWVsZC5uYW1lKTtcbiAgICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmVycm9ycyAmJiBmb3JtR3JvdXAuZXJyb3JzLm1pbkxlbmd0aCkge1xuICAgICAgICBlcnJvcnMucHVzaCh7bmFtZTogZmllbGQubmFtZSwgZXJyb3I6IGZpZWxkLm1pblNlbGVjdGVkRXJyb3J9KTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmVycm9ycyAmJiBmb3JtR3JvdXAuZXJyb3JzLm1heExlbmd0aCkge1xuICAgICAgICBlcnJvcnMucHVzaCh7bmFtZTogZmllbGQubmFtZSwgZXJyb3I6IGZpZWxkLm1pblNlbGVjdGVkRXJyb3J9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5naXZlbkVycm9ycy5uZXh0KGVycm9ycyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -383,7 +383,7 @@ var SelectedCaseComponent = /** @class */ (function () {
|
|
|
383
383
|
SelectedCaseComponent.decorators = [
|
|
384
384
|
{ type: Component, args: [{
|
|
385
385
|
selector: 'xuilib-selected-case',
|
|
386
|
-
template: "<div id=\"{{buildElementId('govuk-accordion__section')}}\" class=\"govuk-accordion__section\">\n <div class=\"govuk-grid-row govuk-case-header\">\n <div class=\"govuk-grid-column-three-quarters\">\n <h3 id=\"{{buildElementId('case-title')}}\" class=\"govuk-case-title\">{{ sharedCase.caseTitle }}</h3>\n <h1 id=\"{{buildElementId('case-id')}}\" class=\"govuk-case-sub-title\">{{ sharedCase.caseId }}</h1>\n </div>\n <div class=\"govuk-grid-column-twenty-percent\">\n <button id=\"{{buildElementId('btn-deselect-case')}}\" class=\"govuk-button hmcts-button--secondary\" (click)=\"onDeselect(sharedCase)\" title=\"Deselect case\">Deselect case</button>\n </div>\n <div class=\"govuk-accordion__section-header govuk-grid-column-five-percent\">\n <div class=\"govuk-accordion__section-heading\">\n <button type=\"button\" id=\"{{buildElementId('accordion-with-summary-sections-heading')}}\"\n aria-controls=\"accordion-with-summary-sections-content-1\" class=\"govuk-accordion__section-button\"\n aria-describedby=\"accordion-with-summary-sections-summary-1\" aria-expanded=\"false\" title=\"Expand or Collapse\">\n <span class=\"govuk-accordion__icon\" aria-hidden=\"true\"></span></button>\n </div>\n </div>\n </div>\n <div id=\"{{buildElementId('accordion-with-summary-sections-content')}}\" class=\"govuk-accordion__section-content\"\n aria-labelledby=\"buildElementId('accordion-with-summary-sections-heading')\" >\n <div class=\"govuk-grid-row\" *ngIf=\"showNoUsersAccessInfo()\">\n <span id=\"{{buildElementId('access-info-no-user')}}\" class=\"govuk-div-align-left\">No users from your organisation currently have access to this case.</span>\n </div>\n <div class=\"govuk-grid-row\" *ngIf=\"showUserHasAccessInfo()\">\n <span id=\"{{buildElementId('access-info-has-users')}}\" class=\"govuk-div-align-left\">Users from your organisation with access to this case.</span>\n </div>\n <table class=\"govuk-table\" *ngIf=\"showUserAccessTable()\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th id=\"{{buildElementId('name-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Name</th>\n <th id=\"{{buildElementId('email-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Email address</th>\n <th id=\"{{buildElementId('action-heading')}}\" class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">Actions</th>\n <th id=\"{{buildElementId('label-heading')}}\" class=\"govuk-table__header govuk-table-column-label\" scope=\"col\"> </th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let user of combinedSortedShares; index as idx; trackBy: trackByUserId\">\n <td id=\"user-full-name-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td id=\"user-email-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <a *ngIf=\"canRemove(sharedCase.caseId, user) | async\" (click)=\"onRemove(user, sharedCase)\" href=\"javascript:void(0);\">Remove <span class=\"govuk-visually-hidden\">{{ user.firstName + ' ' + user.lastName }} from case</span></a>\n <a *ngIf=\"canCancel(sharedCase.caseId, user) | async\" (click)=\"onCancel(user, sharedCase)\" href=\"javascript:void(0);\">Cancel <span class=\"govuk-visually-hidden\">adding {{ user.firstName + ' ' + user.lastName }} to case</span></a>\n </td>\n <td class=\"govuk-table__cell\">\n <span *ngIf=\"isToBeRemoved(sharedCase.caseId, user) | async\" class=\"hmcts-badge hmcts-badge--red\">To be removed</span>\n <span *ngIf=\"isToBeAdded(sharedCase.caseId, user) | async\" class=\"hmcts-badge\">To be added</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n",
|
|
386
|
+
template: "<div id=\"{{buildElementId('govuk-accordion__section')}}\" class=\"govuk-accordion__section\">\n <div class=\"govuk-grid-row govuk-case-header\">\n <div class=\"govuk-grid-column-three-quarters\">\n <h3 id=\"{{buildElementId('case-title')}}\" class=\"govuk-case-title\">{{ sharedCase.caseTitle }}</h3>\n <h1 id=\"{{buildElementId('case-id')}}\" class=\"govuk-case-sub-title\">{{ sharedCase.caseId }}</h1>\n </div>\n <div class=\"govuk-grid-column-twenty-percent\">\n <button *ngIf=\"caseCount > 1\"\n id=\"{{buildElementId('btn-deselect-case')}}\" \n class=\"govuk-button hmcts-button--secondary\" \n (click)=\"onDeselect(sharedCase)\" \n title=\"Deselect case\">Deselect case</button>\n </div>\n <div class=\"govuk-accordion__section-header govuk-grid-column-five-percent\">\n <div class=\"govuk-accordion__section-heading\">\n <button type=\"button\" id=\"{{buildElementId('accordion-with-summary-sections-heading')}}\"\n aria-controls=\"accordion-with-summary-sections-content-1\" class=\"govuk-accordion__section-button\"\n aria-describedby=\"accordion-with-summary-sections-summary-1\" aria-expanded=\"false\" title=\"Expand or Collapse\">\n <span class=\"govuk-accordion__icon\" aria-hidden=\"true\"></span></button>\n </div>\n </div>\n </div>\n <div id=\"{{buildElementId('accordion-with-summary-sections-content')}}\" class=\"govuk-accordion__section-content\"\n aria-labelledby=\"buildElementId('accordion-with-summary-sections-heading')\" >\n <div class=\"govuk-grid-row\" *ngIf=\"showNoUsersAccessInfo()\">\n <span id=\"{{buildElementId('access-info-no-user')}}\" class=\"govuk-div-align-left\">No users from your organisation currently have access to this case.</span>\n </div>\n <div class=\"govuk-grid-row\" *ngIf=\"showUserHasAccessInfo()\">\n <span id=\"{{buildElementId('access-info-has-users')}}\" class=\"govuk-div-align-left\">Users from your organisation with access to this case.</span>\n </div>\n <table class=\"govuk-table\" *ngIf=\"showUserAccessTable()\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th id=\"{{buildElementId('name-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Name</th>\n <th id=\"{{buildElementId('email-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Email address</th>\n <th id=\"{{buildElementId('action-heading')}}\" class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">Actions</th>\n <th id=\"{{buildElementId('label-heading')}}\" class=\"govuk-table__header govuk-table-column-label\" scope=\"col\"> </th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let user of combinedSortedShares; index as idx; trackBy: trackByUserId\">\n <td id=\"user-full-name-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td id=\"user-email-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <a *ngIf=\"canRemove(sharedCase.caseId, user) | async\" (click)=\"onRemove(user, sharedCase)\" href=\"javascript:void(0);\">Remove <span class=\"govuk-visually-hidden\">{{ user.firstName + ' ' + user.lastName }} from case</span></a>\n <a *ngIf=\"canCancel(sharedCase.caseId, user) | async\" (click)=\"onCancel(user, sharedCase)\" href=\"javascript:void(0);\">Cancel <span class=\"govuk-visually-hidden\">adding {{ user.firstName + ' ' + user.lastName }} to case</span></a>\n </td>\n <td class=\"govuk-table__cell\">\n <span *ngIf=\"isToBeRemoved(sharedCase.caseId, user) | async\" class=\"hmcts-badge hmcts-badge--red\">To be removed</span>\n <span *ngIf=\"isToBeAdded(sharedCase.caseId, user) | async\" class=\"hmcts-badge\">To be added</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n",
|
|
387
387
|
styles: [".govuk-case-header{border-top:1px solid #bfc1c3}.govuk-case-title{font-family:nta,Arial,sans-serif;font-size:24px;color:#005ea5;font-weight:700;padding-left:0}.govuk-case-sub-title{font-family:nta,Arial,sans-serif;font-size:1rem!important;color:#6f777b;font-weight:400;padding-left:0}.govuk-grid-row{margin-left:0;margin-right:0}.govuk-grid-column-three-quarters{padding-top:5px;padding-left:0}.govuk-grid-column-twenty-percent{box-sizing:border-box;padding-top:10px;width:20%;float:left}.govuk-grid-column-five-percent{box-sizing:border-box;padding-top:15px;width:5%;float:left}.govuk-table-column-header{width:40%}.govuk-table-column-actions,.govuk-table-column-label{width:10%}.govuk-div-align-left{font-family:nta,Arial,sans-serif;font-size:1.1875rem!important;line-height:1.31579!important;text-align:left;margin-bottom:20px;padding-left:0;color:#0b0c0c}.govuk-accordion__section-header{border-top:0}.govuk-accordion__section-content{padding-top:0}"]
|
|
388
388
|
}] }
|
|
389
389
|
];
|
|
@@ -396,6 +396,7 @@ var SelectedCaseComponent = /** @class */ (function () {
|
|
|
396
396
|
selectedUser: [{ type: Input }],
|
|
397
397
|
opened: [{ type: Input }],
|
|
398
398
|
removeUserFromCaseToggleOn: [{ type: Input }],
|
|
399
|
+
caseCount: [{ type: Input }],
|
|
399
400
|
unselect: [{ type: Output }],
|
|
400
401
|
synchronizeStore: [{ type: Output }]
|
|
401
402
|
};
|
|
@@ -412,6 +413,8 @@ if (false) {
|
|
|
412
413
|
/** @type {?} */
|
|
413
414
|
SelectedCaseComponent.prototype.removeUserFromCaseToggleOn;
|
|
414
415
|
/** @type {?} */
|
|
416
|
+
SelectedCaseComponent.prototype.caseCount;
|
|
417
|
+
/** @type {?} */
|
|
415
418
|
SelectedCaseComponent.prototype.unselect;
|
|
416
419
|
/** @type {?} */
|
|
417
420
|
SelectedCaseComponent.prototype.synchronizeStore;
|
|
@@ -427,4 +430,4 @@ if (false) {
|
|
|
427
430
|
*/
|
|
428
431
|
SelectedCaseComponent.prototype.stateService;
|
|
429
432
|
}
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtY2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2VsZWN0ZWQtY2FzZS9zZWxlY3RlZC1jYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXJDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXZHO0lBb0JFLCtCQUE2QixZQUFxQztRQUFyQyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFYbEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdkLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzFDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFPVSxDQUFDOzs7O0lBRWhFLHdDQUFROzs7SUFBZjtRQUFBLGlCQUlDO1FBSEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFBLFVBQVUsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUE1QixDQUE0QixFQUFDLENBQUM7SUFFekUsQ0FBQzs7Ozs7SUFFTSwyQ0FBVzs7OztJQUFsQixVQUFtQixPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7O2dCQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFOztnQkFDekUs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QUMsbUJBQWlCLEVBQUksQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFJLENBQUM7SUFDckQsQ0FBQzs7Ozs7SUFFTSw4Q0FBYzs7OztJQUFyQixVQUFzQixXQUFtQjtRQUN2QyxPQUFVLFdBQVcsU0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQVEsQ0FBQztJQUNwRCxDQUFDOztnQkF4S0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLHVsSUFBNkM7O2lCQUU5Qzs7OztnQkFOUSx1QkFBdUI7Ozs2QkFTN0IsS0FBSzsrQkFDTCxLQUFLO3lCQUNMLEtBQUs7NkNBQ0wsS0FBSzsyQkFFTCxNQUFNO21DQUNOLE1BQU07O0lBNEpULDRCQUFDO0NBQUEsQUF6S0QsSUF5S0M7U0FwS1kscUJBQXFCOzs7SUFFaEMsMkNBQXVDOztJQUN2Qyw2Q0FBMEM7O0lBQzFDLHVDQUErQjs7SUFDL0IsMkRBQW9EOztJQUVwRCx5Q0FBMkQ7O0lBQzNELGlEQUE0RDs7SUFFNUQsMkNBQWdDOztJQUNoQyw0Q0FBNkM7O0lBRTdDLHFEQUEyQzs7Ozs7SUFFL0IsNkNBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNoYXJlZENhc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2FzZS1zaGFyZS5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyLWRldGFpbHMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZVNoYXJpbmdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXNlLXNoYXJpbmctc3RhdGUvY2FzZS1zaGFyaW5nLXN0YXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItc2VsZWN0ZWQtY2FzZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3RlZC1jYXNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0ZWQtY2FzZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdGVkQ2FzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBwdWJsaWMgc2hhcmVkQ2FzZTogU2hhcmVkQ2FzZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkVXNlcjogVXNlckRldGFpbHM7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcGVuZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlbW92ZVVzZXJGcm9tQ2FzZVRvZ2dsZU9uOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgdW5zZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFNoYXJlZENhc2U+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc3luY2hyb25pemVTdG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBzaGFyZUNhc2VzOiBTaGFyZWRDYXNlW107XG4gIHB1YmxpYyBzaGFyZUNhc2VzJDogT2JzZXJ2YWJsZTxTaGFyZWRDYXNlW10+O1xuXG4gIHB1YmxpYyBjb21iaW5lZFNvcnRlZFNoYXJlczogVXNlckRldGFpbHNbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0YXRlU2VydmljZTogQ2FzZVNoYXJpbmdTdGF0ZVNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNoYXJlQ2FzZXMkID0gdGhpcy5zdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gICAgdGhpcy5zaGFyZUNhc2VzJC5zdWJzY3JpYmUoc2hhcmVDYXNlcyA9PiB0aGlzLnNoYXJlQ2FzZXMgPSBzaGFyZUNhc2VzKTtcblxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zaGFyZWRDYXNlKSB7XG4gICAgICBjb25zdCBzaGFyZWRXaXRoID0gdGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGggPyB0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aCA6IFtdO1xuICAgICAgY29uc3QgcGVuZGluZ1NoYXJlcyA9IHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzID8gdGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMgOiBbXTtcbiAgICAgIHRoaXMuY29tYmluZWRTb3J0ZWRTaGFyZXMgPSB0aGlzLmNvbWJpbmVBbmRTb3J0U2hhcmVzKHNoYXJlZFdpdGgsIHBlbmRpbmdTaGFyZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblVuc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMudW5zZWxlY3QuZW1pdCh0aGlzLnNoYXJlZENhc2UpO1xuICB9XG5cbiAgcHVibGljIG9uRGVzZWxlY3QoYzogU2hhcmVkQ2FzZSk6IHZvaWQge1xuICAgIHRoaXMudW5zZWxlY3QuZW1pdChjKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5VXNlcklkKHVzZXI6IFVzZXJEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXNlci5pZGFtSWQ7XG4gIH1cblxuICBwdWJsaWMgY2FuUmVtb3ZlKGNhc2VJZDogc3RyaW5nLCB1c2VyOiBVc2VyRGV0YWlscyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlQ2FzZXMkLnBpcGUobWFwKGNhc2VzID0+IHtcbiAgICAgIGlmICh0aGlzLnJlbW92ZVVzZXJGcm9tQ2FzZVRvZ2dsZU9uKSB7XG4gICAgICAgIGZvciAoY29uc3QgYUNhc2Ugb2YgY2FzZXMpIHtcbiAgICAgICAgICBpZiAoYUNhc2UuY2FzZUlkID09PSBjYXNlSWQpIHtcbiAgICAgICAgICAgIGlmIChhQ2FzZS5wZW5kaW5nVW5zaGFyZXMgJiYgYUNhc2UucGVuZGluZ1Vuc2hhcmVzLnNvbWUodSA9PiB1LmlkYW1JZCA9PT0gdXNlci5pZGFtSWQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhQ2FzZS5zaGFyZWRXaXRoICYmIGFDYXNlLnNoYXJlZFdpdGguc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGNhbkNhbmNlbChjYXNlSWQ6IHN0cmluZywgdXNlcjogVXNlckRldGFpbHMpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZUNhc2VzJC5waXBlKG1hcChjYXNlcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGFDYXNlIG9mIGNhc2VzKSB7XG4gICAgICAgIGlmIChhQ2FzZS5jYXNlSWQgPT09IGNhc2VJZCkge1xuICAgICAgICAgIGlmIChhQ2FzZS5wZW5kaW5nU2hhcmVzICYmIGFDYXNlLnBlbmRpbmdTaGFyZXMuc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYUNhc2UucGVuZGluZ1Vuc2hhcmVzICYmIGFDYXNlLnBlbmRpbmdVbnNoYXJlcy5zb21lKHUgPT4gdS5pZGFtSWQgPT09IHVzZXIuaWRhbUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RvQmVSZW1vdmVkKGNhc2VJZDogc3RyaW5nLCB1c2VyOiBVc2VyRGV0YWlscyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlQ2FzZXMkLnBpcGUobWFwKGNhc2VzID0+IHtcbiAgICAgIGZvciAoY29uc3QgYUNhc2Ugb2YgY2FzZXMpIHtcbiAgICAgICAgaWYgKGFDYXNlLmNhc2VJZCA9PT0gY2FzZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIGFDYXNlLnBlbmRpbmdVbnNoYXJlcyAmJiBhQ2FzZS5wZW5kaW5nVW5zaGFyZXMuc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgaXNUb0JlQWRkZWQoY2FzZUlkOiBzdHJpbmcsIHVzZXI6IFVzZXJEZXRhaWxzKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVDYXNlcyQucGlwZShtYXAoY2FzZXMgPT4ge1xuICAgICAgZm9yIChjb25zdCBhQ2FzZSBvZiBjYXNlcykge1xuICAgICAgICBpZiAoYUNhc2UuY2FzZUlkID09PSBjYXNlSWQpIHtcbiAgICAgICAgICByZXR1cm4gYUNhc2UucGVuZGluZ1NoYXJlcyAmJiBhQ2FzZS5wZW5kaW5nU2hhcmVzLnNvbWUodSA9PiB1LmlkYW1JZCA9PT0gdXNlci5pZGFtSWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIG9uUmVtb3ZlKHVzZXI6IFVzZXJEZXRhaWxzLCBzaGFyZWRDYXNlOiBTaGFyZWRDYXNlKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UucmVxdWVzdFVuc2hhcmUoc2hhcmVkQ2FzZS5jYXNlSWQsIHVzZXIpO1xuICAgIHRoaXMuc3luY2hyb25pemVTdG9yZS5lbWl0KHRoaXMuc2hhcmVDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWwodXNlcjogVXNlckRldGFpbHMsIHNoYXJlZENhc2U6IFNoYXJlZENhc2UpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5yZXF1ZXN0Q2FuY2VsKHNoYXJlZENhc2UuY2FzZUlkLCB1c2VyKTtcbiAgICB0aGlzLnN5bmNocm9uaXplU3RvcmUuZW1pdCh0aGlzLnNoYXJlQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIHNob3dOb1VzZXJzQWNjZXNzSW5mbygpOiBib29sZWFuIHtcbiAgICAvLyBBIHVzZXIgaXMgYWRkZWQgdG8gYSBjYXNlXG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEEgY2FzZSBoYXMgMCB1c2VycyB3aXRoIGFjY2VzcyB0byBpdFxuICAgIGlmICh0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aCkge1xuICAgICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQWNjZXNzIHRvIHRoZSBsYXN0IHVzZXIgaXMgcmVtb3ZlZFxuICAgIGlmICh0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aCAmJiB0aGlzLnNoYXJlZENhc2UucGVuZGluZ1Vuc2hhcmVzKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdVbnNoYXJlcy5sZW5ndGggPiAwXG4gICAgICAgICYmIHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoLmxlbmd0aCA9PT0gdGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdVbnNoYXJlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VXNlckhhc0FjY2Vzc0luZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dOb1VzZXJzQWNjZXNzSW5mbygpO1xuICB9XG5cbiAgcHVibGljIHNob3dVc2VyQWNjZXNzVGFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGgubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNvbWJpbmVBbmRTb3J0U2hhcmVzKHNoYXJlZFdpdGg6IFVzZXJEZXRhaWxzW10sIHBlbmRpbmdTaGFyZXM6IFVzZXJEZXRhaWxzW10pOiBVc2VyRGV0YWlsc1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uc2hhcmVkV2l0aCxcbiAgICAgIC4uLnBlbmRpbmdTaGFyZXNcbiAgICBdLnNvcnQoKHVzZXIxLCB1c2VyMikgPT4ge1xuICAgICAgcmV0dXJuIHVzZXIxLmZpcnN0TmFtZS50b0xvd2VyQ2FzZSgpID4gdXNlcjIuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgPyAxIDogKHVzZXIyLmZpcnN0TmFtZS50b0xvd2VyQ2FzZSgpID4gdXNlcjEuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgPyAtMSA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVzZXJJZFNldHRlcihpc1BlbmRpbmc6IGJvb2xlYW4sIGlkOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc1BlbmRpbmcgPyBgcGVuZGluZ1NoYXJlcy0ke2lkfWAgOiBgJHtpZH1gO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRWxlbWVudElkKGVsZW1lbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtlbGVtZW50TmFtZX0tJHt0aGlzLnNoYXJlZENhc2UuY2FzZUlkfWA7XG4gIH1cbn1cbiJdfQ==
|
|
433
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtY2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2VsZWN0ZWQtY2FzZS9zZWxlY3RlZC1jYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXJDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXZHO0lBcUJFLCtCQUE2QixZQUFxQztRQUFyQyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFabEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUlkLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzFDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFPVSxDQUFDOzs7O0lBRWhFLHdDQUFROzs7SUFBZjtRQUFBLGlCQUlDO1FBSEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFBLFVBQVUsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUE1QixDQUE0QixFQUFDLENBQUM7SUFFekUsQ0FBQzs7Ozs7SUFFTSwyQ0FBVzs7OztJQUFsQixVQUFtQixPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7O2dCQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFOztnQkFDekUs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QUMsbUJBQWlCLEVBQUksQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFJLENBQUM7SUFDckQsQ0FBQzs7Ozs7SUFFTSw4Q0FBYzs7OztJQUFyQixVQUFzQixXQUFtQjtRQUN2QyxPQUFVLFdBQVcsU0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQVEsQ0FBQztJQUNwRCxDQUFDOztnQkF6S0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLHNwSUFBNkM7O2lCQUU5Qzs7OztnQkFOUSx1QkFBdUI7Ozs2QkFTN0IsS0FBSzsrQkFDTCxLQUFLO3lCQUNMLEtBQUs7NkNBQ0wsS0FBSzs0QkFDTCxLQUFLOzJCQUVMLE1BQU07bUNBQ04sTUFBTTs7SUE0SlQsNEJBQUM7Q0FBQSxBQTFLRCxJQTBLQztTQXJLWSxxQkFBcUI7OztJQUVoQywyQ0FBdUM7O0lBQ3ZDLDZDQUEwQzs7SUFDMUMsdUNBQStCOztJQUMvQiwyREFBb0Q7O0lBQ3BELDBDQUFrQzs7SUFFbEMseUNBQTJEOztJQUMzRCxpREFBNEQ7O0lBRTVELDJDQUFnQzs7SUFDaEMsNENBQTZDOztJQUU3QyxxREFBMkM7Ozs7O0lBRS9CLDZDQUFzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTaGFyZWRDYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nhc2Utc2hhcmUubW9kZWwnO1xuaW1wb3J0IHsgVXNlckRldGFpbHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlci1kZXRhaWxzLm1vZGVsJztcbmltcG9ydCB7IENhc2VTaGFyaW5nU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FzZS1zaGFyaW5nLXN0YXRlL2Nhc2Utc2hhcmluZy1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLXNlbGVjdGVkLWNhc2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0ZWQtY2FzZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdGVkLWNhc2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RlZENhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgcHVibGljIHNoYXJlZENhc2U6IFNoYXJlZENhc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFVzZXI6IFVzZXJEZXRhaWxzO1xuICBASW5wdXQoKSBwdWJsaWMgb3BlbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW1vdmVVc2VyRnJvbUNhc2VUb2dnbGVPbjogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGNhc2VDb3VudDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgdW5zZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFNoYXJlZENhc2U+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc3luY2hyb25pemVTdG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBzaGFyZUNhc2VzOiBTaGFyZWRDYXNlW107XG4gIHB1YmxpYyBzaGFyZUNhc2VzJDogT2JzZXJ2YWJsZTxTaGFyZWRDYXNlW10+O1xuXG4gIHB1YmxpYyBjb21iaW5lZFNvcnRlZFNoYXJlczogVXNlckRldGFpbHNbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0YXRlU2VydmljZTogQ2FzZVNoYXJpbmdTdGF0ZVNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNoYXJlQ2FzZXMkID0gdGhpcy5zdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gICAgdGhpcy5zaGFyZUNhc2VzJC5zdWJzY3JpYmUoc2hhcmVDYXNlcyA9PiB0aGlzLnNoYXJlQ2FzZXMgPSBzaGFyZUNhc2VzKTtcblxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zaGFyZWRDYXNlKSB7XG4gICAgICBjb25zdCBzaGFyZWRXaXRoID0gdGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGggPyB0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aCA6IFtdO1xuICAgICAgY29uc3QgcGVuZGluZ1NoYXJlcyA9IHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzID8gdGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMgOiBbXTtcbiAgICAgIHRoaXMuY29tYmluZWRTb3J0ZWRTaGFyZXMgPSB0aGlzLmNvbWJpbmVBbmRTb3J0U2hhcmVzKHNoYXJlZFdpdGgsIHBlbmRpbmdTaGFyZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblVuc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMudW5zZWxlY3QuZW1pdCh0aGlzLnNoYXJlZENhc2UpO1xuICB9XG5cbiAgcHVibGljIG9uRGVzZWxlY3QoYzogU2hhcmVkQ2FzZSk6IHZvaWQge1xuICAgIHRoaXMudW5zZWxlY3QuZW1pdChjKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5VXNlcklkKHVzZXI6IFVzZXJEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXNlci5pZGFtSWQ7XG4gIH1cblxuICBwdWJsaWMgY2FuUmVtb3ZlKGNhc2VJZDogc3RyaW5nLCB1c2VyOiBVc2VyRGV0YWlscyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlQ2FzZXMkLnBpcGUobWFwKGNhc2VzID0+IHtcbiAgICAgIGlmICh0aGlzLnJlbW92ZVVzZXJGcm9tQ2FzZVRvZ2dsZU9uKSB7XG4gICAgICAgIGZvciAoY29uc3QgYUNhc2Ugb2YgY2FzZXMpIHtcbiAgICAgICAgICBpZiAoYUNhc2UuY2FzZUlkID09PSBjYXNlSWQpIHtcbiAgICAgICAgICAgIGlmIChhQ2FzZS5wZW5kaW5nVW5zaGFyZXMgJiYgYUNhc2UucGVuZGluZ1Vuc2hhcmVzLnNvbWUodSA9PiB1LmlkYW1JZCA9PT0gdXNlci5pZGFtSWQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhQ2FzZS5zaGFyZWRXaXRoICYmIGFDYXNlLnNoYXJlZFdpdGguc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGNhbkNhbmNlbChjYXNlSWQ6IHN0cmluZywgdXNlcjogVXNlckRldGFpbHMpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZUNhc2VzJC5waXBlKG1hcChjYXNlcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGFDYXNlIG9mIGNhc2VzKSB7XG4gICAgICAgIGlmIChhQ2FzZS5jYXNlSWQgPT09IGNhc2VJZCkge1xuICAgICAgICAgIGlmIChhQ2FzZS5wZW5kaW5nU2hhcmVzICYmIGFDYXNlLnBlbmRpbmdTaGFyZXMuc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYUNhc2UucGVuZGluZ1Vuc2hhcmVzICYmIGFDYXNlLnBlbmRpbmdVbnNoYXJlcy5zb21lKHUgPT4gdS5pZGFtSWQgPT09IHVzZXIuaWRhbUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RvQmVSZW1vdmVkKGNhc2VJZDogc3RyaW5nLCB1c2VyOiBVc2VyRGV0YWlscyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlQ2FzZXMkLnBpcGUobWFwKGNhc2VzID0+IHtcbiAgICAgIGZvciAoY29uc3QgYUNhc2Ugb2YgY2FzZXMpIHtcbiAgICAgICAgaWYgKGFDYXNlLmNhc2VJZCA9PT0gY2FzZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIGFDYXNlLnBlbmRpbmdVbnNoYXJlcyAmJiBhQ2FzZS5wZW5kaW5nVW5zaGFyZXMuc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgaXNUb0JlQWRkZWQoY2FzZUlkOiBzdHJpbmcsIHVzZXI6IFVzZXJEZXRhaWxzKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVDYXNlcyQucGlwZShtYXAoY2FzZXMgPT4ge1xuICAgICAgZm9yIChjb25zdCBhQ2FzZSBvZiBjYXNlcykge1xuICAgICAgICBpZiAoYUNhc2UuY2FzZUlkID09PSBjYXNlSWQpIHtcbiAgICAgICAgICByZXR1cm4gYUNhc2UucGVuZGluZ1NoYXJlcyAmJiBhQ2FzZS5wZW5kaW5nU2hhcmVzLnNvbWUodSA9PiB1LmlkYW1JZCA9PT0gdXNlci5pZGFtSWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIG9uUmVtb3ZlKHVzZXI6IFVzZXJEZXRhaWxzLCBzaGFyZWRDYXNlOiBTaGFyZWRDYXNlKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UucmVxdWVzdFVuc2hhcmUoc2hhcmVkQ2FzZS5jYXNlSWQsIHVzZXIpO1xuICAgIHRoaXMuc3luY2hyb25pemVTdG9yZS5lbWl0KHRoaXMuc2hhcmVDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWwodXNlcjogVXNlckRldGFpbHMsIHNoYXJlZENhc2U6IFNoYXJlZENhc2UpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5yZXF1ZXN0Q2FuY2VsKHNoYXJlZENhc2UuY2FzZUlkLCB1c2VyKTtcbiAgICB0aGlzLnN5bmNocm9uaXplU3RvcmUuZW1pdCh0aGlzLnNoYXJlQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIHNob3dOb1VzZXJzQWNjZXNzSW5mbygpOiBib29sZWFuIHtcbiAgICAvLyBBIHVzZXIgaXMgYWRkZWQgdG8gYSBjYXNlXG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEEgY2FzZSBoYXMgMCB1c2VycyB3aXRoIGFjY2VzcyB0byBpdFxuICAgIGlmICh0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aCkge1xuICAgICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQWNjZXNzIHRvIHRoZSBsYXN0IHVzZXIgaXMgcmVtb3ZlZFxuICAgIGlmICh0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aCAmJiB0aGlzLnNoYXJlZENhc2UucGVuZGluZ1Vuc2hhcmVzKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdVbnNoYXJlcy5sZW5ndGggPiAwXG4gICAgICAgICYmIHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoLmxlbmd0aCA9PT0gdGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdVbnNoYXJlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VXNlckhhc0FjY2Vzc0luZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dOb1VzZXJzQWNjZXNzSW5mbygpO1xuICB9XG5cbiAgcHVibGljIHNob3dVc2VyQWNjZXNzVGFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGgubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNvbWJpbmVBbmRTb3J0U2hhcmVzKHNoYXJlZFdpdGg6IFVzZXJEZXRhaWxzW10sIHBlbmRpbmdTaGFyZXM6IFVzZXJEZXRhaWxzW10pOiBVc2VyRGV0YWlsc1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uc2hhcmVkV2l0aCxcbiAgICAgIC4uLnBlbmRpbmdTaGFyZXNcbiAgICBdLnNvcnQoKHVzZXIxLCB1c2VyMikgPT4ge1xuICAgICAgcmV0dXJuIHVzZXIxLmZpcnN0TmFtZS50b0xvd2VyQ2FzZSgpID4gdXNlcjIuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgPyAxIDogKHVzZXIyLmZpcnN0TmFtZS50b0xvd2VyQ2FzZSgpID4gdXNlcjEuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgPyAtMSA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVzZXJJZFNldHRlcihpc1BlbmRpbmc6IGJvb2xlYW4sIGlkOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc1BlbmRpbmcgPyBgcGVuZGluZ1NoYXJlcy0ke2lkfWAgOiBgJHtpZH1gO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRWxlbWVudElkKGVsZW1lbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtlbGVtZW50TmFtZX0tJHt0aGlzLnNoYXJlZENhc2UuY2FzZUlkfWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -28,7 +28,10 @@ var SelectedCaseListComponent = /** @class */ (function () {
|
|
|
28
28
|
* @param {?} shareCases
|
|
29
29
|
* @return {?}
|
|
30
30
|
*/
|
|
31
|
-
function (shareCases) {
|
|
31
|
+
function (shareCases) {
|
|
32
|
+
_this.shareCases = shareCases;
|
|
33
|
+
_this.caseCount = _this.shareCases.length;
|
|
34
|
+
}));
|
|
32
35
|
};
|
|
33
36
|
/**
|
|
34
37
|
* @param {?} sharedCase
|
|
@@ -40,6 +43,7 @@ var SelectedCaseListComponent = /** @class */ (function () {
|
|
|
40
43
|
*/
|
|
41
44
|
function (sharedCase) {
|
|
42
45
|
this.unselect.emit(sharedCase);
|
|
46
|
+
this.caseCount = this.shareCases.length;
|
|
43
47
|
};
|
|
44
48
|
/**
|
|
45
49
|
* @param {?} event
|
|
@@ -66,7 +70,7 @@ var SelectedCaseListComponent = /** @class */ (function () {
|
|
|
66
70
|
SelectedCaseListComponent.decorators = [
|
|
67
71
|
{ type: Component, args: [{
|
|
68
72
|
selector: 'xuilib-selected-case-list',
|
|
69
|
-
template: "<ng-container *ngIf=\"!toConfirm\">\n <xuilib-selected-case\n *ngFor=\"let sharedCase of (shareCases$ | async); trackBy: trackByCaseId\"\n [sharedCase]=\"sharedCase\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case>\n</ng-container>\n\n<ng-container *ngIf=\"toConfirm\">\n <xuilib-selected-case-confirm\n *ngFor=\"let sharedCase of (shareCases$ | async); trackBy: trackByCaseId\"\n [sharedCase]=\"sharedCase\"\n [changeLink]=\"changeLink\">\n </xuilib-selected-case-confirm>\n</ng-container>\n",
|
|
73
|
+
template: "<ng-container *ngIf=\"!toConfirm\">\n <xuilib-selected-case\n *ngFor=\"let sharedCase of (shareCases$ | async); trackBy: trackByCaseId\"\n [sharedCase]=\"sharedCase\"\n [caseCount]=\"caseCount\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case>\n</ng-container>\n\n<ng-container *ngIf=\"toConfirm\">\n <xuilib-selected-case-confirm\n *ngFor=\"let sharedCase of (shareCases$ | async); trackBy: trackByCaseId\"\n [sharedCase]=\"sharedCase\"\n [changeLink]=\"changeLink\">\n </xuilib-selected-case-confirm>\n</ng-container>\n",
|
|
70
74
|
styles: [""]
|
|
71
75
|
}] }
|
|
72
76
|
];
|
|
@@ -89,6 +93,8 @@ if (false) {
|
|
|
89
93
|
/** @type {?} */
|
|
90
94
|
SelectedCaseListComponent.prototype.shareCases;
|
|
91
95
|
/** @type {?} */
|
|
96
|
+
SelectedCaseListComponent.prototype.caseCount;
|
|
97
|
+
/** @type {?} */
|
|
92
98
|
SelectedCaseListComponent.prototype.shareCases$;
|
|
93
99
|
/** @type {?} */
|
|
94
100
|
SelectedCaseListComponent.prototype.removeUserFromCaseToggleOn;
|
|
@@ -106,4 +112,4 @@ if (false) {
|
|
|
106
112
|
*/
|
|
107
113
|
SelectedCaseListComponent.prototype.stateService;
|
|
108
114
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtY2FzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9ycHgteHVpLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9zZWxlY3RlZC1jYXNlLWxpc3Qvc2VsZWN0ZWQtY2FzZS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV2RztJQXFCRSxtQ0FBNkIsWUFBcUM7UUFBckMsaUJBQVksR0FBWixZQUFZLENBQXlCO1FBZDNELGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBT3JCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0IsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUV2QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBRUcsQ0FBQzs7OztJQUVoRSw0Q0FBUTs7O0lBQWY7UUFBQSxpQkFNQztRQUxDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQyxVQUFVO1lBQ3BDLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLEtBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVNLDhDQUFVOzs7O0lBQWpCLFVBQWtCLFVBQXNCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQzs7Ozs7SUFFTSxzREFBa0I7Ozs7SUFBekIsVUFBMEIsS0FBVTtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7O0lBRU0saURBQWE7Ozs7SUFBcEIsVUFBcUIsVUFBc0I7UUFDekMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7O2dCQTFDRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsMHJCQUFrRDs7aUJBRW5EOzs7O2dCQU5RLHVCQUF1Qjs7OzhCQVk3QixLQUFLOzZDQUVMLEtBQUs7NEJBRUwsS0FBSzs2QkFFTCxLQUFLOzJCQUVMLE1BQU07bUNBQ04sTUFBTTs7SUF3QlQsZ0NBQUM7Q0FBQSxBQTNDRCxJQTJDQztTQXRDWSx5QkFBeUI7OztJQUVwQywrQ0FBcUM7O0lBQ3JDLDhDQUF5Qjs7SUFFekIsZ0RBQXNEOztJQUV0RCwrREFBb0Q7O0lBRXBELDhDQUEyQzs7SUFFM0MsK0NBQXdDOztJQUV4Qyw2Q0FBMkQ7O0lBQzNELHFEQUFtRTs7Ozs7SUFFdkQsaURBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2hhcmVkQ2FzZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYXNlLXNoYXJlLm1vZGVsJztcbmltcG9ydCB7IENhc2VTaGFyaW5nU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FzZS1zaGFyaW5nLXN0YXRlL2Nhc2Utc2hhcmluZy1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLXNlbGVjdGVkLWNhc2UtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3RlZC1jYXNlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3RlZC1jYXNlLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RlZENhc2VMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc2hhcmVDYXNlczogU2hhcmVkQ2FzZVtdID0gW107XG4gIHB1YmxpYyBjYXNlQ291bnQ6IG51bWJlcjtcblxuICBASW5wdXQoKSBwdWJsaWMgc2hhcmVDYXNlcyQ6IE9ic2VydmFibGU8U2hhcmVkQ2FzZVtdPjtcblxuICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZlVXNlckZyb21DYXNlVG9nZ2xlT246IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcHVibGljIHRvQ29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGFuZ2VMaW5rOiBzdHJpbmcgPSAnJztcblxuICBAT3V0cHV0KCkgcHVibGljIHVuc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTaGFyZWRDYXNlPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHN5bmNocm9uaXplU3RvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNoYXJlZENhc2U+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGF0ZVNlcnZpY2U6IENhc2VTaGFyaW5nU3RhdGVTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaGFyZUNhc2VzJCA9IHRoaXMuc3RhdGVTZXJ2aWNlLnN0YXRlO1xuICAgIHRoaXMuc2hhcmVDYXNlcyQuc3Vic2NyaWJlKChzaGFyZUNhc2VzKSA9PiB7XG4gICAgICB0aGlzLnNoYXJlQ2FzZXMgPSBzaGFyZUNhc2VzO1xuICAgICAgdGhpcy5jYXNlQ291bnQgPSB0aGlzLnNoYXJlQ2FzZXMubGVuZ3RoO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uVW5zZWxlY3Qoc2hhcmVkQ2FzZTogU2hhcmVkQ2FzZSk6IHZvaWQge1xuICAgIHRoaXMudW5zZWxlY3QuZW1pdChzaGFyZWRDYXNlKTtcbiAgICB0aGlzLmNhc2VDb3VudCA9IHRoaXMuc2hhcmVDYXNlcy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgb25TeW5jaHJvbml6ZVN0b3JlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnN5bmNocm9uaXplU3RvcmUuZW1pdChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUNhc2VJZChzaGFyZWRDYXNlOiBTaGFyZWRDYXNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2hhcmVkQ2FzZS5jYXNlSWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -17,6 +17,7 @@ var ShareCaseComponent = /** @class */ (function () {
|
|
|
17
17
|
this.users = []; // users of this organisation the cases can be shared with
|
|
18
18
|
// users of this organisation the cases can be shared with
|
|
19
19
|
this.confirmLink = '';
|
|
20
|
+
this.showRemoveUsers = false;
|
|
20
21
|
this.unselect = new EventEmitter();
|
|
21
22
|
this.synchronizeStore = new EventEmitter();
|
|
22
23
|
}
|
|
@@ -169,8 +170,8 @@ var ShareCaseComponent = /** @class */ (function () {
|
|
|
169
170
|
ShareCaseComponent.decorators = [
|
|
170
171
|
{ type: Component, args: [{
|
|
171
172
|
selector: 'xuilib-share-case',
|
|
172
|
-
template: "<div id=\"add-user\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">
|
|
173
|
-
styles: [""]
|
|
173
|
+
template: "<div id=\"add-user\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">{{addUserLabel}}</label>\n <span id=\"add-user-hint\" class=\"govuk-hint\">\n Search by name or email address. You can share access with as many people as you need.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-user-select\n id=\"add-user-input\"\n aria-describedby=\"add-user-hint\"\n [users]=\"users\"\n (selected)=\"onSelectedUser($event)\">\n </xuilib-user-select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-add-user\" (click)=\"addUser()\" class=\"govuk-button govuk-button--secondary\" [disabled]=\"isDisabledAdd()\" title=\"Add user to selected cases\">Add</button>\n </div>\n </div>\n <details id=\"add-user-help\" class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span id=\"content-why-can-not-find-email\" class=\"govuk-details__summary-text\">\n Can't find an email address?\n </span>\n </summary>\n <div id=\"content-reason-can-not-find-email\" class=\"govuk-details__text\">\n If you can't find your colleague's email address, they will need to complete their registration. Contact your\n administrator for help.\n </div>\n </details>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"showRemoveUsers\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"remove-user-input\">Remove a person from all cases</label>\n <span id=\"remove-user-hint\" class=\"govuk-hint\">\n Select a person to remove them from all selected cases.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <select class=\"govuk-select\" id=\"remove-user-input\" aria-describedby=\"remove-user-hint\">\n <option value=\"{{user}}\" *ngFor=\"let user of users\">{{user.email}}</option>\n </select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-remove-user\" class=\"govuk-button govuk-button--secondary\" title=\"Remove user from selected cases\">Remove</button>\n </div>\n </div>\n </div>\n</div>\n\n<div id=\"cases\">\n <h3 id=\"title-selected-cases\" class=\"govuk-heading-m\">Selected cases</h3>\n <div *ngIf=\"shareCases && shareCases.length > 0\" class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-with-summary-sections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\" class=\"govuk-button-group\">\n <button class=\"govuk-button\" data-module=\"govuk-button\" [disabled]=\"isDisabledContinue()\" title=\"Continue\" [routerLink]=\"confirmLink\">Continue</button>\n <button class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\" title=\"Cancel\">Cancel</button>\n</div>\n",
|
|
174
|
+
styles: ["select{width:100%}"]
|
|
174
175
|
}] }
|
|
175
176
|
];
|
|
176
177
|
/** @nocollapse */
|
|
@@ -182,6 +183,8 @@ var ShareCaseComponent = /** @class */ (function () {
|
|
|
182
183
|
shareCases$: [{ type: Input }],
|
|
183
184
|
users: [{ type: Input }],
|
|
184
185
|
confirmLink: [{ type: Input }],
|
|
186
|
+
addUserLabel: [{ type: Input }],
|
|
187
|
+
showRemoveUsers: [{ type: Input }],
|
|
185
188
|
unselect: [{ type: Output }],
|
|
186
189
|
synchronizeStore: [{ type: Output }],
|
|
187
190
|
userSelect: [{ type: ViewChild, args: [UserSelectComponent,] }]
|
|
@@ -201,6 +204,10 @@ if (false) {
|
|
|
201
204
|
/** @type {?} */
|
|
202
205
|
ShareCaseComponent.prototype.confirmLink;
|
|
203
206
|
/** @type {?} */
|
|
207
|
+
ShareCaseComponent.prototype.addUserLabel;
|
|
208
|
+
/** @type {?} */
|
|
209
|
+
ShareCaseComponent.prototype.showRemoveUsers;
|
|
210
|
+
/** @type {?} */
|
|
204
211
|
ShareCaseComponent.prototype.unselect;
|
|
205
212
|
/** @type {?} */
|
|
206
213
|
ShareCaseComponent.prototype.synchronizeStore;
|
|
@@ -220,4 +227,4 @@ if (false) {
|
|
|
220
227
|
*/
|
|
221
228
|
ShareCaseComponent.prototype.stateService;
|
|
222
229
|
}
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtY2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2hhcmUtY2FzZS9zaGFyZS1jYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFO0lBMEJFLDRCQUE2QixZQUFxQztRQUFyQyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFuQjNELGVBQVUsR0FBaUIsRUFBRSxDQUFDLENBQUMsNkJBQTZCOztRQUVuRCwrQkFBMEIsR0FBWSxLQUFLLENBQUM7UUFHNUMsVUFBSyxHQUFrQixFQUFFLENBQUMsQ0FBQywwREFBMEQ7O1FBRXJGLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWhDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzFDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFPVSxDQUFDOzs7O0lBRWhFLHFDQUFROzs7SUFBZjtRQUFBLGlCQU1DO1FBTEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxVQUFVO1lBQ25DLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFD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QUNOLE1BQU07NkJBSU4sU0FBUyxTQUFDLG1CQUFtQjs7SUFrRWhDLHlCQUFDO0NBQUEsQUF6RkQsSUF5RkM7U0FwRlksa0JBQWtCOzs7SUFFN0Isd0NBQXFDOztJQUVyQyx3REFBNEQ7O0lBRTVELHlDQUFzRDs7SUFDdEQsbUNBQTBDOztJQUUxQyx5Q0FBeUM7O0lBQ3pDLDBDQUFxQzs7SUFDckMsNkNBQWlEOztJQUVqRCxzQ0FBMkQ7O0lBQzNELDhDQUE0RDs7Ozs7SUFFNUQsMENBQWtDOzs7OztJQUVsQyx3Q0FDaUQ7Ozs7O0lBRXJDLDBDQUFzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2hhcmVkQ2FzZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYXNlLXNoYXJlLm1vZGVsJztcbmltcG9ydCB7IFVzZXJEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlU2hhcmluZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nhc2Utc2hhcmluZy1zdGF0ZS9jYXNlLXNoYXJpbmctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vdXNlci1zZWxlY3QvdXNlci1zZWxlY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLXNoYXJlLWNhc2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hhcmUtY2FzZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NoYXJlLWNhc2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZUNhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzaGFyZUNhc2VzOiBTaGFyZWRDYXNlW10gPSBbXTsgLy8gY2FzZXMgc2VsZWN0ZWQgZm9yIHNoYXJpbmdcblxuICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZlVXNlckZyb21DYXNlVG9nZ2xlT246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgc2hhcmVDYXNlcyQ6IE9ic2VydmFibGU8U2hhcmVkQ2FzZVtdPjtcbiAgQElucHV0KCkgcHVibGljIHVzZXJzOiBVc2VyRGV0YWlsc1tdID0gW107IC8vIHVzZXJzIG9mIHRoaXMgb3JnYW5pc2F0aW9uIHRoZSBjYXNlcyBjYW4gYmUgc2hhcmVkIHdpdGhcblxuICBASW5wdXQoKSBwdWJsaWMgY29uZmlybUxpbms6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgYWRkVXNlckxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93UmVtb3ZlVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcHVibGljIHVuc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTaGFyZWRDYXNlPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHN5bmNocm9uaXplU3RvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIHNlbGVjdGVkVXNlcjogVXNlckRldGFpbHM7XG5cbiAgQFZpZXdDaGlsZChVc2VyU2VsZWN0Q29tcG9uZW50KVxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZWxlY3Q6IFVzZXJTZWxlY3RDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGF0ZVNlcnZpY2U6IENhc2VTaGFyaW5nU3RhdGVTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaGFyZUNhc2VzJC5zdWJzY3JpYmUoc2hhcmVDYXNlcyA9PiB7XG4gICAgICB0aGlzLnNoYXJlQ2FzZXMgPSBzaGFyZUNhc2VzO1xuICAgICAgdGhpcy5zdGF0ZVNlcnZpY2Uuc2V0Q2FzZXMoc2hhcmVDYXNlcyk7XG4gICAgfSk7XG4gICAgdGhpcy5zaGFyZUNhc2VzJCA9IHRoaXMuc3RhdGVTZXJ2aWNlLnN0YXRlO1xuICB9XG5cbiAgcHVibGljIG9uVW5zZWxlY3QoYzogU2hhcmVkQ2FzZSk6IHZvaWQge1xuICAgIHRoaXMudW5zZWxlY3QuZW1pdChjKTtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5yZW1vdmVDYXNlKGMuY2FzZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN5bmNocm9uaXplU3RvcmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3luY2hyb25pemVTdG9yZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkVXNlcih1c2VyOiBVc2VyRGV0YWlscykge1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VyID0gdXNlcjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRVc2VyKCkge1xuICAgIGNvbnN0IG5ld1NoYXJlZENhc2VzID0gdGhpcy5zdGF0ZVNlcnZpY2UucmVxdWVzdFNoYXJlKHRoaXMuc2VsZWN0ZWRVc2VyKTtcbiAgICB0aGlzLnNlbGVjdGVkVXNlciA9IG51bGw7XG4gICAgaWYgKHRoaXMudXNlclNlbGVjdCkgeyB0aGlzLnVzZXJTZWxlY3QuY2xlYXIoKTsgfVxuICAgIHRoaXMuc3luY2hyb25pemVTdG9yZS5lbWl0KG5ld1NoYXJlZENhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Rpc2FibGVkQWRkKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVXNlciA9PT0gbnVsbCB8fCB0aGlzLnNoYXJlQ2FzZXMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHVibGljIGlzRGlzYWJsZWRDb250aW51ZSgpOiBib29sZWFuIHtcbiAgICBsZXQgaXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgdGhpcy5zaGFyZUNhc2VzJC5zdWJzY3JpYmUoc2hhcmVDYXNlcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGNhc2VTdGF0ZSBvZiBzaGFyZUNhc2VzKSB7XG4gICAgICAgIGlmIChjYXNlU3RhdGUucGVuZGluZ1NoYXJlcyAmJiBjYXNlU3RhdGUucGVuZGluZ1NoYXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXNlU3RhdGUucGVuZGluZ1Vuc2hhcmVzICYmIGNhc2VTdGF0ZS5wZW5kaW5nVW5zaGFyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIG9uRGVzZWxlY3Qoc2hhcmVkQ2FzZTogU2hhcmVkQ2FzZSk6IHZvaWQge1xuICAgIGlmIChzaGFyZWRDYXNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gW107XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5zaGFyZUNhc2VzKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmNhc2VJZCAhPT0gc2hhcmVkQ2FzZS5jYXNlSWQpIHtcbiAgICAgICAgICB1cGRhdGVkLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2hhcmVDYXNlcyA9IHVwZGF0ZWQ7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNldENhc2VzKHRoaXMuc2hhcmVDYXNlcyk7XG4gIH1cbn1cbiJdfQ==
|