@mediusinc/mng-commons 5.3.0-rc.2 → 5.3.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/form/components/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/table/api/descriptors/table.descriptor.mjs +12 -2
- package/esm2022/table/api/index.mjs +2 -1
- package/esm2022/table/api/models/row-expandable-component.model.mjs +2 -0
- package/esm2022/table/components/column-value/column-value.component.mjs +3 -3
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +3 -3
- package/esm2022/table/components/table/table.component.mjs +3 -3
- package/esm2022/tableview/action/components/action/action.component.mjs +3 -3
- package/esm2022/tableview/action/components/table/action-table.component.mjs +3 -3
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +1 -3
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +14 -1
- package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +2 -0
- package/esm2022/tableview/api/index.mjs +2 -1
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +9 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -3
- package/fesm2022/mediusinc-mng-commons-form.mjs +2 -2
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +11 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +6 -6
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +13 -2
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +23 -18
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/package.json +7 -7
- package/table/api/descriptors/table.descriptor.d.ts +8 -1
- package/table/api/index.d.ts +1 -0
- package/table/api/models/row-expandable-component.model.d.ts +4 -0
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +4 -4
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +10 -0
- package/tableview/api/editor/models/field-image-preview.model.d.ts +4 -0
- package/tableview/api/index.d.ts +1 -0
- package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +1 -0
- package/version-info.json +5 -5
|
@@ -263,12 +263,12 @@ export class ActionComponent {
|
|
|
263
263
|
return menuItems;
|
|
264
264
|
}
|
|
265
265
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.PermissionService }, { token: i4.ActionExecutorService }, { token: i5.ViewContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: ActionComponent, isStandalone: true, selector: "mng-action", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, itemId: { classPropertyName: "itemId", publicName: "itemId", isSignal: true, isRequired: false, transformFunction: null }, actionData: { classPropertyName: "actionData", publicName: "actionData", isSignal: true, isRequired: false, transformFunction: null }, dataListParams: { classPropertyName: "dataListParams", publicName: "dataListParams", isSignal: true, isRequired: false, transformFunction: null }, dataProvider: { classPropertyName: "dataProvider", publicName: "dataProvider", isSignal: true, isRequired: false, transformFunction: null }, hostComponent: { classPropertyName: "hostComponent", publicName: "hostComponent", isSignal: true, isRequired: false, transformFunction: null }, routeInit: { classPropertyName: "routeInit", publicName: "route", isSignal: true, isRequired: false, transformFunction: null }, inputDisabled: { classPropertyName: "inputDisabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputLoading: { classPropertyName: "inputLoading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { finish: "finish" }, host: { properties: { "class": "hostClass()", "class.m-0": "isHostHidden()" } }, providers: [provideActionExecutor()], viewQueries: [{ propertyName: "subactionsMenu", first: true, predicate: Menu, descendants: true, isSignal: true }], ngImport: i0, template: "@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"label()\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [href]=\"!isEnabled() || inputDisabled() ? null : (actionLink.url | mngParametrize: itemId() : item() : actionData())\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n } @else {\n <a\n pButton\n pRipple\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"!isEnabled() || inputDisabled() ? null : (actionLink.pathSegments | mngParametrize: itemId() : item() : actionData())\"\n [relativeTo]=\"route()\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId() : item() : actionData()\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n }\n } @else if (action().component || action().componentFromDi) {\n <ng-container\n [mngComponent]=\"action().component\"\n [injectionToken]=\"action().componentFromDi\"\n [inputs]=\"{\n action: action(),\n item: item(),\n itemId: itemId(),\n actionData: actionData(),\n enabled: isEnabled(),\n loading: loading()\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n
|
|
266
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: ActionComponent, isStandalone: true, selector: "mng-action", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, itemId: { classPropertyName: "itemId", publicName: "itemId", isSignal: true, isRequired: false, transformFunction: null }, actionData: { classPropertyName: "actionData", publicName: "actionData", isSignal: true, isRequired: false, transformFunction: null }, dataListParams: { classPropertyName: "dataListParams", publicName: "dataListParams", isSignal: true, isRequired: false, transformFunction: null }, dataProvider: { classPropertyName: "dataProvider", publicName: "dataProvider", isSignal: true, isRequired: false, transformFunction: null }, hostComponent: { classPropertyName: "hostComponent", publicName: "hostComponent", isSignal: true, isRequired: false, transformFunction: null }, routeInit: { classPropertyName: "routeInit", publicName: "route", isSignal: true, isRequired: false, transformFunction: null }, inputDisabled: { classPropertyName: "inputDisabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputLoading: { classPropertyName: "inputLoading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { finish: "finish" }, host: { properties: { "class": "hostClass()", "class.m-0": "isHostHidden()" } }, providers: [provideActionExecutor()], viewQueries: [{ propertyName: "subactionsMenu", first: true, predicate: Menu, descendants: true, isSignal: true }], ngImport: i0, template: "@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"label()\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [href]=\"!isEnabled() || inputDisabled() ? null : (actionLink.url | mngParametrize: itemId() : item() : actionData())\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n } @else {\n <a\n pButton\n pRipple\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"!isEnabled() || inputDisabled() ? null : (actionLink.pathSegments | mngParametrize: itemId() : item() : actionData())\"\n [relativeTo]=\"route()\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId() : item() : actionData()\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n }\n } @else if (action().component || action().componentFromDi) {\n <ng-container\n [mngComponent]=\"action().component\"\n [injectionToken]=\"action().componentFromDi\"\n [inputs]=\"{\n action: action(),\n item: item(),\n itemId: itemId(),\n actionData: actionData(),\n enabled: isEnabled(),\n loading: loading()\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action().subactions.length > 0 && !action().subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action().button.icon ?? undefined\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (onClick)=\"triggerAction(action())\"\n [class]=\"buttonClass()\"\n [model]=\"subactions()\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [loading]=\"loading() || inputLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (click)=\"triggerAction(action(), undefined, $event)\"\n [class]=\"buttonClass()\"></button>\n <p-menu #subactionsMenu [model]=\"subactions()\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i7.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "pipe", type: ParametrizePipe, name: "mngParametrize" }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "component", type: i9.SplitButton, selector: "p-splitButton", inputs: ["model", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "icon", "iconPos", "label", "tooltip", "tooltipOptions", "style", "styleClass", "menuStyle", "menuStyleClass", "appendTo", "dir", "expandAriaLabel", "showTransitionOptions", "hideTransitionOptions", "buttonProps", "menuButtonProps", "autofocus", "disabled", "tabindex", "menuButtonDisabled", "buttonDisabled"], outputs: ["onClick", "onMenuHide", "onMenuShow", "onDropdownClick"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i10.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
267
267
|
}
|
|
268
268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ActionComponent, decorators: [{
|
|
269
269
|
type: Component,
|
|
270
|
-
args: [{ standalone: true, selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, ParametrizePipe, ComponentDirective, SplitButtonModule, MenuModule], providers: [provideActionExecutor()], host: { '[class]': 'hostClass()', '[class.m-0]': 'isHostHidden()' }, template: "@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"label()\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [href]=\"!isEnabled() || inputDisabled() ? null : (actionLink.url | mngParametrize: itemId() : item() : actionData())\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n } @else {\n <a\n pButton\n pRipple\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"!isEnabled() || inputDisabled() ? null : (actionLink.pathSegments | mngParametrize: itemId() : item() : actionData())\"\n [relativeTo]=\"route()\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId() : item() : actionData()\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n }\n } @else if (action().component || action().componentFromDi) {\n <ng-container\n [mngComponent]=\"action().component\"\n [injectionToken]=\"action().componentFromDi\"\n [inputs]=\"{\n action: action(),\n item: item(),\n itemId: itemId(),\n actionData: actionData(),\n enabled: isEnabled(),\n loading: loading()\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n
|
|
270
|
+
args: [{ standalone: true, selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, ParametrizePipe, ComponentDirective, SplitButtonModule, MenuModule], providers: [provideActionExecutor()], host: { '[class]': 'hostClass()', '[class.m-0]': 'isHostHidden()' }, template: "@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"label()\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [href]=\"!isEnabled() || inputDisabled() ? null : (actionLink.url | mngParametrize: itemId() : item() : actionData())\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n } @else {\n <a\n pButton\n pRipple\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"!isEnabled() || inputDisabled() ? null : (actionLink.pathSegments | mngParametrize: itemId() : item() : actionData())\"\n [relativeTo]=\"route()\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId() : item() : actionData()\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n }\n } @else if (action().component || action().componentFromDi) {\n <ng-container\n [mngComponent]=\"action().component\"\n [injectionToken]=\"action().componentFromDi\"\n [inputs]=\"{\n action: action(),\n item: item(),\n itemId: itemId(),\n actionData: actionData(),\n enabled: isEnabled(),\n loading: loading()\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action().subactions.length > 0 && !action().subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action().button.icon ?? undefined\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (onClick)=\"triggerAction(action())\"\n [class]=\"buttonClass()\"\n [model]=\"subactions()\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [loading]=\"loading() || inputLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (click)=\"triggerAction(action(), undefined, $event)\"\n [class]=\"buttonClass()\"></button>\n <p-menu #subactionsMenu [model]=\"subactions()\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n", styles: [":host{display:inline-block}\n"] }]
|
|
271
271
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.PermissionService }, { type: i4.ActionExecutorService }, { type: i5.ViewContainer, decorators: [{
|
|
272
272
|
type: Optional
|
|
273
273
|
}] }] });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvYWN0aW9uL2FjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL2FjdGlvbi9jb21wb25lbnRzL2FjdGlvbi9hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQWEsUUFBUSxFQUF5QixnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuTCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBMkIsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFJSCxrQkFBa0IsRUFJbEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsWUFBWSxFQUNm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Z0JBQzFELFFBQVEsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUNMLENBQUM7WUFFRixRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdkQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0F4U1EsZUFBZTtrR0FBZixlQUFlLHluREFKYixDQUFDLHFCQUFxQixFQUFFLENBQUMsMEVBb0JGLElBQUksZ0VDL0QxQyxvbEhBOEVBLHNGRHBDeUIsWUFBWSw0T0FBRSxZQUFZLDZGQUFFLGFBQWEsaVhBQUUsZUFBZSx1REFBRSxrQkFBa0IsZ0xBQUUsaUJBQWlCLDJ5QkFBRSxVQUFVOzsyRkFLekgsZUFBZTtrQkFYM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsYUFDeEgsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFFBRTlCLEVBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUM7OzBCQXlFNUQsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXRSZWZTdWJzY3JpcHRpb24sIGJvb2xlYW5BdHRyaWJ1dGUsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtNZW51LCBNZW51TW9kdWxlfSBmcm9tICdwcmltZW5nL21lbnUnO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7U3BsaXRCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBBY3Rpb25EYXRhLFxuICAgIEFjdGlvblBhcmFtZXRlcnMsXG4gICAgQ29tcG9uZW50RGlyZWN0aXZlLFxuICAgIERhdGFMaXN0UGFyYW1zLFxuICAgIElEYXRhUHJvdmlkZXIsXG4gICAgSWRUeXBlLFxuICAgIFBhcmFtZXRyaXplUGlwZSxcbiAgICBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBQZXJtaXNzaW9ucyxcbiAgICB0b09ic2VydmFibGVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QWN0aW9uQ29udGV4dFZhbGlkYXRpb24sIEFjdGlvbkRlc2NyaXB0b3JJbnN0LCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QsIEFjdGlvblR5cGVFbnVtLCBJQWN0aW9uQ29tcG9uZW50LCBUYWJsZXZpZXdSb3V0ZURhdGF9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Z2V0STE4bkZvckFjdGlvbkFzeW5jfSBmcm9tICcuLi8uLi9oZWxwZXJzL2kxOG4nO1xuaW1wb3J0IHtBY3Rpb25JbnN0YW5jZVN0YXRlRW51bX0gZnJvbSAnLi4vLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24taW5zdGFuY2Utc3RhdGUubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25JbnN0YW5jZX0gZnJvbSAnLi4vLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24taW5zdGFuY2UubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25FeGVjdXRvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjdGlvbi1leGVjdXRvci5zZXJ2aWNlJztcbmltcG9ydCB7cHJvdmlkZUFjdGlvbkV4ZWN1dG9yfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm92aWRlcnMvcHJvdmlkZS1hY3Rpb24tZXhlY3V0b3InO1xuaW1wb3J0IHtWaWV3Q29udGFpbmVyfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3LWNvbnRhaW5lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBQYXJhbWV0cml6ZVBpcGUsIENvbXBvbmVudERpcmVjdGl2ZSwgU3BsaXRCdXR0b25Nb2R1bGUsIE1lbnVNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVBY3Rpb25FeGVjdXRvcigpXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgICBob3N0OiB7J1tjbGFzc10nOiAnaG9zdENsYXNzKCknLCAnW2NsYXNzLm0tMF0nOiAnaXNIb3N0SGlkZGVuKCknfVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db21wb25lbnQ8SXRlbSA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIHB1YmxpYyBhY3Rpb24gPSBpbnB1dC5yZXF1aXJlZDxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlPj4oKTtcbiAgICBwdWJsaWMgaXRlbSA9IGlucHV0PEl0ZW0+KCk7XG4gICAgcHVibGljIGl0ZW1JZCA9IGlucHV0PElkVHlwZT4oKTtcbiAgICBwdWJsaWMgYWN0aW9uRGF0YSA9IGlucHV0PEFjdGlvbkRhdGE+KCk7XG4gICAgcHVibGljIGRhdGFMaXN0UGFyYW1zID0gaW5wdXQ8RGF0YUxpc3RQYXJhbXM+KCk7XG4gICAgcHVibGljIGRhdGFQcm92aWRlciA9IGlucHV0PElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT4+KCk7XG4gICAgcHVibGljIGhvc3RDb21wb25lbnQgPSBpbnB1dDxhbnk+KCk7XG4gICAgcHVibGljIHJvdXRlSW5pdCA9IGlucHV0PEFjdGl2YXRlZFJvdXRlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ3JvdXRlJ30pO1xuICAgIHB1YmxpYyBpbnB1dERpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4oZmFsc2UsIHthbGlhczogJ2Rpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGlucHV0TG9hZGluZyA9IGlucHV0PGJvb2xlYW4sIHVua25vd24+KGZhbHNlLCB7YWxpYXM6ICdsb2FkaW5nJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBpbnB1dDxBcnJheTxJdGVtPj4oW10pO1xuXG4gICAgcHVibGljIGZpbmlzaCA9IG91dHB1dDxBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPj4oKTtcblxuICAgIHB1YmxpYyBzdWJhY3Rpb25zTWVudSA9IHZpZXdDaGlsZChNZW51KTtcblxuICAgIHB1YmxpYyBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGlvbigpLmNsYXNzTmFtZSA/PyAnbW5nLWFjdGlvbi1idXR0b24nKTtcbiAgICBwdWJsaWMgaXNIb3N0SGlkZGVuID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNWaXNpYmxlKCkgfHwgIXRoaXMuaXNQZXJtaXR0ZWQoKSk7XG5cbiAgICBwdWJsaWMgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBwcml2YXRlIGlzVmlzaWJsZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgaXNWaXNpYmxlID0gc2lnbmFsKHRydWUpO1xuICAgIHByaXZhdGUgaXNQZXJtaXR0ZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIGlzUGVybWl0dGVkID0gc2lnbmFsKHRydWUpO1xuICAgIHByaXZhdGUgaXNFbmFibGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBpc0VuYWJsZWQgPSBzaWduYWwodHJ1ZSk7XG4gICAgcHJpdmF0ZSBsYWJlbFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgbGFiZWwgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSB0b29sdGlwU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyB0b29sdGlwID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gICAgcHVibGljIGFjdGlvbkxpbmsgPSBjb21wdXRlZDxBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbT4gfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCA/IGFjdGlvbiA6IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBoYXNOb1RpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3Rpb24oKS5idXR0b24ubGFiZWwgPT09IG51bGwpO1xuXG4gICAgcHJpdmF0ZSByZXN1bHRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBlcnJvclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgY21wSW5zdFN1YnNjcmlwdGlvbj86IE91dHB1dFJlZlN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyByb3V0ZSA9IGNvbXB1dGVkPEFjdGl2YXRlZFJvdXRlPigoKSA9PiB0aGlzLnJvdXRlSW5pdCgpID8/IHRoaXMucm91dGVTZXJ2aWNlKTtcbiAgICBwdWJsaWMgcm91dGVEYXRhID0gdG9TaWduYWwodGhpcy5yb3V0ZSgpLmRhdGEpO1xuICAgIHByaXZhdGUgcm91dGVQZXJtaXNzaW9ucyA9IGNvbXB1dGVkPEFQZXJtaXNzaW9ucyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLnJvdXRlRGF0YSgpO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbigpO1xuICAgICAgICBpZiAoYWN0aW9uLnRhYmxldmlld0NhdGVnb3J5ICYmIHJvdXRlRGF0YSAmJiByb3V0ZURhdGFbJ3RhYmxldmlld1Blcm1pc3Npb25zJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxldmlld1Blcm1pc3Npb25zID0gcm91dGVEYXRhWyd0YWJsZXZpZXdQZXJtaXNzaW9ucyddO1xuICAgICAgICAgICAgaWYgKHRhYmxldmlld1Blcm1pc3Npb25zW2FjdGlvbi50YWJsZXZpZXdDYXRlZ29yeV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3UGVybWlzc2lvbnNbYWN0aW9uLnRhYmxldmlld0NhdGVnb3J5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pO1xuXG4gICAgcHVibGljIGJ1dHRvbkNsYXNzID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLmFjdGlvbigpLmJ1dHRvbi5zdHlsZUNsYXNzLmJ1aWxkKHRoaXMuaGFzTm9UaXRsZSgpKSk7XG4gICAgcHVibGljIHN1YmFjdGlvbnMgPSBzaWduYWw8TWVudUl0ZW1bXT4oW10pO1xuICAgIHByaXZhdGUgc3ViYWN0aW9uU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHByaXZhdGUgaW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlU2VydmljZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGF1dGhvcml6YXRpb246IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lcjxJdGVtLCBTZXJ2aWNlPiB8IG51bGxcbiAgICApIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMucHJvY2Vzc1N1YnNjcmlwdGlvbnMoKSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3Iub25BY3Rpb25EZXN0cm95KHRoaXMuaW5zdGFuY2UpO1xuICAgICAgICB0aGlzLmlzVmlzaWJsZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5yZXN1bHRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY21wSW5zdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJhY3Rpb25TdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmlnZ2VyQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZT4sIHBhcmFtZXRlcnM/OiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+LCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChhY3Rpb24uc3ViYWN0aW9uc0FzTWVudSkge1xuICAgICAgICAgICAgdGhpcy5zdWJhY3Rpb25zTWVudSgpPy50b2dnbGUoZXZlbnQgPz8gbmV3IEV2ZW50KCd0cmlnZ2VyJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMuYWN0aW9uRGF0YSgpID8gdGhpcy5hY3Rpb25EYXRhKCkgOiB7fTtcblxuICAgICAgICBwYXJhbWV0ZXJzID8/PSB7XG4gICAgICAgICAgICBpdGVtSWQ6IHRoaXMuaXRlbUlkKCksXG4gICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0oKSxcbiAgICAgICAgICAgIGFjdGlvbkRhdGE6IGFjdGlvbkRhdGEsXG4gICAgICAgICAgICBkYXRhTGlzdFBhcmFtczogdGhpcy5kYXRhTGlzdFBhcmFtcygpLFxuICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGUoKSxcbiAgICAgICAgICAgIHNvdXJjZUNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICAgIGhvc3RDb21wb25lbnQ6IHRoaXMuaG9zdENvbXBvbmVudCgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zKClcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuYWN0aW9uRXhlY3V0b3IudHJpZ2dlckFjdGlvbjxJdGVtLCBTZXJ2aWNlPihhY3Rpb24sIHBhcmFtZXRlcnMpO1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBpbnN0YW5jZS5jb250ZXh0O1xuICAgICAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIG5vIGNvbnRleHQgaXMgcHJvdmlkZWQgaWYgcm91dGluZyBpcyB0cmlnZ2VyZWQgb3IgZWRpdG9yIGlzIG9wZW5lZCB2aWEgZGlhbG9nXG4gICAgICAgICAgICAvLyBpdCBpcyBpbiBhbm90aGVyIGNvbXBvbmVudCBqdXJpc2RpY3Rpb24gdG8gaGFuZGxlIGNvbnRleHRzXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5yZXN1bHRTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5yZXN1bHQkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5pc2guZW1pdChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5oYXNJdGVtc1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHtkYXRhOiB7ZXZlbnQ6IGV2ZW50fX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLmVycm9yJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoLmVtaXQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5pbnN0YW5jZS5zdGF0ZSQuc3Vic2NyaWJlKHMgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5SdW5TdGFydDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5SdW5FbmQ6XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5SdW5FcnJvcjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uTmV4dEFjdGlvblN0YXJ0OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZT8ubmV4dEFjdGlvbkluc3RhbmNlPy5hY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZUVudW0uRGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uTmV4dEFjdGlvbkVuZDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2U/Lm5leHRBY3Rpb25JbnN0YW5jZT8uYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVFbnVtLkRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5FcnJvckFjdGlvblN0YXJ0OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZT8uZXJyb3JBY3Rpb25JbnN0YW5jZT8uYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVFbnVtLkRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtLkVycm9yQWN0aW9uRW5kOlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZT8uZXJyb3JBY3Rpb25JbnN0YW5jZT8uYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVFbnVtLkRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3IucnVuKGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkN1c3RvbUFjdGlvbkNtcEluc3QoaW5zdGFuY2U6IElBY3Rpb25Db21wb25lbnQ8SXRlbT4pIHtcbiAgICAgICAgdGhpcy5jbXBJbnN0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNtcEluc3RTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS50cmlnZ2VyLnN1YnNjcmliZShwYXJhbXMgPT4gdGhpcy50cmlnZ2VyQWN0aW9uKHRoaXMuYWN0aW9uKCksIHBhcmFtcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N1YnNjcmlwdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnM6IEFjdGlvblBhcmFtZXRlcnM8SXRlbT4gPSB7XG4gICAgICAgICAgICBpdGVtSWQ6IHRoaXMuaXRlbUlkKCksXG4gICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0oKSxcbiAgICAgICAgICAgIGFjdGlvbkRhdGE6IHRoaXMuYWN0aW9uRGF0YSgpLFxuICAgICAgICAgICAgc291cmNlQ29tcG9uZW50OiB0aGlzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uKCk7XG4gICAgICAgIGlmIChhY3Rpb24uaGFzSXRlbXNTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uKGFjdGlvbiwgcGFyYW1ldGVycywgdGhpcy5kYXRhUHJvdmlkZXIoKSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24gPSB0b09ic2VydmFibGUoYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmlzVmlzaWJsZS5zZXQocmVzKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZVBlcm1pc3Npb25zID0gdGhpcy5yb3V0ZVBlcm1pc3Npb25zKCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24ucGVybWlzc2lvbnMgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiByb3V0ZVBlcm1pc3Npb25zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYWN0aW9uLnBlcm1pc3Npb25zICYmIHJvdXRlUGVybWlzc2lvbnMgPyBQZXJtaXNzaW9ucy5BbGwub2Yocm91dGVQZXJtaXNzaW9ucywgYWN0aW9uLnBlcm1pc3Npb25zKSA6IHJvdXRlUGVybWlzc2lvbnMgPz8gYWN0aW9uLnBlcm1pc3Npb25zITtcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uID0gdGhpcy5hdXRob3JpemF0aW9uLmlzQWN0aW9uVmlzaWJsZShwZXJtaXNzaW9ucywgY29udGV4dCBhcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgdGhpcy5yb3V0ZSgpLnNuYXBzaG90KS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmlzUGVybWl0dGVkLnNldChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5pc0VuYWJsZWRGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YnNjcmlwdGlvbiA9IHRvT2JzZXJ2YWJsZShhY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHRoaXMuaXNFbmFibGVkLnNldChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNOb1RpdGxlKCkpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsU3Vic2NyaXB0aW9uID0gZ2V0STE4bkZvckFjdGlvbkFzeW5jKHRoaXMudHJhbnNsYXRlLCBhY3Rpb24sICd0aXRsZScsIGFjdGlvbi5idXR0b24ubGFiZWwgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0oKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBpMThuID0+IHRoaXMubGFiZWwuc2V0KGkxOG4gPz8gJycpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKGFjdGlvbi5idXR0b24udG9vbHRpcCkge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uID0gZ2V0STE4bkZvckFjdGlvbkFzeW5jKHRoaXMudHJhbnNsYXRlLCBhY3Rpb24sICd0b29sdGlwJywgYWN0aW9uLmJ1dHRvbi50b29sdGlwLCB0aGlzLml0ZW0oKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBpMThuID0+IHRoaXMudG9vbHRpcC5zZXQoaTE4biA/PyAnJylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJhY3Rpb25zLnNldCh0aGlzLnByb2Nlc3NTdWJhY3Rpb25zKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N1YmFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIHRoaXMuc3ViYWN0aW9uU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJhY3Rpb25TdWJzY3JpcHRpb25zID0gW107XG5cbiAgICAgICAgY29uc3QgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3ViYWN0aW9uIG9mIHRoaXMuYWN0aW9uKCkuc3ViYWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgbWVudUl0ZW0gPSB7fSBhcyBNZW51SXRlbTtcblxuICAgICAgICAgICAgbWVudUl0ZW0uaWNvbiA9IHN1YmFjdGlvbi5idXR0b24uaWNvbiA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnN1YmFjdGlvblN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBnZXRJMThuRm9yQWN0aW9uQXN5bmModGhpcy50cmFuc2xhdGUsIHN1YmFjdGlvbiwgJ3RpdGxlJywgc3ViYWN0aW9uLmJ1dHRvbi5sYWJlbCA/PyB1bmRlZmluZWQsIHRoaXMuaXRlbSgpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gKG1lbnVJdGVtLmxhYmVsID0gcmVzISlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3ViYWN0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIGdldEkxOG5Gb3JBY3Rpb25Bc3luYyh0aGlzLnRyYW5zbGF0ZSwgc3ViYWN0aW9uLCAndG9vbHRpcCcsIHRoaXMuYWN0aW9uKCkuYnV0dG9uLnRvb2x0aXAsIHRoaXMuaXRlbSgpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gKG1lbnVJdGVtLnRvb2x0aXAgPSByZXMhKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1JZDogdGhpcy5pdGVtSWQoKSxcbiAgICAgICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0oKSxcbiAgICAgICAgICAgICAgICBhY3Rpb25EYXRhOiB0aGlzLmFjdGlvbkRhdGEoKSxcbiAgICAgICAgICAgICAgICBzb3VyY2VDb21wb25lbnQ6IHRoaXNcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChzdWJhY3Rpb24uaGFzSXRlbXNTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uKHN1YmFjdGlvbiwgcGFyYW1ldGVycywgdGhpcy5kYXRhUHJvdmlkZXIoKSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJhY3Rpb25TdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRvT2JzZXJ2YWJsZShzdWJhY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gKG1lbnVJdGVtLmRpc2FibGVkID0gIXJlcylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2aXNpYmlsaXR5T2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8Ym9vbGVhbj5bXSA9IFtdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWJhY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5T2JzZXJ2YWJsZXMucHVzaCh0b09ic2VydmFibGUoc3ViYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1YmFjdGlvbi5wZXJtaXNzaW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5T2JzZXJ2YWJsZXMucHVzaCh0aGlzLmF1dGhvcml6YXRpb24uaXNBY3Rpb25WaXNpYmxlKHN1YmFjdGlvbi5wZXJtaXNzaW9ucywgY29udGV4dCBhcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgdGhpcy5yb3V0ZSgpLnNuYXBzaG90KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUoKS5zbmFwc2hvdC5kYXRhIGFzIFRhYmxldmlld1JvdXRlRGF0YTtcbiAgICAgICAgICAgIGlmIChzdWJhY3Rpb24udGFibGV2aWV3Q2F0ZWdvcnkgJiYgcm91dGVEYXRhLnRhYmxldmlld1Blcm1pc3Npb25zICYmIHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9uc1tzdWJhY3Rpb24udGFibGV2aWV3Q2F0ZWdvcnldKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVQZXJtaXNzaW9ucyA9IHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9uc1tzdWJhY3Rpb24udGFibGV2aWV3Q2F0ZWdvcnldO1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHlPYnNlcnZhYmxlcy5wdXNoKHRoaXMuYXV0aG9yaXphdGlvbi5pc0FjdGlvblZpc2libGUocm91dGVQZXJtaXNzaW9ucywgY29udGV4dCBhcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgdGhpcy5yb3V0ZSgpLnNuYXBzaG90KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ViYWN0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QodmlzaWJpbGl0eU9ic2VydmFibGVzKS5zdWJzY3JpYmUodmlzaWJpbGl0aWVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0udmlzaWJsZSA9IHZpc2liaWxpdGllcy5ldmVyeSh2YWx1ZSA9PiB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG1lbnVJdGVtLmNvbW1hbmQgPSAoKSA9PiB0aGlzLnRyaWdnZXJBY3Rpb24oc3ViYWN0aW9uKTtcblxuICAgICAgICAgICAgbWVudUl0ZW1zLnB1c2gobWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW51SXRlbXM7XG4gICAgfVxufVxuIiwiQGlmIChpc1Zpc2libGUoKSAmJiBpc1Blcm1pdHRlZCgpKSB7XG4gICAgQGlmIChhY3Rpb25MaW5rKCk7IGFzIGFjdGlvbkxpbmspIHtcbiAgICAgICAgQGlmIChhY3Rpb25MaW5rLnVybCAhPT0gJycpIHtcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24oKS5idXR0b24uaWNvbilcIlxuICAgICAgICAgICAgICAgIFtpY29uUG9zXT1cImFjdGlvbigpLmJ1dHRvbi5pY29uUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cIiFpc0VuYWJsZWQoKSB8fCBpbnB1dERpc2FibGVkKCkgPyBudWxsIDogKGFjdGlvbkxpbmsudXJsIHwgbW5nUGFyYW1ldHJpemU6IGl0ZW1JZCgpIDogaXRlbSgpIDogYWN0aW9uRGF0YSgpKVwiXG4gICAgICAgICAgICAgICAgW3RhcmdldF09XCJhY3Rpb25MaW5rLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VuYWJsZWQoKSB8fCBpbnB1dERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwKClcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiYWN0aW9uKCkuYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzcygpXCI+PC9hPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbigpLmJ1dHRvbi5pY29uKVwiXG4gICAgICAgICAgICAgICAgW2ljb25Qb3NdPVwiYWN0aW9uKCkuYnV0dG9uLmljb25Qb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsKClcIlxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uTGluay50YXJnZXRcIlxuICAgICAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cImFjdGlvbkxpbmsucmVwbGFjZVVybFwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiIWlzRW5hYmxlZCgpIHx8IGlucHV0RGlzYWJsZWQoKSA/IG51bGwgOiAoYWN0aW9uTGluay5wYXRoU2VnbWVudHMgfCBtbmdQYXJhbWV0cml6ZTogaXRlbUlkKCkgOiBpdGVtKCkgOiBhY3Rpb25EYXRhKCkpXCJcbiAgICAgICAgICAgICAgICBbcmVsYXRpdmVUb109XCJyb3V0ZSgpXCJcbiAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiYWN0aW9uTGluay5xdWVyeVBhcmFtcyB8IG1uZ1BhcmFtZXRyaXplOiBpdGVtSWQoKSA6IGl0ZW0oKSA6IGFjdGlvbkRhdGEoKVwiXG4gICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiYWN0aW9uTGluay5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzRW5hYmxlZCgpIHx8IGlucHV0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInRvb2x0aXAoKVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJhY3Rpb24oKS5idXR0b24udG9vbHRpcFBvc2l0aW9uID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzKClcIj48L2E+XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmIChhY3Rpb24oKS5jb21wb25lbnQgfHwgYWN0aW9uKCkuY29tcG9uZW50RnJvbURpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwiYWN0aW9uKCkuY29tcG9uZW50XCJcbiAgICAgICAgICAgIFtpbmplY3Rpb25Ub2tlbl09XCJhY3Rpb24oKS5jb21wb25lbnRGcm9tRGlcIlxuICAgICAgICAgICAgW2lucHV0c109XCJ7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24oKSxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtKCksXG4gICAgICAgICAgICAgICAgaXRlbUlkOiBpdGVtSWQoKSxcbiAgICAgICAgICAgICAgICBhY3Rpb25EYXRhOiBhY3Rpb25EYXRhKCksXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogaXNFbmFibGVkKCksXG4gICAgICAgICAgICAgICAgbG9hZGluZzogbG9hZGluZygpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChpbnN0YW5jZUNyZWF0ZWQpPVwib25DdXN0b21BY3Rpb25DbXBJbnN0KCRldmVudClcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICB9IEBlbHNlIGlmIChhY3Rpb24oKS5zdWJhY3Rpb25zLmxlbmd0aCA+IDAgJiYgIWFjdGlvbigpLnN1YmFjdGlvbnNBc01lbnUpIHtcbiAgICAgICAgPHAtc3BsaXRCdXR0b25cbiAgICAgICAgICAgIFtpY29uXT1cImFjdGlvbigpLmJ1dHRvbi5pY29uID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICBbaWNvblBvc109XCJhY3Rpb24oKS5idXR0b24uaWNvblBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwKClcIlxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJhY3Rpb24oKS5idXR0b24udG9vbHRpcFBvc2l0aW9uID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRW5hYmxlZCgpIHx8IGlucHV0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAob25DbGljayk9XCJ0cmlnZ2VyQWN0aW9uKGFjdGlvbigpKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3MoKVwiXG4gICAgICAgICAgICBbbW9kZWxdPVwic3ViYWN0aW9ucygpXCI+XG4gICAgICAgIDwvcC1zcGxpdEJ1dHRvbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbigpLmJ1dHRvbi5pY29uKVwiXG4gICAgICAgICAgICBbaWNvblBvc109XCJhY3Rpb24oKS5idXR0b24uaWNvblBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwKClcIlxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJhY3Rpb24oKS5idXR0b24udG9vbHRpcFBvc2l0aW9uID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nKCkgfHwgaW5wdXRMb2FkaW5nKClcIlxuICAgICAgICAgICAgbG9hZGluZ0ljb249XCJwaSBwaS1zcGluIHBpLXNwaW5uZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VuYWJsZWQoKSB8fCBpbnB1dERpc2FibGVkKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJBY3Rpb24oYWN0aW9uKCksIHVuZGVmaW5lZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3MoKVwiPjwvYnV0dG9uPlxuICAgICAgICA8cC1tZW51ICNzdWJhY3Rpb25zTWVudSBbbW9kZWxdPVwic3ViYWN0aW9ucygpXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBzdHlsZUNsYXNzPVwibW5nLWFjdGlvbi1tZW51XCI+PC9wLW1lbnU+XG4gICAgfVxufVxuIl19
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvYWN0aW9uL2FjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL2FjdGlvbi9jb21wb25lbnRzL2FjdGlvbi9hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQWEsUUFBUSxFQUF5QixnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuTCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBMkIsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFJSCxrQkFBa0IsRUFJbEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsWUFBWSxFQUNm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Z0JBQzFELFFBQVEsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUNMLENBQUM7WUFFRixRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdkQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0F4U1EsZUFBZTtrR0FBZixlQUFlLHluREFKYixDQUFDLHFCQUFxQixFQUFFLENBQUMsMEVBb0JGLElBQUksZ0VDL0QxQyxrbEhBNkVBLHNGRG5DeUIsWUFBWSw0T0FBRSxZQUFZLDZGQUFFLGFBQWEsaVhBQUUsZUFBZSx1REFBRSxrQkFBa0IsZ0xBQUUsaUJBQWlCLDJ5QkFBRSxVQUFVOzsyRkFLekgsZUFBZTtrQkFYM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsYUFDeEgsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFFBRTlCLEVBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUM7OzBCQXlFNUQsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXRSZWZTdWJzY3JpcHRpb24sIGJvb2xlYW5BdHRyaWJ1dGUsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtNZW51LCBNZW51TW9kdWxlfSBmcm9tICdwcmltZW5nL21lbnUnO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7U3BsaXRCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBBY3Rpb25EYXRhLFxuICAgIEFjdGlvblBhcmFtZXRlcnMsXG4gICAgQ29tcG9uZW50RGlyZWN0aXZlLFxuICAgIERhdGFMaXN0UGFyYW1zLFxuICAgIElEYXRhUHJvdmlkZXIsXG4gICAgSWRUeXBlLFxuICAgIFBhcmFtZXRyaXplUGlwZSxcbiAgICBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBQZXJtaXNzaW9ucyxcbiAgICB0b09ic2VydmFibGVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QWN0aW9uQ29udGV4dFZhbGlkYXRpb24sIEFjdGlvbkRlc2NyaXB0b3JJbnN0LCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QsIEFjdGlvblR5cGVFbnVtLCBJQWN0aW9uQ29tcG9uZW50LCBUYWJsZXZpZXdSb3V0ZURhdGF9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Z2V0STE4bkZvckFjdGlvbkFzeW5jfSBmcm9tICcuLi8uLi9oZWxwZXJzL2kxOG4nO1xuaW1wb3J0IHtBY3Rpb25JbnN0YW5jZVN0YXRlRW51bX0gZnJvbSAnLi4vLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24taW5zdGFuY2Utc3RhdGUubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25JbnN0YW5jZX0gZnJvbSAnLi4vLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24taW5zdGFuY2UubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25FeGVjdXRvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjdGlvbi1leGVjdXRvci5zZXJ2aWNlJztcbmltcG9ydCB7cHJvdmlkZUFjdGlvbkV4ZWN1dG9yfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm92aWRlcnMvcHJvdmlkZS1hY3Rpb24tZXhlY3V0b3InO1xuaW1wb3J0IHtWaWV3Q29udGFpbmVyfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3LWNvbnRhaW5lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBQYXJhbWV0cml6ZVBpcGUsIENvbXBvbmVudERpcmVjdGl2ZSwgU3BsaXRCdXR0b25Nb2R1bGUsIE1lbnVNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVBY3Rpb25FeGVjdXRvcigpXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgICBob3N0OiB7J1tjbGFzc10nOiAnaG9zdENsYXNzKCknLCAnW2NsYXNzLm0tMF0nOiAnaXNIb3N0SGlkZGVuKCknfVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db21wb25lbnQ8SXRlbSA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIHB1YmxpYyBhY3Rpb24gPSBpbnB1dC5yZXF1aXJlZDxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlPj4oKTtcbiAgICBwdWJsaWMgaXRlbSA9IGlucHV0PEl0ZW0+KCk7XG4gICAgcHVibGljIGl0ZW1JZCA9IGlucHV0PElkVHlwZT4oKTtcbiAgICBwdWJsaWMgYWN0aW9uRGF0YSA9IGlucHV0PEFjdGlvbkRhdGE+KCk7XG4gICAgcHVibGljIGRhdGFMaXN0UGFyYW1zID0gaW5wdXQ8RGF0YUxpc3RQYXJhbXM+KCk7XG4gICAgcHVibGljIGRhdGFQcm92aWRlciA9IGlucHV0PElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT4+KCk7XG4gICAgcHVibGljIGhvc3RDb21wb25lbnQgPSBpbnB1dDxhbnk+KCk7XG4gICAgcHVibGljIHJvdXRlSW5pdCA9IGlucHV0PEFjdGl2YXRlZFJvdXRlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ3JvdXRlJ30pO1xuICAgIHB1YmxpYyBpbnB1dERpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4oZmFsc2UsIHthbGlhczogJ2Rpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGlucHV0TG9hZGluZyA9IGlucHV0PGJvb2xlYW4sIHVua25vd24+KGZhbHNlLCB7YWxpYXM6ICdsb2FkaW5nJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBpbnB1dDxBcnJheTxJdGVtPj4oW10pO1xuXG4gICAgcHVibGljIGZpbmlzaCA9IG91dHB1dDxBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPj4oKTtcblxuICAgIHB1YmxpYyBzdWJhY3Rpb25zTWVudSA9IHZpZXdDaGlsZChNZW51KTtcblxuICAgIHB1YmxpYyBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGlvbigpLmNsYXNzTmFtZSA/PyAnbW5nLWFjdGlvbi1idXR0b24nKTtcbiAgICBwdWJsaWMgaXNIb3N0SGlkZGVuID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNWaXNpYmxlKCkgfHwgIXRoaXMuaXNQZXJtaXR0ZWQoKSk7XG5cbiAgICBwdWJsaWMgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBwcml2YXRlIGlzVmlzaWJsZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgaXNWaXNpYmxlID0gc2lnbmFsKHRydWUpO1xuICAgIHByaXZhdGUgaXNQZXJtaXR0ZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIGlzUGVybWl0dGVkID0gc2lnbmFsKHRydWUpO1xuICAgIHByaXZhdGUgaXNFbmFibGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBpc0VuYWJsZWQgPSBzaWduYWwodHJ1ZSk7XG4gICAgcHJpdmF0ZSBsYWJlbFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgbGFiZWwgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSB0b29sdGlwU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyB0b29sdGlwID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gICAgcHVibGljIGFjdGlvbkxpbmsgPSBjb21wdXRlZDxBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbT4gfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCA/IGFjdGlvbiA6IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBoYXNOb1RpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3Rpb24oKS5idXR0b24ubGFiZWwgPT09IG51bGwpO1xuXG4gICAgcHJpdmF0ZSByZXN1bHRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBlcnJvclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgY21wSW5zdFN1YnNjcmlwdGlvbj86IE91dHB1dFJlZlN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyByb3V0ZSA9IGNvbXB1dGVkPEFjdGl2YXRlZFJvdXRlPigoKSA9PiB0aGlzLnJvdXRlSW5pdCgpID8/IHRoaXMucm91dGVTZXJ2aWNlKTtcbiAgICBwdWJsaWMgcm91dGVEYXRhID0gdG9TaWduYWwodGhpcy5yb3V0ZSgpLmRhdGEpO1xuICAgIHByaXZhdGUgcm91dGVQZXJtaXNzaW9ucyA9IGNvbXB1dGVkPEFQZXJtaXNzaW9ucyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLnJvdXRlRGF0YSgpO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbigpO1xuICAgICAgICBpZiAoYWN0aW9uLnRhYmxldmlld0NhdGVnb3J5ICYmIHJvdXRlRGF0YSAmJiByb3V0ZURhdGFbJ3RhYmxldmlld1Blcm1pc3Npb25zJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxldmlld1Blcm1pc3Npb25zID0gcm91dGVEYXRhWyd0YWJsZXZpZXdQZXJtaXNzaW9ucyddO1xuICAgICAgICAgICAgaWYgKHRhYmxldmlld1Blcm1pc3Npb25zW2FjdGlvbi50YWJsZXZpZXdDYXRlZ29yeV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3UGVybWlzc2lvbnNbYWN0aW9uLnRhYmxldmlld0NhdGVnb3J5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pO1xuXG4gICAgcHVibGljIGJ1dHRvbkNsYXNzID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLmFjdGlvbigpLmJ1dHRvbi5zdHlsZUNsYXNzLmJ1aWxkKHRoaXMuaGFzTm9UaXRsZSgpKSk7XG4gICAgcHVibGljIHN1YmFjdGlvbnMgPSBzaWduYWw8TWVudUl0ZW1bXT4oW10pO1xuICAgIHByaXZhdGUgc3ViYWN0aW9uU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHByaXZhdGUgaW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlU2VydmljZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGF1dGhvcml6YXRpb246IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lcjxJdGVtLCBTZXJ2aWNlPiB8IG51bGxcbiAgICApIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMucHJvY2Vzc1N1YnNjcmlwdGlvbnMoKSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3Iub25BY3Rpb25EZXN0cm95KHRoaXMuaW5zdGFuY2UpO1xuICAgICAgICB0aGlzLmlzVmlzaWJsZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5yZXN1bHRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY21wSW5zdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJhY3Rpb25TdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmlnZ2VyQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZT4sIHBhcmFtZXRlcnM/OiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+LCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChhY3Rpb24uc3ViYWN0aW9uc0FzTWVudSkge1xuICAgICAgICAgICAgdGhpcy5zdWJhY3Rpb25zTWVudSgpPy50b2dnbGUoZXZlbnQgPz8gbmV3IEV2ZW50KCd0cmlnZ2VyJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMuYWN0aW9uRGF0YSgpID8gdGhpcy5hY3Rpb25EYXRhKCkgOiB7fTtcblxuICAgICAgICBwYXJhbWV0ZXJzID8/PSB7XG4gICAgICAgICAgICBpdGVtSWQ6IHRoaXMuaXRlbUlkKCksXG4gICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0oKSxcbiAgICAgICAgICAgIGFjdGlvbkRhdGE6IGFjdGlvbkRhdGEsXG4gICAgICAgICAgICBkYXRhTGlzdFBhcmFtczogdGhpcy5kYXRhTGlzdFBhcmFtcygpLFxuICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGUoKSxcbiAgICAgICAgICAgIHNvdXJjZUNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICAgIGhvc3RDb21wb25lbnQ6IHRoaXMuaG9zdENvbXBvbmVudCgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zKClcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuYWN0aW9uRXhlY3V0b3IudHJpZ2dlckFjdGlvbjxJdGVtLCBTZXJ2aWNlPihhY3Rpb24sIHBhcmFtZXRlcnMpO1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBpbnN0YW5jZS5jb250ZXh0O1xuICAgICAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIG5vIGNvbnRleHQgaXMgcHJvdmlkZWQgaWYgcm91dGluZyBpcyB0cmlnZ2VyZWQgb3IgZWRpdG9yIGlzIG9wZW5lZCB2aWEgZGlhbG9nXG4gICAgICAgICAgICAvLyBpdCBpcyBpbiBhbm90aGVyIGNvbXBvbmVudCBqdXJpc2RpY3Rpb24gdG8gaGFuZGxlIGNvbnRleHRzXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5yZXN1bHRTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5yZXN1bHQkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5pc2guZW1pdChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5oYXNJdGVtc1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHtkYXRhOiB7ZXZlbnQ6IGV2ZW50fX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLmVycm9yJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoLmVtaXQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5pbnN0YW5jZS5zdGF0ZSQuc3Vic2NyaWJlKHMgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5SdW5TdGFydDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5SdW5FbmQ6XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5SdW5FcnJvcjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uTmV4dEFjdGlvblN0YXJ0OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZT8ubmV4dEFjdGlvbkluc3RhbmNlPy5hY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZUVudW0uRGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uTmV4dEFjdGlvbkVuZDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2U/Lm5leHRBY3Rpb25JbnN0YW5jZT8uYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVFbnVtLkRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5FcnJvckFjdGlvblN0YXJ0OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZT8uZXJyb3JBY3Rpb25JbnN0YW5jZT8uYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVFbnVtLkRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtLkVycm9yQWN0aW9uRW5kOlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZT8uZXJyb3JBY3Rpb25JbnN0YW5jZT8uYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVFbnVtLkRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3IucnVuKGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkN1c3RvbUFjdGlvbkNtcEluc3QoaW5zdGFuY2U6IElBY3Rpb25Db21wb25lbnQ8SXRlbT4pIHtcbiAgICAgICAgdGhpcy5jbXBJbnN0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNtcEluc3RTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS50cmlnZ2VyLnN1YnNjcmliZShwYXJhbXMgPT4gdGhpcy50cmlnZ2VyQWN0aW9uKHRoaXMuYWN0aW9uKCksIHBhcmFtcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N1YnNjcmlwdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnM6IEFjdGlvblBhcmFtZXRlcnM8SXRlbT4gPSB7XG4gICAgICAgICAgICBpdGVtSWQ6IHRoaXMuaXRlbUlkKCksXG4gICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0oKSxcbiAgICAgICAgICAgIGFjdGlvbkRhdGE6IHRoaXMuYWN0aW9uRGF0YSgpLFxuICAgICAgICAgICAgc291cmNlQ29tcG9uZW50OiB0aGlzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uKCk7XG4gICAgICAgIGlmIChhY3Rpb24uaGFzSXRlbXNTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uKGFjdGlvbiwgcGFyYW1ldGVycywgdGhpcy5kYXRhUHJvdmlkZXIoKSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24gPSB0b09ic2VydmFibGUoYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmlzVmlzaWJsZS5zZXQocmVzKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZVBlcm1pc3Npb25zID0gdGhpcy5yb3V0ZVBlcm1pc3Npb25zKCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24ucGVybWlzc2lvbnMgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiByb3V0ZVBlcm1pc3Npb25zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYWN0aW9uLnBlcm1pc3Npb25zICYmIHJvdXRlUGVybWlzc2lvbnMgPyBQZXJtaXNzaW9ucy5BbGwub2Yocm91dGVQZXJtaXNzaW9ucywgYWN0aW9uLnBlcm1pc3Npb25zKSA6IHJvdXRlUGVybWlzc2lvbnMgPz8gYWN0aW9uLnBlcm1pc3Npb25zITtcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uID0gdGhpcy5hdXRob3JpemF0aW9uLmlzQWN0aW9uVmlzaWJsZShwZXJtaXNzaW9ucywgY29udGV4dCBhcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgdGhpcy5yb3V0ZSgpLnNuYXBzaG90KS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmlzUGVybWl0dGVkLnNldChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5pc0VuYWJsZWRGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YnNjcmlwdGlvbiA9IHRvT2JzZXJ2YWJsZShhY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHRoaXMuaXNFbmFibGVkLnNldChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNOb1RpdGxlKCkpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsU3Vic2NyaXB0aW9uID0gZ2V0STE4bkZvckFjdGlvbkFzeW5jKHRoaXMudHJhbnNsYXRlLCBhY3Rpb24sICd0aXRsZScsIGFjdGlvbi5idXR0b24ubGFiZWwgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0oKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBpMThuID0+IHRoaXMubGFiZWwuc2V0KGkxOG4gPz8gJycpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKGFjdGlvbi5idXR0b24udG9vbHRpcCkge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uID0gZ2V0STE4bkZvckFjdGlvbkFzeW5jKHRoaXMudHJhbnNsYXRlLCBhY3Rpb24sICd0b29sdGlwJywgYWN0aW9uLmJ1dHRvbi50b29sdGlwLCB0aGlzLml0ZW0oKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBpMThuID0+IHRoaXMudG9vbHRpcC5zZXQoaTE4biA/PyAnJylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJhY3Rpb25zLnNldCh0aGlzLnByb2Nlc3NTdWJhY3Rpb25zKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N1YmFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIHRoaXMuc3ViYWN0aW9uU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJhY3Rpb25TdWJzY3JpcHRpb25zID0gW107XG5cbiAgICAgICAgY29uc3QgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3ViYWN0aW9uIG9mIHRoaXMuYWN0aW9uKCkuc3ViYWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgbWVudUl0ZW0gPSB7fSBhcyBNZW51SXRlbTtcblxuICAgICAgICAgICAgbWVudUl0ZW0uaWNvbiA9IHN1YmFjdGlvbi5idXR0b24uaWNvbiA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnN1YmFjdGlvblN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBnZXRJMThuRm9yQWN0aW9uQXN5bmModGhpcy50cmFuc2xhdGUsIHN1YmFjdGlvbiwgJ3RpdGxlJywgc3ViYWN0aW9uLmJ1dHRvbi5sYWJlbCA/PyB1bmRlZmluZWQsIHRoaXMuaXRlbSgpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gKG1lbnVJdGVtLmxhYmVsID0gcmVzISlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3ViYWN0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIGdldEkxOG5Gb3JBY3Rpb25Bc3luYyh0aGlzLnRyYW5zbGF0ZSwgc3ViYWN0aW9uLCAndG9vbHRpcCcsIHRoaXMuYWN0aW9uKCkuYnV0dG9uLnRvb2x0aXAsIHRoaXMuaXRlbSgpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gKG1lbnVJdGVtLnRvb2x0aXAgPSByZXMhKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1JZDogdGhpcy5pdGVtSWQoKSxcbiAgICAgICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0oKSxcbiAgICAgICAgICAgICAgICBhY3Rpb25EYXRhOiB0aGlzLmFjdGlvbkRhdGEoKSxcbiAgICAgICAgICAgICAgICBzb3VyY2VDb21wb25lbnQ6IHRoaXNcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChzdWJhY3Rpb24uaGFzSXRlbXNTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uKHN1YmFjdGlvbiwgcGFyYW1ldGVycywgdGhpcy5kYXRhUHJvdmlkZXIoKSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJhY3Rpb25TdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRvT2JzZXJ2YWJsZShzdWJhY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gKG1lbnVJdGVtLmRpc2FibGVkID0gIXJlcylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2aXNpYmlsaXR5T2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8Ym9vbGVhbj5bXSA9IFtdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWJhY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5T2JzZXJ2YWJsZXMucHVzaCh0b09ic2VydmFibGUoc3ViYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1YmFjdGlvbi5wZXJtaXNzaW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5T2JzZXJ2YWJsZXMucHVzaCh0aGlzLmF1dGhvcml6YXRpb24uaXNBY3Rpb25WaXNpYmxlKHN1YmFjdGlvbi5wZXJtaXNzaW9ucywgY29udGV4dCBhcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgdGhpcy5yb3V0ZSgpLnNuYXBzaG90KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUoKS5zbmFwc2hvdC5kYXRhIGFzIFRhYmxldmlld1JvdXRlRGF0YTtcbiAgICAgICAgICAgIGlmIChzdWJhY3Rpb24udGFibGV2aWV3Q2F0ZWdvcnkgJiYgcm91dGVEYXRhLnRhYmxldmlld1Blcm1pc3Npb25zICYmIHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9uc1tzdWJhY3Rpb24udGFibGV2aWV3Q2F0ZWdvcnldKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVQZXJtaXNzaW9ucyA9IHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9uc1tzdWJhY3Rpb24udGFibGV2aWV3Q2F0ZWdvcnldO1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHlPYnNlcnZhYmxlcy5wdXNoKHRoaXMuYXV0aG9yaXphdGlvbi5pc0FjdGlvblZpc2libGUocm91dGVQZXJtaXNzaW9ucywgY29udGV4dCBhcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgdGhpcy5yb3V0ZSgpLnNuYXBzaG90KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ViYWN0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QodmlzaWJpbGl0eU9ic2VydmFibGVzKS5zdWJzY3JpYmUodmlzaWJpbGl0aWVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0udmlzaWJsZSA9IHZpc2liaWxpdGllcy5ldmVyeSh2YWx1ZSA9PiB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG1lbnVJdGVtLmNvbW1hbmQgPSAoKSA9PiB0aGlzLnRyaWdnZXJBY3Rpb24oc3ViYWN0aW9uKTtcblxuICAgICAgICAgICAgbWVudUl0ZW1zLnB1c2gobWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW51SXRlbXM7XG4gICAgfVxufVxuIiwiQGlmIChpc1Zpc2libGUoKSAmJiBpc1Blcm1pdHRlZCgpKSB7XG4gICAgQGlmIChhY3Rpb25MaW5rKCk7IGFzIGFjdGlvbkxpbmspIHtcbiAgICAgICAgQGlmIChhY3Rpb25MaW5rLnVybCAhPT0gJycpIHtcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24oKS5idXR0b24uaWNvbilcIlxuICAgICAgICAgICAgICAgIFtpY29uUG9zXT1cImFjdGlvbigpLmJ1dHRvbi5pY29uUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cIiFpc0VuYWJsZWQoKSB8fCBpbnB1dERpc2FibGVkKCkgPyBudWxsIDogKGFjdGlvbkxpbmsudXJsIHwgbW5nUGFyYW1ldHJpemU6IGl0ZW1JZCgpIDogaXRlbSgpIDogYWN0aW9uRGF0YSgpKVwiXG4gICAgICAgICAgICAgICAgW3RhcmdldF09XCJhY3Rpb25MaW5rLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VuYWJsZWQoKSB8fCBpbnB1dERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwKClcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiYWN0aW9uKCkuYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzcygpXCI+PC9hPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbigpLmJ1dHRvbi5pY29uKVwiXG4gICAgICAgICAgICAgICAgW2ljb25Qb3NdPVwiYWN0aW9uKCkuYnV0dG9uLmljb25Qb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsKClcIlxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uTGluay50YXJnZXRcIlxuICAgICAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cImFjdGlvbkxpbmsucmVwbGFjZVVybFwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiIWlzRW5hYmxlZCgpIHx8IGlucHV0RGlzYWJsZWQoKSA/IG51bGwgOiAoYWN0aW9uTGluay5wYXRoU2VnbWVudHMgfCBtbmdQYXJhbWV0cml6ZTogaXRlbUlkKCkgOiBpdGVtKCkgOiBhY3Rpb25EYXRhKCkpXCJcbiAgICAgICAgICAgICAgICBbcmVsYXRpdmVUb109XCJyb3V0ZSgpXCJcbiAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiYWN0aW9uTGluay5xdWVyeVBhcmFtcyB8IG1uZ1BhcmFtZXRyaXplOiBpdGVtSWQoKSA6IGl0ZW0oKSA6IGFjdGlvbkRhdGEoKVwiXG4gICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiYWN0aW9uTGluay5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzRW5hYmxlZCgpIHx8IGlucHV0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInRvb2x0aXAoKVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJhY3Rpb24oKS5idXR0b24udG9vbHRpcFBvc2l0aW9uID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzKClcIj48L2E+XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmIChhY3Rpb24oKS5jb21wb25lbnQgfHwgYWN0aW9uKCkuY29tcG9uZW50RnJvbURpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwiYWN0aW9uKCkuY29tcG9uZW50XCJcbiAgICAgICAgICAgIFtpbmplY3Rpb25Ub2tlbl09XCJhY3Rpb24oKS5jb21wb25lbnRGcm9tRGlcIlxuICAgICAgICAgICAgW2lucHV0c109XCJ7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24oKSxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtKCksXG4gICAgICAgICAgICAgICAgaXRlbUlkOiBpdGVtSWQoKSxcbiAgICAgICAgICAgICAgICBhY3Rpb25EYXRhOiBhY3Rpb25EYXRhKCksXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogaXNFbmFibGVkKCksXG4gICAgICAgICAgICAgICAgbG9hZGluZzogbG9hZGluZygpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChpbnN0YW5jZUNyZWF0ZWQpPVwib25DdXN0b21BY3Rpb25DbXBJbnN0KCRldmVudClcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSBpZiAoYWN0aW9uKCkuc3ViYWN0aW9ucy5sZW5ndGggPiAwICYmICFhY3Rpb24oKS5zdWJhY3Rpb25zQXNNZW51KSB7XG4gICAgICAgIDxwLXNwbGl0QnV0dG9uXG4gICAgICAgICAgICBbaWNvbl09XCJhY3Rpb24oKS5idXR0b24uaWNvbiA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW2ljb25Qb3NdPVwiYWN0aW9uKCkuYnV0dG9uLmljb25Qb3NpdGlvblwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwidG9vbHRpcCgpXCJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiYWN0aW9uKCkuYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VuYWJsZWQoKSB8fCBpbnB1dERpc2FibGVkKClcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwidHJpZ2dlckFjdGlvbihhY3Rpb24oKSlcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzKClcIlxuICAgICAgICAgICAgW21vZGVsXT1cInN1YmFjdGlvbnMoKVwiPlxuICAgICAgICA8L3Atc3BsaXRCdXR0b24+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24oKS5idXR0b24uaWNvbilcIlxuICAgICAgICAgICAgW2ljb25Qb3NdPVwiYWN0aW9uKCkuYnV0dG9uLmljb25Qb3NpdGlvblwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwidG9vbHRpcCgpXCJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiYWN0aW9uKCkuYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpIHx8IGlucHV0TG9hZGluZygpXCJcbiAgICAgICAgICAgIGxvYWRpbmdJY29uPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFbmFibGVkKCkgfHwgaW5wdXREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQWN0aW9uKGFjdGlvbigpLCB1bmRlZmluZWQsICRldmVudClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzKClcIj48L2J1dHRvbj5cbiAgICAgICAgPHAtbWVudSAjc3ViYWN0aW9uc01lbnUgW21vZGVsXT1cInN1YmFjdGlvbnMoKVwiIFtwb3B1cF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCIgc3R5bGVDbGFzcz1cIm1uZy1hY3Rpb24tbWVudVwiPjwvcC1tZW51PlxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -93,10 +93,10 @@ export class ActionTableComponent {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ActionTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: ActionTableComponent, isStandalone: true, selector: "mng-action-table", inputs: { descriptor: { classPropertyName: "descriptor", publicName: "descriptor", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, dataProvider: { classPropertyName: "dataProvider", publicName: "dataProvider", isSignal: true, isRequired: false, transformFunction: null }, useQueryParams: { classPropertyName: "useQueryParams", publicName: "useQueryParams", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selectionEnabled: { classPropertyName: "selectionEnabled", publicName: "selectionEnabled", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, rowReorderEnabled: { classPropertyName: "rowReorderEnabled", publicName: "rowReorderEnabled", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, captionComponent: { classPropertyName: "captionComponent", publicName: "captionComponent", isSignal: true, isRequired: false, transformFunction: null }, columnActionComponent: { classPropertyName: "columnActionComponent", publicName: "columnActionComponent", isSignal: true, isRequired: false, transformFunction: null }, columnActionMinWidthInput: { classPropertyName: "columnActionMinWidthInput", publicName: "columnActionMinWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tableLoad: "tableLoad", selectionChange: "selectionChange", captionComponentInstance: "captionComponentInstance", columnActionComponentInstance: "columnActionComponentInstance", rowReorder: "rowReorder" }, providers: [provideActionExecutor()], queries: [{ propertyName: "templates", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "components", predicate: (QueryList), descendants: true, isSignal: true }, { propertyName: "table", first: true, predicate: TableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<mng-table\n [descriptor]=\"descriptor()\"\n [items]=\"items()\"\n [result]=\"result()\"\n [loading]=\"loading()\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"useQueryParams()\"\n [selectionMode]=\"selectionMode()\"\n [selectionEnabled]=\"selectionEnabled()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [captionComponent]=\"captionComponent()\"\n [columnCustomLastComponent]=\"columnActionComponent()\"\n [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionComponentInstance.emit($event)\"\n (columnCustomLastComponentInstance)=\"columnActionComponentInstance.emit($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n@if (!columnActionComponent() && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor().model.idProperty ? item[descriptor().model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent()) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n", dependencies: [{ kind: "component", type: TableComponent, selector: "mng-table", inputs: ["descriptor", "items", "result", "loading", "dataProvider", "useQueryParams", "cellClickEnabled", "selectionMode", "selectionEnabled", "rowReorderEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance", "rowReorder"] }, { kind: "component", type: ActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataListParams", "dataProvider", "hostComponent", "route", "disabled", "loading", "selectedItems"], outputs: ["finish"] }, { kind: "directive", type: TemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: ActionTableComponent, isStandalone: true, selector: "mng-action-table", inputs: { descriptor: { classPropertyName: "descriptor", publicName: "descriptor", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, dataProvider: { classPropertyName: "dataProvider", publicName: "dataProvider", isSignal: true, isRequired: false, transformFunction: null }, useQueryParams: { classPropertyName: "useQueryParams", publicName: "useQueryParams", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selectionEnabled: { classPropertyName: "selectionEnabled", publicName: "selectionEnabled", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, rowReorderEnabled: { classPropertyName: "rowReorderEnabled", publicName: "rowReorderEnabled", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, captionComponent: { classPropertyName: "captionComponent", publicName: "captionComponent", isSignal: true, isRequired: false, transformFunction: null }, columnActionComponent: { classPropertyName: "columnActionComponent", publicName: "columnActionComponent", isSignal: true, isRequired: false, transformFunction: null }, columnActionMinWidthInput: { classPropertyName: "columnActionMinWidthInput", publicName: "columnActionMinWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tableLoad: "tableLoad", selectionChange: "selectionChange", captionComponentInstance: "captionComponentInstance", columnActionComponentInstance: "columnActionComponentInstance", rowReorder: "rowReorder" }, providers: [provideActionExecutor()], queries: [{ propertyName: "templates", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "components", predicate: (QueryList), descendants: true, isSignal: true }, { propertyName: "table", first: true, predicate: TableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<mng-table\n [descriptor]=\"descriptor()\"\n [items]=\"items()\"\n [result]=\"result()\"\n [loading]=\"loading()\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"useQueryParams()\"\n [selectionMode]=\"selectionMode()\"\n [selectionEnabled]=\"selectionEnabled()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [captionComponent]=\"captionComponent()\"\n [columnCustomLastComponent]=\"columnActionComponent()\"\n [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionComponentInstance.emit($event)\"\n (columnCustomLastComponentInstance)=\"columnActionComponentInstance.emit($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n @if (!columnActionComponent() && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor().model.idProperty ? item[descriptor().model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent()) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n", dependencies: [{ kind: "component", type: TableComponent, selector: "mng-table", inputs: ["descriptor", "items", "result", "loading", "dataProvider", "useQueryParams", "cellClickEnabled", "selectionMode", "selectionEnabled", "rowReorderEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance", "rowReorder"] }, { kind: "component", type: ActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataListParams", "dataProvider", "hostComponent", "route", "disabled", "loading", "selectedItems"], outputs: ["finish"] }, { kind: "directive", type: TemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
97
97
|
}
|
|
98
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ActionTableComponent, decorators: [{
|
|
99
99
|
type: Component,
|
|
100
|
-
args: [{ standalone: true, selector: 'mng-action-table', imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet, AsyncPipe], providers: [provideActionExecutor()], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table\n [descriptor]=\"descriptor()\"\n [items]=\"items()\"\n [result]=\"result()\"\n [loading]=\"loading()\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"useQueryParams()\"\n [selectionMode]=\"selectionMode()\"\n [selectionEnabled]=\"selectionEnabled()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [captionComponent]=\"captionComponent()\"\n [columnCustomLastComponent]=\"columnActionComponent()\"\n [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionComponentInstance.emit($event)\"\n (columnCustomLastComponentInstance)=\"columnActionComponentInstance.emit($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n@if (!columnActionComponent() && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor().model.idProperty ? item[descriptor().model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent()) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n" }]
|
|
100
|
+
args: [{ standalone: true, selector: 'mng-action-table', imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet, AsyncPipe], providers: [provideActionExecutor()], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table\n [descriptor]=\"descriptor()\"\n [items]=\"items()\"\n [result]=\"result()\"\n [loading]=\"loading()\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"useQueryParams()\"\n [selectionMode]=\"selectionMode()\"\n [selectionEnabled]=\"selectionEnabled()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [captionComponent]=\"captionComponent()\"\n [columnCustomLastComponent]=\"columnActionComponent()\"\n [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionComponentInstance.emit($event)\"\n (columnCustomLastComponentInstance)=\"columnActionComponentInstance.emit($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n @if (!columnActionComponent() && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor().model.idProperty ? item[descriptor().model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent()) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n" }]
|
|
101
101
|
}], ctorParameters: () => [] });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBSVQsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJL0MsT0FBTyxFQUF1RCxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hJLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RCxPQUFPLEVBQXVCLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFOUYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxl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Z0IsRUFBRSxTQUFTLENBQUMsYUFDL0UsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLG1CQUNuQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBjb250ZW50Q2hpbGRyZW4sXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICB2aWV3Q2hpbGQsXG4gICAgdmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VGFibGVSb3dSZW9yZGVyRXZlbnR9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuXG5pbXBvcnQge0FjdGlvblBhcmFtZXRlcnMsIENvbXBvbmVudERpcmVjdGl2ZSwgRGF0YUxpc3RSZXN1bHQsIFRlbXBsYXRlRGlyZWN0aXZlLCBmaW5kVGVtcGxhdGVCeU5hbWV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge1RhYmxlQ29tcG9uZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZUNlbGxDbGlja0V2ZW50LCBUYWJsZURlc2NyaXB0b3JJbnN0LCBUYWJsZUxvYWRFdmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdCwgQWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge2NhbGN1bGF0ZVRhYmxlQ29sdW1uQWN0aW9uV2lkdGh9IGZyb20gJy4uLy4uL2hlbHBlcnMvc3R5bGVzJztcbmltcG9ydCB7QWN0aW9uSW5zdGFuY2V9IGZyb20gJy4uLy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLm1vZGVsJztcbmltcG9ydCB7QWN0aW9uRXhlY3V0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb24tZXhlY3V0b3Iuc2VydmljZSc7XG5pbXBvcnQge3Byb3ZpZGVBY3Rpb25FeGVjdXRvcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvdmlkZXJzL3Byb3ZpZGUtYWN0aW9uLWV4ZWN1dG9yJztcbmltcG9ydCB7Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5pbXBvcnQge0FjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1RhYmxlQ29tcG9uZW50LCBBY3Rpb25Db21wb25lbnQsIFRlbXBsYXRlRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGVdLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVBY3Rpb25FeGVjdXRvcigpXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25UYWJsZUNvbXBvbmVudDxJdGVtID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBTb3J0cyA9IGtleW9mIEl0ZW0sIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBJdGVtPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25FeGVjdXRvciA9IGluamVjdChBY3Rpb25FeGVjdXRvclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyPEl0ZW0sIFNlcnZpY2U+LCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICAgIC8vIG1ldGFkYXRhIGlucHV0XG4gICAgcHVibGljIGRlc2NyaXB0b3IgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZURlc2NyaXB0b3JJbnN0PEl0ZW0sIFNvcnRzLCBGaWx0ZXJzPj4oKTtcblxuICAgIC8vIGRhdGEgc291cmNlIGlucHV0c1xuICAgIHB1YmxpYyBpdGVtcyA9IGlucHV0PEFycmF5PEl0ZW0+PigpO1xuICAgIHB1YmxpYyByZXN1bHQgPSBpbnB1dDxEYXRhTGlzdFJlc3VsdDxJdGVtPj4oKTtcblxuICAgIHB1YmxpYyBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4oZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQ8SVRhYmxlRGF0YVByb3ZpZGVyPEl0ZW0sIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPj4oKTtcbiAgICBwdWJsaWMgdXNlUXVlcnlQYXJhbXMgPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvLyBleHRyYSBmZWF0dXJlcyBpbnB1dFxuICAgIHB1YmxpYyBzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8J3NpbmdsZScgfCAnbXVsdGlwbGUnPignbXVsdGlwbGUnKTtcbiAgICBwdWJsaWMgc2VsZWN0aW9uRW5hYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgICBwdWJsaWMgZ2xvYmFsRmlsdGVyRmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XG4gICAgcHVibGljIHJvd1Jlb3JkZXJFbmFibGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvLyBhY3Rpb25zXG4gICAgcHVibGljIGFjdGlvbnMgPSBpbnB1dDxBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+Pj4oW10pOyAvLyBjYW4gYmUgYW55dGhpbmdcblxuICAgIC8vIGNvbXBvbmVudCBpbnB1dHNcbiAgICBwdWJsaWMgY2FwdGlvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55Pj4oKTtcbiAgICBwdWJsaWMgY29sdW1uQWN0aW9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+PigpO1xuICAgIHB1YmxpYyBjb2x1bW5BY3Rpb25NaW5XaWR0aElucHV0ID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ2NvbHVtbkFjdGlvbk1pbldpZHRoJ30pO1xuICAgIHB1YmxpYyBjb2x1bW5BY3Rpb25NaW5XaWR0aCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcigpICYmICF0aGlzLmNvbHVtbkFjdGlvbk1pbldpZHRoSW5wdXQoKVxuICAgICAgICAgICAgPyBjYWxjdWxhdGVUYWJsZUNvbHVtbkFjdGlvbldpZHRoKHRoaXMuZGVzY3JpcHRvcigpIGFzIFRhYmxlRGVzY3JpcHRvckluc3Q8YW55PiwgdGhpcy5yb3dJbmxpbmVBY3Rpb25zKCkpXG4gICAgICAgICAgICA6IHRoaXMuY29sdW1uQWN0aW9uTWluV2lkdGhJbnB1dCgpXG4gICAgKTtcblxuICAgIC8vIGV2ZW50IG91dHB1dHNcbiAgICBwdWJsaWMgdGFibGVMb2FkID0gb3V0cHV0PFRhYmxlTG9hZEV2ZW50PigpO1xuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8QXJyYXk8SXRlbT4+KCk7XG4gICAgcHVibGljIGNhcHRpb25Db21wb25lbnRJbnN0YW5jZSA9IG91dHB1dDxhbnk+KCk7XG4gICAgcHVibGljIGNvbHVtbkFjdGlvbkNvbXBvbmVudEluc3RhbmNlID0gb3V0cHV0PGFueT4oKTtcbiAgICBwdWJsaWMgcm93UmVvcmRlciA9IG91dHB1dDxUYWJsZVJvd1Jlb3JkZXJFdmVudD4oKTtcblxuICAgIC8vIGNvbnRlbnQgYW5kIHZpZXcgcXVlcmllc1xuICAgIHB1YmxpYyB0ZW1wbGF0ZXMgPSBjb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpO1xuICAgIHB1YmxpYyBjb21wb25lbnRzID0gdmlld0NoaWxkcmVuKFF1ZXJ5TGlzdDxDb21wb25lbnREaXJlY3RpdmU8YW55Pj4pO1xuICAgIHB1YmxpYyB0YWJsZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChUYWJsZUNvbXBvbmVudCk7XG5cbiAgICAvLyB0ZW1wbGF0ZXNcbiAgICBwdWJsaWMgY2FwdGlvblRlbXBsYXRlOiBTaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT4gZmluZFRlbXBsYXRlQnlOYW1lKFsuLi50aGlzLnRlbXBsYXRlcygpXSwgJ2NhcHRpb24nKSk7XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBTaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT4gZmluZFRlbXBsYXRlQnlOYW1lKFsuLi50aGlzLnRlbXBsYXRlcygpXSwgJ2Zvb3RlcicpKTtcbiAgICBwdWJsaWMgcm93RXhwYW5kVGVtcGxhdGU6IFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4gPSBjb21wdXRlZCgoKSA9PiBmaW5kVGVtcGxhdGVCeU5hbWUoWy4uLnRoaXMudGVtcGxhdGVzKCldLCAncm93RXhwYW5kQ29udGVudCcpKTtcblxuICAgIC8vIGFjdGlvbnNcbiAgICBwdWJsaWMgcm93Q2xpY2tBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24ucG9zaXRpb24gPT09IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgcm93SW5saW5lQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnBvc2l0aW9uID09PSBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXI/LnRhYmxlUmVsb2FkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoZSA9PiB0aGlzLnJlbG9hZChlLmVtaXRFdmVudCwgZS5yZXNldFBhcmFtcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoZW1pdEV2ZW50ID0gZmFsc2UsIHJlc2V0UGFyYW1zID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy50YWJsZSgpLnJlbG9hZChlbWl0RXZlbnQsIHJlc2V0UGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DZWxsQ2xpY2soZXZlbnQ6IFRhYmxlQ2VsbENsaWNrRXZlbnQ8SXRlbT4pIHtcbiAgICAgICAgaWYgKHRoaXMucm93Q2xpY2tBY3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLnJvd0NsaWNrQWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRQcm9wID0gdGhpcy5kZXNjcmlwdG9yKCk/LnRyYWNrUHJvcGVydHkgPz8gYWN0aW9uPy5tb2RlbD8uaWRQcm9wZXJ0eTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtSWQ6IGlkUHJvcCA/IGV2ZW50LnJvd0l0ZW1baWRQcm9wIGFzIGtleW9mIG9iamVjdF0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGV2ZW50LnJvd0l0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbkRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1JbmRleDogZXZlbnQucm93SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUNvbXBvbmVudDogdGhpc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25FeGVjdXRvci50cmlnZ2VyQWN0aW9uKGFjdGlvbiwgcGFyYW1ldGVycywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoaXRlbXM6IEFycmF5PEl0ZW0+KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvd1Jlb3JkZXIoZXZlbnQ6IFRhYmxlUm93UmVvcmRlckV2ZW50KSB7XG4gICAgICAgIHRoaXMucm93UmVvcmRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3Rpb25GaW5pc2gocnVuUmVzdWx0OiBBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPikge1xuICAgICAgICBpZiAoIXJ1blJlc3VsdC5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtbmctdGFibGVcbiAgICBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yKClcIlxuICAgIFtpdGVtc109XCJpdGVtcygpXCJcbiAgICBbcmVzdWx0XT1cInJlc3VsdCgpXCJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nKClcIlxuICAgIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyKClcIlxuICAgIFt1c2VRdWVyeVBhcmFtc109XCJ1c2VRdWVyeVBhcmFtcygpXCJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlKClcIlxuICAgIFtzZWxlY3Rpb25FbmFibGVkXT1cInNlbGVjdGlvbkVuYWJsZWQoKVwiXG4gICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHMoKVwiXG4gICAgW2NhcHRpb25Db21wb25lbnRdPVwiY2FwdGlvbkNvbXBvbmVudCgpXCJcbiAgICBbY29sdW1uQ3VzdG9tTGFzdENvbXBvbmVudF09XCJjb2x1bW5BY3Rpb25Db21wb25lbnQoKVwiXG4gICAgW2NvbHVtbkxhc3RNaW5XaWR0aF09XCJjb2x1bW5BY3Rpb25NaW5XaWR0aCgpXCJcbiAgICBbY2VsbENsaWNrRW5hYmxlZF09XCJ0aGlzLnJvd0NsaWNrQWN0aW9ucygpLmxlbmd0aCA+IDBcIlxuICAgIFtyb3dSZW9yZGVyRW5hYmxlZF09XCJyb3dSZW9yZGVyRW5hYmxlZCgpXCJcbiAgICAodGFibGVMb2FkKT1cInRhYmxlTG9hZC5lbWl0KCRldmVudClcIlxuICAgIChjZWxsQ2xpY2spPVwib25DZWxsQ2xpY2soJGV2ZW50KVwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAoY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlKT1cImNhcHRpb25Db21wb25lbnRJbnN0YW5jZS5lbWl0KCRldmVudClcIlxuICAgIChjb2x1bW5DdXN0b21MYXN0Q29tcG9uZW50SW5zdGFuY2UpPVwiY29sdW1uQWN0aW9uQ29tcG9uZW50SW5zdGFuY2UuZW1pdCgkZXZlbnQpXCJcbiAgICAocm93UmVvcmRlcik9XCJvblJvd1Jlb3JkZXIoJGV2ZW50KVwiPlxuQGlmICghY29sdW1uQWN0aW9uQ29tcG9uZW50KCkgJiYgcm93SW5saW5lQWN0aW9ucygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1uZ1RlbXBsYXRlPVwiY29sdW1uQ3VzdG9tTGFzdFwiIGxldC1pdGVtPVwicm93SXRlbVwiIGxldC1pZHg9XCJyb3dJbmRleFwiPlxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIHJvd0lubGluZUFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmFjdGlvbk5hbWVMb25nKSB7XG4gICAgICAgICAgICAgICAgPG1uZy1hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtSWRdPVwiZGVzY3JpcHRvcigpLm1vZGVsLmlkUHJvcGVydHkgPyBpdGVtW2Rlc2NyaXB0b3IoKS5tb2RlbC5pZFByb3BlcnR5IV0gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie2l0ZW1JbmRleDogaWR4fVwiXG4gICAgICAgICAgICAgICAgICAgIChmaW5pc2gpPVwib25BY3Rpb25GaW5pc2goJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG4gICAgQGlmIChjYXB0aW9uVGVtcGxhdGUoKSAmJiAhY2FwdGlvbkNvbXBvbmVudCgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXB0aW9uVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgICBAaWYgKHJvd0V4cGFuZFRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1uZ1RlbXBsYXRlPVwicm93RXhwYW5kQ29udGVudFwiIGxldC1pdGVtPVwicm93SXRlbVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0V4cGFuZFRlbXBsYXRlKCk7IGNvbnRleHQ6IHtyb3dJdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgICBAaWYgKGZvb3RlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1uZ1RlbXBsYXRlPVwiZm9vdGVyXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LXRvdGFsQ291bnQ9XCJ0b3RhbENvdW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGUoKTsgY29udGV4dDoge2RhdGEsIHRvdGFsQ291bnR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuPC9tbmctdGFibGU+XG4iXX0=
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBSVQsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJL0MsT0FBTyxFQUF1RCxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hJLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RCxPQUFPLEVBQXVCLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFOUYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxl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Z0IsRUFBRSxTQUFTLENBQUMsYUFDL0UsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLG1CQUNuQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBjb250ZW50Q2hpbGRyZW4sXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICB2aWV3Q2hpbGQsXG4gICAgdmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VGFibGVSb3dSZW9yZGVyRXZlbnR9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuXG5pbXBvcnQge0FjdGlvblBhcmFtZXRlcnMsIENvbXBvbmVudERpcmVjdGl2ZSwgRGF0YUxpc3RSZXN1bHQsIFRlbXBsYXRlRGlyZWN0aXZlLCBmaW5kVGVtcGxhdGVCeU5hbWV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge1RhYmxlQ29tcG9uZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZUNlbGxDbGlja0V2ZW50LCBUYWJsZURlc2NyaXB0b3JJbnN0LCBUYWJsZUxvYWRFdmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdCwgQWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge2NhbGN1bGF0ZVRhYmxlQ29sdW1uQWN0aW9uV2lkdGh9IGZyb20gJy4uLy4uL2hlbHBlcnMvc3R5bGVzJztcbmltcG9ydCB7QWN0aW9uSW5zdGFuY2V9IGZyb20gJy4uLy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLm1vZGVsJztcbmltcG9ydCB7QWN0aW9uRXhlY3V0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb24tZXhlY3V0b3Iuc2VydmljZSc7XG5pbXBvcnQge3Byb3ZpZGVBY3Rpb25FeGVjdXRvcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvdmlkZXJzL3Byb3ZpZGUtYWN0aW9uLWV4ZWN1dG9yJztcbmltcG9ydCB7Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5pbXBvcnQge0FjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1RhYmxlQ29tcG9uZW50LCBBY3Rpb25Db21wb25lbnQsIFRlbXBsYXRlRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGVdLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVBY3Rpb25FeGVjdXRvcigpXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25UYWJsZUNvbXBvbmVudDxJdGVtID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBTb3J0cyA9IGtleW9mIEl0ZW0sIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBJdGVtPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25FeGVjdXRvciA9IGluamVjdChBY3Rpb25FeGVjdXRvclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyPEl0ZW0sIFNlcnZpY2U+LCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICAgIC8vIG1ldGFkYXRhIGlucHV0XG4gICAgcHVibGljIGRlc2NyaXB0b3IgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZURlc2NyaXB0b3JJbnN0PEl0ZW0sIFNvcnRzLCBGaWx0ZXJzPj4oKTtcblxuICAgIC8vIGRhdGEgc291cmNlIGlucHV0c1xuICAgIHB1YmxpYyBpdGVtcyA9IGlucHV0PEFycmF5PEl0ZW0+PigpO1xuICAgIHB1YmxpYyByZXN1bHQgPSBpbnB1dDxEYXRhTGlzdFJlc3VsdDxJdGVtPj4oKTtcblxuICAgIHB1YmxpYyBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4oZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQ8SVRhYmxlRGF0YVByb3ZpZGVyPEl0ZW0sIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPj4oKTtcbiAgICBwdWJsaWMgdXNlUXVlcnlQYXJhbXMgPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvLyBleHRyYSBmZWF0dXJlcyBpbnB1dFxuICAgIHB1YmxpYyBzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8J3NpbmdsZScgfCAnbXVsdGlwbGUnPignbXVsdGlwbGUnKTtcbiAgICBwdWJsaWMgc2VsZWN0aW9uRW5hYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgICBwdWJsaWMgZ2xvYmFsRmlsdGVyRmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XG4gICAgcHVibGljIHJvd1Jlb3JkZXJFbmFibGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvLyBhY3Rpb25zXG4gICAgcHVibGljIGFjdGlvbnMgPSBpbnB1dDxBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+Pj4oW10pOyAvLyBjYW4gYmUgYW55dGhpbmdcblxuICAgIC8vIGNvbXBvbmVudCBpbnB1dHNcbiAgICBwdWJsaWMgY2FwdGlvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55Pj4oKTtcbiAgICBwdWJsaWMgY29sdW1uQWN0aW9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+PigpO1xuICAgIHB1YmxpYyBjb2x1bW5BY3Rpb25NaW5XaWR0aElucHV0ID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ2NvbHVtbkFjdGlvbk1pbldpZHRoJ30pO1xuICAgIHB1YmxpYyBjb2x1bW5BY3Rpb25NaW5XaWR0aCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcigpICYmICF0aGlzLmNvbHVtbkFjdGlvbk1pbldpZHRoSW5wdXQoKVxuICAgICAgICAgICAgPyBjYWxjdWxhdGVUYWJsZUNvbHVtbkFjdGlvbldpZHRoKHRoaXMuZGVzY3JpcHRvcigpIGFzIFRhYmxlRGVzY3JpcHRvckluc3Q8YW55PiwgdGhpcy5yb3dJbmxpbmVBY3Rpb25zKCkpXG4gICAgICAgICAgICA6IHRoaXMuY29sdW1uQWN0aW9uTWluV2lkdGhJbnB1dCgpXG4gICAgKTtcblxuICAgIC8vIGV2ZW50IG91dHB1dHNcbiAgICBwdWJsaWMgdGFibGVMb2FkID0gb3V0cHV0PFRhYmxlTG9hZEV2ZW50PigpO1xuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8QXJyYXk8SXRlbT4+KCk7XG4gICAgcHVibGljIGNhcHRpb25Db21wb25lbnRJbnN0YW5jZSA9IG91dHB1dDxhbnk+KCk7XG4gICAgcHVibGljIGNvbHVtbkFjdGlvbkNvbXBvbmVudEluc3RhbmNlID0gb3V0cHV0PGFueT4oKTtcbiAgICBwdWJsaWMgcm93UmVvcmRlciA9IG91dHB1dDxUYWJsZVJvd1Jlb3JkZXJFdmVudD4oKTtcblxuICAgIC8vIGNvbnRlbnQgYW5kIHZpZXcgcXVlcmllc1xuICAgIHB1YmxpYyB0ZW1wbGF0ZXMgPSBjb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpO1xuICAgIHB1YmxpYyBjb21wb25lbnRzID0gdmlld0NoaWxkcmVuKFF1ZXJ5TGlzdDxDb21wb25lbnREaXJlY3RpdmU8YW55Pj4pO1xuICAgIHB1YmxpYyB0YWJsZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChUYWJsZUNvbXBvbmVudCk7XG5cbiAgICAvLyB0ZW1wbGF0ZXNcbiAgICBwdWJsaWMgY2FwdGlvblRlbXBsYXRlOiBTaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT4gZmluZFRlbXBsYXRlQnlOYW1lKFsuLi50aGlzLnRlbXBsYXRlcygpXSwgJ2NhcHRpb24nKSk7XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBTaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT4gZmluZFRlbXBsYXRlQnlOYW1lKFsuLi50aGlzLnRlbXBsYXRlcygpXSwgJ2Zvb3RlcicpKTtcbiAgICBwdWJsaWMgcm93RXhwYW5kVGVtcGxhdGU6IFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4gPSBjb21wdXRlZCgoKSA9PiBmaW5kVGVtcGxhdGVCeU5hbWUoWy4uLnRoaXMudGVtcGxhdGVzKCldLCAncm93RXhwYW5kQ29udGVudCcpKTtcblxuICAgIC8vIGFjdGlvbnNcbiAgICBwdWJsaWMgcm93Q2xpY2tBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24ucG9zaXRpb24gPT09IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgcm93SW5saW5lQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnBvc2l0aW9uID09PSBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXI/LnRhYmxlUmVsb2FkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoZSA9PiB0aGlzLnJlbG9hZChlLmVtaXRFdmVudCwgZS5yZXNldFBhcmFtcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoZW1pdEV2ZW50ID0gZmFsc2UsIHJlc2V0UGFyYW1zID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy50YWJsZSgpLnJlbG9hZChlbWl0RXZlbnQsIHJlc2V0UGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DZWxsQ2xpY2soZXZlbnQ6IFRhYmxlQ2VsbENsaWNrRXZlbnQ8SXRlbT4pIHtcbiAgICAgICAgaWYgKHRoaXMucm93Q2xpY2tBY3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLnJvd0NsaWNrQWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRQcm9wID0gdGhpcy5kZXNjcmlwdG9yKCk/LnRyYWNrUHJvcGVydHkgPz8gYWN0aW9uPy5tb2RlbD8uaWRQcm9wZXJ0eTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtSWQ6IGlkUHJvcCA/IGV2ZW50LnJvd0l0ZW1baWRQcm9wIGFzIGtleW9mIG9iamVjdF0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGV2ZW50LnJvd0l0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbkRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1JbmRleDogZXZlbnQucm93SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUNvbXBvbmVudDogdGhpc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25FeGVjdXRvci50cmlnZ2VyQWN0aW9uKGFjdGlvbiwgcGFyYW1ldGVycywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoaXRlbXM6IEFycmF5PEl0ZW0+KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvd1Jlb3JkZXIoZXZlbnQ6IFRhYmxlUm93UmVvcmRlckV2ZW50KSB7XG4gICAgICAgIHRoaXMucm93UmVvcmRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3Rpb25GaW5pc2gocnVuUmVzdWx0OiBBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPikge1xuICAgICAgICBpZiAoIXJ1blJlc3VsdC5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtbmctdGFibGVcbiAgICBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yKClcIlxuICAgIFtpdGVtc109XCJpdGVtcygpXCJcbiAgICBbcmVzdWx0XT1cInJlc3VsdCgpXCJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nKClcIlxuICAgIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyKClcIlxuICAgIFt1c2VRdWVyeVBhcmFtc109XCJ1c2VRdWVyeVBhcmFtcygpXCJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlKClcIlxuICAgIFtzZWxlY3Rpb25FbmFibGVkXT1cInNlbGVjdGlvbkVuYWJsZWQoKVwiXG4gICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHMoKVwiXG4gICAgW2NhcHRpb25Db21wb25lbnRdPVwiY2FwdGlvbkNvbXBvbmVudCgpXCJcbiAgICBbY29sdW1uQ3VzdG9tTGFzdENvbXBvbmVudF09XCJjb2x1bW5BY3Rpb25Db21wb25lbnQoKVwiXG4gICAgW2NvbHVtbkxhc3RNaW5XaWR0aF09XCJjb2x1bW5BY3Rpb25NaW5XaWR0aCgpXCJcbiAgICBbY2VsbENsaWNrRW5hYmxlZF09XCJ0aGlzLnJvd0NsaWNrQWN0aW9ucygpLmxlbmd0aCA+IDBcIlxuICAgIFtyb3dSZW9yZGVyRW5hYmxlZF09XCJyb3dSZW9yZGVyRW5hYmxlZCgpXCJcbiAgICAodGFibGVMb2FkKT1cInRhYmxlTG9hZC5lbWl0KCRldmVudClcIlxuICAgIChjZWxsQ2xpY2spPVwib25DZWxsQ2xpY2soJGV2ZW50KVwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAoY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlKT1cImNhcHRpb25Db21wb25lbnRJbnN0YW5jZS5lbWl0KCRldmVudClcIlxuICAgIChjb2x1bW5DdXN0b21MYXN0Q29tcG9uZW50SW5zdGFuY2UpPVwiY29sdW1uQWN0aW9uQ29tcG9uZW50SW5zdGFuY2UuZW1pdCgkZXZlbnQpXCJcbiAgICAocm93UmVvcmRlcik9XCJvblJvd1Jlb3JkZXIoJGV2ZW50KVwiPlxuICAgIEBpZiAoIWNvbHVtbkFjdGlvbkNvbXBvbmVudCgpICYmIHJvd0lubGluZUFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImNvbHVtbkN1c3RvbUxhc3RcIiBsZXQtaXRlbT1cInJvd0l0ZW1cIiBsZXQtaWR4PVwicm93SW5kZXhcIj5cbiAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiByb3dJbmxpbmVBY3Rpb25zKCk7IHRyYWNrIGFjdGlvbi5hY3Rpb25OYW1lTG9uZykge1xuICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtob3N0Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbUlkXT1cImRlc2NyaXB0b3IoKS5tb2RlbC5pZFByb3BlcnR5ID8gaXRlbVtkZXNjcmlwdG9yKCkubW9kZWwuaWRQcm9wZXJ0eSFdIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntpdGVtSW5kZXg6IGlkeH1cIlxuICAgICAgICAgICAgICAgICAgICAoZmluaXNoKT1cIm9uQWN0aW9uRmluaXNoKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L21uZy1hY3Rpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIEBpZiAoY2FwdGlvblRlbXBsYXRlKCkgJiYgIWNhcHRpb25Db21wb25lbnQoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgbW5nVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FwdGlvblRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG4gICAgQGlmIChyb3dFeHBhbmRUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cInJvd0V4cGFuZENvbnRlbnRcIiBsZXQtaXRlbT1cInJvd0l0ZW1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dFeHBhbmRUZW1wbGF0ZSgpOyBjb250ZXh0OiB7cm93SXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG4gICAgQGlmIChmb290ZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImZvb3RlclwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC10b3RhbENvdW50PVwidG90YWxDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlKCk7IGNvbnRleHQ6IHtkYXRhLCB0b3RhbENvdW50fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbjwvbW5nLXRhYmxlPlxuIl19
|
|
@@ -36,8 +36,6 @@ export class AFieldDescriptor extends AGenericFieldDescriptor {
|
|
|
36
36
|
/** @ignore */ this._asyncValidations = [];
|
|
37
37
|
/** @ignore */ this._updateOn = 'change';
|
|
38
38
|
/** @ignore */ this._className = '';
|
|
39
|
-
/** @ignore */ this._labelClassName = '';
|
|
40
|
-
/** @ignore */ this._inputClassName = '';
|
|
41
39
|
/** @ignore */ this._size = FieldSizeEnum.Normal;
|
|
42
40
|
// localization
|
|
43
41
|
/** @ignore */ this._isLocalized = false;
|
|
@@ -285,4 +283,4 @@ export class AFieldDescriptor extends AGenericFieldDescriptor {
|
|
|
285
283
|
obj._asyncValidations = this._asyncValidations.map(value => value.copy());
|
|
286
284
|
}
|
|
287
285
|
}
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYmFzZS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWJhc2UuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBS3pDLE9BQU8sRUFBYyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdqRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxNQUFNLE9BQWdCLHVCQUF1QjtJQUd6QyxnRUFBZ0U7SUFDaEU7UUFIVSxZQUFPLEdBQWdCLEVBQUUsQ0FBQztJQUdYLENBQUM7SUFFMUIsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBbUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLE1BQU07UUFDWixNQUFNLE9BQU8sR0FBRztZQUNaLEdBQUcsSUFBSTtZQUNQLE9BQU8sRUFBRSxTQUFTO1NBQ3JCLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBZ0IsZ0JBQWtHLFNBQVEsdUJBQXVCO0lBd0NuSixZQUFzQixRQUFnQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQWxDWixjQUFjLENBQVcsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQyxjQUFjLENBQVcsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQzFELGNBQWMsQ0FBVyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FB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QixDQUFDO1FBQ25ELEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDckMsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0dldHRlckZufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkQXN5bmNCYXNlVmFsaWRhdG9yLCBGaWVsZEFzeW5jVmFsaWRhdG9yLCBGaWVsZEJhc2VWYWxpZGF0b3IsIEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2UsIEZpZWxkVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0ZpZWxkQ29uZmlnLCBGaWVsZFNpemVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGb3JtRmllbGRFdmVudCwgRm9ybUZpZWxkRXZlbnREYXRhLCBGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWcsIENvbW1vbnNGb3JtbHlIb29rRm59IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvciB7XG4gICAgcHJvdGVjdGVkIF9jb25maWc6IEZpZWxkQ29uZmlnID0ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29uZmlnKGNvbmZpZzogRmllbGRDb25maWcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSB0b0pTT04gaW1wbGVtZW50YXRpb24gdG8gcHJldmVudCBvdmVyZmxvdyB3aXRoIGNpcmN1bGFyIGRlcGVuZGVuY3kuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QganNvbk9iaiA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMsXG4gICAgICAgICAgICBfZWRpdG9yOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbk9ialN0ciA9IEpTT04uc3RyaW5naWZ5KGpzb25PYmopO1xuICAgICAgICByZXR1cm4ganNvbk9ialN0cjtcbiAgICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsPzogc3RyaW5nIHwgbnVsbDtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oZWxwVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkSGlkZUxhYmVsTWFya2VyID0gZmFsc2U7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGVmYXVsdFZhbHVlPzogRmllbGRWYWx1ZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2dldHRlcj86IEdldHRlckZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NldHRlcj86IChpdGVtOiBFZGl0b3JNb2RlbCwgdmFsdWU6IEZpZWxkVmFsdWUpID0+IHZvaWQ7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueSwgYW55Pj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2FzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9yZXF1aXJlZEV4cHJlc3Npb24/OiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2Rpc2FibGVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaGlkZGVuRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaGlkZGVuUmVzZXRPbkhpZGU/OiBib29sZWFuO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfdXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcgPSAnY2hhbmdlJztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfb25Jbml0PzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9vbkNoYW5nZXM/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2FmdGVyQ29udGVudEluaXQ/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2FmdGVyVmlld0luaXQ/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uRGVzdHJveT86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9vblZhbHVlQ2hhbmdlPzogKGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+LCB2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9jbGFzc05hbWUgPSAnJztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2ZpZWxkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfbGFiZWxDbGFzc05hbWUgPSAnJztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2lucHV0Q2xhc3NOYW1lID0gJyc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9zaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWw7XG5cbiAgICAvLyBsb2NhbGl6YXRpb25cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2lzTG9jYWxpemVkID0gZmFsc2U7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX2V2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxGb3JtRmllbGRFdmVudDxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PigpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhlbHBUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVscFRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRIaWRlTGFiZWxNYXJrZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRkZW5FeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhpZGRlblJlc2V0T25IaWRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZGVuUmVzZXRPbkhpZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1cGRhdGVPbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZU9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25Jbml0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25Jbml0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25DaGFuZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25DaGFuZ2VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyQ29udGVudEluaXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclZpZXdJbml0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJWaWV3SW5pdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uRGVzdHJveSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uRGVzdHJveTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vblZhbHVlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZENsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbnB1dENsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0Q2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1NpemVTbWFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUgPT09IEZpZWxkU2l6ZUVudW0uU21hbGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1NpemVMYXJnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUgPT09IEZpZWxkU2l6ZUVudW0uTGFyZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBjb3B5KCk6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcblxuICAgIHB1YmxpYyB3aXRoTGFiZWwobGFiZWw6IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbGFiZWwgPSBsYWJlbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSGVscFRleHQoaGVscFRleHQ6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oZWxwVGV4dCA9IGhlbHBUZXh0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcXVpcmVkKHJlcXVpcmVkID0gdHJ1ZSwgcmVxdWlyZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj4sIGhpZGVMYWJlbE1hcmtlciA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICAgIGlmIChyZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlciA9IGhpZGVMYWJlbE1hcmtlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZChkaXNhYmxlZCA9IHRydWUsIGRpc2FibGVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIGlmIChkaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkRXhwcmVzc2lvbiA9IGRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPiwgcmVzZXRPbkhpZGU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkV4cHJlc3Npb24gPSBoaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB0aGlzLl9oaWRkZW5SZXNldE9uSGlkZSA9IHJlc2V0T25IaWRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVwZGF0ZU9uKHVwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU9uID0gdXBkYXRlT247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25Jbml0KG9uSW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uSW5pdCA9IG9uSW5pdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPbkNoYW5nZXMob25DaGFuZ2VzPzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VzID0gb25DaGFuZ2VzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyQ29udGVudEluaXQoYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyQ29udGVudEluaXQgPSBhZnRlckNvbnRlbnRJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyVmlld0luaXQoYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyVmlld0luaXQgPSBhZnRlclZpZXdJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uRGVzdHJveShvbkRlc3Ryb3k/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kgPSBvbkRlc3Ryb3k7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25WYWx1ZUNoYW5nZShvblZhbHVlQ2hhbmdlPzogKGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+LCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlID0gb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBGaWVsZFZhbHVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhHZXR0ZXIoZm4/OiBHZXR0ZXJGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2V0dGVyKGZuPzogKGl0ZW06IEVkaXRvck1vZGVsLCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUgPSBFZGl0b3JNb2RlbD4oXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdG9yPzogRmllbGRWYWxpZGF0b3I8VmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2gobmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobmFtZSwgdmFsaWRhdG9yIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiwgbWVzc2FnZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5maWx0ZXIodiA9PiB2Lm5hbWUgIT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFzeW5jVmFsaWRhdGlvbjxWYWx1ZSA9IEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yPzogRmllbGRBc3luY1ZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LFxuICAgICAgICBtZXNzYWdlPzogRmllbGRWYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgRWRpdG9yVmFsdWU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMucHVzaChuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihuYW1lLCBhc3luY1ZhbGlkYXRvciBhcyBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LCBtZXNzYWdlKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBc3luY1ZhbGlkYXRpb24obmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLmZpbHRlcih2ID0+IHYubmFtZSAhPT0gbmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nLCBsYWJlbENsYXNzTmFtZSA9ICcnLCBpbnB1dENsYXNzTmFtZSA9ICcnLCBmaWVsZENsYXNzTmFtZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHRoaXMuX2xhYmVsQ2xhc3NOYW1lID0gbGFiZWxDbGFzc05hbWU7XG4gICAgICAgIHRoaXMuX2lucHV0Q2xhc3NOYW1lID0gaW5wdXRDbGFzc05hbWU7XG4gICAgICAgIHRoaXMuX2ZpZWxkQ2xhc3NOYW1lID0gZmllbGRDbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2l6ZShzaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGFkZHMgYW4gaWNvbiB3aXRoIHRleHQgU2hvdyBhbGwgdHJhbnNsYXRpb25zIGFib3ZlIHRoZSBmaWVsZCBhbmQgYWZ0ZXIgY2xpY2tpbmcgb24gaXQsIGl0IGRpc3BsYXlzIGEgbmV3IGRpYWxvZyB3aXRoIHRhYmxldmlldy5cbiAgICAgKiBUaGlzIG5ldyB0YWJsZSB2aWV3IHNob3dzIGFsbCBhdmFpbGFibGUgdHJhbnNsYXRpb25zIGZvciBzcGVjaWZpYyBwcm9wZXJ0eSBhbmQgYWxsb3dzIGVkaXRpbmcgaXQuXG4gICAgICovXG4gICAgcHVibGljIGxvY2FsaXplZCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dEV2ZW50KFxuICAgICAgICB0eXBlOiBGb3JtRmllbGRFdmVudFR5cGVFbnVtLFxuICAgICAgICBjb21wb25lbnQ6IEZpZWxkVHlwZTxDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIGFueT4+LFxuICAgICAgICBkYXRhPzogRm9ybUZpZWxkRXZlbnREYXRhPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPlxuICAgICkge1xuICAgICAgICB0aGlzLl9ldmVudHNTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGZpZWxkQ29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21wb25lbnQucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm06IGNvbXBvbmVudD8uZm9ybSBhcyBGb3JtR3JvdXAsXG4gICAgICAgICAgICBmaWVsZEZvcm1Db250cm9sOiBjb21wb25lbnQuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wsXG4gICAgICAgICAgICBmaWVsZEZvcm1seUNvbmZpZzogY29tcG9uZW50LmZpZWxkLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV2ZW50cyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ldmVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb3B5RmllbGRzVG8ob2JqOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pIHtcbiAgICAgICAgb2JqLl9sYWJlbCA9IHRoaXMuX2xhYmVsO1xuICAgICAgICBvYmouX3BsYWNlaG9sZGVyID0gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgICAgIG9iai5faGVscFRleHQgPSB0aGlzLl9oZWxwVGV4dDtcbiAgICAgICAgb2JqLl9yZXF1aXJlZCA9IHRoaXMuX3JlcXVpcmVkO1xuICAgICAgICBvYmouX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIG9iai5fZGVmYXVsdFZhbHVlID0gdGhpcy5fZGVmYXVsdFZhbHVlO1xuICAgICAgICBvYmouX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgb2JqLl9oaWRkZW5FeHByZXNzaW9uID0gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgb2JqLl9oaWRkZW5SZXNldE9uSGlkZSA9IHRoaXMuX2hpZGRlblJlc2V0T25IaWRlO1xuICAgICAgICBvYmouX3VwZGF0ZU9uID0gdGhpcy5fdXBkYXRlT247XG4gICAgICAgIG9iai5fb25Jbml0ID0gdGhpcy5fb25Jbml0O1xuICAgICAgICBvYmouX29uQ2hhbmdlcyA9IHRoaXMuX29uQ2hhbmdlcztcbiAgICAgICAgb2JqLl9vbkRlc3Ryb3kgPSB0aGlzLl9vbkRlc3Ryb3k7XG4gICAgICAgIG9iai5fYWZ0ZXJDb250ZW50SW5pdCA9IHRoaXMuX2FmdGVyQ29udGVudEluaXQ7XG4gICAgICAgIG9iai5fYWZ0ZXJWaWV3SW5pdCA9IHRoaXMuX2FmdGVyVmlld0luaXQ7XG4gICAgICAgIG9iai5fb25WYWx1ZUNoYW5nZSA9IHRoaXMuX29uVmFsdWVDaGFuZ2U7XG4gICAgICAgIG9iai5fZGlzYWJsZWRFeHByZXNzaW9uID0gdGhpcy5fZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgICAgICBvYmouX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZTtcbiAgICAgICAgb2JqLl9zaXplID0gdGhpcy5zaXplO1xuICAgICAgICBvYmouX2dldHRlciA9IHRoaXMuX2dldHRlcjtcbiAgICAgICAgb2JqLl9zZXR0ZXIgPSB0aGlzLl9zZXR0ZXI7XG4gICAgICAgIG9iai5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgb2JqLl92YWxpZGF0aW9ucyA9IHRoaXMuX3ZhbGlkYXRpb25zLm1hcCh2YWx1ZSA9PiB2YWx1ZS5jb3B5KCkpO1xuICAgICAgICBvYmouX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLm1hcCh2YWx1ZSA9PiB2YWx1ZS5jb3B5KCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYmFzZS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWJhc2UuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBS3pDLE9BQU8sRUFBYyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdqRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxNQUFNLE9BQWdCLHVCQUF1QjtJQUd6QyxnRUFBZ0U7SUFDaEU7UUFIVSxZQUFPLEdBQWdCLEVBQUUsQ0FBQztJQUdYLENBQUM7SUFFMUIsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBbUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLE1BQU07UUFDWixNQUFNLE9BQU8sR0FBRztZQUNaLEdBQUcsSUFBSTtZQUNQLE9BQU8sRUFBRSxTQUFTO1NBQ3JCLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBZ0IsZ0JBQWtHLFNBQVEsdUJBQXVCO0lBd0NuSixZQUFzQixRQUFnQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQWxDWixjQUFjLENBQVcsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQyxjQUFjLENBQVcsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQzFELGNBQWMsQ0FBVyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FB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R0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZSwgRm9ybWx5RmllbGRDb25maWd9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtHZXR0ZXJGbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtGaWVsZEFzeW5jQmFzZVZhbGlkYXRvciwgRmllbGRBc3luY1ZhbGlkYXRvciwgRmllbGRCYXNlVmFsaWRhdG9yLCBGaWVsZFZhbGlkYXRpb25NZXNzYWdlLCBGaWVsZFZhbGlkYXRvcn0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLXZhbGlkYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtGaWVsZENvbmZpZywgRmllbGRTaXplRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7Rm9ybUZpZWxkRXZlbnQsIEZvcm1GaWVsZEV2ZW50RGF0YSwgRm9ybUZpZWxkRXZlbnRUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tZWRpdG9yLmV2ZW50JztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCBDb21tb25zRm9ybWx5SG9va0ZufSBmcm9tICcuLi9tb2RlbHMvZm9ybWx5LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC12YWxpZGF0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIHByb3RlY3RlZCBfY29uZmlnOiBGaWVsZENvbmZpZyA9IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbmZpZyhjb25maWc6IEZpZWxkQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdG9KU09OIGltcGxlbWVudGF0aW9uIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGpzb25PYmogPSB7XG4gICAgICAgICAgICAuLi50aGlzLFxuICAgICAgICAgICAgX2VkaXRvcjogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb25PYmpTdHIgPSBKU09OLnN0cmluZ2lmeShqc29uT2JqKTtcbiAgICAgICAgcmV0dXJuIGpzb25PYmpTdHI7XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQUZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFHZW5lcmljRmllbGREZXNjcmlwdG9yIHtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX3Byb3BlcnR5OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9sYWJlbD86IHN0cmluZyB8IG51bGw7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaGVscFRleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkID0gZmFsc2U7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlciA9IGZhbHNlO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2RlZmF1bHRWYWx1ZT86IEZpZWxkVmFsdWU7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9nZXR0ZXI/OiBHZXR0ZXJGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9zZXR0ZXI/OiAoaXRlbTogRWRpdG9yTW9kZWwsIHZhbHVlOiBGaWVsZFZhbHVlKSA9PiB2b2lkO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hc3luY1ZhbGlkYXRpb25zOiBBcnJheTxGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPGFueSwgYW55LCBhbnk+PiA9IFtdO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcmVxdWlyZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9kaXNhYmxlZEV4cHJlc3Npb24/OiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2hpZGRlbkV4cHJlc3Npb24/OiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2hpZGRlblJlc2V0T25IaWRlPzogYm9vbGVhbjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3VwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnID0gJ2NoYW5nZSc7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uSW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfb25DaGFuZ2VzPzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hZnRlckNvbnRlbnRJbml0PzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hZnRlclZpZXdJbml0PzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9vbkRlc3Ryb3k/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfb25WYWx1ZUNoYW5nZT86IChmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPiwgdmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfY2xhc3NOYW1lID0gJyc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9maWVsZENsYXNzTmFtZT86IHN0cmluZztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaW5wdXRDbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9zaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWw7XG5cbiAgICAvLyBsb2NhbGl6YXRpb25cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2lzTG9jYWxpemVkID0gZmFsc2U7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX2V2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxGb3JtRmllbGRFdmVudDxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PigpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhlbHBUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVscFRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRIaWRlTGFiZWxNYXJrZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRkZW5FeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhpZGRlblJlc2V0T25IaWRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZGVuUmVzZXRPbkhpZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1cGRhdGVPbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZU9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25Jbml0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25Jbml0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25DaGFuZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25DaGFuZ2VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyQ29udGVudEluaXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclZpZXdJbml0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJWaWV3SW5pdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uRGVzdHJveSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uRGVzdHJveTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vblZhbHVlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZENsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbnB1dENsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0Q2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1NpemVTbWFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUgPT09IEZpZWxkU2l6ZUVudW0uU21hbGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1NpemVMYXJnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUgPT09IEZpZWxkU2l6ZUVudW0uTGFyZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBjb3B5KCk6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcblxuICAgIHB1YmxpYyB3aXRoTGFiZWwobGFiZWw6IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbGFiZWwgPSBsYWJlbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSGVscFRleHQoaGVscFRleHQ6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oZWxwVGV4dCA9IGhlbHBUZXh0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcXVpcmVkKHJlcXVpcmVkID0gdHJ1ZSwgcmVxdWlyZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj4sIGhpZGVMYWJlbE1hcmtlciA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICAgIGlmIChyZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlciA9IGhpZGVMYWJlbE1hcmtlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZChkaXNhYmxlZCA9IHRydWUsIGRpc2FibGVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIGlmIChkaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkRXhwcmVzc2lvbiA9IGRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPiwgcmVzZXRPbkhpZGU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkV4cHJlc3Npb24gPSBoaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB0aGlzLl9oaWRkZW5SZXNldE9uSGlkZSA9IHJlc2V0T25IaWRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVwZGF0ZU9uKHVwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU9uID0gdXBkYXRlT247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25Jbml0KG9uSW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uSW5pdCA9IG9uSW5pdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPbkNoYW5nZXMob25DaGFuZ2VzPzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VzID0gb25DaGFuZ2VzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyQ29udGVudEluaXQoYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyQ29udGVudEluaXQgPSBhZnRlckNvbnRlbnRJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyVmlld0luaXQoYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyVmlld0luaXQgPSBhZnRlclZpZXdJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uRGVzdHJveShvbkRlc3Ryb3k/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kgPSBvbkRlc3Ryb3k7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25WYWx1ZUNoYW5nZShvblZhbHVlQ2hhbmdlPzogKGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+LCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlID0gb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBGaWVsZFZhbHVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhHZXR0ZXIoZm4/OiBHZXR0ZXJGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2V0dGVyKGZuPzogKGl0ZW06IEVkaXRvck1vZGVsLCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUgPSBFZGl0b3JNb2RlbD4oXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdG9yPzogRmllbGRWYWxpZGF0b3I8VmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2gobmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobmFtZSwgdmFsaWRhdG9yIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiwgbWVzc2FnZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5maWx0ZXIodiA9PiB2Lm5hbWUgIT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFzeW5jVmFsaWRhdGlvbjxWYWx1ZSA9IEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yPzogRmllbGRBc3luY1ZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LFxuICAgICAgICBtZXNzYWdlPzogRmllbGRWYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgRWRpdG9yVmFsdWU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMucHVzaChuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihuYW1lLCBhc3luY1ZhbGlkYXRvciBhcyBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LCBtZXNzYWdlKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBc3luY1ZhbGlkYXRpb24obmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLmZpbHRlcih2ID0+IHYubmFtZSAhPT0gbmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nLCBsYWJlbENsYXNzTmFtZSA9ICcnLCBpbnB1dENsYXNzTmFtZSA9ICcnLCBmaWVsZENsYXNzTmFtZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHRoaXMuX2xhYmVsQ2xhc3NOYW1lID0gbGFiZWxDbGFzc05hbWU7XG4gICAgICAgIHRoaXMuX2lucHV0Q2xhc3NOYW1lID0gaW5wdXRDbGFzc05hbWU7XG4gICAgICAgIHRoaXMuX2ZpZWxkQ2xhc3NOYW1lID0gZmllbGRDbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2l6ZShzaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGFkZHMgYW4gaWNvbiB3aXRoIHRleHQgU2hvdyBhbGwgdHJhbnNsYXRpb25zIGFib3ZlIHRoZSBmaWVsZCBhbmQgYWZ0ZXIgY2xpY2tpbmcgb24gaXQsIGl0IGRpc3BsYXlzIGEgbmV3IGRpYWxvZyB3aXRoIHRhYmxldmlldy5cbiAgICAgKiBUaGlzIG5ldyB0YWJsZSB2aWV3IHNob3dzIGFsbCBhdmFpbGFibGUgdHJhbnNsYXRpb25zIGZvciBzcGVjaWZpYyBwcm9wZXJ0eSBhbmQgYWxsb3dzIGVkaXRpbmcgaXQuXG4gICAgICovXG4gICAgcHVibGljIGxvY2FsaXplZCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dEV2ZW50KFxuICAgICAgICB0eXBlOiBGb3JtRmllbGRFdmVudFR5cGVFbnVtLFxuICAgICAgICBjb21wb25lbnQ6IEZpZWxkVHlwZTxDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIGFueT4+LFxuICAgICAgICBkYXRhPzogRm9ybUZpZWxkRXZlbnREYXRhPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPlxuICAgICkge1xuICAgICAgICB0aGlzLl9ldmVudHNTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGZpZWxkQ29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21wb25lbnQucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm06IGNvbXBvbmVudD8uZm9ybSBhcyBGb3JtR3JvdXAsXG4gICAgICAgICAgICBmaWVsZEZvcm1Db250cm9sOiBjb21wb25lbnQuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wsXG4gICAgICAgICAgICBmaWVsZEZvcm1seUNvbmZpZzogY29tcG9uZW50LmZpZWxkLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV2ZW50cyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ldmVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb3B5RmllbGRzVG8ob2JqOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pIHtcbiAgICAgICAgb2JqLl9sYWJlbCA9IHRoaXMuX2xhYmVsO1xuICAgICAgICBvYmouX3BsYWNlaG9sZGVyID0gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgICAgIG9iai5faGVscFRleHQgPSB0aGlzLl9oZWxwVGV4dDtcbiAgICAgICAgb2JqLl9yZXF1aXJlZCA9IHRoaXMuX3JlcXVpcmVkO1xuICAgICAgICBvYmouX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIG9iai5fZGVmYXVsdFZhbHVlID0gdGhpcy5fZGVmYXVsdFZhbHVlO1xuICAgICAgICBvYmouX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgb2JqLl9oaWRkZW5FeHByZXNzaW9uID0gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgb2JqLl9oaWRkZW5SZXNldE9uSGlkZSA9IHRoaXMuX2hpZGRlblJlc2V0T25IaWRlO1xuICAgICAgICBvYmouX3VwZGF0ZU9uID0gdGhpcy5fdXBkYXRlT247XG4gICAgICAgIG9iai5fb25Jbml0ID0gdGhpcy5fb25Jbml0O1xuICAgICAgICBvYmouX29uQ2hhbmdlcyA9IHRoaXMuX29uQ2hhbmdlcztcbiAgICAgICAgb2JqLl9vbkRlc3Ryb3kgPSB0aGlzLl9vbkRlc3Ryb3k7XG4gICAgICAgIG9iai5fYWZ0ZXJDb250ZW50SW5pdCA9IHRoaXMuX2FmdGVyQ29udGVudEluaXQ7XG4gICAgICAgIG9iai5fYWZ0ZXJWaWV3SW5pdCA9IHRoaXMuX2FmdGVyVmlld0luaXQ7XG4gICAgICAgIG9iai5fb25WYWx1ZUNoYW5nZSA9IHRoaXMuX29uVmFsdWVDaGFuZ2U7XG4gICAgICAgIG9iai5fZGlzYWJsZWRFeHByZXNzaW9uID0gdGhpcy5fZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgICAgICBvYmouX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZTtcbiAgICAgICAgb2JqLl9zaXplID0gdGhpcy5zaXplO1xuICAgICAgICBvYmouX2dldHRlciA9IHRoaXMuX2dldHRlcjtcbiAgICAgICAgb2JqLl9zZXR0ZXIgPSB0aGlzLl9zZXR0ZXI7XG4gICAgICAgIG9iai5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgb2JqLl92YWxpZGF0aW9ucyA9IHRoaXMuX3ZhbGlkYXRpb25zLm1hcCh2YWx1ZSA9PiB2YWx1ZS5jb3B5KCkpO1xuICAgICAgICBvYmouX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLm1hcCh2YWx1ZSA9PiB2YWx1ZS5jb3B5KCkpO1xuICAgIH1cbn1cbiJdfQ==
|