@c8y/ngx-components 1019.19.2 → 1019.19.4

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.
@@ -51,14 +51,14 @@ export class OpcuaAddressSpaceDetailComponent {
51
51
  this.addressSpaceService.triggerNodeToOpen(nodeNavData);
52
52
  }
53
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceDetailComponent, deps: [{ token: i1.AddressSpaceService }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: { node: "node" }, outputs: { toggleAttrDetail: "toggleAttrDetail" }, ngImport: i0, template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td *ngIf=\"item.key === 'absolutePaths'\" class=\"text-break-word\">\n {{ item.value | json }}\n </td>\n <td *ngIf=\"item.key === 'ancestorNodeIds'\" class=\"text-break-word\">\n <a *ngFor=\"let value of item.value\" (click)=\"navigateTo(value)\">\n {{ value | json }}</a\n >\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.JsonPipe, name: "json" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }] }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: { node: "node" }, outputs: { toggleAttrDetail: "toggleAttrDetail" }, ngImport: i0, template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'absolutePaths'\"\n >\n {{ item.value | json }}\n </td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'ancestorNodeIds'\"\n >\n <a\n *ngFor=\"let value of item.value\"\n (click)=\"navigateTo(value)\"\n >\n {{ value | json }}\n </a>\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n style=\"height: calc(50% - 4px)\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.JsonPipe, name: "json" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }] }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceDetailComponent, decorators: [{
57
57
  type: Component,
58
- args: [{ selector: 'opcua-address-space-detail', template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td *ngIf=\"item.key === 'absolutePaths'\" class=\"text-break-word\">\n {{ item.value | json }}\n </td>\n <td *ngIf=\"item.key === 'ancestorNodeIds'\" class=\"text-break-word\">\n <a *ngFor=\"let value of item.value\" (click)=\"navigateTo(value)\">\n {{ value | json }}</a\n >\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n" }]
58
+ args: [{ selector: 'opcua-address-space-detail', template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'absolutePaths'\"\n >\n {{ item.value | json }}\n </td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'ancestorNodeIds'\"\n >\n <a\n *ngFor=\"let value of item.value\"\n (click)=\"navigateTo(value)\"\n >\n {{ value | json }}\n </a>\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n style=\"height: calc(50% - 4px)\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n" }]
59
59
  }], ctorParameters: function () { return [{ type: i1.AddressSpaceService }]; }, propDecorators: { node: [{
60
60
  type: Input
61
61
  }], toggleAttrDetail: [{
62
62
  type: Output
63
63
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvdG9jb2wtb3BjdWEvb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcHJvdG9jb2wtb3BjdWEvb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQW9CLG1CQUFtQixFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBTWpDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0MsSUFBYSxJQUFJLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQVVELFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBUDVELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFVixxQkFBZ0IsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFJbkMsQ0FBQztJQUNoRSxXQUFXLENBQUMsUUFBUTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRztZQUNmLFlBQVk7WUFDWixZQUFZO1lBQ1osVUFBVTtZQUNWLDBCQUEwQjtZQUMxQixVQUFVO1lBQ1YsWUFBWTtZQUNaLGNBQWM7WUFDZCxZQUFZO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBbUI7UUFDNUIsTUFBTSxXQUFXLEdBQXVCO1lBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixtQkFBbUIsRUFBRSxTQUFTO1NBQy9CLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsQ0FBQzsrR0FsRFUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsK0lDUjdDLHMvRUE4RUE7OzRGRHRFYSxnQ0FBZ0M7a0JBSjVDLFNBQVM7K0JBQ0UsNEJBQTRCOzBHQUl6QixJQUFJO3NCQUFoQixLQUFLO2dCQWNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZGRyZXNzU3BhY2VOb2RlLCBBZGRyZXNzU3BhY2VTZXJ2aWNlLCBOb2RlTmF2aWdhdGlvbkRhdGEgfSBmcm9tICcuL2FkZHJlc3Mtc3BhY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBvbWl0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE9wY3VhQWRkcmVzc1NwYWNlRGV0YWlsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2V0IG5vZGUobikge1xuICAgIHRoaXMuX25vZGUgPSBuO1xuICAgIGlmIChuKSB7XG4gICAgICB0aGlzLnNldE5vZGVEYXRhKG4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByZW1vdmUgZGV0YWlscyBmcm9tIGN1cnJlbnQgdmlld1xuICAgICAgdGhpcy5zaG93RGV0YWlscyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBub2RlRGF0YUF0dHI6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIG5vZGVEYXRhUmVmOiBvYmplY3RbXTtcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgc2hvd0RldGFpbHMgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdG9nZ2xlQXR0ckRldGFpbDogRXZlbnRFbWl0dGVyPEFkZHJlc3NTcGFjZU5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRyZXNzU3BhY2VOb2RlPigpO1xuXG4gIHByaXZhdGUgX25vZGU6IEFkZHJlc3NTcGFjZU5vZGU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhZGRyZXNzU3BhY2VTZXJ2aWNlOiBBZGRyZXNzU3BhY2VTZXJ2aWNlKSB7fVxuICBzZXROb2RlRGF0YShub2RlRGF0YSkge1xuICAgIHRoaXMuc2hvd0RldGFpbHMgPSB0cnVlO1xuICAgIGNvbnN0IHsgYXR0cmlidXRlcywgcmVmZXJlbmNlcyB9ID0gbm9kZURhdGE7XG4gICAgdGhpcy5ub2RlRGF0YVJlZiA9IHJlZmVyZW5jZXM7XG4gICAgY29uc3Qgb21pdExpc3QgPSBbXG4gICAgICAnYXR0cmlidXRlcycsXG4gICAgICAncmVmZXJlbmNlcycsXG4gICAgICAnY2hpbGRyZW4nLFxuICAgICAgJ2N1cnJlbnRseUxvYWRpbmdDaGlsZHJlbicsXG4gICAgICAnZXhwYW5kZWQnLFxuICAgICAgJ2Jyb3dzZVBhdGgnLFxuICAgICAgJ3JlbGF0aXZlUGF0aCcsXG4gICAgICAncGFyZW50Tm9kZSdcbiAgICBdO1xuICAgIHRoaXMubm9kZURhdGFBdHRyID0gT2JqZWN0LmFzc2lnbih7fSwgYXR0cmlidXRlcywgb21pdChub2RlRGF0YSwgb21pdExpc3QpKTtcbiAgfVxuXG4gIHRvZ2dsZURldGFpbChub2RlKSB7XG4gICAgdGhpcy5zaG93RGV0YWlscyA9ICF0aGlzLnNob3dEZXRhaWxzO1xuICAgIHRoaXMudG9nZ2xlQXR0ckRldGFpbC5lbWl0KG5vZGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUbyhhbmNlc3RvcnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3Qgbm9kZU5hdkRhdGE6IE5vZGVOYXZpZ2F0aW9uRGF0YSA9IHtcbiAgICAgIG5vZGU6IHRoaXMuX25vZGUsXG4gICAgICBzZWxlY3RlZEFuY2VzdG9ySWRzOiBhbmNlc3RvcnNcbiAgICB9O1xuXG4gICAgdGhpcy50b2dnbGVEZXRhaWwodGhpcy5fbm9kZSk7XG4gICAgdGhpcy5hZGRyZXNzU3BhY2VTZXJ2aWNlLnRyaWdnZXJOb2RlVG9PcGVuKG5vZGVOYXZEYXRhKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNhcmQgbS1iLTQgc3BsaXQtcm93LTIgYW5pbWF0ZWQgZmFzdCBwb2ludGVyLWFsbFwiXG4gIFtuZ0NsYXNzXT1cInsgZmFkZUluUmlnaHRCaWc6IHNob3dEZXRhaWxzLCBmYWRlT3V0UmlnaHRCaWc6ICFzaG93RGV0YWlscyB9XCJcblxuPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgPGg0Pnt7ICdBdHRyaWJ1dGVzJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjbG9zZSBtLWwtYXV0byB2aXNpYmxlLXNtIHZpc2libGUteHNcIlxuICAgICAgdGl0bGU9XCJ7eyAnQ2xvc2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwobm9kZURhdGFBdHRyKVwiXG4gICAgPlxuICAgICAgJnRpbWVzO1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaW5uZXItc2Nyb2xsXCIgdGFiaW5kZXg9XCIwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2tcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWNvbmRlbnNlZFwiPlxuICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgPGNvbCB3aWR0aD1cIjUwJVwiIC8+XG4gICAgICAgICAgPGNvbCB3aWR0aD1cIjUwJVwiIC8+XG4gICAgICAgIDwvY29sZ3JvdXA+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGg+e3sgJ0F0dHJpYnV0ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgPHRoPnt7ICdWYWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygbm9kZURhdGFBdHRyIHwga2V5dmFsdWVcIj5cbiAgICAgICAgICAgIDx0ZD57eyBpdGVtLmtleSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJpdGVtLmtleSA9PT0gJ2Fic29sdXRlUGF0aHMnXCIgY2xhc3M9XCJ0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB8IGpzb24gfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJpdGVtLmtleSA9PT0gJ2FuY2VzdG9yTm9kZUlkcydcIiBjbGFzcz1cInRleHQtYnJlYWstd29yZFwiPlxuICAgICAgICAgICAgICA8YSAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgaXRlbS52YWx1ZVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvKHZhbHVlKVwiPlxuICAgICAgICAgICAgICAgIHt7IHZhbHVlIHwganNvbiB9fTwvYVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiaXRlbS5rZXkgIT09ICdhYnNvbHV0ZVBhdGhzJyAmJiBpdGVtLmtleSAhPT0gJ2FuY2VzdG9yTm9kZUlkcydcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJjYXJkIHNwbGl0LXJvdy0yIGFuaW1hdGVkIGZhc3QgcG9pbnRlci1hbGxcIlxuICBbbmdDbGFzc109XCJ7IGZhZGVJblJpZ2h0QmlnOiBzaG93RGV0YWlscywgZmFkZU91dFJpZ2h0QmlnOiAhc2hvd0RldGFpbHMgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3JcIj5cbiAgICA8aDQ+e3sgJ1JlZmVyZW5jZXMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWlubmVyLXNjcm9sbFwiIHRhYmluZGV4PVwiMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1jb25kZW5zZWRcIj5cbiAgICAgICAgPGNvbGdyb3VwPlxuICAgICAgICAgIDxjb2wgd2lkdGg9XCI1MCVcIiAvPlxuICAgICAgICAgIDxjb2wgd2lkdGg9XCI1MCVcIiAvPlxuICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoPnt7ICdBdHRyaWJ1dGUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgIDx0aD57eyAnVmFsdWUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5vZGVEYXRhUmVmXCI+XG4gICAgICAgICAgICA8dGQ+e3sgaXRlbS5yZWZlcmVuY2VMYWJlbCB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWJyZWFrLXdvcmRcIj57eyBpdGVtLnRhcmdldExhYmVsIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvdG9jb2wtb3BjdWEvb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcHJvdG9jb2wtb3BjdWEvb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQW9CLG1CQUFtQixFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBTWpDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0MsSUFBYSxJQUFJLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQVVELFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBUDVELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFVixxQkFBZ0IsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFJbkMsQ0FBQztJQUNoRSxXQUFXLENBQUMsUUFBUTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRztZQUNmLFlBQVk7WUFDWixZQUFZO1lBQ1osVUFBVTtZQUNWLDBCQUEwQjtZQUMxQixVQUFVO1lBQ1YsWUFBWTtZQUNaLGNBQWM7WUFDZCxZQUFZO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBbUI7UUFDNUIsTUFBTSxXQUFXLEdBQXVCO1lBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixtQkFBbUIsRUFBRSxTQUFTO1NBQy9CLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsQ0FBQzsrR0FsRFUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsK0lDUjdDLHV1RkFtR0E7OzRGRDNGYSxnQ0FBZ0M7a0JBSjVDLFNBQVM7K0JBQ0UsNEJBQTRCOzBHQUl6QixJQUFJO3NCQUFoQixLQUFLO2dCQWNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZGRyZXNzU3BhY2VOb2RlLCBBZGRyZXNzU3BhY2VTZXJ2aWNlLCBOb2RlTmF2aWdhdGlvbkRhdGEgfSBmcm9tICcuL2FkZHJlc3Mtc3BhY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBvbWl0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BjdWEtYWRkcmVzcy1zcGFjZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE9wY3VhQWRkcmVzc1NwYWNlRGV0YWlsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2V0IG5vZGUobikge1xuICAgIHRoaXMuX25vZGUgPSBuO1xuICAgIGlmIChuKSB7XG4gICAgICB0aGlzLnNldE5vZGVEYXRhKG4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByZW1vdmUgZGV0YWlscyBmcm9tIGN1cnJlbnQgdmlld1xuICAgICAgdGhpcy5zaG93RGV0YWlscyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBub2RlRGF0YUF0dHI6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIG5vZGVEYXRhUmVmOiBvYmplY3RbXTtcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgc2hvd0RldGFpbHMgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdG9nZ2xlQXR0ckRldGFpbDogRXZlbnRFbWl0dGVyPEFkZHJlc3NTcGFjZU5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRyZXNzU3BhY2VOb2RlPigpO1xuXG4gIHByaXZhdGUgX25vZGU6IEFkZHJlc3NTcGFjZU5vZGU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhZGRyZXNzU3BhY2VTZXJ2aWNlOiBBZGRyZXNzU3BhY2VTZXJ2aWNlKSB7fVxuICBzZXROb2RlRGF0YShub2RlRGF0YSkge1xuICAgIHRoaXMuc2hvd0RldGFpbHMgPSB0cnVlO1xuICAgIGNvbnN0IHsgYXR0cmlidXRlcywgcmVmZXJlbmNlcyB9ID0gbm9kZURhdGE7XG4gICAgdGhpcy5ub2RlRGF0YVJlZiA9IHJlZmVyZW5jZXM7XG4gICAgY29uc3Qgb21pdExpc3QgPSBbXG4gICAgICAnYXR0cmlidXRlcycsXG4gICAgICAncmVmZXJlbmNlcycsXG4gICAgICAnY2hpbGRyZW4nLFxuICAgICAgJ2N1cnJlbnRseUxvYWRpbmdDaGlsZHJlbicsXG4gICAgICAnZXhwYW5kZWQnLFxuICAgICAgJ2Jyb3dzZVBhdGgnLFxuICAgICAgJ3JlbGF0aXZlUGF0aCcsXG4gICAgICAncGFyZW50Tm9kZSdcbiAgICBdO1xuICAgIHRoaXMubm9kZURhdGFBdHRyID0gT2JqZWN0LmFzc2lnbih7fSwgYXR0cmlidXRlcywgb21pdChub2RlRGF0YSwgb21pdExpc3QpKTtcbiAgfVxuXG4gIHRvZ2dsZURldGFpbChub2RlKSB7XG4gICAgdGhpcy5zaG93RGV0YWlscyA9ICF0aGlzLnNob3dEZXRhaWxzO1xuICAgIHRoaXMudG9nZ2xlQXR0ckRldGFpbC5lbWl0KG5vZGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUbyhhbmNlc3RvcnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3Qgbm9kZU5hdkRhdGE6IE5vZGVOYXZpZ2F0aW9uRGF0YSA9IHtcbiAgICAgIG5vZGU6IHRoaXMuX25vZGUsXG4gICAgICBzZWxlY3RlZEFuY2VzdG9ySWRzOiBhbmNlc3RvcnNcbiAgICB9O1xuXG4gICAgdGhpcy50b2dnbGVEZXRhaWwodGhpcy5fbm9kZSk7XG4gICAgdGhpcy5hZGRyZXNzU3BhY2VTZXJ2aWNlLnRyaWdnZXJOb2RlVG9PcGVuKG5vZGVOYXZEYXRhKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNhcmQgbS1iLTQgc3BsaXQtcm93LTIgYW5pbWF0ZWQgZmFzdCBwb2ludGVyLWFsbFwiXG4gIFtuZ0NsYXNzXT1cInsgZmFkZUluUmlnaHRCaWc6IHNob3dEZXRhaWxzLCBmYWRlT3V0UmlnaHRCaWc6ICFzaG93RGV0YWlscyB9XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgIDxoND57eyAnQXR0cmlidXRlcycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiY2xvc2UgbS1sLWF1dG8gdmlzaWJsZS1zbSB2aXNpYmxlLXhzXCJcbiAgICAgIHRpdGxlPVwie3sgJ0Nsb3NlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKG5vZGVEYXRhQXR0cilcIlxuICAgID5cbiAgICAgICZ0aW1lcztcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNhcmQtaW5uZXItc2Nyb2xsXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgID5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtY29uZGVuc2VkXCI+XG4gICAgICAgIDxjb2xncm91cD5cbiAgICAgICAgICA8Y29sIHdpZHRoPVwiNTAlXCIgLz5cbiAgICAgICAgICA8Y29sIHdpZHRoPVwiNTAlXCIgLz5cbiAgICAgICAgPC9jb2xncm91cD5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aD57eyAnQXR0cmlidXRlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGg+e3sgJ1ZhbHVlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBub2RlRGF0YUF0dHIgfCBrZXl2YWx1ZVwiPlxuICAgICAgICAgICAgPHRkPnt7IGl0ZW0ua2V5IH19PC90ZD5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYnJlYWstd29yZFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5rZXkgPT09ICdhYnNvbHV0ZVBhdGhzJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfCBqc29uIH19XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1icmVhay13b3JkXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmtleSA9PT0gJ2FuY2VzdG9yTm9kZUlkcydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUbyh2YWx1ZSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdmFsdWUgfCBqc29uIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJpdGVtLmtleSAhPT0gJ2Fic29sdXRlUGF0aHMnICYmIGl0ZW0ua2V5ICE9PSAnYW5jZXN0b3JOb2RlSWRzJ1wiPlxuICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cImNhcmQgc3BsaXQtcm93LTIgYW5pbWF0ZWQgZmFzdCBwb2ludGVyLWFsbFwiXG4gIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDUwJSAtIDRweClcIlxuICBbbmdDbGFzc109XCJ7IGZhZGVJblJpZ2h0QmlnOiBzaG93RGV0YWlscywgZmFkZU91dFJpZ2h0QmlnOiAhc2hvd0RldGFpbHMgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3JcIj5cbiAgICA8aDQ+e3sgJ1JlZmVyZW5jZXMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNhcmQtaW5uZXItc2Nyb2xsXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgID5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtY29uZGVuc2VkXCI+XG4gICAgICAgIDxjb2xncm91cD5cbiAgICAgICAgICA8Y29sIHdpZHRoPVwiNTAlXCIgLz5cbiAgICAgICAgICA8Y29sIHdpZHRoPVwiNTAlXCIgLz5cbiAgICAgICAgPC9jb2xncm91cD5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aD57eyAnQXR0cmlidXRlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGg+e3sgJ1ZhbHVlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBub2RlRGF0YVJlZlwiPlxuICAgICAgICAgICAgPHRkPnt7IGl0ZW0ucmVmZXJlbmNlTGFiZWwgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1icmVhay13b3JkXCI+e3sgaXRlbS50YXJnZXRMYWJlbCB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -77,12 +77,12 @@ export class OpcuaAddressSpaceComponent {
77
77
  return false;
78
78
  }
79
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceComponent, deps: [{ token: i1.AddressSpaceService }, { token: i2.OpcuaService }], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceComponent, selector: "opcua-address-space", outputs: { focusStatus: "focusStatus" }, ngImport: i0, template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll\">\n <div class=\"card-block separator-bottom\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"{{ filterLabel | translate }}\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n *ngIf=\"!isSearch\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n class=\"btn btn-dot\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n *ngIf=\"isSearch\"\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div class=\"p-t-16\" *ngIf=\"isSearch && !loading\">\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div class=\"p-t-8\" *ngIf=\"(isSearch && loading) || searchInProgress\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div class=\"flex-content-scroll\" *ngIf=\"isSearch && !loading && !searchInProgress\">\n <div class=\"list-group list-group-links\" *ngIf=\"isSearch && !loading\">\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i class=\"m-r-4\" [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div class=\"flex-content-scroll\" *ngIf=\"!isSearch\">\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n [node]=\"currentNode\"\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.OpcuaAddressSpaceTreeComponent, selector: "opcua-address-space-tree", inputs: ["moId", "node", "focusEmitter"], outputs: ["selectedNode"] }, { kind: "component", type: i7.OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: ["node"], outputs: ["toggleAttrDetail"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceComponent, selector: "opcua-address-space", outputs: { focusStatus: "focusStatus" }, ngImport: i0, template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll overflow-auto\">\n <div class=\"card-block separator-bottom sticky-top\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ filterLabel | translate }}\"\n type=\"search\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n *ngIf=\"!isSearch\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n *ngIf=\"isSearch\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div\n class=\"p-t-16\"\n *ngIf=\"isSearch && !loading\"\n >\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"(isSearch && loading) || searchInProgress\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <div\n class=\"inner-scroll\"\n *ngIf=\"isSearch && !loading && !searchInProgress\"\n >\n <div\n class=\"list-group list-group-links\"\n *ngIf=\"isSearch && !loading\"\n >\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"\n ></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div\n class=\"inner-scroll\"\n *ngIf=\"!isSearch\"\n >\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n [node]=\"currentNode\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.OpcuaAddressSpaceTreeComponent, selector: "opcua-address-space-tree", inputs: ["moId", "node", "focusEmitter"], outputs: ["selectedNode"] }, { kind: "component", type: i7.OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: ["node"], outputs: ["toggleAttrDetail"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
81
81
  }
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceComponent, decorators: [{
83
83
  type: Component,
84
- args: [{ selector: 'opcua-address-space', template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll\">\n <div class=\"card-block separator-bottom\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"{{ filterLabel | translate }}\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n *ngIf=\"!isSearch\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n class=\"btn btn-dot\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n *ngIf=\"isSearch\"\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div class=\"p-t-16\" *ngIf=\"isSearch && !loading\">\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div class=\"p-t-8\" *ngIf=\"(isSearch && loading) || searchInProgress\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div class=\"flex-content-scroll\" *ngIf=\"isSearch && !loading && !searchInProgress\">\n <div class=\"list-group list-group-links\" *ngIf=\"isSearch && !loading\">\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i class=\"m-r-4\" [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div class=\"flex-content-scroll\" *ngIf=\"!isSearch\">\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n [node]=\"currentNode\"\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n" }]
84
+ args: [{ selector: 'opcua-address-space', template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll overflow-auto\">\n <div class=\"card-block separator-bottom sticky-top\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ filterLabel | translate }}\"\n type=\"search\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n *ngIf=\"!isSearch\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n *ngIf=\"isSearch\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div\n class=\"p-t-16\"\n *ngIf=\"isSearch && !loading\"\n >\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"(isSearch && loading) || searchInProgress\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <div\n class=\"inner-scroll\"\n *ngIf=\"isSearch && !loading && !searchInProgress\"\n >\n <div\n class=\"list-group list-group-links\"\n *ngIf=\"isSearch && !loading\"\n >\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"\n ></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div\n class=\"inner-scroll\"\n *ngIf=\"!isSearch\"\n >\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n [node]=\"currentNode\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n" }]
85
85
  }], ctorParameters: function () { return [{ type: i1.AddressSpaceService }, { type: i2.OpcuaService }]; }, propDecorators: { focusStatus: [{
86
86
  type: Output
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtYWRkcmVzcy1zcGFjZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm90b2NvbC1vcGN1YS9vcGN1YS1hZGRyZXNzLXNwYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3Byb3RvY29sLW9wY3VhL29wY3VhLWFkZHJlc3Mtc3BhY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLDBCQUEwQjtJQWFyQyxZQUNVLG1CQUF3QyxFQUN4QyxZQUEwQjtRQUQxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBYnBDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBS2YsZ0JBQVcsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDckYsU0FBSSxHQUFHLEVBQUUsQ0FBQztJQUlmLENBQUM7SUFFSixLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVztRQUNULDJGQUEyRjtRQUMzRiwrRkFBK0Y7UUFDL0Ysa0dBQWtHO1FBQ2xHLDZGQUE2RjtRQUM3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b25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWRkcmVzc1NwYWNlU2VydmljZSwgQWRkcmVzc1NwYWNlTm9kZSB9IGZyb20gJy4vYWRkcmVzcy1zcGFjZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IER5bmFtaWNEYXRhU291cmNlIH0gZnJvbSAnLi9keW5hbWljLWRhdGEtc291cmNlJztcbmltcG9ydCB7IE9wY3VhU2VydmljZSB9IGZyb20gJy4vb3BjdWFTZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb3BjdWEtYWRkcmVzcy1zcGFjZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcGN1YS1hZGRyZXNzLXNwYWNlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBPcGN1YUFkZHJlc3NTcGFjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudE5vZGU6IEFkZHJlc3NTcGFjZU5vZGU7XG4gIHNlbGVjdGVkbm9kZSA9IGZhbHNlO1xuICBzZWFyY2hLZXk6IHN0cmluZztcbiAgaXNTZWFyY2g6IGJvb2xlYW47XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBmaWx0ZXJMYWJlbDogc3RyaW5nO1xuICBkYXRhU291cmNlOiBEeW5hbWljRGF0YVNvdXJjZTtcbiAgbm9kZUxpc3Q7XG5cbiAgQE91dHB1dCgpIGZvY3VzU3RhdHVzOiBFdmVudEVtaXR0ZXI8QWRkcmVzc1NwYWNlTm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZHJlc3NTcGFjZU5vZGU+KCk7XG4gIHByaXZhdGUgbW9JZCA9ICcnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFkZHJlc3NTcGFjZVNlcnZpY2U6IEFkZHJlc3NTcGFjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGN1YVNlcnZpY2U6IE9wY3VhU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5maWx0ZXJMYWJlbCA9IGdldHRleHQoJ0ZpbHRlcuKApicpO1xuICAgIHRoaXMubW9JZCA9IHRoaXMub3BjdWFTZXJ2aWNlLmdldE1vSWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIFRoZSBCZWhhdmlvdXJTdWJqZWN0IHdpbGwgc3RvcmUgdGhlIGxhc3QgYXJyYXkgb2YgYW5jZXN0b3JOb2RlcyBmcm9tIHRoZSBwcmV2aW91cyBzZWFyY2hcbiAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIHRoZSBjb21wb25lbnQgd2hpbGUgc3Vic2NyaWJpbmcgaW4gdGhlIGluaXQtcGhhc2UgdG8gdGhlIHN1YmplY3QgdG8gdHJhdmVyc1xuICAgIC8vIHRvIHRoZSBsYXN0IHNlYXJjaGVkIG5vZGUgYWdhaW4uIEZyb20gdXNlciBwZXJzcGVjdGl2ZSBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLCBiZWNhdXNlIHRoZSB1c2VyXG4gICAgLy8gbGVmdCB0aGUgQWRkcmVzcyBzcGFjZSAodGFiKSBhbmQgc2hvdWxkIGxvb3NlIHRoZSBjb250ZXh0IGFuZCBqdXN0IHJlcXVlc3QgYSBuZXcgc2VhcmNoIG9yXG4gICAgLy8gYnJvd3NlIHRoZSB0cmVlIG1hbnVhbGx5LlxuICAgIHRoaXMuYWRkcmVzc1NwYWNlU2VydmljZS5yZXNldFRyZWVUb1Jvb3ROb2RlKCk7XG4gIH1cblxuICBhc3luYyBzZWFyY2hOb2RlcygpIHtcbiAgICB0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMuY2xlYXJOb2RlTGlzdEFuZENoZWNrU2VhcmNoU3RyaW5nKCk7XG4gICAgaWYgKHRoaXMuaXNTZWFyY2gpIHtcbiAgICAgIHRoaXMuY3VycmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm5vZGVMaXN0ID0gYXdhaXQgdGhpcy5hZGRyZXNzU3BhY2VTZXJ2aWNlLmdldFNlYXJjaGVkTm9kZXModGhpcy5zZWFyY2hLZXksIHRoaXMubW9JZCk7XG4gICAgICB0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMubm9kZUxpc3QucmVzdWx0TGFiZWwgPSBnZXR0ZXh0KCdSZXN1bHRzIGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJOb2RlTGlzdEFuZENoZWNrU2VhcmNoU3RyaW5nKCkge1xuICAgIHRoaXMuaXNTZWFyY2ggPSB0aGlzLnNlYXJjaEtleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VhcmNoS2V5ICE9PSAnJyA/IHRydWUgOiBmYWxzZTtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2gpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuaXNTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLnNlYXJjaEtleSA9ICcnO1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRJY29uKG5vZGVDbGFzc05hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NTcGFjZVNlcnZpY2UuZ2V0SWNvbihub2RlQ2xhc3NOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIHNlbGVjdE5vZGUobm9kZSkge1xuICAgIGlmIChub2RlICYmIG5vZGUubm9kZUlkICYmIG5vZGUubm9kZUlkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYWRkcmVzc1NwYWNlU2VydmljZS5nZXROb2RlQnlJZCh0aGlzLm1vSWQsIG5vZGUubm9kZUlkKTtcbiAgICAgIHRoaXMudG9nZ2xlQ3VycmVudE5vZGUoKGF3YWl0IHJlcy5qc29uKCkpIGFzIEFkZHJlc3NTcGFjZU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUN1cnJlbnROb2RlKG5vZGU6IEFkZHJlc3NTcGFjZU5vZGUpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gdGhpcy5pc05vZGVTZXQobm9kZSkgPyB1bmRlZmluZWQgOiBub2RlO1xuICB9XG5cbiAgYmFja0hhbmRsZXIobm9kZSkge1xuICAgIHRoaXMuaXNTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLmZvY3VzU3RhdHVzLmVtaXQobm9kZSk7XG4gICAgdGhpcy50b2dnbGVDdXJyZW50Tm9kZShub2RlKTtcbiAgfVxuXG4gIGlzTm9kZVNldChub2RlOiBBZGRyZXNzU3BhY2VOb2RlKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnROb2RlLm5vZGVJZCA9PT0gbm9kZS5ub2RlSWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgc3BsaXQtc2Nyb2xsXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSBjb2wteHMtMTIgc2Nyb2xsLWNvbHVtbiBuby1ndXR0ZXItclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxldmVsLTIgc3BsaXQtc2Nyb2xsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2hcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmaWx0ZXJMYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWFyY2hOb2RlcygpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoS2V5XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzU2VhcmNoXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaE5vZGVzKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwic2VhcmNoXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNTZWFyY2hcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ2xlYXJgaW5wdXRgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLXQtMTZcIiAqbmdJZj1cImlzU2VhcmNoICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgPHAgKm5nSWY9XCIhc2VhcmNoSW5Qcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGVtPnt7IG5vZGVMaXN0LnJlc3VsdExhYmVsIHwgdHJhbnNsYXRlIH19PC9lbT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgbm9kZUxpc3Q/Lmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLXQtOFwiICpuZ0lmPVwiKGlzU2VhcmNoICYmIGxvYWRpbmcpIHx8IHNlYXJjaEluUHJvZ3Jlc3NcIj5cbiAgICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGVudC1zY3JvbGxcIiAqbmdJZj1cImlzU2VhcmNoICYmICFsb2FkaW5nICYmICFzZWFyY2hJblByb2dyZXNzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtbGlua3NcIiAqbmdJZj1cImlzU2VhcmNoICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGVJdGVtIG9mIG5vZGVMaXN0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3ROb2RlKG5vZGVJdGVtKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4JzogdHJ1ZSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cC1pY29uIG0tci00XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibS1yLTRcIiBbYzh5SWNvbl09XCJnZXRJY29uKG5vZGVJdGVtLm5vZGVDbGFzc05hbWUpXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtLWJvZHkgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiB0aWxlPVwibm9kZUlkXCI+e3sgbm9kZUl0ZW0ubm9kZUlkIH19PC9zcGFuPlxuICAgICAgICAgICAgICB7eyBub2RlSXRlbS5kaXNwbGF5TmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250ZW50LXNjcm9sbFwiICpuZ0lmPVwiIWlzU2VhcmNoXCI+XG4gICAgICAgIDxvcGN1YS1hZGRyZXNzLXNwYWNlLXRyZWVcbiAgICAgICAgICAoc2VsZWN0ZWROb2RlKT1cInRvZ2dsZUN1cnJlbnROb2RlKCRldmVudClcIlxuICAgICAgICAgIFtmb2N1c0VtaXR0ZXJdPVwiZm9jdXNTdGF0dXNcIlxuICAgICAgICA+PC9vcGN1YS1hZGRyZXNzLXNwYWNlLXRyZWU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxvcGN1YS1hZGRyZXNzLXNwYWNlLWRldGFpbFxuICAgIFtub2RlXT1cImN1cnJlbnROb2RlXCJcbiAgICBjbGFzcz1cImNvbC1tZC03IGNvbC14cy0xMiBzY3JvbGwtY29sdW1uIG5vLWd1dHRlci1sIG5vLXBvaW50ZXJcIlxuICAgICh0b2dnbGVBdHRyRGV0YWlsKT1cImJhY2tIYW5kbGVyKCRldmVudClcIlxuICA+PC9vcGN1YS1hZGRyZXNzLXNwYWNlLWRldGFpbD5cbjwvZGl2PlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtYWRkcmVzcy1zcGFjZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm90b2NvbC1vcGN1YS9vcGN1YS1hZGRyZXNzLXNwYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3Byb3RvY29sLW9wY3VhL29wY3VhLWFkZHJlc3Mtc3BhY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLDBCQUEwQjtJQWFyQyxZQUNVLG1CQUF3QyxFQUN4QyxZQUEwQjtRQUQxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBYnBDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBS2YsZ0JBQVcsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDckYsU0FBSSxHQUFHLEVBQUUsQ0FBQztJQUlmLENBQUM7SUFFSixLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVztRQUNULDJGQUEyRjtRQUMzRiwrRkFBK0Y7UUFDL0Ysa0dBQWtHO1FBQ2xHLDZGQUE2RjtRQUM3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b25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWRkcmVzc1NwYWNlU2VydmljZSwgQWRkcmVzc1NwYWNlTm9kZSB9IGZyb20gJy4vYWRkcmVzcy1zcGFjZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IER5bmFtaWNEYXRhU291cmNlIH0gZnJvbSAnLi9keW5hbWljLWRhdGEtc291cmNlJztcbmltcG9ydCB7IE9wY3VhU2VydmljZSB9IGZyb20gJy4vb3BjdWFTZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb3BjdWEtYWRkcmVzcy1zcGFjZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcGN1YS1hZGRyZXNzLXNwYWNlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBPcGN1YUFkZHJlc3NTcGFjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudE5vZGU6IEFkZHJlc3NTcGFjZU5vZGU7XG4gIHNlbGVjdGVkbm9kZSA9IGZhbHNlO1xuICBzZWFyY2hLZXk6IHN0cmluZztcbiAgaXNTZWFyY2g6IGJvb2xlYW47XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBmaWx0ZXJMYWJlbDogc3RyaW5nO1xuICBkYXRhU291cmNlOiBEeW5hbWljRGF0YVNvdXJjZTtcbiAgbm9kZUxpc3Q7XG5cbiAgQE91dHB1dCgpIGZvY3VzU3RhdHVzOiBFdmVudEVtaXR0ZXI8QWRkcmVzc1NwYWNlTm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZHJlc3NTcGFjZU5vZGU+KCk7XG4gIHByaXZhdGUgbW9JZCA9ICcnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFkZHJlc3NTcGFjZVNlcnZpY2U6IEFkZHJlc3NTcGFjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGN1YVNlcnZpY2U6IE9wY3VhU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5maWx0ZXJMYWJlbCA9IGdldHRleHQoJ0ZpbHRlcuKApicpO1xuICAgIHRoaXMubW9JZCA9IHRoaXMub3BjdWFTZXJ2aWNlLmdldE1vSWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIFRoZSBCZWhhdmlvdXJTdWJqZWN0IHdpbGwgc3RvcmUgdGhlIGxhc3QgYXJyYXkgb2YgYW5jZXN0b3JOb2RlcyBmcm9tIHRoZSBwcmV2aW91cyBzZWFyY2hcbiAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIHRoZSBjb21wb25lbnQgd2hpbGUgc3Vic2NyaWJpbmcgaW4gdGhlIGluaXQtcGhhc2UgdG8gdGhlIHN1YmplY3QgdG8gdHJhdmVyc1xuICAgIC8vIHRvIHRoZSBsYXN0IHNlYXJjaGVkIG5vZGUgYWdhaW4uIEZyb20gdXNlciBwZXJzcGVjdGl2ZSBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLCBiZWNhdXNlIHRoZSB1c2VyXG4gICAgLy8gbGVmdCB0aGUgQWRkcmVzcyBzcGFjZSAodGFiKSBhbmQgc2hvdWxkIGxvb3NlIHRoZSBjb250ZXh0IGFuZCBqdXN0IHJlcXVlc3QgYSBuZXcgc2VhcmNoIG9yXG4gICAgLy8gYnJvd3NlIHRoZSB0cmVlIG1hbnVhbGx5LlxuICAgIHRoaXMuYWRkcmVzc1NwYWNlU2VydmljZS5yZXNldFRyZWVUb1Jvb3ROb2RlKCk7XG4gIH1cblxuICBhc3luYyBzZWFyY2hOb2RlcygpIHtcbiAgICB0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMuY2xlYXJOb2RlTGlzdEFuZENoZWNrU2VhcmNoU3RyaW5nKCk7XG4gICAgaWYgKHRoaXMuaXNTZWFyY2gpIHtcbiAgICAgIHRoaXMuY3VycmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm5vZGVMaXN0ID0gYXdhaXQgdGhpcy5hZGRyZXNzU3BhY2VTZXJ2aWNlLmdldFNlYXJjaGVkTm9kZXModGhpcy5zZWFyY2hLZXksIHRoaXMubW9JZCk7XG4gICAgICB0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMubm9kZUxpc3QucmVzdWx0TGFiZWwgPSBnZXR0ZXh0KCdSZXN1bHRzIGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJOb2RlTGlzdEFuZENoZWNrU2VhcmNoU3RyaW5nKCkge1xuICAgIHRoaXMuaXNTZWFyY2ggPSB0aGlzLnNlYXJjaEtleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VhcmNoS2V5ICE9PSAnJyA/IHRydWUgOiBmYWxzZTtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2gpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuaXNTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLnNlYXJjaEtleSA9ICcnO1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRJY29uKG5vZGVDbGFzc05hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NTcGFjZVNlcnZpY2UuZ2V0SWNvbihub2RlQ2xhc3NOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIHNlbGVjdE5vZGUobm9kZSkge1xuICAgIGlmIChub2RlICYmIG5vZGUubm9kZUlkICYmIG5vZGUubm9kZUlkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYWRkcmVzc1NwYWNlU2VydmljZS5nZXROb2RlQnlJZCh0aGlzLm1vSWQsIG5vZGUubm9kZUlkKTtcbiAgICAgIHRoaXMudG9nZ2xlQ3VycmVudE5vZGUoKGF3YWl0IHJlcy5qc29uKCkpIGFzIEFkZHJlc3NTcGFjZU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUN1cnJlbnROb2RlKG5vZGU6IEFkZHJlc3NTcGFjZU5vZGUpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gdGhpcy5pc05vZGVTZXQobm9kZSkgPyB1bmRlZmluZWQgOiBub2RlO1xuICB9XG5cbiAgYmFja0hhbmRsZXIobm9kZSkge1xuICAgIHRoaXMuaXNTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLmZvY3VzU3RhdHVzLmVtaXQobm9kZSk7XG4gICAgdGhpcy50b2dnbGVDdXJyZW50Tm9kZShub2RlKTtcbiAgfVxuXG4gIGlzTm9kZVNldChub2RlOiBBZGRyZXNzU3BhY2VOb2RlKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnROb2RlLm5vZGVJZCA9PT0gbm9kZS5ub2RlSWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgc3BsaXQtc2Nyb2xsXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSBjb2wteHMtMTIgc2Nyb2xsLWNvbHVtbiBuby1ndXR0ZXItclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxldmVsLTIgc3BsaXQtc2Nyb2xsIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHNlcGFyYXRvci1ib3R0b20gc3RpY2t5LXRvcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc2VhcmNoXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGZpbHRlckxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VhcmNoTm9kZXMoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEtleVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc1NlYXJjaFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hOb2RlcygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ2xlYXJgaW5wdXRgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cImlzU2VhcmNoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidGltZXNcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwLXQtMTZcIlxuICAgICAgICAgICpuZ0lmPVwiaXNTZWFyY2ggJiYgIWxvYWRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPHAgKm5nSWY9XCIhc2VhcmNoSW5Qcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGVtPnt7IG5vZGVMaXN0LnJlc3VsdExhYmVsIHwgdHJhbnNsYXRlIH19PC9lbT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgbm9kZUxpc3Q/Lmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwLXQtOFwiXG4gICAgICAgICpuZ0lmPVwiKGlzU2VhcmNoICYmIGxvYWRpbmcpIHx8IHNlYXJjaEluUHJvZ3Jlc3NcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaW5uZXItc2Nyb2xsXCJcbiAgICAgICAgKm5nSWY9XCJpc1NlYXJjaCAmJiAhbG9hZGluZyAmJiAhc2VhcmNoSW5Qcm9ncmVzc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1saW5rc1wiXG4gICAgICAgICAgKm5nSWY9XCJpc1NlYXJjaCAmJiAhbG9hZGluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZUl0ZW0gb2Ygbm9kZUxpc3RcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE5vZGUobm9kZUl0ZW0pXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xpc3QtZ3JvdXAtaXRlbSBkLWZsZXgnOiB0cnVlIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwLWljb24gbS1yLTRcIj5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICBbYzh5SWNvbl09XCJnZXRJY29uKG5vZGVJdGVtLm5vZGVDbGFzc05hbWUpXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbS1ib2R5IHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdGlsZT1cIm5vZGVJZFwiPnt7IG5vZGVJdGVtLm5vZGVJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAge3sgbm9kZUl0ZW0uZGlzcGxheU5hbWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlubmVyLXNjcm9sbFwiXG4gICAgICAgICpuZ0lmPVwiIWlzU2VhcmNoXCJcbiAgICAgID5cbiAgICAgICAgPG9wY3VhLWFkZHJlc3Mtc3BhY2UtdHJlZVxuICAgICAgICAgIChzZWxlY3RlZE5vZGUpPVwidG9nZ2xlQ3VycmVudE5vZGUoJGV2ZW50KVwiXG4gICAgICAgICAgW2ZvY3VzRW1pdHRlcl09XCJmb2N1c1N0YXR1c1wiXG4gICAgICAgID48L29wY3VhLWFkZHJlc3Mtc3BhY2UtdHJlZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG9wY3VhLWFkZHJlc3Mtc3BhY2UtZGV0YWlsXG4gICAgY2xhc3M9XCJjb2wtbWQtNyBjb2wteHMtMTIgc2Nyb2xsLWNvbHVtbiBuby1ndXR0ZXItbCBuby1wb2ludGVyXCJcbiAgICBbbm9kZV09XCJjdXJyZW50Tm9kZVwiXG4gICAgKHRvZ2dsZUF0dHJEZXRhaWwpPVwiYmFja0hhbmRsZXIoJGV2ZW50KVwiXG4gID48L29wY3VhLWFkZHJlc3Mtc3BhY2UtZGV0YWlsPlxuPC9kaXY+XG4iXX0=
@@ -210,11 +210,11 @@ class OpcuaAddressSpaceDetailComponent {
210
210
  this.addressSpaceService.triggerNodeToOpen(nodeNavData);
211
211
  }
212
212
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceDetailComponent, deps: [{ token: AddressSpaceService }], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: { node: "node" }, outputs: { toggleAttrDetail: "toggleAttrDetail" }, ngImport: i0, template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td *ngIf=\"item.key === 'absolutePaths'\" class=\"text-break-word\">\n {{ item.value | json }}\n </td>\n <td *ngIf=\"item.key === 'ancestorNodeIds'\" class=\"text-break-word\">\n <a *ngFor=\"let value of item.value\" (click)=\"navigateTo(value)\">\n {{ value | json }}</a\n >\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2$1.JsonPipe, name: "json" }, { kind: "pipe", type: i2$1.KeyValuePipe, name: "keyvalue" }] }); }
213
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: { node: "node" }, outputs: { toggleAttrDetail: "toggleAttrDetail" }, ngImport: i0, template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'absolutePaths'\"\n >\n {{ item.value | json }}\n </td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'ancestorNodeIds'\"\n >\n <a\n *ngFor=\"let value of item.value\"\n (click)=\"navigateTo(value)\"\n >\n {{ value | json }}\n </a>\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n style=\"height: calc(50% - 4px)\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2$1.JsonPipe, name: "json" }, { kind: "pipe", type: i2$1.KeyValuePipe, name: "keyvalue" }] }); }
214
214
  }
215
215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceDetailComponent, decorators: [{
216
216
  type: Component,
217
- args: [{ selector: 'opcua-address-space-detail', template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td *ngIf=\"item.key === 'absolutePaths'\" class=\"text-break-word\">\n {{ item.value | json }}\n </td>\n <td *ngIf=\"item.key === 'ancestorNodeIds'\" class=\"text-break-word\">\n <a *ngFor=\"let value of item.value\" (click)=\"navigateTo(value)\">\n {{ value | json }}</a\n >\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div class=\"card-inner-scroll\" tabindex=\"0\">\n <div class=\"card-block\" tabindex=\"-1\">\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n" }]
217
+ args: [{ selector: 'opcua-address-space-detail', template: "<div\n class=\"card m-b-4 split-row-2 animated fast pointer-all\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'Attributes' | translate }}</h4>\n <button\n class=\"close m-l-auto visible-sm visible-xs\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"toggleDetail(nodeDataAttr)\"\n >\n &times;\n </button>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataAttr | keyvalue\">\n <td>{{ item.key }}</td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'absolutePaths'\"\n >\n {{ item.value | json }}\n </td>\n <td\n class=\"text-break-word\"\n *ngIf=\"item.key === 'ancestorNodeIds'\"\n >\n <a\n *ngFor=\"let value of item.value\"\n (click)=\"navigateTo(value)\"\n >\n {{ value | json }}\n </a>\n </td>\n <td *ngIf=\"item.key !== 'absolutePaths' && item.key !== 'ancestorNodeIds'\">\n {{ item.value }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<div\n class=\"card split-row-2 animated fast pointer-all\"\n style=\"height: calc(50% - 4px)\"\n [ngClass]=\"{ fadeInRightBig: showDetails, fadeOutRightBig: !showDetails }\"\n>\n <div class=\"card-header separator\">\n <h4>{{ 'References' | translate }}</h4>\n </div>\n <div\n class=\"card-inner-scroll\"\n tabindex=\"0\"\n >\n <div\n class=\"card-block\"\n tabindex=\"-1\"\n >\n <table class=\"table table-striped table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th>{{ 'Attribute' | translate }}</th>\n <th>{{ 'Value' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of nodeDataRef\">\n <td>{{ item.referenceLabel }}</td>\n <td class=\"text-break-word\">{{ item.targetLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n" }]
218
218
  }], ctorParameters: function () { return [{ type: AddressSpaceService }]; }, propDecorators: { node: [{
219
219
  type: Input
220
220
  }], toggleAttrDetail: [{
@@ -1460,11 +1460,11 @@ class OpcuaAddressSpaceComponent {
1460
1460
  return false;
1461
1461
  }
1462
1462
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceComponent, deps: [{ token: AddressSpaceService }, { token: OpcuaService }], target: i0.ɵɵFactoryTarget.Component }); }
1463
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceComponent, selector: "opcua-address-space", outputs: { focusStatus: "focusStatus" }, ngImport: i0, template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll\">\n <div class=\"card-block separator-bottom\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"{{ filterLabel | translate }}\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n *ngIf=\"!isSearch\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n class=\"btn btn-dot\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n *ngIf=\"isSearch\"\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div class=\"p-t-16\" *ngIf=\"isSearch && !loading\">\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div class=\"p-t-8\" *ngIf=\"(isSearch && loading) || searchInProgress\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div class=\"flex-content-scroll\" *ngIf=\"isSearch && !loading && !searchInProgress\">\n <div class=\"list-group list-group-links\" *ngIf=\"isSearch && !loading\">\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i class=\"m-r-4\" [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div class=\"flex-content-scroll\" *ngIf=\"!isSearch\">\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n [node]=\"currentNode\"\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: OpcuaAddressSpaceTreeComponent, selector: "opcua-address-space-tree", inputs: ["moId", "node", "focusEmitter"], outputs: ["selectedNode"] }, { kind: "component", type: OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: ["node"], outputs: ["toggleAttrDetail"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
1463
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OpcuaAddressSpaceComponent, selector: "opcua-address-space", outputs: { focusStatus: "focusStatus" }, ngImport: i0, template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll overflow-auto\">\n <div class=\"card-block separator-bottom sticky-top\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ filterLabel | translate }}\"\n type=\"search\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n *ngIf=\"!isSearch\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n *ngIf=\"isSearch\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div\n class=\"p-t-16\"\n *ngIf=\"isSearch && !loading\"\n >\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"(isSearch && loading) || searchInProgress\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <div\n class=\"inner-scroll\"\n *ngIf=\"isSearch && !loading && !searchInProgress\"\n >\n <div\n class=\"list-group list-group-links\"\n *ngIf=\"isSearch && !loading\"\n >\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"\n ></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div\n class=\"inner-scroll\"\n *ngIf=\"!isSearch\"\n >\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n [node]=\"currentNode\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: OpcuaAddressSpaceTreeComponent, selector: "opcua-address-space-tree", inputs: ["moId", "node", "focusEmitter"], outputs: ["selectedNode"] }, { kind: "component", type: OpcuaAddressSpaceDetailComponent, selector: "opcua-address-space-detail", inputs: ["node"], outputs: ["toggleAttrDetail"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
1464
1464
  }
1465
1465
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OpcuaAddressSpaceComponent, decorators: [{
1466
1466
  type: Component,
1467
- args: [{ selector: 'opcua-address-space', template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll\">\n <div class=\"card-block separator-bottom\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"{{ filterLabel | translate }}\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n *ngIf=\"!isSearch\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n class=\"btn btn-dot\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n *ngIf=\"isSearch\"\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div class=\"p-t-16\" *ngIf=\"isSearch && !loading\">\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div class=\"p-t-8\" *ngIf=\"(isSearch && loading) || searchInProgress\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div class=\"flex-content-scroll\" *ngIf=\"isSearch && !loading && !searchInProgress\">\n <div class=\"list-group list-group-links\" *ngIf=\"isSearch && !loading\">\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i class=\"m-r-4\" [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div class=\"flex-content-scroll\" *ngIf=\"!isSearch\">\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n [node]=\"currentNode\"\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n" }]
1467
+ args: [{ selector: 'opcua-address-space', template: "<div class=\"row split-scroll\">\n <div class=\"col-md-5 col-xs-12 scroll-column no-gutter-r\">\n <div class=\"card bg-level-2 split-scroll overflow-auto\">\n <div class=\"card-block separator-bottom sticky-top\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ filterLabel | translate }}\"\n type=\"search\"\n (keydown.enter)=\"searchNodes()\"\n [(ngModel)]=\"searchKey\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"submit\"\n *ngIf=\"!isSearch\"\n (click)=\"searchNodes()\"\n >\n <i c8yIcon=\"search\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Clear`input`' | translate }}\"\n type=\"button\"\n *ngIf=\"isSearch\"\n (click)=\"clearSearch()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n <div\n class=\"p-t-16\"\n *ngIf=\"isSearch && !loading\"\n >\n <p *ngIf=\"!searchInProgress\">\n <em>{{ nodeList.resultLabel | translate }}</em>\n &nbsp;\n <span class=\"badge badge-info\">{{ nodeList?.length }}</span>\n </p>\n </div>\n </div>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"(isSearch && loading) || searchInProgress\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <div\n class=\"inner-scroll\"\n *ngIf=\"isSearch && !loading && !searchInProgress\"\n >\n <div\n class=\"list-group list-group-links\"\n *ngIf=\"isSearch && !loading\"\n >\n <button\n *ngFor=\"let nodeItem of nodeList\"\n (click)=\"selectNode(nodeItem)\"\n [ngClass]=\"{ 'list-group-item d-flex': true }\"\n >\n <div class=\"list-group-icon m-r-4\">\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"getIcon(nodeItem.nodeClassName)\"\n ></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <span tile=\"nodeId\">{{ nodeItem.nodeId }}</span>\n {{ nodeItem.displayName }}\n </div>\n </button>\n </div>\n </div>\n <div\n class=\"inner-scroll\"\n *ngIf=\"!isSearch\"\n >\n <opcua-address-space-tree\n (selectedNode)=\"toggleCurrentNode($event)\"\n [focusEmitter]=\"focusStatus\"\n ></opcua-address-space-tree>\n </div>\n </div>\n </div>\n <opcua-address-space-detail\n class=\"col-md-7 col-xs-12 scroll-column no-gutter-l no-pointer\"\n [node]=\"currentNode\"\n (toggleAttrDetail)=\"backHandler($event)\"\n ></opcua-address-space-detail>\n</div>\n" }]
1468
1468
  }], ctorParameters: function () { return [{ type: AddressSpaceService }, { type: OpcuaService }]; }, propDecorators: { focusStatus: [{
1469
1469
  type: Output
1470
1470
  }] } });