UNPKG

@alfresco/adf-content-services

Version:
129 lines 23.9 kB
/*! * @license * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Component, Input, ViewEncapsulation } from '@angular/core'; import { Node } from '@alfresco/js-api'; import { NodeAspectService } from '../../../aspect-list/services/node-aspect.service'; import { VersionCompatibilityService } from '../../../version-compatibility/version-compatibility.service'; import { ContentService } from '../../../common/services/content.service'; import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum'; import { CommonModule } from '@angular/common'; import { MatCardModule } from '@angular/material/card'; import { ContentMetadataComponent } from '../content-metadata/content-metadata.component'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { TranslateModule } from '@ngx-translate/core'; import * as i0 from "@angular/core"; import * as i1 from "../../../common/services/content.service"; import * as i2 from "../../../aspect-list/services/node-aspect.service"; import * as i3 from "../../../version-compatibility/version-compatibility.service"; import * as i4 from "@angular/common"; import * as i5 from "@angular/material/card"; import * as i6 from "@angular/material/button"; import * as i7 from "@angular/material/icon"; import * as i8 from "@ngx-translate/core"; export class ContentMetadataCardComponent { /** * This flag displays/hides the metadata properties. */ set displayDefaultProperties(value) { this._displayDefaultProperties = value; this.onDisplayDefaultPropertiesChange(); } get displayDefaultProperties() { return this._displayDefaultProperties; } constructor(contentService, nodeAspectService, versionCompatibilityService) { this.contentService = contentService; this.nodeAspectService = nodeAspectService; this.versionCompatibilityService = versionCompatibilityService; /** * This flag displays/hides empty metadata * fields. */ this.displayEmpty = false; /** * This flag displays desired aspect when open for the first time fields. */ this.displayAspect = null; /** Display tags in the card */ this.displayTags = true; /** Display categories in the card */ this.displayCategories = true; /** * This flag sets the metadata in read only mode preventing changes. */ this.readOnly = false; /** * This flag allows the component to display more * than one accordion at a time. */ this.multi = false; /** This flag toggles editable of content. */ this.editable = false; this._displayDefaultProperties = true; this.editAspectSupported = false; this.editAspectSupported = this.versionCompatibilityService.isVersionSupported('7'); } ngOnChanges(changes) { if (changes.displayAspect?.currentValue) { this.expanded = true; } } onDisplayDefaultPropertiesChange() { this.expanded = !this._displayDefaultProperties; } hasAllowableOperations() { return this.contentService.hasAllowableOperations(this.node, AllowableOperationsEnum.UPDATE); } openAspectDialog() { this.nodeAspectService.updateNodeAspects(this.node.id); } isEditAspectSupported() { return !this.readOnly && this.hasAllowableOperations() && this.editAspectSupported; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataCardComponent, deps: [{ token: i1.ContentService }, { token: i2.NodeAspectService }, { token: i3.VersionCompatibilityService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ContentMetadataCardComponent, isStandalone: true, selector: "adf-content-metadata-card", inputs: { node: "node", displayEmpty: "displayEmpty", displayAspect: "displayAspect", displayTags: "displayTags", displayCategories: "displayCategories", preset: "preset", readOnly: "readOnly", multi: "multi", editable: "editable", customPanels: "customPanels", displayDefaultProperties: "displayDefaultProperties" }, host: { classAttribute: "adf-content-metadata-card" }, usesOnChanges: true, ngImport: i0, template: "<mat-card appearance=\"outlined\" *ngIf=\"node\" class=\"adf-content-metadata-card-view\">\n <mat-card-content class=\"adf-content-metadata-card-view-content\">\n <adf-content-metadata\n [displayDefaultProperties]=\"displayDefaultProperties\"\n [expanded]=\"expanded\"\n [node]=\"node\"\n [displayEmpty]=\"displayEmpty\"\n [readOnly]=\"!editable\"\n [multi]=\"multi\"\n [displayAspect]=\"displayAspect\"\n [preset]=\"preset\"\n [displayTags]=\"displayTags\"\n [displayCategories]=\"displayCategories\"\n [customPanels]=\"customPanels\" />\n </mat-card-content>\n <mat-card-footer class=\"adf-content-metadata-card-footer adf-content-metadata-card-view-footer\">\n <div>\n <button *ngIf=\"isEditAspectSupported()\"\n mat-icon-button\n (click)=\"openAspectDialog()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT_ASPECTS' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT_ASPECTS' | translate\"\n data-automation-id=\"meta-data-card-edit-aspect\">\n <mat-icon>menu</mat-icon>\n </button>\n </div>\n </mat-card-footer>\n</mat-card>\n", styles: [".adf-content-metadata-card .adf-content-metadata-card-view{padding:0}.adf-content-metadata-card .adf-content-metadata-card-view .adf-content-metadata-card-view-content{margin-bottom:0}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer{margin:0;padding:8px 12px;border-top:1px solid var(--adf-theme-foreground-text-color-007);display:flex;place-content:stretch space-between;align-items:stretch;max-height:100%}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button{color:var(--adf-theme-foreground-text-color-054)}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button:hover{color:var(--adf-theme-foreground-text-color-087)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: ContentMetadataComponent, selector: "adf-content-metadata", inputs: ["node", "displayEmpty", "expanded", "multi", "preset", "displayDefaultProperties", "displayAspect", "copyToClipboardAction", "useChipsForMultiValueProperty", "displayTags", "displayCategories", "customPanels", "readOnly"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataCardComponent, decorators: [{ type: Component, args: [{ selector: 'adf-content-metadata-card', standalone: true, imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslateModule], encapsulation: ViewEncapsulation.None, host: { class: 'adf-content-metadata-card' }, template: "<mat-card appearance=\"outlined\" *ngIf=\"node\" class=\"adf-content-metadata-card-view\">\n <mat-card-content class=\"adf-content-metadata-card-view-content\">\n <adf-content-metadata\n [displayDefaultProperties]=\"displayDefaultProperties\"\n [expanded]=\"expanded\"\n [node]=\"node\"\n [displayEmpty]=\"displayEmpty\"\n [readOnly]=\"!editable\"\n [multi]=\"multi\"\n [displayAspect]=\"displayAspect\"\n [preset]=\"preset\"\n [displayTags]=\"displayTags\"\n [displayCategories]=\"displayCategories\"\n [customPanels]=\"customPanels\" />\n </mat-card-content>\n <mat-card-footer class=\"adf-content-metadata-card-footer adf-content-metadata-card-view-footer\">\n <div>\n <button *ngIf=\"isEditAspectSupported()\"\n mat-icon-button\n (click)=\"openAspectDialog()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT_ASPECTS' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT_ASPECTS' | translate\"\n data-automation-id=\"meta-data-card-edit-aspect\">\n <mat-icon>menu</mat-icon>\n </button>\n </div>\n </mat-card-footer>\n</mat-card>\n", styles: [".adf-content-metadata-card .adf-content-metadata-card-view{padding:0}.adf-content-metadata-card .adf-content-metadata-card-view .adf-content-metadata-card-view-content{margin-bottom:0}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer{margin:0;padding:8px 12px;border-top:1px solid var(--adf-theme-foreground-text-color-007);display:flex;place-content:stretch space-between;align-items:stretch;max-height:100%}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button{color:var(--adf-theme-foreground-text-color-054)}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button:hover{color:var(--adf-theme-foreground-text-color-087)}\n"] }] }], ctorParameters: () => [{ type: i1.ContentService }, { type: i2.NodeAspectService }, { type: i3.VersionCompatibilityService }], propDecorators: { node: [{ type: Input, args: [{ required: true }] }], displayEmpty: [{ type: Input }], displayAspect: [{ type: Input }], displayTags: [{ type: Input }], displayCategories: [{ type: Input }], preset: [{ type: Input, args: [{ required: true }] }], readOnly: [{ type: Input }], multi: [{ type: Input }], editable: [{ type: Input }], customPanels: [{ type: Input }], displayDefaultProperties: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29udGVudC1tZXRhZGF0YS9jb21wb25lbnRzL2NvbnRlbnQtbWV0YWRhdGEtY2FyZC9jb250ZW50LW1ldGFkYXRhLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL2NvbXBvbmVudHMvY29udGVudC1tZXRhZGF0YS1jYXJkL2NvbnRlbnQtbWV0YWRhdGEtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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Szt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLFFBQVE7c0JBRFAsS0FBSztnQkFRTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFTRix3QkFBd0I7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5vZGVBc3BlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNwZWN0LWxpc3Qvc2VydmljZXMvbm9kZS1hc3BlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50TWV0YWRhdGFDdXN0b21QYW5lbCwgUHJlc2V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb250ZW50LW1ldGFkYXRhLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbi1jb21wYXRpYmlsaXR5L3ZlcnNpb24tY29tcGF0aWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBbGxvd2FibGVPcGVyYXRpb25zRW51bSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbHMvYWxsb3dhYmxlLW9wZXJhdGlvbnMuZW51bSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgQ29udGVudE1ldGFkYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGVudC1tZXRhZGF0YS9jb250ZW50LW1ldGFkYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNvbnRlbnQtbWV0YWRhdGEtY2FyZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBDb250ZW50TWV0YWRhdGFDb21wb25lbnQsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1tZXRhZGF0YS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZW50LW1ldGFkYXRhLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY29udGVudC1tZXRhZGF0YS1jYXJkJyB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRNZXRhZGF0YUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKiAocmVxdWlyZWQpIFRoZSBub2RlIGVudGl0eSB0byBmZXRjaCBtZXRhZGF0YSBhYm91dCAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgbm9kZTogTm9kZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cy9oaWRlcyBlbXB0eSBtZXRhZGF0YVxuICAgICAqIGZpZWxkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlFbXB0eT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cyBkZXNpcmVkIGFzcGVjdCB3aGVuIG9wZW4gZm9yIHRoZSBmaXJzdCB0aW1lIGZpZWxkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBc3BlY3Q/OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIERpc3BsYXkgdGFncyBpbiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVRhZ3MgPSB0cnVlO1xuXG4gICAgLyoqIERpc3BsYXkgY2F0ZWdvcmllcyBpbiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUNhdGVnb3JpZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvciBjb25maWd1cmF0aW9uIG9mIHRoZSBtZXRhZGF0YSBwcmVzZXQsIHdoaWNoIGRlZmluZXMgYXNwZWN0c1xuICAgICAqIGFuZCB0aGVpciBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHJlc2V0OiBzdHJpbmcgfCBQcmVzZXRDb25maWc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZsYWcgc2V0cyB0aGUgbWV0YWRhdGEgaW4gcmVhZCBvbmx5IG1vZGUgcHJldmVudGluZyBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHk/ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZsYWcgYWxsb3dzIHRoZSBjb21wb25lbnQgdG8gZGlzcGxheSBtb3JlXG4gICAgICogdGhhbiBvbmUgYWNjb3JkaW9uIGF0IGEgdGltZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpPyA9IGZhbHNlO1xuXG4gICAgLyoqIFRoaXMgZmxhZyB0b2dnbGVzIGVkaXRhYmxlIG9mIGNvbnRlbnQuICovXG4gICAgQElucHV0KClcbiAgICBlZGl0YWJsZT8gPSBmYWxzZTtcblxuICAgIC8qKiBMaXN0IG9mIGN1c3RvbSBtZXRhZGF0YSBwYW5lbHMgdG8gYmUgZGlzcGxheWVkIHdpdGggcmVnaXN0ZXJlZCBjdXN0b20gY29tcG9uZW50cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tUGFuZWxzOiBDb250ZW50TWV0YWRhdGFDdXN0b21QYW5lbFtdO1xuXG4gICAgcHJpdmF0ZSBfZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cy9oaWRlcyB0aGUgbWV0YWRhdGEgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25EaXNwbGF5RGVmYXVsdFByb3BlcnRpZXNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuXG4gICAgZWRpdEFzcGVjdFN1cHBvcnRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vZGVBc3BlY3RTZXJ2aWNlOiBOb2RlQXNwZWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2ZXJzaW9uQ29tcGF0aWJpbGl0eVNlcnZpY2U6IFZlcnNpb25Db21wYXRpYmlsaXR5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmVkaXRBc3BlY3RTdXBwb3J0ZWQgPSB0aGlzLnZlcnNpb25Db21wYXRpYmlsaXR5U2VydmljZS5pc1ZlcnNpb25TdXBwb3J0ZWQoJzcnKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlBc3BlY3Q/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRpc3BsYXlEZWZhdWx0UHJvcGVydGllc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLl9kaXNwbGF5RGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgaGFzQWxsb3dhYmxlT3BlcmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyh0aGlzLm5vZGUsIEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtLlVQREFURSk7XG4gICAgfVxuXG4gICAgb3BlbkFzcGVjdERpYWxvZygpIHtcbiAgICAgICAgdGhpcy5ub2RlQXNwZWN0U2VydmljZS51cGRhdGVOb2RlQXNwZWN0cyh0aGlzLm5vZGUuaWQpO1xuICAgIH1cblxuICAgIGlzRWRpdEFzcGVjdFN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5ICYmIHRoaXMuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucygpICYmIHRoaXMuZWRpdEFzcGVjdFN1cHBvcnRlZDtcbiAgICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgKm5nSWY9XCJub2RlXCIgY2xhc3M9XCJhZGYtY29udGVudC1tZXRhZGF0YS1jYXJkLXZpZXdcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtdmlldy1jb250ZW50XCI+XG4gICAgICAgIDxhZGYtY29udGVudC1tZXRhZGF0YVxuICAgICAgICAgICAgW2Rpc3BsYXlEZWZhdWx0UHJvcGVydGllc109XCJkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXNcIlxuICAgICAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgW2Rpc3BsYXlFbXB0eV09XCJkaXNwbGF5RW1wdHlcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cIiFlZGl0YWJsZVwiXG4gICAgICAgICAgICBbbXVsdGldPVwibXVsdGlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlBc3BlY3RdPVwiZGlzcGxheUFzcGVjdFwiXG4gICAgICAgICAgICBbcHJlc2V0XT1cInByZXNldFwiXG4gICAgICAgICAgICBbZGlzcGxheVRhZ3NdPVwiZGlzcGxheVRhZ3NcIlxuICAgICAgICAgICAgW2Rpc3BsYXlDYXRlZ29yaWVzXT1cImRpc3BsYXlDYXRlZ29yaWVzXCJcbiAgICAgICAgICAgIFtjdXN0b21QYW5lbHNdPVwiY3VzdG9tUGFuZWxzXCIgLz5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPG1hdC1jYXJkLWZvb3RlciBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtZm9vdGVyIGFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtdmlldy1mb290ZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc0VkaXRBc3BlY3RTdXBwb3J0ZWQoKVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Bc3BlY3REaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUX0FTUEVDVFMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVF9BU1BFQ1RTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWNhcmQtZWRpdC1hc3BlY3RcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XG48L21hdC1jYXJkPlxuIl19