UNPKG

@alfresco/adf-content-services

Version:
58 lines 23.5 kB
import { Component, Inject, ViewEncapsulation } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { ContentTypeService } from './content-type.service'; import { CommonModule } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; import { MatExpansionModule } from '@angular/material/expansion'; import { MatTableModule } from '@angular/material/table'; import { MatButtonModule } from '@angular/material/button'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; import * as i2 from "./content-type.service"; import * as i3 from "@angular/common"; import * as i4 from "@ngx-translate/core"; import * as i5 from "@angular/material/expansion"; import * as i6 from "@angular/material/table"; import * as i7 from "@angular/material/button"; export class ContentTypeDialogComponent { constructor(dialog, data, contentTypeService) { this.dialog = dialog; this.data = data; this.contentTypeService = contentTypeService; this.typeProperties = []; this.propertyColumns = ['name', 'title', 'dataType']; this.title = data.title; this.description = data.description; this.confirmMessage = data.confirmMessage; this.nodeType = data.nodeType; this.contentTypeService.getContentTypeByPrefix(this.nodeType).subscribe((contentTypeEntry) => { this.currentContentType = contentTypeEntry; this.typeProperties = this.currentContentType.entry.properties.filter((property) => property.id.startsWith(this.currentContentType.entry.model.namespacePrefix)); }); } ngOnInit() { this.dialog.backdropClick().subscribe(() => { this.close(); }); } close() { this.data.select.complete(); } onCancel() { this.close(); } onApply() { this.data.select.next(true); this.close(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentTypeDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.ContentTypeService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ContentTypeDialogComponent, isStandalone: true, selector: "adf-content-type-dialog", ngImport: i0, template: "<div class=\"adf-content-type-dialog\">\n <h2 mat-dialog-title class=\"adf-content-type-dialog-title\" data-automation-id=\"content-type-dialog-title\">{{title |\n translate}}</h2>\n <mat-dialog-content class=\"mat-typography adf-content-type-dialog-content\"\n data-automation-id=\"content-type-dialog-content\">\n <h4 data-automation-id=\"content-type-dialog-description\">{{description | translate}}</h4>\n <p data-automation-id=\"content-type-dialog-confirm-message\">{{confirmMessage | translate}}</p>\n <mat-accordion>\n <mat-expansion-panel class=\"adf-content-type-accordion\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{'CORE.METADATA.CONTENT_TYPE.DIALOG.VIEW_DETAILS' | translate}}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <table mat-table [dataSource]=\"typeProperties\"\n *ngIf=\"typeProperties?.length > 0\" class=\"adf-content-type-table\">\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.NAME' |\n translate}} </th>\n <td mat-cell *matCellDef=\"let property\"> {{property.id}} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef>\n {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.DESCRIPTION' | translate}} </th>\n <td mat-cell *matCellDef=\"let property\"> {{property.title}} </td>\n </ng-container>\n <ng-container matColumnDef=\"dataType\">\n <th mat-header-cell *matHeaderCellDef> {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.DATA_TYPE'\n | translate}} </th>\n <td mat-cell *matCellDef=\"let property\"> {{property.dataType}} </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"propertyColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: propertyColumns;\"></tr>\n </table>\n </mat-expansion-panel>\n </mat-accordion>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close\n id=\"content-type-dialog-actions-cancel\">{{'CORE.METADATA.CONTENT_TYPE.DIALOG.CANCEL' | translate }}</button>\n <button mat-button class=\"adf-content-type-dialog-apply-button\" id=\"content-type-dialog-apply-button\"\n [mat-dialog-close]=\"true\" (click)=\"onApply()\">{{'CORE.METADATA.CONTENT_TYPE.DIALOG.APPLY' |\n translate}}</button>\n </mat-dialog-actions>\n</div>\n", styles: [".adf-content-type-dialog .adf-content-type-accordion{margin:10px}.adf-content-type-dialog-title{font-size:large;font-weight:200;margin-top:0}.adf-content-type-dialog-description{font-size:small;line-height:normal}.adf-content-type-table{width:100%}.adf-content-type-dialog-apply-button{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentTypeDialogComponent, decorators: [{ type: Component, args: [{ selector: 'adf-content-type-dialog', standalone: true, imports: [CommonModule, MatDialogModule, TranslateModule, MatExpansionModule, MatTableModule, MatButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-content-type-dialog\">\n <h2 mat-dialog-title class=\"adf-content-type-dialog-title\" data-automation-id=\"content-type-dialog-title\">{{title |\n translate}}</h2>\n <mat-dialog-content class=\"mat-typography adf-content-type-dialog-content\"\n data-automation-id=\"content-type-dialog-content\">\n <h4 data-automation-id=\"content-type-dialog-description\">{{description | translate}}</h4>\n <p data-automation-id=\"content-type-dialog-confirm-message\">{{confirmMessage | translate}}</p>\n <mat-accordion>\n <mat-expansion-panel class=\"adf-content-type-accordion\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{'CORE.METADATA.CONTENT_TYPE.DIALOG.VIEW_DETAILS' | translate}}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <table mat-table [dataSource]=\"typeProperties\"\n *ngIf=\"typeProperties?.length > 0\" class=\"adf-content-type-table\">\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.NAME' |\n translate}} </th>\n <td mat-cell *matCellDef=\"let property\"> {{property.id}} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef>\n {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.DESCRIPTION' | translate}} </th>\n <td mat-cell *matCellDef=\"let property\"> {{property.title}} </td>\n </ng-container>\n <ng-container matColumnDef=\"dataType\">\n <th mat-header-cell *matHeaderCellDef> {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.DATA_TYPE'\n | translate}} </th>\n <td mat-cell *matCellDef=\"let property\"> {{property.dataType}} </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"propertyColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: propertyColumns;\"></tr>\n </table>\n </mat-expansion-panel>\n </mat-accordion>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close\n id=\"content-type-dialog-actions-cancel\">{{'CORE.METADATA.CONTENT_TYPE.DIALOG.CANCEL' | translate }}</button>\n <button mat-button class=\"adf-content-type-dialog-apply-button\" id=\"content-type-dialog-apply-button\"\n [mat-dialog-close]=\"true\" (click)=\"onApply()\">{{'CORE.METADATA.CONTENT_TYPE.DIALOG.APPLY' |\n translate}}</button>\n </mat-dialog-actions>\n</div>\n", styles: [".adf-content-type-dialog .adf-content-type-accordion{margin:10px}.adf-content-type-dialog-title{font-size:large;font-weight:200;margin-top:0}.adf-content-type-dialog-description{font-size:small;line-height:normal}.adf-content-type-table{width:100%}.adf-content-type-dialog-apply-button{color:var(--theme-primary-color)}\n"] }] }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] }, { type: i2.ContentTypeService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10eXBlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NvbnRlbnQtdHlwZS9jb250ZW50LXR5cGUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29udGVudC10eXBlL2NvbnRlbnQtdHlwZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBVTNELE1BQU0sT0FBTywwQkFBMEI7SUFXbkMsWUFDWSxNQUFnRCxFQUN4QixJQUFvQyxFQUM1RCxrQkFBc0M7UUFGdEMsV0FBTSxHQUFOLE1BQU0sQ0FBMEM7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBZ0M7UUFDNUQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVBsRCxtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUUzQixvQkFBZSxHQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQU90RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQy9FLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUM5RSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQTlDUSwwQkFBMEIsOENBYXZCLGVBQWU7a0dBYmxCLDBCQUEwQixtRkNwQ3ZDLDgyRkE2Q0EsMFhEZGMsWUFBWSxrSUFBRSxlQUFlLCtuQkFBRSxlQUFlLDJGQUFFLGtCQUFrQix1bkJBQUUsY0FBYyxnaENBQUUsZUFBZTs7MkZBS3BHLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDSSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxpQkFHL0YsaUJBQWlCLENBQUMsSUFBSTs7MEJBZWhDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVHlwZUVudHJ5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZURpYWxvZ0NvbXBvbmVudERhdGEgfSBmcm9tICcuL2NvbnRlbnQtdHlwZS1tZXRhZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29udGVudFR5cGVTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZW50LXR5cGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jb250ZW50LXR5cGUtZGlhbG9nJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdERpYWxvZ01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBNYXRFeHBhbnNpb25Nb2R1bGUsIE1hdFRhYmxlTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXR5cGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXR5cGUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50VHlwZURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIG5vZGVUeXBlOiBzdHJpbmc7XG4gICAgY29uZmlybU1lc3NhZ2U6IHN0cmluZztcblxuICAgIGN1cnJlbnRDb250ZW50VHlwZTogVHlwZUVudHJ5O1xuICAgIHR5cGVQcm9wZXJ0aWVzOiBhbnlbXSA9IFtdO1xuXG4gICAgcHJvcGVydHlDb2x1bW5zOiBzdHJpbmdbXSA9IFsnbmFtZScsICd0aXRsZScsICdkYXRhVHlwZSddO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dSZWY8Q29udGVudFR5cGVEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IENvbnRlbnRUeXBlRGlhbG9nQ29tcG9uZW50RGF0YSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50VHlwZVNlcnZpY2U6IENvbnRlbnRUeXBlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMuY29uZmlybU1lc3NhZ2UgPSBkYXRhLmNvbmZpcm1NZXNzYWdlO1xuICAgICAgICB0aGlzLm5vZGVUeXBlID0gZGF0YS5ub2RlVHlwZTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlU2VydmljZS5nZXRDb250ZW50VHlwZUJ5UHJlZml4KHRoaXMubm9kZVR5cGUpLnN1YnNjcmliZSgoY29udGVudFR5cGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29udGVudFR5cGUgPSBjb250ZW50VHlwZUVudHJ5O1xuICAgICAgICAgICAgdGhpcy50eXBlUHJvcGVydGllcyA9IHRoaXMuY3VycmVudENvbnRlbnRUeXBlLmVudHJ5LnByb3BlcnRpZXMuZmlsdGVyKChwcm9wZXJ0eSkgPT5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eS5pZC5zdGFydHNXaXRoKHRoaXMuY3VycmVudENvbnRlbnRUeXBlLmVudHJ5Lm1vZGVsLm5hbWVzcGFjZVByZWZpeClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmRpYWxvZy5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuZGF0YS5zZWxlY3QuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIG9uQXBwbHkoKSB7XG4gICAgICAgIHRoaXMuZGF0YS5zZWxlY3QubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtY29udGVudC10eXBlLWRpYWxvZ1wiPlxuICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwiYWRmLWNvbnRlbnQtdHlwZS1kaWFsb2ctdGl0bGVcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb250ZW50LXR5cGUtZGlhbG9nLXRpdGxlXCI+e3t0aXRsZSB8XG4gICAgICAgIHRyYW5zbGF0ZX19PC9oMj5cbiAgICA8bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LXR5cG9ncmFwaHkgYWRmLWNvbnRlbnQtdHlwZS1kaWFsb2ctY29udGVudFwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtdHlwZS1kaWFsb2ctY29udGVudFwiPlxuICAgICAgICA8aDQgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY29udGVudC10eXBlLWRpYWxvZy1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb24gfCB0cmFuc2xhdGV9fTwvaDQ+XG4gICAgICAgIDxwIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtdHlwZS1kaWFsb2ctY29uZmlybS1tZXNzYWdlXCI+e3tjb25maXJtTWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9wPlxuICAgICAgICA8bWF0LWFjY29yZGlvbj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGNsYXNzPVwiYWRmLWNvbnRlbnQtdHlwZS1hY2NvcmRpb25cIj5cbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydDT1JFLk1FVEFEQVRBLkNPTlRFTlRfVFlQRS5ESUFMT0cuVklFV19ERVRBSUxTJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJ0eXBlUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZVByb3BlcnRpZXM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImFkZi1jb250ZW50LXR5cGUtdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiB7eydDT1JFLk1FVEFEQVRBLkNPTlRFTlRfVFlQRS5ESUFMT0cuUFJPUEVSVFkuTkFNRScgfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcHJvcGVydHlcIj4ge3twcm9wZXJ0eS5pZH19IDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0NPUkUuTUVUQURBVEEuQ09OVEVOVF9UWVBFLkRJQUxPRy5QUk9QRVJUWS5ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHByb3BlcnR5XCI+IHt7cHJvcGVydHkudGl0bGV9fSA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRhVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4ge3snQ09SRS5NRVRBREFUQS5DT05URU5UX1RZUEUuRElBTE9HLlBST1BFUlRZLkRBVEFfVFlQRSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZX19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcHJvcGVydHlcIj4ge3twcm9wZXJ0eS5kYXRhVHlwZX19IDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cInByb3BlcnR5Q29sdW1uc1wiPjwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBwcm9wZXJ0eUNvbHVtbnM7XCI+PC90cj5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICA8L21hdC1hY2NvcmRpb24+XG4gICAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZVxuICAgICAgICAgICAgaWQ9XCJjb250ZW50LXR5cGUtZGlhbG9nLWFjdGlvbnMtY2FuY2VsXCI+e3snQ09SRS5NRVRBREFUQS5DT05URU5UX1RZUEUuRElBTE9HLkNBTkNFTCcgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiYWRmLWNvbnRlbnQtdHlwZS1kaWFsb2ctYXBwbHktYnV0dG9uXCIgaWQ9XCJjb250ZW50LXR5cGUtZGlhbG9nLWFwcGx5LWJ1dHRvblwiXG4gICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgKGNsaWNrKT1cIm9uQXBwbHkoKVwiPnt7J0NPUkUuTUVUQURBVEEuQ09OVEVOVF9UWVBFLkRJQUxPRy5BUFBMWScgfFxuICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbjwvZGl2PlxuIl19